클래스 다이어그램

접근 제어자 

public    +    어떤 클래스의 객체에서든 접근 가능 

private    -    이 클래스에서 생성된 객체들만 접근 가능 

protected    #    동일 패키지에 있거나 상속 관계의 하위 클래스 객체들만 접근 가능 

package    ~    동일 패키지에 있는 클래스의 객체들만 접근 가능

 

 

관계 

연관 관계 (association)

 - 클래스들이 개념상 서로 연결되었음을 나타낸다. 실선, 화살표로 표시 

 - 보통 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일때 표시 

 - 양방햔 관계 일때 화살표를 사용하지 않음

 - 단방향 -> 한 객체만이 다른 객체의 존재를 인식 

 - 양방향 -> 양 객체들 모두 서로의 존재를 인식

 - 멤버변수가 양 쪽에 있으면 양방향 관계 

단방향 관계
양방향 관계
다대다 연관관계 예시
다대다 연관관계 구현 코드 예시

- 양방향 관계이므로 각 클래스에서 서로를 참조할 수 있는 속성을 정의 

- 다대다이므로 Vector 구조를 이용

 

 

 

 

일반화 관계 (generalization)

 - 객체지향에서의 상속관계 

 - 한 클래스가 다른 클래스를 포함하는 상위 개념, IS - A 관계 

 - 속이 빈 화살표를 사용해 표시

 - 두 클래스 사이에 "is a kind of 관계"가 성립할 떄 사용

일반화 관계
일반화 관계 예시

 

 

 

집합관계 (composition, aggregation)

 - 클래스들 사이의 전체, 부분 같은 관계를 나타냄 

 - 집약관계, 합성 관계가 존재

 - 집약관계 -> 한 객체가 다른 객체를 포함하는 것을 나타냄 

                -> 전체, 부분과의 관계로 전체를 가리키는 클래스 방향에 빈 마름모로 표시          

집약관계
집약관계 예시

- Computer 객체가 사라져도 부품 객체들은 사라지지 않음

- 외부에서 이들 객체에 대한 참조만을 받아 사용했기 때문

- Computer 객체와 부품 객체들의 라이프 타임은 무관

 

 

 

 - 합성 관계 -> 부분 객체가 전체 객체에 속하는 관계

                 -> 전체 객체가 사라지면 부분 객체도 사라지는 경우를 의미 

                 -> 전체를 가리키는 클래스 방향에 채워진 마름모로 표시

합성 관계
합성 관계 예시

- Computer 객체가 생성되면 MainBoard, CPU, Memory 객체가 함께 생성 

- 부품 객체들은 Computer 객체가 사라지면 같이 사라짐 

- 부품 객체들의 라이프 타임이 Computer 객체의 라이프타임에 의존하는 관계가 형성

 

 

의존관계 (dependency)

 - 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때를 나타냄 

 - 두 클래스와 관계가 한 메서드를 실행하는 동안과 같이 짧은 시간만 유지됨 

 - 점선 화살표를 사용해 표시

의존관계 

 

실체화 관계 (relization)

 - 인터페이스와 인터페이스를 실제로 구현한 클래스들 사이의 관계

 - "can do this" 관계

 - 스테레오 타입은 "<< >>" 사이에 원하는 이름을 쓴다 -> 키워드 

 

실체화 관계 예시

 

'설계 패턴' 카테고리의 다른 글

템플릿 메서드 패턴  (0) 2020.11.12
Decorator 패턴  (0) 2020.11.09
Strategy 패턴  (0) 2020.10.06
빌더 패턴 (Builder Pattern)  (0) 2020.10.06
SOLID 원칙  (0) 2020.10.05
TAGS.

Comments