추상클래스
실제 구현 클래스를 위한 저장장소
추상클래스는 기능을 정의하고 서브클래스는 기능을 구현한다.
클래스의 공통적인 요소를 묶기 위해 추상클래스를 사용할 수 있다.
UML
2. association(연관)
객체지향의 원리
1. 인터페이스
클래스 FootballPlayer, BaseballPlayer가 인터페이스 Athlete를 상속할 때 이들 클래스와 상호작용하는 코드를 만들때 FootballPlayer, BaseballPlayer와 직접 상호작용하는 것 보다는 Athlete 인터페이스와 상호작용하는 것이 좋다. 항상 구현이 아니라 인터페이스에 따라 코딩하도록 해야 한다.
이게 왜 중요하냐면 프로그램이 유연해지기 때문이다. 인터페이스와 상호작용하는 코드를 만들면 새로운 클래스 예를 들면BasketballPlayer와도 잘 동작하게 될 것이다.
2. 캡슐화
클래스를 불필요한 변경으로부터 보호한다.
변경하는 것을 캡슐화 한다. 즉, 변화의 가능성이 낮다고 생각하는 부분과 많다고 생각하는 부분을 따로 때어낸다.
3. 변경
소프트웨어는 변하기 때문에 좋은 소프트웨어는 쉽게 변경될 수 있어야 한다. 변경에 잘 견딜 수 있는 프로그램을 만들 수 있는 방법 중 하나는 각 클래스가 변경의 이유를 하나만 갖도록 하는 것이다. 즉, 각 클래스가 하나의 일만을 하도록 해야 한다.
디자인의 오류 발견하기
디자인은 반복적으로 진행되며, 남의 디자인뿐만아니라 자신의 디자인도 기꺼이 변경해야 한다.
자존심은 좋은 디자인에 방해된다.
변하는 것을 볼 때마다, 캡슐화할 방법을 찾아야 함.
객체들 사이에 변하는 속성들이 있을 때, map 같은 콜렉션을 사용하서 속성들을 동적으로 저장하기. 그래서 새로운 속성들이 추가되어도 메소드를 추가하거나 코드를 변경할 필요가 없다.
보통 행동이 변할 때 서브클래스를 사용한다.
대부분의 좋은디자인은 나쁜디자인의 분석을 통해 나온다.
실수하는 것과 변경하는 것을 두려워하지 말기.
응집도
실제 구현 클래스를 위한 저장장소
추상클래스는 기능을 정의하고 서브클래스는 기능을 구현한다.
클래스의 공통적인 요소를 묶기 위해 추상클래스를 사용할 수 있다.
UML
1. Aggregation(집합) - 연관(Association)의 특별한 형태, 어떤 것이 다른 것으로 구성되어 있음을 의미.
출처 : byteonic.com
2. association(연관)
출처 : mscs.mu.edu
3. generalization(일반화)
3. generalization(일반화)
출처 : jot.fm
객체지향의 원리
1. 인터페이스
클래스 FootballPlayer, BaseballPlayer가 인터페이스 Athlete를 상속할 때 이들 클래스와 상호작용하는 코드를 만들때 FootballPlayer, BaseballPlayer와 직접 상호작용하는 것 보다는 Athlete 인터페이스와 상호작용하는 것이 좋다. 항상 구현이 아니라 인터페이스에 따라 코딩하도록 해야 한다.
이게 왜 중요하냐면 프로그램이 유연해지기 때문이다. 인터페이스와 상호작용하는 코드를 만들면 새로운 클래스 예를 들면BasketballPlayer와도 잘 동작하게 될 것이다.
2. 캡슐화
클래스를 불필요한 변경으로부터 보호한다.
변경하는 것을 캡슐화 한다. 즉, 변화의 가능성이 낮다고 생각하는 부분과 많다고 생각하는 부분을 따로 때어낸다.
3. 변경
소프트웨어는 변하기 때문에 좋은 소프트웨어는 쉽게 변경될 수 있어야 한다. 변경에 잘 견딜 수 있는 프로그램을 만들 수 있는 방법 중 하나는 각 클래스가 변경의 이유를 하나만 갖도록 하는 것이다. 즉, 각 클래스가 하나의 일만을 하도록 해야 한다.
디자인의 오류 발견하기
디자인은 반복적으로 진행되며, 남의 디자인뿐만아니라 자신의 디자인도 기꺼이 변경해야 한다.
자존심은 좋은 디자인에 방해된다.
변하는 것을 볼 때마다, 캡슐화할 방법을 찾아야 함.
객체들 사이에 변하는 속성들이 있을 때, map 같은 콜렉션을 사용하서 속성들을 동적으로 저장하기. 그래서 새로운 속성들이 추가되어도 메소드를 추가하거나 코드를 변경할 필요가 없다.
보통 행동이 변할 때 서브클래스를 사용한다.
대부분의 좋은디자인은 나쁜디자인의 분석을 통해 나온다.
실수하는 것과 변경하는 것을 두려워하지 말기.
응집도
응집도는 하나의 클래스를 이루는 원소들 사이에 연결의 정도.
응집도가 높은 클래스는 특정한 일에 집중하고 그 외의 일은 하려고 하지 않는다.
모든 클래스는 하나의 일을 위해 존재해야 한다.
응집도가 높을 수록 클래스끼리는 더 느슨해 진다. 즉 변경이 쉬워진다.
변경뿐만 아니라 재사용도 쉽다. 객체들이 서로 의존하지 않기 때문에.
응집도가 높은 클래스는 특정한 일에 집중하고 그 외의 일은 하려고 하지 않는다.
모든 클래스는 하나의 일을 위해 존재해야 한다.
응집도가 높을 수록 클래스끼리는 더 느슨해 진다. 즉 변경이 쉬워진다.
변경뿐만 아니라 재사용도 쉽다. 객체들이 서로 의존하지 않기 때문에.
'공부 > 객체지향' 카테고리의 다른 글
7장 아키텍쳐 (architecture) (0) | 2011.06.30 |
---|---|
6장 큰문제 해결하기 (0) | 2011.06.29 |
4장 분석 (0) | 2011.06.26 |
3 요구사항 변경 (0) | 2011.06.25 |
2장 요구사항 수집 (유스케이스) (0) | 2011.06.24 |