사내 객체지향 강의인데 한번 들어보자!
- 객체지향은 제일 중요한 것은 클래스가 아니고 메세지야
- 설계는 변경과 관련된 거야
1. 표기법
객체와 클래스
- 클래스보다는 객체, 객체보다는 메세지가 중요하다
- 객체지향 - 시스템의 구성요소들이 모두 객체(객체를 지향)
- 시스템을 객체들이 모여있는 집합으로 본다
- 시스템을 객체로 분할하고, 시스템이 수행해야하는 기능을 객체들이 협력해서 수행하는 것
- 객체는 다른 객체와 연결이 되어 있다. (모든 객체는 연결되어있다.)
- 다른 객체에 메시지를 전송할 필요가 있기에 링크가 있는것(메시지 전달할 필요가 없는데 링크가 있는 것은 잘 못 된 것)
- 협력
- 어떤 객체가 다른 객체에 요청해서 응답을 받는 것을 의미
애플리케이션의 목적
- 기능 설계
- 사용자에게 가치를 제공할 수 있는 기능을 제공하는 것
- 코드 설계
- 개발자가 읽기 쉽고 변경하기 쉬운 품질 좋은 코드
- 설계를 주도하는 쪽은?
- 사용자에게 가치를 제공하는 것 > 좋은 코드
- 기능(객체, 동적인 모델)이 코드(클래스, 정적인 모델)의 구조를 주도해야한다.
- 객체지향적으로 짠다는 것은 런타임의 객체들의 협력관계를 통한 기능 구현을 먼저 설계를 해야한다.
- 즉, 클래스보다 객체가 중요하다.
객체지향 설계하기
- 책임 - 주도 설계
- 객체에 할당할 책임이 설계를 주도한다.
- 협력을 위한 문맥(애플리케이션 기능) 안에서 책임을 수행할 역할(객체)을 설계
- 책임을 먼저 결정하고, 책임에 적합한 객체를 선택하라
- 책임 - 주도 설계 방법(객체 협력)
- 책임을 결정
- 해당 책임을 수행할 객체를 선택
- 책임에 따라 메시지를 결정
- 스스로 처리할 수 없는 작업을 외부(다른 객체)에 요청(메세지). (협력)
- 이 메시지를 처리할 수 있는 적합한 객체를 선택
- 클래스 설계
- 메서드 = 객체의 행동 = 메시지를 처리하는 방법
- 객체보다 메시지(책임)가 중요하다
- 런타임의 책임과 메시지를 선택
- 적합한 객체를 찾는다.
- 메시지를 처리하기 위한 메서드를 구현
- 메서드를 구현하는 데에 필요한 상태를 할당
- 상태보다 행동이 중요하다