[책]객체지향의 사실과 오해-기록

박준수·2022년 6월 29일

[책]

목록 보기
1/2
post-thumbnail

컴퓨터공학과 소프트웨어학부 2학년 1학기를 마치고 객체지향이라는 것에 흥미가 많이 생겼었다. 객체지향을 C++로 배웠는데 학교에서는 코딩으로 객체지향을 어떻게 구현하는지 기본적으로 알려주었다. 클래스, 객체, 상속, 오버라이딩, 다형성 등등. 이 책은 내가 알고 있는 객체지향에 대해 정리를 할 수 있게 했다. 이 책은 내가 앞으로 개발자로서 객체지향을 설계할때 어떻게 바라보고 어떤 관점에서 설계를 해야할지 길잡이 역할을 해주었다.

  • 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분활하는 방법이다.

프로그램속 객체 = 현실속 객체를 은유(모방X) + 개발자의 새로운 세계를 창조

객체지향의 설계 :

  1. 객체들간의 협력관계를 생각하자.
  2. 객채들의 각 책임을 수행할 행동을 생각하자.
  3. 행동은 객체의 상태를 결정한다.

객체에게 할당되는 책임의 수준 역시 자율적이어야한다
자율적 : (자율성을 보장할 수 있을 정도로 충분히 추상적 + 협력의 의도를 뚜렷하게 표현할 수 있을정도로 충분히 구체적)
어떻게X -> 무엇을O
객체가 자율적일수록 -> 적절한 '추상화', 높은 '응집도', 낮은 '결합도', '캡슐화'의 증진, '인터페이스와 구현이 명확히 분리', 설계의 '유연성'과 '재사용성' 증진

  • 시스템은 정적인 클래스의 집합이 아니라 메세지를 주고받는 동적인 객체들의 집합으로 바라보는 것에서 시작한다.

메세지를 결정-> 메세지를 수행할 객체 결정 -> 메세지가 수신자의 인터페이스를 결정

  • 객체지향은 외부(공용 인터페이스) / 내부 (캡술화를 통한 구현)으로 나뉨
  • 안정적인 도메인 모델을 기반으로 시스템의 기능을 구현하라.
  • 도메인 모델과 코드를 밀접하게 연관시키기 위해 노력하라

도메인모델은 안정적인 구조를 개념화하기 위해, 유스케이스는 불안정한 기능을 서술하기 위해 사용되는 도구

->유지 보수가 쉽고 유연한 객체 지향 시스템의 첫걸음

핵심 :

  • 중요한것은 어떤 클래스가 필요한가가 아니라 어떤 객체들의 어떤 메세지를 주고받으며 협력하는거다.
  • 클래스의 구조와 메서드가 아니라 객체의 역할, 책임, 협력에 집중해라.
  • 적절한 책임을 수행하는 역할간의 유연하고 견고한 협력관계를 구축해라.
profile
방구석개발자

0개의 댓글