2013년 2월 6일 수요일

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

지난번은 내가 생각해도 너무 날로 먹은 것 같아서 보충을 한다 ㅡㅡ;;(근데 누구 보라고 ㅡ.ㅡ?)

지금은 아래 단계중 2단계다.

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



먼저 전에 만들었던 UML을 보자

Guitar 클래스를 보니 무지하게 많은 변수와 매소드가 가득하다.
물론 변수와 매소드가 많다고 심각한 문제가 되지 않을수는 있다.
하지만 이런 클래스는 수정과 추가를 할 때 문제가 생긴다.
이 클래스에서 잘못 사용된 객체 타입을 찾는 법이 뭘까??

1. 객체는 자신의 이름이 나타내는 일을 해야한다. 
    즉, 객체는 어떤 공통된 분야에서의 일만 해야지 다른 분야의 일까지 해서는 안된다는 것
2. 각 객체는 하나의 개념을 나타내어야 한다.
    즉, 객체는 두 개이상의 임무를 해서는 안된다는 것이다.
3. 사용되지 않는 속성은 잘못 사용 중인 것이다.
    객체가 값이 없거나 null 속성들을 가진채로 사용되면
    객체가 하나 이상의 일을 하고 있을 가능성이 있다.

위를 참조해서 클래스를 수정해보자.



기존 기타 클래스에서 기타 스팩 클래스를 만들어서 기타 고유의 값만 빼고 옮겼다.
그리고 기타 클래스에서는 기타 스팩 클래스를 참조하도록 추가하였다.
그리고 인벤토리에서 search매소드가 GuitarSpec를 참조하도록 바꾸었다.
이렇게 함으로써 기타의 스팩이 바뀌어도 기타 고유의 클래스는 건드리지 않기에
캡슐화의 효과도 볼 수 있다.
이렇게 수정함으로써 2단계인 객체지향의 기본 원리로 소프트웨어를 유연하게 만들었다.

댓글 없음:

댓글 쓰기