'캡슐화'에 해당되는 글 2건

  1. 2011.06.28 5장 좋은디자인 = 유연한 소프트웨어
  2. 2011.06.23 1장
공부/객체지향2011. 6. 28. 13:14


추상클래스
실제 구현 클래스를 위한 저장장소
추상클래스는 기능을 정의하고 서브클래스는 기능을 구현한다.

클래스의 공통적인 요소를 묶기 위해 추상클래스를 사용할 수 있다.

UML
1. Aggregation(집합) - 연관(Association)의 특별한 형태, 어떤 것이 다른 것으로 구성되어 있음을 의미.
출처 : byteonic.com

2. association(연관)
출처 : mscs.mu.edu

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


Posted by skyjumps
공부/객체지향2011. 6. 23. 17:50


위대한 소프트웨어 만들기 3단계
1. 소프트웨어가 고객이 원하는 기능을 하도록 하기
2. 객체지향 기본 원리를 통해 소프트웨어를 유연하게
3. 유지보수와 재사용이 쉬운 디자인 만들기

캡슐화
프로그램을 논리적인 그룹으로 나누기.
일반적으로 변화 가능성이 높은 부분을 그렇지 않은 부분으로부터 분리하여 캡슐화
중복 코드를 볼 때마다 캡슐화 할 수 있는지 찾아보기.
1. 클래스의 데이터를 private로 보호
2. 속성들 전체를 캡슐화
3. 행위를 캡슐화
프로그램을 쪼개서 다른 부분의 수정 없이 특정 부분을 변경할 수 있다.

위임 (Delegation)
객체가 어떤 일을 직접하지 않고 다른 객체에게 그 일을 하도록 맡기는 것
코드의 재사용성이 좋아진다. (각 객체가 자기 자신의 기능만 하면 됨.)
객체가 독립적이고 느슨하게 결합되도록 함. 이로 인해 재사용이 쉬움.
 

'공부 > 객체지향' 카테고리의 다른 글

5장 좋은디자인 = 유연한 소프트웨어  (0) 2011.06.28
4장 분석  (0) 2011.06.26
3 요구사항 변경  (0) 2011.06.25
2장 요구사항 수집 (유스케이스)  (0) 2011.06.24
UML, 상속, 다형성, 캡슐화  (0) 2011.06.22


Posted by skyjumps