IT 관련 책 정리 및 후기/객체지향의 사실과 오해

[1장] 협력하는 객체들의 공동체

JUN0126 2022. 6. 25. 19:05

많은 사람들이 객체지향이란 실세계를 직접적이고 직관적으로 모델링 할 수 있는 패러다임이라고 생각한다.

 

하지만 실제 세계의 방화벽은 화재의 확산을 막아주고, 소프트웨어의 방화벽은 네트워크 침입을 막는 용도로 사용된다. 이런 예시와 같이 의미적 거리 만큼이나 소프트웨어 객체와 실세계 사물이 존재하는 연관성은 희미할 수 있다.

 

실제로 애플리케이션을 개발하면서 객체에 직접적으로 대응되는 실세계의 사물을 발견할 확률은 그다지 높지 않다.

 

이러한 상황들을 봤을떄 객체지향의 목표는 실세계를 모방하는 것이 아니라, 오히려 새로운 세계를 창조하는 것이다.

 

하지만 실세계의 모방은 객체지향을 이해하고 학습하는데에는 효과적이다.

 

객체지향 이해를 위한 실세계 모방

 커피 주문 과정에서의 역할과 책임 

  1. 손님

    - 커피를 주문한다.

    - 완성된 커피를 받는다.

  2. 캐시어

    - 커피를 주문 받는다

    - 커피 제조를 부탁한다.

  3. 바리스타

    - 주문받은 커피를 제조한다.

    - 제조한 커피를 제공한다.

 

커피 주문을 위해 객체간 역할과 협력

 

커피 주문 과정에서 보다 싶히 손님,캐시어,바리스타 라는 역할이 각자의 책임을 가지고 역할간의 협력을 통하여 커피 주문과정이 이루어 

집니다.

 

협력을 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행한다는 사실은 몇가지 중요한 개념을 제시한다.

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

  - 역할은 다른 역할이 책임을 수행함에 있어 어떠한 역할이던 요청한 역할에서 요청한 책임만 잘 수행하면 된다.

2. 역할은 대체 가능성을 의미한다.

  - 동일한 역할을 수행 할 수 있다면 요청자 입장에서는 어떠한 사람이던 해당 요청을 수행하기만 한다면 문제가 되지 않는다.

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

  - 요청에 대해 어떤식으로 처리를 하던 요청에 대해 서로 다른 방식으로 응답 할 수 있다.

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

  - 한 사람이 동시에 둘 이상의 역할을 수행하는것도 가능하다 EX) 캐시어가 바리스타 역할을 같이 수행한다.

 

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

 

 

객체는 책임을 가지며 자율적으로 책임에 대한 결정과 판단을 해야한다.

 

객체의 협력은 객체간의 요청을 통해서 이루어지는데 객체에서 요청을 받아 수신된 메세지를 처리하는 방법은 메소드로 이루어 진다.

EX) 커피 제조 요청이 메시지이며, 커피를 제조하는 구체적인 방법이 메서드이다.

 

객체지향의 본질

1. 자율적인 객체들의 공동체

2. 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체

3. 다른 객체와 협력하며, 각 객체는 협력 내에서 정해진 역할을 수행

4. 메세지를 수신한 객체는 메세지를 처리하는데 적합한 메서드를 자율적으로 선택

 

 

결론

 객체가 가진 역할,책임, 객체간의 협력에 집중하여 요청과 응답에 있어서 메세지를 잘 송,수신 해야하며 객체는 적합한 메서드를 자율적으로

선택하여 해당 요청이 잘 이루어지게 해야한다.

 

 

 

해당 내용은 객체지향의 사실과 오해 를 읽으며 제가 이해한 내용으로 정리한 내용입니다.

자세한 내용과 적확한 내용은 책을 읽어주시길 바랍니다. (책을 읽는것을 추천드립니다)

 

 

책 : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=60550259

 

객체지향의 사실과 오해

위키북스 IT Leaders 시리즈 23권. 객체지향이란 무엇인가? 이 책은 이 질문에 대한 답을 찾기 위해 노력하고 있는 모든 개발자를 위한 책이다.

www.aladin.co.kr