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 |