05. 책임과 메시지

2023. 5. 30. 14:51북리뷰/객체지향 사실과 오해

728x90

각 객체는 책임이 명확하게 주어지는 경우에 행동함

객체지향 공동체를 구성하는 기본 단위는 자율적인 객체임

객체에게 할당되는 책임 수준는 자율적이어야 - 너무 추상적인 책임도 무조건 좋은 것은 아님

자율적 챔임의 특징은 객체가 어떻게(how) 해야 하는가가 아니라 무엇(what)을 해야하는가를 설명하는 것

 

# 메시지 : 무엇(What)

하나의 객체는 메시지를 전송함으로써 다른 객체에 접근

추가적인 정보가 필요한 경우 메시지의 인자를 통해 추가 정보 제공

 

# 메서드 : 어떻게(How)

메시지를 처리하기 위해 내부적으로 선택하는 방법

 

# 다형성 

서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것

다형성은 메시지 송신자의 관점에서 동일한 역할을 수행하는 다양한 타입의 객체와 협력할 수 있게 함 

다형성은 동일한 역할을 수행할 수 있는 객체들 사이의 대체 가능성을 의미

다형성은 수신자의 종류를 캡슐화

다형성은 송신자와 수신자 간의 객체 타입에 대한 결합도를 메시지에 대한 결합도로 낮춤

 

# 클래스와 메시지

클래스가 코드를 구현하기 위해 사용할 수 있는 중요한 추상화 도구이나, 객체지향의 본질은 클래스가 아니라 객체들이 주고받는 메시지로부터 나옴

클래스는 단지 동적인 객체들의 특성과 행위를 정적인 텍스트로 표현하기 위해 사용할 수 있는 추상화 도구일 뿐

 

# What/Who 사이클 

어떤 행위(what)를 수행할 것인지를 결정한 후 누가(who) 그 행위를 수행할 것인지를 결정

협력이라는 문맥 안에서 필요한 메시지를 먼저 결정한 후에 메시지를 수신하기에 적합한 객체 선택

 

# 데메테르 법칙

묻지 말고 시켜라 스타일

어떤 객체가 필요한지를 생각하지 말고 어떤 메시지가 필요한지를 먼저 고민

객체는 다른 객체의 상태를 묻지 말아야

어떻게 해야 하는지를 지시하지 말고 무엇을 해야 하는지를 요청

 

# 인터페이스

어떤 두 사물이 마주치는 경계 지점에서 서로 상호작용할 수 있게 이어주는 방법이나 장치

## 인터페이스 특징

- 인터페이스의 사용법을 익히기만 하면 내부 구조나 동작 방식을 몰라도 쉽게 대상을 조작하거나 의사를 전달

- 인터페이스 자체는 변경하지 않고 단순히 내부 구성이나 작동 방식만을 변경하는 것은 인터페이스 사용자에게 어떤 영향도 미치지 않음

- 대상이 변경되더라도 동일한 인터페이스를 제공하기만 하면 아무런 문제 없이 상호작용

 

# 인터페이스를 통한 객체지향적 사고 방식 원칙

- 좀 더 추상적인 인터페이스

- 최소 인터페이스 : 외부에서 사용할 필요가 없는 인터페이스는 최대한 노출하지 말아야

- 인터페이스와 구현 간에 차이가 있다는 점을 인식

객체 설계의 핵심은 객체를 두개의 분리된 요소(내부, 외부)로 분할해 설계하는 것

송, 수신자가 구체적인 구현 부분이 아니라 느슨한 인터페이스에 대해서만 결합

 

# 캡슐화 관점

- 상태와 행위의 캡슐화

객체는 상태와 행위의 조합, 객체는 스스로 자신의 상태를 관리

- 사적인 비밀의 캡슐화

구현과 관련된 세부사항을 직접 관찰하거나 제어하는 것을 막음

 

구현을 변경할 때 외부에 대한 파급효과를 최소화하기 위해서는 외부의 객체는 공용 인터페이스에만 의존해야 하고, 구현 세부 사항에 대해서는 직접적으로 의존해서는 안 됨.

 

728x90

'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글

07. 함께 모으기, 추상화 기법  (0) 2023.05.31
06. 객체 지도  (0) 2023.05.31
04. 역할, 책임, 협력  (0) 2023.05.30
03. 타입과 추상화  (0) 2023.05.29
02. 이상한 나라의 객체  (0) 2023.05.29