객체지향의 사실과 오해에 관하여(객사오 북스터디) - Chapter.05 역할, 책임, 협력

윤준석·2025년 7월 5일
0

스터디

목록 보기
6/7

IV. 역할, 책임, 협력

"의도는 메시징 이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가 보다는 모듈이 어떻게 커뮤니케이션하는가에 달려있다."

– 앨런 케이(Kay)

이번 장은 책임메시지가 주요 주제이다.

방관자 실험 (Darley & Latane(1964))**

심리학자들은 “책임감 분산”을 주제로 실험을 진행한다.
사건에 대한 목격자가 많을수록 개인이 느끼는 책임감이
적어져 군중들 사이로 타인을 도와야 한다는 책임이 분산되고 희석된다.
이 경우 사람들은 자신의 책임을 무시하는 경향이 있다는 내용을 설명한다.

이를 바탕으로 명확한 책임과 역할을 지닌 참가자들이 협력에 참여해야 한다는 내용을 설명한다.
객체의 세계에서도 명확하게 정의된 역할과 책임을 지닌 객체들이 상호협력해야 한다는 것이다.


자율적인 책임, 그러나 설계의 품질을 좌우하는

객체지향을 구성하는 기본 단위는 자율적인 객체이다.
객체들은 애플리케이션의 기능을 구현하기 위해 협력하고 협력 과정에서
책임을 다하기 위해 자율적으로 판단하고 행동한다.

객체가 행동하는 이유는 다른 객체로부터 요청을 수신했기 때문이다.
객체지향설계의 아름다움은 적절한 책임을 적절한 객체에게 할당하는 과정 속에서 드러난다.
객지를 설계하는 가장 널리 알려진 방법이 책임-주도 설계 라고 부르는 이유도 적절한 책임의 선택이 전체 설계의 방향을 결정하기 때문이다.

요청은 수신자의 책임을 암시한다.

요청을 받은 객체는 책임을 수행하지만 책임을 달성하기 위한 방식이나 필요한 자유는
스스로의 의지와 판단에 따라 자유롭게 선택할 수 있다.

훌륭한 시스템은 ‘누가’, ‘언제’, ‘어떻게’ 책임을 질지를 명확히 정의할 때 만들어진다.


메시지와 메서드

메시지?

객체간 유일한 통신 수단이다.

메시지를 수신할 수 있다는 것 자체가 ‘책임 수행 권한’을 의미한다.

메서드?

메시지를 실제로 처리하는 내부 행동(실행 코드)

“무엇(What)”만 메시지로 요청하고, “어떻게(How)”는 메서드가 자율적으로 결정

다형성(Polymofism)

동일한 메시지라도 수신 객체 종류에 따라 서로 다른 메서드로 처리하는 것.

송신자는 ‘증언하라’만 알면, 모자 장수·요리사·앨리스 등 누구에게나 메시지를 보낼 수 있음

인터페이스(→ 메시지)에 대한 결합도만 남겨 시스템을 유연·확장·재사용 가능하게 함

행위 호환성이 있으면, 서로 다른 객체들도 동일한 역할을 수행할 수 있다.
(지난 4장에서 이야기한 부분과 동일한 개념이다.)

인터페이스와 구현의 분리 원칙

훌륭한 객체는 구현을 모른 채 인터페이스만 알면 쉽게 상호작용할 수 있는 객체를 의미한다. 객체 설계시에 객체 외부에 노출되는 인터페이스와 객체의 내부에 숨겨지는 구현을 명확히 분리해서 고려해야 한다.

중요한 이유 : 소프트웨어는 항상 변경되기 때문이다.
객체의 모든것이 외부에 공개되어 있다면, 아무리 작은 부분을 수정하더라도 변경에 의한 나비효과가 객체 공동체 전체에 영향을 미칠 수 있다.
변경에 안전한 코드는 객체를 자율적인 존대로 만드는 것이다.


마치며...

“무엇을(What)”: 메시지로 책임을 요청,

“누가(Who)”: 자율적인 책임 주체를 선택

“어떻게(How)”: 메서드가 내부에서 결정하게 하게 함.

객체지향 설계 관점에서 유연성과 단순함, 확장 가능성을 모두 확보 하는 것

책임의 자율성, 메시지 중심의 커뮤니케이션, 인터페이스와 구현의 분리를 통해 객체지향의 본질에 조금 더 근접하게 설계할 수 있다.


EOL

profile
컴퓨터 공학을 공부중인 윤준석 입니다!

1개의 댓글

comment-user-thumbnail
2025년 7월 5일

굿

답글 달기