목록Java (3)
결국엔 프로그래밍
객체지향에서 가장 중요한 것은 역할, 책임, 협력이다. 클래스, 상속, 지연 바인딩도 중요하지만 구현 측면에 치우쳐있어 객체지향 패러다임의 본질과는 거리가 있다. 어떤 협력이 필요하고 협력을 위해 어떤 역할과 책임이 필요한지 고민해야 한다. 협력 - 객체들이 애플리케이션 기능을 구현하기 위해 수행하는 상호작용 책임 - 객체가 협력에 참여하기 위해 수행하는 로직 역할 - 객체들이 협력 안에서 수행하는 책임들이 모여 역할을 이룬다. 협력 객체는 사회적 존재이다. 메시지 전송을 통해서 객체들은 상호작용한다. 메시지를 통해 다른 객체에게 위임하거나 서로 협력한다. 메서드를 통해 수신한 메시지를 처리한다. 자율적인 객체가 되기 위해 필요한 정보와 이에 기반한 행동을 하나의 객체에 둬야 한다. 만약, A라는 객체가..
상속과 인터페이스 일반적인 상속의 목적은 메서드나 인스턴스 변수를 재사용하는 것으로 생각되지만, 부모 클래스가 제공하는 모든 인터페이스를 자식 클래스가 물려받을 수 있기 때문에 상속은 가치 있다. 결과적으로, 자식 클래스는 부모 클래스가 수신할 수 있는 모든 메시지를 수신할 수 있기 때문에 외부 객체는 자식 클래스를 부모 클래스와 동일한 타입으로 간주할 수 있다. 따라서, 부모 클래스가 나오는 모든 자리에서 자식 클래스가 부모 클래스를 대신해 사용될 수 있다. (업 캐스팅) 다형성 동일한 메시지를 전송하더라도 어떤 메서드가 실행될 것인지는 객체의 클래스가 무엇이냐에 따라 달라지는 특성 상속 → 동일한 인터페이스 사용 → 하나의 계층 → 객체들이 서로 같은 메시지들을 이해 → 서로 다른 메서드를 실행 가능..
패러다임 현대의 패러다임이란, 한 시대 혹은 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계 이 책에서 패러다임의 전환이란, 절차형 패러다임에서 객체지향 패러다임으로의 변화를 의미 프로그래밍 패러다임 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 하고, 불필요한 부분에 대한 의견 충돌을 방지함 프로그래밍 패러다임을 교육시킴으로써 동일한 규칙과 방법을 공유하는 개발자로 성장할 수 있도록 준비시킴 모듈은 1) 실행이 가능해야 하고 2) 변경에 용이해야 하며 3) 코드를 통해 의사소통이 가능해야 한다 설계의 목표 설계의 목표는 결합도를 낮춰 변경이 용이한 설계를 만드는 것이다. 캡슐화를 통해 객체 내부로의 접근을 제한, 객체와 객체 사이의 결합도를 낮출 수 있고 설계를 좀 더 쉽게..