티스토리 뷰
.. 일상에서의 객체지향
모닝커피를 주문하는 손님과 주문을 받는 캐시어, 주문 후 커피를 제조하는 바리스타
이 3명이 각각 행하는 커피를 주문하고 주문을 받고 제조를 하는 과정안에서 일어나는 역할과 책임 또 협력을 소개하며 객체지향의 가장 중요한 3가지 개념이라고 소개한다.
.. 객체지향의 특징
커피를 제조하는 바리스타는 커피머신을 이용해 커피를 제조할 수도 있지만
수작업만으로 커피를 제조할 수 있다. => 다형성
주문에 따라 캐시어는 바리스타의 커피 제조과정에 관여하지 않는다.
물론 바리스타도 캐시어의 주문받는 방식에 관여하지 않는다. => 캡슐화
.. 그래서 객체지향이란
- 시스템을 상호작용하는 자율적인 객체들의 공동체, 객체를 이용해 시스템을 분할하는 방법
- 주문을 하는 손님, 주문을 받는 캐시어, 제조를 하는 바리스타 들은 각각 '자율적인 객체'가 되어 주문시스템의 구성을 맡는다.
- 자율적인 객체란 상태와 행위를 갖고 있고 스스로를 책임지는 객체
- 손님과 캐시어, 바리스타는 각자의 책임(일상에서는 역할)을 알아서 잘 수행한다.
- 객체는 시스템을 구현하기 위해 다른 객체와 협력한다. 즉, 협력 내에서 역할을 수행한다.
- 객체가 다른 객체에게 요청 혹은 전달하는 메시지들을 협력이라고 표현
- 객체는 협력하기 위해 메시지를 전송하고, 메시지를 받은 객체는 적합한 메서드를 선택해 수행한다.
- 객체가 다른 객체의 행동에 관여하지 않고 본인의 역할만을 수행 후 메시지를 전달함
자율적인 객체를 커피숍의 손님, 캐시어, 바리스타라고 생각하고
일련의 과정들을 시스템의 상호작용이라고 생각하자.
.. 객체지향의 오해
- 객체를 지향한다는 말이 클래스를 정의하는 방법, 클래스간의 상속이 아니다.
- 어떤 클래스가 필요하다가 아닌 "어떤 메시지를 주고받으며 협력하는가" 가 중요하다.
- 클래스는 단순히 객체들의 협력관계를 코드로 옮기는 도구
.. 요약
모닝커피를 주문하는 손님
주문을 받는 캐시어
주문을 받고 커피를 제조하는 바리스타
이들은 서로 얼마나 커피를 주문할때의 발음을 신경쓰는지,
주문을 받을땐 어떤 동작으로 받을지, 무슨 멘트를 해야하는지,
커피를 제조할때 금가루를 넣는지 안넣는지 등 (책에서는 이러한 것들을 Class라고 표현한다.) 이 중요한게 아닌
그저 손님과 캐시어와 바리스타가 서로의 역할에 충실하며 가장 알맞고 효율적인 과정을 설계하는 것이 객체지향 프로그래밍이라고 요약할 수 있지않을까.
.. 느낀점
- 객체지향의 5원칙 중 SRP원칙은 하나의 클래스엔 하나의 책임을 갖는다라고 표현한다.
- 책에서의 내용을 보고 아키텍처 레이어를 이해해본다면
- 아키텍처 내의 @Component 들은 자율적인 객체로 생각
- 컴포넌트 내부의 메서드들은 다형성이라고 이해하였다.
- "강한 결합"은 자율적인 객체가 아닌 서로 서로를 묶어버리는 객체로서 행동하게 되기 때문에
"느슨한 결합"을 추구해야하는 이유를 알게 되었다.## ..일상에서의 객체지향
매일 아침 커피숍.. 비슷하지만 어딘가는 다른 하루
모닝커피를 주문하는 손님과 주문을 받는 캐시어, 주문 후 커피를 제조하는 바리스타
이 3명이 각각 행하는 커피를 주문하고 주문을 받고 제조를 하는 과정안에서 일어나는 역할과 책임 또 협력을 소개하며 객체지향의 가장 중요한 3가지 개념이라고 소개한다.
..객체지향의 특징
커피를 제조하는 바리스타는 커피머신을 이용해 커피를 제조할 수도 있지만
수작업만으로 커피를 제조할 수 있다. => 다형성
주문에 따라 캐시어는 바리스타의 커피 제조과정에 관여하지 않는다.
물론 바리스타도 캐시어의 주문받는 방식에 관여하지 않는다. => 캡슐화
..그래서 객체지향이란
- 시스템을 상호작용하는 자율적인 객체들의 공동체, 객체를 이용해 시스템을 분할하는 방법
- 자율적인 객체란 상태와 행위를 갖고 있고 스스로를 책임지는 객체
- 객체는 시스템을 구현하기 위해 다른 객체와 협력한다. 즉, 협력 내에서 역할을 수행한다.
- 객체는 협력하기 위해 메시지를 전송하고, 메시지를 받은 객체는 적합한 메서드를 선택해 수행한다.
자율적인 객체를 커피숍의 손님, 캐시어, 바리스타라고 생각하고
일련의 과정들을 시스템의 상호작용이라고 생각하자.
..객체지향의 오해
- 객체를 지향한다는 말이 클래스를 정의하는 방법, 클래스간의 상속이 아니다.
- 어떤 클래스가 필요하다가 아닌 "어떤 메시지를 주고받으며 협력하는가" 가 중요하다.
- 클래스는 단순히 객체들의 협력관계를 코드로 옮기는 도구
내 방식대로 이해해보자면
모닝커피를 주문하는 손님
주문을 받는 캐시어
주문을 받고 커피를 제조하는 바리스타
이들이 서로 얼마나 커피를 주문할때의 발음을 신경쓰는지,
주문을 받을땐 어떤 동작으로 받을지, 무슨 멘트를 해야하는지,
커피를 제조할때 금가루를 넣는지 안넣는지 등 (책에서는 이런 것들을 Class라고 표현하는 것 같다.) 이 중요한게 아닌
그저 손님과 캐시어와 바리스타가 서로의 역할에 충실하며 가장 알맞고 효율적인 과정을 설계하는 것이 객체지향 프로그래밍이라고 요약할 수 있지않을까.
'IT Book > 객체지향의 사실과 오해' 카테고리의 다른 글
Ch.6 객체지도 (0) | 2023.05.29 |
---|---|
Ch.5 책임과 메시지 (0) | 2023.05.21 |
Ch.4 역할, 책임, 협력 (0) | 2023.05.14 |
Ch.3 타입과 추상화 (0) | 2023.05.08 |
Ch2. 이상한 나라의 객체 (0) | 2023.04.29 |
- 맥 error
- 정수형으로 변환
- LEVEL2
- springboot
- 객체지향의 사실과 오해
- 객체지향
- 객체 지도
- 짝지어제거하기
- SpringSecurity
- mybatis구현
- 다음 큰 숫자
- it책 리뷰
- 스프링부트
- 책리뷰
- Vue.js3
- JWT
- java 플레이그라운드
- vuex
- 한권으로끝내기리눅스마스터2급
- 프로그래머스
- 함께모으기
- script setup
- vue.js
- for
- 리눅스마스터2급
- 알고리즘
- 토스페이먼츠
- 타임리프
- CompositionAPI
- pinia
- Total
- Today
- Yesterday