해당 책에 흥미가 생겨 읽게 되었다. 내용은 역시나 재미있었다. 그리고 유익했다.
개발자분들은 한번씩 읽어봐도 좋을 듯하다. 강!추!
아래는 읽으면서 기록해놓고 싶은 부분 위주로 작성하였다.
ch1. 협력하는 객체들의 공동체
실세계 모방?
첫 챕터에서부터 나는 꽤나 충격적이었다.
객체지향을 공부해본 사람이라면 누구나 접했을 "실세계 사물과 객체" 사이의 연관성에 대해 저자는 객체지향의 목표는 실세계를 모방하는 것이 아니라고 한다.
커피 주문 과정
또한 협력을 얘기하기 위해 커피를 주문하고 제조하는 과정을 아주 상세히 얘기해주는데,
이 커피 주문이라는 협력에 참여하는 손님, 캐시어, 바리스타는 자신이 맡은 바 책임을 다하고 있다.
실세계에서는 협력을 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행한다.
그리고 이것은 객체지향의 핵심적이고 중요한 개념을 거의 포함하고 있다.
역할과 책임을 수행하며 협력하는 객체들.
흔히 "객체는 상태와 행동을 함께 지닌 실체"라고 정의한다.
객체들은 협력에 참여하기 위해 어떤 행동을 해야하는데, 그 행동을 하는데 필요한 상태도 함께 지니고 있어야 한다는 의미이다.
또한 객체는 특정한 행동을 수행하는 방법(how)은 스스로 결정할 수 있어야하는 자율적인 존재이어야 한다.
그럼 여기서 객체는 언제 수행할까? 바리스타는 캐시어가 커피 제조를 요청할 때까지 커피를 제조하지 않는 것처럼 객체도 요청이 올 때에만 수행한다. 요청을 메시지라하며, 수신된 메시지를 처리하는 방법을 메서드(method)라고 한다.
객체지향의 본질 - 객체를 지향하라!
객체지향을 설계할 때 중요한 것은 코드를 담는 클래스의 관점에서 메시지를 주고받는 객체의 관점으로 사고의 중심을 전환해야하는 것이다. (단지 클래스는 객체들의 협력 관계를 코드로 옮기는 도구일 뿐이다.)
결국 핵심은 적절한 책임을 수행하는 역할 간의 유연하고 견고한 협력 관계를 구축하는 것이다.
그러므로 이러한 협력 관계에 참여하는 객체의 역할, 책임, 협력에 집중하고, 객체를 지향하자!
ch2. 이상한 나라의 객체
내가 이 책에서 흥미를 느꼈던 부분인 이상한 나라의 앨리스 내용이 드디어 이 챕터에서 나온다. 기대한 것 이상으로 해당 스토리의 등장인물들과 상황을 잘 사용하여 중요한 개념을 이해되기 쉽게 설명한 점이 매우 인상깊다.
상태
"상태"는 특정 시점에 객체가 가지고 있는 정보의 집합으로, 객체의 구조적 특징을 표현한다. 객체의 상태는 객체에 존재하는 정적인 프로퍼티와 동적인 프로퍼티 값으로 구성된다.
앨리스라는 객체를 예로 들면 "키"와 "위치"는 정적이고, 130cm와 "통로"는 동적이다.
이러한 객체의 상태는 스스로의 행동에 의해서만 변경되는 것을 보장하여 객체의 자율성을 유지한다.
결국 객체는 다른 객체의 상태에 직접 접근할 수도, 상태를 변경할 수 없다.
행동
결국 객체의 상태는 객체의 자발적인 행동으로 변경된다.
그러나 객체의 행동의 결과는 객체의 상태에 의존적이다. 작아지는 음료를 마시는 것을 예로 들면, 음료를 마신 후의 앨리스의 키는 음료를 마시기 전의 키보다 작아져야 한다. 이것은 음료를 마시는 행동의 결과가 앨리스의 키에 의존한다는 것을 의미한다.
앨리스가 문을 통과할 수 있는지 또한 앨리스의 키가 현재 몇 센티미터인지에 달려 있다.
설계자로서 우리는 객체를 바라볼 때 상태가 아닌 행동에 초점을 맞춰야 한다.
객체지향 설계는 애플리케이션에 필요한 협력을 생각하고 협력에 참여하는 데 필요한 행동을 생각한 후 행동을 수행할 객체를 선택하는 방식으로 수행되므로 먼저 객체의 행동을 결정하고 그 후에 행동에 적절한 상태를 선택하면 된다.
이렇게 함으로써 응집도 높고 재사용 가능한 객체를 만들 수 있게 한다.
To Be Continue..
'유용한 모든 것' 카테고리의 다른 글
CS 정리 [자료구조] (0) | 2022.04.13 |
---|---|
[.gitignore] git에서 파일 및 폴더 숨기기 (0) | 2021.12.24 |
[IT 포스팅] 개발자 생산성 습관에 대한 개발자들의 생각 (0) | 2021.12.06 |
[Github] Repository(레파지토리)에 Git clone/pull/push하기 (0) | 2021.06.07 |
28회 ADsP 데이터분석 준전문가 합격 후기 (0) | 2021.04.09 |