2013년 2월 6일 수요일

헤드퍼스트 OOAD 1강 -3단계-

이제 3단계다.
1~3 단계가 무엇인지 복습해보자.

1. 소프트웨어가 고객이 원하는 기능을 하도록 구현
2. 객체지향의 기본 원리를 적용해서 소프트웨어를 유연하게 하기
3. 유지보수와 재사용이 쉬운 디자인으로 만들기 <-- 이걸할 차례


현재 2단계의 UML 이다.


자 이젠 이것을 어찌 바꿀까???
소스를 다운 받아서 보면 알겠지만 현재 Inventory 클래스에서 검색을 담당하고 있다.
하지만 검색을 하면서 GuitarSpec을 비교해가며 일치하는 것을 보여주고 있다.
이 중 비교하는 일을 기타 스팩에게 위임해보자.
이유는? 어차피 Inventory의 search 메소드는 GuitarSpec를 참조해서 검색을 하고, 비교하고   일치하는 것이 있으면 보여주는 일을 하고 있다.
애초에 GuitarSpec에서 비교를 하고 맞다/틀리다만 알려주고
search의 코드는 맞는 제품만 보여준다면 코드량이 많이 줄어들 것이다.
그리고 GuitarSpec이 수정되거나 추가되어도 search는 수정할 일이 없어진다.

아래는 이것을 수정한 UML 이다.
GuitarSpec에 numString: Wood 와 getNumStrings(): Wood가 추가 되었다.
여기서 Wood는 기타 목록이 들어있는 열거형이다. 헷깔릴까봐 UML에서 뺐다 ㅡ.ㅡ

댓글 없음:

댓글 쓰기