Notice
Recent Posts
Recent Comments
Link
코드로 우주평화
일하는 객체들이 서로 협력하는 관계를 구축하는 것 본문
반응형
제목 : 객체지향의 사실과 오해
저자 : 조영호
범위 : 01 / 협력하는 객체들의 공동체
요약 정리
- 객체지향의 목표는 실세계를 모방하는 것이 아니다. 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다.
- 현실 세계와 비유하는 것은 '상태'와 '행위'를 [캡슐화]하는 소프트웨어 객체의 [자율성]을 설명하는 데 효과적이기 때문
- 객체는 상태와 행위를 하나의 단위로 묶는 자율적인 존재
- 객체지향에서 가장 중요한 개념 세 가지는 '역할', '책임', '협력'이다.
- 여러 객체가 동일한 역할을 수행할 수 있다.
- 역할은 책임(일), 임무를 의미한다. (손님, 점원, 바리스타)
- 역할은 대체 가능하다. (부품)
- 책임을 수행하는 방법(일하는 방법)은 객체가 자율적으로 선택할 수 있다. → 다형성과 관련
- 객체는 동시에 여러 역할을 수행할 수 있다.
- 협력의 핵심은 요청과 응답을 통해 목표를 달성한다는 것이다.
- 객체에게 적절한 임무를 할당해야한다.
- 역할은 관련성 높은 임무들의 집합이다.
- 객체는 협력을 통해 기능을 구현한다.
- 객체는 두 가지 덕목을 갖춰야 한다.
- 협력적이어야 한다. 외부의 도움이 필요없는 객체는 복잡도가 증가해 자멸한다. → 쉽게 말하자면 분업화인 것 같다.
- 자율적이어야 한다. 스스로 원칙에 따라 일을 하거나 통제하여 절제한다.(통제와 절제는 또 뭔가..? 인공지능인가?)
- 객체는 다른 객체가 무엇을 수행하는지는 알 수 있지만 어떻게 수행하는지에 대해서는 알 수 없다. → 객체의 존재이유는 알지만 어떻게 하는지는 모른다.(print()는 알지만 어떻게 작동하는지는 모르는 것처럼)
- 객체들은 메시지로 소통한다. (sender 와 receiver)
- 수신된 메시지(제조 요청)를 처리하는 방법(제조 방법)은 메서드라고 한다.
- 객체지향의 본질
- 객체지향이란 자율적인 객체를 이용해 시스템을 분할하는 방법 → 개별적인 객체들이 모여 하나를 이룬다라는 느낌
- 자율적인 객체란 상태와 행위를 함께 지니며 일을 하는 객체를 의미
- 유사한 일(책임)의 집합이 역할
- 메시지를 수신하고 자율적으로 메서드를 선택하여 처리 (→ 여기서 ‘자율’은 개발자가 코드로 분기를 나눈다는 걸까? 아니면 객체가 인공지능이란 얘기인가?)
- 객체와 클래스는 동의어가 아니다. 객체지향의 핵심은 ‘일하는 객체(역할)들이 서로 협력하는 관계를 구축하는 것’이다.
하고 싶은 말
- 책임진다라는 말을 이해하는게 어렵다. 그래서 중간부터는 임무나 일, 해야만하는 의무로 받아들였다.
- 자율적이라는 개념을 이해하기 어렵다. 마치 객체가 인공지능인 것처럼 느껴졌다. 어쨌든 요청이 와야 동작하는 것이고 그 요청 내용에 따라 방법이 달라지는 것이 아닌가? 요청 내용과 상관없이 객체가 랜덤으로 방법을 선택하거나 특정한 생각을 가지고 선택하는 건 아닐 것 같은데 일단 글만 보면 그렇게 느껴진다.
- 객체지향을 아직 이해하기가 어렵다. 더 공부하면서 지금 드는 의문들을 해소해보자.
반응형
'나는 이렇게 본다 > 객체지향의 사실과 오해' 카테고리의 다른 글
도메인과 유스케이스, 유지보수하기 쉽고 유연한 객체지향 시스템 (0) | 2022.04.16 |
---|---|
객체지향의 강력함은 책임을 자율적으로 만드는 것에 달려있다 (0) | 2022.04.04 |
테스트 주도 개발은 객체지향 설계도구 (0) | 2022.04.01 |
추상화는 복잡성을 이해하기 쉬운 수준으로 단순화하는 것 (0) | 2022.03.29 |
행동이 상태를 결정한다. (0) | 2022.02.10 |