Head First Object-Oriented Analysis & Design


요즘 자바를 많이 쓰다보니 자연스레 객체지향에 대해 다시 생각하게 된다.
그래서 본 책이 Head First Object-Oriented Analysis & Design.

책의 내용은 제목데로 객체지향 방법론에 대해 소개된 책이다. 책의 내용은 초보자가 읽기에도 무리없을 정도로 되어 있다. 학교에서 유즈케이스나 UML을 공부했었고, 자바같은 객체지향 언어에 거리감이 없어 쉽게 읽혔다.

몇 가지 케이스를 두고 객체지향 방법론을 적용해 코드를 완성해 나가는 방식으로 객체지향을 설명하고 있는데 단순히 돌아가는 코드를 위대한 코드로 리팩토링 하는 부분이 흥미로웠다. 프로그램을 만들다 보면 어떻게 하면 위대한 코드를 짤수있을까란 고민이 항상 되는데 그 고민에 대해 답변이 되는것 같았다.

간단히 책에서 인상깊었던 내용은

더보기접기

위대한 소프트웨어 만들기
1. 여러분의 소프트웨어가 고객이 원하는 기능을 하도록 하세요.
2. 객체지향의 기본원리를 적용해서 소프트웨어를 유연하게 하세요.
3. 유지보수와 재사용이 쉬운 디자인을 위해 노력하세요.

객체지향원리
1. 변하는 것은 캡슐화 하라
2. 구현에 의존하기 보다는 인터페이스에 의존하도록 코딩하라
3. 각 클래스는 변경요인이 오직 하나이어야 한다.

디자인 원리
1. OCP (Open Close Principle)
개방 폐쇄의 원리. 기존 코드는 변하지 않지만 수정가능해야 한다. – 오버라이드를 통해 확장
2. DRY (Don’t repeat yourself)
반속하지 말라
3. SRP (Simple Responsibility Principle)
단일 책임의 원리
객체는 하나의 책임만 갖으며 그 책임을 수행하는데 집중되어 있어야 한다.
( 클래스 ) 이(가) 자신을 ( 메소드 ) 한데 – 말이 안되면 잘못된것
4. LSP (Liskov Substitution Principle)
리스코 프 치환원리
자식타입은 부모타입들이 사용되는 곳에 대체될 수 있어야 한다. – 상속에 관한것. 부모 클래스가 사용되는 곳은 자식 클래스도 잘 사용되어야 한다.
LSP를 위반하면 위임(delegation), 구성(composition), 집합(aggregation) 사용

OOA&D 스타일
특징리스트 – 유즈케이스다이어그램 – 문제점분해하기 – 요구사항 – 도메인분석 – 사전설계 – 구현 – 출하

접기
실제 회사에서 프로젝트에 대한 유즈케이스나 UML, 요구사항명세서 같은 문서작업에 대해 강제하지 않지만 어느정도 방법론을 적용한다면 내가 편할것 같다. 기획서를 통해 구체적인 기능을 도출하고 구현하는게 일이니깐..


Head First Object Oriented Analysis & Design
브렛 맥래프린,게리 폴리스,데이빗 웨스트 공저/신광연,박종걸 공역
예스24 | 애드온2