
협력하는 객체들의 공동체
객체지향(Object Oriented Programming)
- 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다.
- 객체의 특징:
캡슐화(encapsulation)
,자율성(autonomous)
,메시지(message)
,협력(collaboration)
,연결완전성(seamlessness)
메시지, 오퍼레이션, 메소드

- 해당 객체가 다른 객체에게 메시지를 보낸다고 표현을 하지, 절대 해당 객체가 다른 객체의 함수를 호출한다고 부르지 않는다. 함수가 아닌 operation이라고 부른다. 왜냐하면 메시지를 보내더라도 메시지를 처리하는 객체가 그 메시지를 처리한다는 보장이 없기 때문이다. 그 operation에 매칭되는 실제로 구현되어있는 객체의 메소드가 실행된다.
역할, 책임, 협력
- 역할: 객체의 하나로 대표되는 추상화된 역할. 역할이라는 단어는 의미적으로 책임이라는 개념을 내포한다 (ex. UILabel, UIView)
- 책임: 객체의 역할 이름 아래에 나눠지는 작은 기능들 (ex. URLSession은 서버 url로 요청을 보내는 책임이 있다)
- 협력: 객체끼리 요청을 보내고 응답을 받는 과정(요청과 응답으로 구성된 협력)
워드 커닝험 - 어떤 객체도 섬이 아니다 (객체들끼리 협력하도록 잘 설계해라)
객체와 자료구조 (feat. 클린 코드)
- 객체는 동작을 공개하고 자료를 숨긴다.
- 자료구조는 별다른 동작없이 자료를 노출한다. 자료구조는 별도의 메서드를 만들지 않는다.
객체를 섬으로 만들지 마라. 외부의 도움을 무시한 채 모든 것을 스스로 처리하려고 하는 전지전능한 객체(god object)는 내부적인 복잡도에 의해 자멸하고 만다.
'객체지향의 사실과 오해' 카테고리의 다른 글
객체지향의 사실과 오해 3장 정리 (0) | 2022.05.17 |
---|---|
객체지향의 사실과 오해 2장 정리 (0) | 2022.05.08 |