본문 바로가기
Java/디자인 패턴

[Java/디자인 패턴] 클래스 다이어그램

by 기록하는_사람 2022. 10. 31.

클래스 다이어그램

📌 클래스 다이어그램

: 시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 UML 구조 다이어그램.

  시스템을 구성하는 클래스들 사이의 관계 표현.

 

💡 클래스

: 동일한 속성과 행위를 수행하는 객체의 집합. 

 

클래스 다이어그램 - UML 클래스 표현

📌 UML 클래스 표현

① 맨 위 : 클래스 이름.

② 중간 : 속성.

③ 맨 아래 : 연산. 

Course
-id: String
-name: String
-numOfStudents: Integer
+addStudent(student: Student): void
+deleteStudent(id: Integer): void
접근 제어자 표시 설명
public + 어떤 클래스의 객체에서든 접근 가능.
private - 해당 클래스에서 생성된 객체들만 접근 가능.
protected # 해당 클래스와 동일 패키지에 있거나 상속 관계에 있는 하위 클래스 객체들만 접근 가능. 
package ~ 동일 패키지에 있는 클래스의 객체들만 접근 가능. 
  표시
속성 [+, -, #,  ~]이름: 타입[다중성 정보] [=초기값]
연산 [+, -, #, ~]이름(인자1: 타입1, ..., 인자n: 타입n): 반환 타입

💡 [ ] : 생략 가능. 

 

클래스 다이어그램 - UML에서 제공하는 클래스들 사이의 관계

📌 UML에서 제공하는 클래스들 사이의 관계

관계 설명
연관 관계
(association)
클래스들이 개념상 서로 연결되었음을 나타냄.
보통 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 표시.
실선(양방향)이나 화살표로 표시.
일반화 관계
(generalization)
상속 관계.
속이 빈 화살표로 표시.
집합 관계
(composition, aggregation)
클래스들 사이의 전체 또는 부분 같은 관계를 나타냄. 
집약 관계, 합성 관계가 존재.
의존 관계
(dependency)
한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 표시.
두 클래스의 관계가 한 메서드를 실행하는 동안과 같은, 짧은 시간만 유지됨.
점선 화살표로 표시.
실체화 관계
(realization)
책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계를 나타냄. 
빈 삼각형을 점선으로 표시한 화살표로 표시.

 

클래스 다이어그램 - UML에서 제공하는 클래스들 사이의 관계 - 연관 관계

📌 연관 관계(association)

: 클래스들이 개념상 서로 연결되었음을 나타냄.
  보통 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 표시.
  실선(양방향)이나 화살표로 표시.

 

📌 다중성

: 연관된 객체 수.

다중성 표기 의미
1 1
* 0 또는 그 이상
0..* 0 또는 그 이상
1..* 1 이상
0..1 0 또는 1
2..5 2 또는 3 또는 4 또는 5
1, 2, 6 1 또는 2 또는6
1, 3..5 1 또는 3 또는 4 또는 5

 

클래스 다이어그램 - UML에서 제공하는 클래스들 사이의 관계 - 일반화 관계

📌 일반화 관계(generalization)

: 상속 관계.
  속이 빈 화살표로 표시.

 

클래스 다이어그램 - UML에서 제공하는 클래스들 사이의 관계 - 집합 관계

📌 집합 관계(composition, aggregation)

: 클래스들 사이의 전체 또는 부분 같은 관계를 나타냄. 
  집약 관계, 합성 관계가 존재.

 

📌 집합 관계와 합성 관계

집함 관계 설명
집약 관계 - 한 객체가 다른 객체를 포함하는 것.
- 전체 객체와 부분 객체의 생명 주기가 다름.
- 부분 객체를 여러 전체 객체가 공유할 수 있음. 
- 빈 마름모로 표시. 
합성 관계 - 부분 객체가 전체 객체에 속하는 관계.
- 전체 객체가 없어지면 부분 객체도 없어짐.
- 부분 객체를 여러 전체 객체가 공유할 수 없음.
- 채워진 마름모로 표시.

 

클래스 다이어그램 - UML에서 제공하는 클래스들 사이의 관계 - 의존 관계

📌 의존 관계(dependency)

: 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 표시.
  두 클래스의 관계가 한 메서드를 실행하는 동안과 같은, 짧은 시간만 유지됨.
  점선 화살표로 표시.

 

📌 한 클래스가 다른 클래스를 사용하는 경우

① 클래스의 속성에서 참조할 때

② 연산의 인자로 사용될 때

③ 메서드 내부의 지역 객체로 참조될 때 

 

클래스 다이어그램 - UML에서 제공하는 클래스들 사이의 관계 - 실체화 관계

📌 실체화 관계(realization)

: 책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계를 나타냄. 
  빈 삼각형을 점선으로 표시한 화살표로 표시.

'Java > 디자인 패턴' 카테고리의 다른 글

[Java/디자인 패턴] 객체지향 원리  (0) 2022.11.02
[Java/디자인 패턴] UML  (0) 2022.10.31

댓글