클래스 다이어그램
참고 자료
- 최범균님 - UML 기초 강의 on Youtube
- 널널한 개발자님 - UML 이야기 첫 번째, 클래스 다이어그램 on Youtube
- nextree - UML: 클래스 다이어그램과 소스코드 매핑
- UML for Java Programmers by Robert C. Martin
- mermaid syntax - classDiagram
클래스 다이어그램¶
- 객체의 타입을 표현
- 타입 간의 정적인 관계 기술
- 클래스 이름/속성 (attribute)/ 오퍼레이션 (operation) 으로 세칸으로 구분
- 클래스 이름만 필수로 나머지는 필요한 것만 표시 가능
classDiagram
class Member{
+String name
+hello()
}
in mermaid.js
classDiagram
class Member{
+String name
+hello()
}
// or
classDiagram
class Member
Member : +String name
Member : +hello()
속성 표기법¶
가시성 이름 : 타입 = 기본갑
- 가시성
+ public
,- private
,# protected
,~ package
classDiagram
class Customer{
-name
+String phone
#type = CORPORATE
}
오퍼레이션 표기법¶
- 가시성 이름 (매개변수 목록) : 리턴타입
classDiagram
class Order {
+changeShippingAddress(newAddr: Address)
+totalAmounts() Long
}
in mermiad
classDiagram
class Order {
+changeShippingAddress(newAddr: Address)
+totalAmounts() Long
}
관계 기호 요약¶
- 연관관계 - 협력을 위해 필요한 영구적인 탐색 구조
- 의존관계 - 협력을 위해 일시적으로 필요한 의존성 (파라미터, 리턴타입, 지역변수)
연관 (association)¶
Association with Label¶
classDiagram
direction LR
Person -->Company : 일함
class Person
class Company
- mermaid syntax -
[classA][Arrow][ClassB]:LabelText
Association with Cardinality¶
classDiagram
direction LR
Person "1..*" --> "1" Company : 일함
class Person
class Company
[classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText
연관 탐색¶
- 연관 (실선) 의 화살표는 연관의 탐색 가능 방향을 의미
- 양쪽에 모두 지정하지 않으면 양방향 탐색 가능
의존 (Dependency)¶
- 변경에 의한 전파 가능성을 의미
- 점선 (..>) 으로 표시
classDiagram
direction LR
Controller ..>Handler
Controller ..>Template
class Controller{
+ render()
}
class Handler
class Template
in mermaid
classDiagram
direction LR
Controller ..>Handler
Controller ..>Template
class Controller{
+ render()
}
class Handler
class Template
인터페이스, 추상 클래스¶
classDiagram
List<|..AbstractList : 구현
AbstractList<|--ArrayList : 일반화, 상속
class List{
<<Interface>>
+add()
}
class AbstractList{
<<Abstract>>
#addInternal()*
}
class ArrayList
in-mermaid
classDiagram
List<|..AbstractList : 구현
AbstractList<|--ArrayList : 일반화, 상속
class List{
<<Interface>>
+add()
}
class AbstractList{
<<Abstract>>
#addInternal()*
}
class ArrayList
Aggregation, Composition¶
- 마름모꼴로 표현
- aggregration - 집합
- 부분/전체 관계를 내포하는 연관의 특별한 형태
- 색이 칠해져 있지 않음
- composition - 합성
- 집합의 특별한 형태 (사실 큰 차이 없을 지도?) 조금 더 긴밀한 관계를 의미
- 색이 칠해져 있음
classDiagram
Team o--> Player : aggregation
class Team
class Player
Order *--> OrderItem : composition
class Order
class OrderItem
in mermaid
classDiagram
Team o--> Player : aggregation
class Team
class Player
Order *--> OrderItem : composition
class Order
class OrderItem
Last update:
February 26, 2023
Created: February 9, 2023
Created: February 9, 2023