책 소개
제목 : 객체 지향의 사실과 오해
저자 : 조영호
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=60550259
5장. 책임과 메시지
의도는 메시징이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 "모듈이 어떻게 커뮤니케이션 하는가"에 달려 있다.
- 앨런 케이 (Kay)
1. 자율적인 책임
- '자율성'이 핵심. 자율적인 객체란 스스로의 의지와 판단에 따라 각자 맡은 책임을 수행하는 객체
- 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다.
- 협력에 참여하는 객체가 얼마나 자율적인지가 전체 애플리케이션의 품질 결정
- 자율적인 책임의 특징 : "어떻게(how)"가 아니라 "무엇(what)"을 해야 하는가를 설명
2. 메시지와 메서드
1) 메시지
- 메시지 : 객체가 다른 객체에게 접근할 수 있는 유일한 방법 (다른 객체가 행동을 수행하게 한다)
- Message Name : 메시지를 가리킨다.
- Argument : 메시지의 추가적인 정보를 제공한다.
2) 메서드
- 메서드 : 메시지를 처리하기 위해 내부적으로 선택하는 방법 (책임을 수행하는 행동)
- 메시지를 수신한 객체가 메서드를 선택할 수 있다는 것은 객체지향 프로그래밍 언어의 특징
3) 다형성
- 다형성 : 서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응 (서로 다른 메서드로 메시지 처리)
- 다형성은 객체 간 '대체 가능성'을 의미
4) 유연하고 확장 가능, 높은 재사용성을 가진 협력
- 송신자가 수신자에 대해 매우 적은 정보만 알아도 협력 가능
- 유연한 협력 가능
- 협력이 수행 되는 방식 확장 가능
- 협력이 수행되는 방식 재사용 가능
- 송신자와 수신자는 '메시지'가 연결한다 (약한 연결)
3. 메시지를 따라라
- 객체 지향 프로그래밍 : 메시지를 주고받는 동적 객체들의 집합
- 메시지가 수신자의 책임을 결정한다. (도움이 필요한 경우 메시지 결정 -> 도움을 줄 객체 결정 -> 객체의 책임 결정)
- What/Who 사이클 : 어떤 행위가 필요한지 먼저 결정한 후에 이 행위를 수행할 객체 결정
- 묻지 말고 시켜라 : 메시지가 어떻게 해야하는지를 지시하지 말고 "무엇을 해야하는지 요청"하라
4. 객체 인터페이스
- 인터페이스 : 어떤 두 사물이 마주치는 경계 지점에서 서로 상호작용 할 수 있게 이어주는 방법이나 장치
- 인터페이스의 3가지 특징
- 인터페이스의 사용법만 알면 대상의 내부 구조나 동작 방법을 몰라도 상호작용 가능
- 인터페이스가 변경되지 않고 단순히 내부 구성이나 작동 방식이 변경되는 것은 인터페이스 사용자에게 아무런 영향도 미치지 않는다.
- 인터페이스가 동일하기만 하면 어떤 대상과도 상호작용 할 수 있다.
- 공용 인터페이스 : 외부에 공개된 인터페이스 (<-> 사적인 인터페이스(=구현) : 내부에서만 접근 가능)
5. 인터페이스와 구현의 분리
- 객체지향 사고 방식의 3가지 원칙
- 좀 더 추상적인 인터페이스 : 추상적인 수준의 메시지로 객체 자율성 높임
- 최소 인터페이스 : 외부에서 사용할 필요가 없는 인터페이스는 최대한 노출하지 말라
- 인터페이스와 구현 간에 차이가 있다
- 구현(Implementation) : 내부 구조와 작동 방식 (<-> 공용 인터페이스)
- 인터페이스와 구현의 분리 원칙 (Seperation of Interface and Implementation) : 객체 외부에 노출되는 인터페이스와 객체 내부에 숨겨지는 구현을 명확하게 분리
- 캡슐화 (= 정보 은닉. Information Hiding) : 객체의 자율성을 보존하기 위해 구현을 외부로부터 감추는 것
- 상태와 행위의 캡슐화 (데이터 캡슐화. Data Encapsulation)
- 객체는 스스로 자신의 상태를 관리하며 상태를 변경하고 외부에 응답할 수 있는 행동을 내부에 함께 보관
- 상태는 데이터로, 행동은 프로세스로 구현
- 사적인 비밀의 캡슐화
- 변경이 일어나는 불안정한 비밀을 캡슐화해서 숨긴다.
- 상태와 행위의 캡슐화 (데이터 캡슐화. Data Encapsulation)
6. 책임의 자율성이 협력의 품질을 결정
- 객체의 책임이 자율적일수록 협력을 이해하기 쉽고, 유연하게 변경할 수 있다. 책임이 얼마나 자율적인지가 전체적인 협력의 설계 품질 결정
- 자율적인 책임은 협력을 단순하게 만든다.
- 자율적인 책임은 모자 장수의 외부와 내부를 명확하게 분리한다.
- 책임이 자율적일 경우 책임을 수행하는 내부적인 방법을 변경하더라도 외부에 영향을 미치지 않는다.
- 자율적인책임은 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다.
- 객체가 수행하는 책임들이 자율적일수록 객체의 역할을 이해하기 쉬워진다.
'TechBooks' 카테고리의 다른 글
[Programming] 객체지향의 사실과 오해 #7장 (0) | 2020.07.16 |
---|---|
[Programming] 객체지향의 사실과 오해 #6장 (0) | 2020.07.14 |
[BigData] 빅데이터 기초 개념,동인,기법 #8장 (0) | 2020.07.06 |
[BigData] 빅데이터 기초 개념,동인,기법 #7장 (0) | 2020.07.06 |
[Programming] 객체지향의 사실과 오해 #4장 (0) | 2020.07.05 |
댓글