컴퓨터공학과 소프트웨어학부 2학년 1학기를 마치고 객체지향이라는 것에 흥미가 많이 생겼었다. 객체지향을 C++로 배웠는데 학교에서는 코딩으로 객체지향을 어떻게 구현하는지 기본적으로 알려주었다. 클래스, 객체, 상속, 오버라이딩, 다형성 등등. 이 책은 내가 알고 있는 객체지향에 대해 정리를 할 수 있게 했다. 이 책은 내가 앞으로 개발자로서 객체지향을 설계할때 어떻게 바라보고 어떤 관점에서 설계를 해야할지 길잡이 역할을 해주었다.
- 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분활하는 방법이다.
프로그램속 객체 = 현실속 객체를 은유(모방X) + 개발자의 새로운 세계를 창조
객체지향의 설계 :
- 객체들간의 협력관계를 생각하자.
- 객채들의 각 책임을 수행할 행동을 생각하자.
- 행동은 객체의 상태를 결정한다.
객체에게 할당되는 책임의 수준 역시 자율적이어야한다
자율적 : (자율성을 보장할 수 있을 정도로 충분히 추상적 + 협력의 의도를 뚜렷하게 표현할 수 있을정도로 충분히 구체적)
어떻게X -> 무엇을O
객체가 자율적일수록 -> 적절한 '추상화', 높은 '응집도', 낮은 '결합도', '캡슐화'의 증진, '인터페이스와 구현이 명확히 분리', 설계의 '유연성'과 '재사용성' 증진
- 시스템은 정적인 클래스의 집합이 아니라 메세지를 주고받는 동적인 객체들의 집합으로 바라보는 것에서 시작한다.
메세지를 결정-> 메세지를 수행할 객체 결정 -> 메세지가 수신자의 인터페이스를 결정
- 객체지향은 외부(공용 인터페이스) / 내부 (캡술화를 통한 구현)으로 나뉨
- 안정적인 도메인 모델을 기반으로 시스템의 기능을 구현하라.
- 도메인 모델과 코드를 밀접하게 연관시키기 위해 노력하라
도메인모델은 안정적인 구조를 개념화하기 위해, 유스케이스는 불안정한 기능을 서술하기 위해 사용되는 도구
->유지 보수가 쉽고 유연한 객체 지향 시스템의 첫걸음
핵심 :