Home 객체지향의 사실과 오해 - 역할, 책임, 협력
Post
Cancel

객체지향의 사실과 오해 - 역할, 책임, 협력

상황 예시 : 카페

커피 주문을 위해 협력하는 사람들

역할이라는 단어는 책임 이라는 개념을 내포한다.

프로그래머라는 역할에도 훌륭한 프로그램을 개발할 책임이 내포되어있다.

따라서 특정한 역할은 특정한 책임을 암시한다.

역할책임
손님커피 주문
캐셔주문 내용을 바리스타에게 전달, 커피가 완성됨을 손님에게 알림
바리스타커피 제조

역할과 책임은 협력을 원활하게 진행되는 데 필요한 핵심적인 구성 요소이다.

여러 사람들이 동일한 역할을 수행할 수 있다.

손님 입장에서 어떤 캐셔가 주문을 받는지는 중요하지 않다.

역할은 대체 가능성이다.

손님 입장에서 캐셔는 대체 가능하다. 두 명의 캐셔 중 아무나한테 요청해도 응답을 받을 수 있다.

책임을 수행하는 방법은 자율적으로 선택한다.

요청을 받은 사람들은 요청을 처리하는 방법을 자유롭게 선택한다.

캐셔 A는 바리스타에게 주문표만 던지는 식으로 요청할 수 도 있고

캐셔 B는 바리스에게 직접 주문을 말해주는 식으로 요청할 수 있는 것이다.

한 사람이 동시에 여러 역할을 수행할 수 있다.

캐셔와 바리스타 라는 역할을 동시에 할 수도 있다.

역할, 책임, 협력

사람들은 커피 주문처럼 특정 목표를 이루기 위해 서로 협력한다.

협력의 핵심은 특정한 책임을 수행하는 역할들 간의 연쇄적인 요청과 응답을 통해 목표를 달성하는 것이다.

객체지향적절한 객체에게 적절한 책임할당하는 것으로 시작한다.

객체

객체는 애플리케이션의 기능을 구현하기 위해 존재한다.

객체는 충분히 협력적이여야한다. 다른 객체의 요청와의 요청/응답을 성실히 수행해야한다. 스스로 모든 것을 해결하려는 객체는 좋지 않다.

객체는 충부히 자율적이여야한다. 어떤 요청/응답에 대하여 스스로 결정하여 처리할 수 있어야 한다는 것이다.

메세지

객체는 협력을 위해 다른 객체에게 메시지를 전송하고 다른 객체로부터 메시지를 수신한다.

수신 객체는 메시지를 이해할 수 있는지 여부를 판단하고, 자신만의 자율적인 방법에 따라 메시지를 처리한다.

이때 메시지를 처리하는 방법을 메서드 라고한다.

객체지향의 본질

클래스의 구조와 메서드가 아니라

객체의 역할, 책임, 협력에 집중해야한다.

객체지향은 클래스를 지향하는 것이 아니다. JavaScript는 클래스와 상속 없이 객체간의 협력관계를 만들 수 있다.

This post is licensed under CC BY 4.0 by the author.