콘텐츠로 이동

2021 02 08

2021-02-08

객체지향의 사실과 오해

  • 04. 역할, 책임, 협력 - [협력] - 객체지향의 세계는 동일한 목적을 달성하기 위해 협력하는 객체들의 공동체 - 요청과 응답은 협력에 참여하는 객체가 수행할 책임을 정의한다. - [책임] - 어떤 요청에 대해 대답해주기, 적절한 행동의 의무가 있다면 "책임"을 가진다는 것 - 책임 = 무엇을 알고 있는가 + 무엇을 할 수 있는가 - 설계 초반에는 어떤 객체가 어떤 책임을 가지고, 어떤 방식으로 서로 협력해야 하는지 개요만 해도 충분하다! - [역할] - 역할은 협력 내에서 다른 객체로 대체할 수 있음을 나타내는 표식 - 역할을 대체할 수 있는 객체는 동일한 메시지를 이해할 수 있는 객체! - 재사용성 UP! - 객체지향의 핵심은 클래스를 어찌 구현하는 가 X, 객체가 협력 안에서 어떤 책임과 역할을 수행할 것인지 O - 결과적으로 클래스와 데이터는 협력과 책임의 집합이 결정된 후에야 무대 위에 등장할 수 있다! - But, 충분히 자율적인 동시에 충분히 협력적인 객체를 창조해야 한다!
  • 05. 책임과 메시지 - 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다! - [메시지] - 메시지 = 메시지 이름 + 인자 - 송신자는 메시지 전송을 통해서만 다른 객체의 책임을 요청함 - 수신자는 메시지 수신을 통해서만 자신의 책임을 수행함 - 객체지향 패러다임으로의 전환은 시스템을 정적인 클래스들의 집합이 아니라, 메시지를 주고받는 동적인 객체들의 집합으로 바라보는 것에서 시작한다. - 협력 관계 속에서 다른 객체에게 무엇을 제공하고, 무엇을 얻어야 하는가라는 관점에서 접근해야 훌륭한 책임을 수확할 수 있다. - [메서드] - 메시지를 처리하기 위해 내부적으로 선택하는 방법 - [다형성] - 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신할 경우, 서로 다른 메서드를 통해 메시지 처리 - [인터페이스] - 객체의 인터페이스는 객체가 수신할 수 있는 메시지의 목록으로 채워진다. - 인터페이스는 객체가 다른 객체와 협력하기 위한 접점이다. - [책임의 자율성 == 협력의 품질] 1. 자율적인 책임은 협력을 단순하게 만든다. 2. 자율적인 책임은 모자 장수의 외부와 내부를 명확히 분리한다. 3. 책임이 자율적일 경우, 책임을 수행하는 내부적인 방법을 변경하더라도 외부에 영향 X - 객체 간 결합도가 낮아진다! 4. 자율적인 책임은 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다.

1단계 - 자동차 경주 구현 피드백

  • final 에약어 - 변경하면 안되는 매개변수 - 상수화가 필요한 인스턴스 변수
  • Exception 종류를 정확히 명시할 것! - try-catch 문에서 처리하는 예외 종류 - 테스트에서 작성하는 예외 종류
  • Validation은 어디서? - 사용자 input에 대한 validation은 view에서도 해야되고, domain에서도 해야함 - 기본적으로 양쪽에서 고려해줄 것!