책 난이도 : ★ ★ ★ ★
추천 별점 : ★ ★ ★ ★ ★
객체지향의 사실과 오해 | 조영호 - 교보문고
객체지향의 사실과 오해 | 객체지향에 대한 선입견을 버려라!『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝
product.kyobobook.co.kr
객체지향적 프로그래밍은 무엇인가?
객체란 무엇이며, 어떻게 설계하는게 좋은 설계인가?
모든 것에 대한 내용이 들어있다.
같은 의미를 가리키는 다른 말이 굉장히 많이 나타난다.
-> 어렵다.. 헷갈린다
그러나 이를 읽고 정리하게 된다면, 나만의 객체지향 개념을 정리할 수 있을 것이다.
ex) SOLID에서 책임은 어떤 것을 의미하는가..?
분명 모든 사람이 객체지향에대해 말해보라하면, 다르게 말할테지만, 의미는 같다.
나만의 객체지향을 찾길 바라며, 그에 대한 단초를 제공해주는 소중한 책이다.
자바를 깊게 공부하며, 객체지향에 대해서 깊게 공부할자 꼭 읽어보는 것을 추천한다.
아래는 객체지향을 읽고 정리한 내용의 일부이다.
객체지향의 사실과 오해
협력과 역할과 책임 그리고 행동과 속성
정말 정말 잘쓴책이다. 한줄한줄 어렵게 곱씹어 읽다보면 작가의 의도를 파악하고 해석하게된다.
책 요약
문제상황을 여러 객체들의 협력으로 바라봐야한다.
큰 문제상황을 작은 여러 문제상황으로 쪼개고, 작은 문제상황을 여러 역할의 협력으로 해결하는 것이다.
예를들어 재판이라는 문제상황이 주어졌다. 즉 우리는 재판을 해야한다.
이때 우리는 자연스럽게 재판하는사람, 재판당하는사람 이렇게 두명의 역할과 여러 행동이 필요한것을 알 수 있다.
과정을 그려보면 다음과같다
(문제상황)재판요청 -> 증인호출 -> 증인나오기 -> 증인하기 ->재판하기
위의 행동을 응집도있게 묶어보자.
(증인호출,재판하기),(증인나오기,증인하기)
이때 우리는 이러한 행동들을 메소드로 비유할 수 있으며, 이 모든 행동(메소드)는 공통적인 하나의 역할을 수행할 책임이 존재한다.(SRP)
참고로 책임은 작은책임, 큰책임 기준에따라 나뉠수있는데,
예를들어 강아지 집사 역할의 책임은 "강아지 관리"이며 행동은 강아지 산책하기, 강아지 밥주기, 강아지 목욕시키기가 있다고하자
"강아지 관리" 의 책임은 여러 행동들로 구성될수있고, 밥주기, 목욕시키기 또한 마찬가지이다 , 이때 행동 = 메소드이다
SRP에서 단일책임은 바로 이 "강아지 관리"를 의미하며 역할에 적합한 책임을 가져야한다.
인터페이스는
1.추상메소드들을 추상화한 인터페이스 (역할)
2.인터페이스를 추상화한 인터페이스 (기능)
두가지가 존재한다.
(옆집 철수,민수,현수,콩순이가 강아지 집사 역할을 맡을 수 있다)
1.이때, 강아지 관리 책임(추상메소드들)을 추상화하여 강아지 관리 역할을 만드는것이 인터페이스이다.
2.강아지 관리, 고양이 관리, 햄스터 관리, 등 다양한 인터페이스들을 또 추상화해서 "관리"로 더 큰 인터페이스를 만들 수 있다
상태 - 필드
행동(작은책임) - 메소드
책임(큰책임) - 추상 메소드
책임의 추상화 - 인터페이스
추상 메소드(책임)들이 공통적으로 의미하는것 -> 인터페이스(역할)
인터페이스(역할)의 추상화 -> (기능) !
*****SRP에서 단일책임이란, 기능이 하나여야 한다는것 아닐까?*****
SRP에서 말하는 단 하나의 책임은,
만약 인터페이스를 구현하는 클래스라면, 해당 클래스는 인터페이스가 의미하는 책임만을 지겠다는 의미고,
인터페이스를 구현하지 않는 클래스라면 해당 클래스에 모든 메소드들은 하나의 목적(역할)(인터페이스)로 묶일수 있다.
'도서' 카테고리의 다른 글
[도서 리뷰 02] 스프링 부트 3 백엔드 개발자 되기 - 신선영 (2) | 2024.11.27 |
---|---|
[도서 리뷰 01] 이것이 자바다 - 신용권, 임경균 (2) | 2024.11.23 |