1단계: 모호성 해소 

객체 지향 설계의 첫 번째는, 누가 그것을 사용할 것이며 어떻게 사용할 것인지에 대해 생각해야 한다.

커피 메이커에 대한 객체 지향적 설계를 한다고 했을 때, 어떤 용도로 쓰이느냐에 따라 설계 자체가 완전히 뒤바뀐다.

열 가지 이상의 제품을 만들어야 하는 기계일 수도 있고, 블랙 커피만 만드는 간단한 기계일 수도 있기 때문이다.


2단계: 핵심 객체 설계

시스템에 넣을 핵심 객체가 무엇인지 생각해야 한다.

식당을 설계한다 했을 때, 이 때의 핵심 객체는 테이블, 손님, 식사, 종업원 등이 있다.


3단계: 관계 분석

객체 사이의 관계를 분석한다.

어떤 객체가 어떤 객체에 속해 있는지, 다른 객체로부터 상속받아야 하는 객체가 있는지, 관계는 일대다인지 다대다인지 등을 생각할 수 있다.

예를 들어, 손님일행(Party)은 손님(Guests) 배열을 가져야하며, 

각 테이블(Table)은 손님일행(Party)을 하나만 가질 수 있지만 각 손님일행(Party)은 테이블(Table)을 여러 개 가질 수 있다.


4단계: 행동 분석

객체가 수행해야 하는 핵심 행동에 대해 생각한다.

예를 들면, 손님일행(Party)이 식당(Restaurant)에 들어온다.

일행(Party) 중 한 사람(Guest)이 종업원(Employee)에게 자리(Table)을 부탁한다.

이 때 종업원(Employee)은 대기리스트(Reservation)을 확인한 다음, 

자리(Table)가 있으면 해당 손님일행(Party)에게 테이블(Table)을 배정한다.

자리(Table)가 없다면 손님일행(Party)은 대기리스트(Reservation) 맨 마지막에 추가된다.

어떤 한 손님일행(Party)이 식사를 마치고 나가면 한 자리(Table)가 비게 되고

그 자리(Table)는 대기리스트(Reservation)의 맨 위 손님일행(Party)에게 할당된다.




참고도서: 코딩인터뷰 완전분석

'Java' 카테고리의 다른 글

상속 (Inheritance)  (0) 2018.11.27
객체지향 프로그래밍 (Object-Oriented Programming)  (0) 2018.11.26
static과 final  (0) 2018.08.20
직렬화 (Serialization)  (0) 2018.08.04
Overloading (오버로딩)  (0) 2018.07.28

+ Recent posts