일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Buffered channel
- http 413
- Golines
- UnBuffered channel
- Logrus
- elasticsearch
- Intellij
- 대규모 시스템 설계
- AWS
- Infra
- notification system
- goland
- 오블완
- go
- 윈도우키보드
- golang
- body size
- Kubernetes
- System Design
- 컴포지트패턴
- 배포 프로세스
- 디자인패턴
- gitops
- GoF 디자인패턴
- 티스토리챌린지
- GoF
- Helm V3
- intellij ide
- 배포 파이프라인
- apollo router
- Today
- Total
Fall in IT.
UML, 클래스간의 관계 간단 정리 본문
안녕하세요.
오늘은 UML, 클래스간의 관계에 대해서 알아보겠습니다.
UML(Unified Modeling Language)이란?
1997년 OMG(Object Management Group)에서 표준으로 채택한 소프트웨어를 모델링 할때 사용하는 언어이다.
개념을 설명하기 위해 사용되기도 하고 구현된 시스템의 구조를 설명하기위해 사용되기도 한다.
소프트웨어 모델링이란?
- 다른 사람들과의 의사소통 또는 설계 논의
- 전체 시스템의 구조 및 클래스의 의존성 파악
- 유지보수를 위한 설계 문서
UML의 종류
UML은 크게 두 종류의 다이어그램이 존재한다.
1. 구조 다이어그램 (Structure Diagram)
2. 행위 다이어그램 (Behavior Diagram)
구조 다이어그램
시스템의 개념, 관계 등의 측면에서 요소들을 나타내고 각 요소들의 정적인 면을 보기 위한 다이어그램
행위 다이어그램
각 요소들 혹은 요소들간의 변화나 흐름, 주고받는 데이터 등의 동작을 보기 위한 다이어그램
소프트웨어 개발에서 가장 많이 사용하는 다이어그램은 클래스 다이어그램(구조 다이어그램)과 시퀀스 다이어그램(행위 다이어그램)이 있다.
클래스 다이어그램
클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기하는 다이어그램으로 시스템의 일부 또는 전체의 구조를 나타낼 수 있다. 클래스 다이어그램은 의존 관계를 명확히 보여주고 순환 의존이 발생하는 지점을 찾아낼 수 있다.
클래스 간의 관계
Generalization (일반화)
부모 클래스와 자식 클래스 간의 상속 관계를 나타낸다. 자식 클래스가 부모 클래스로 일반화 되었다고 말한다.
Realization (실체화)
인터페이스와 구현 클래스의 관계
interface의 메서드를 오버라이딩하여 실제 기능으로 구현하는 것을 말한다.
Dependency (의존)
어떤 클래스가 다른 클래스를 참조하는 것을 말한다.
참조하는 형태는 아래와 같다.
1. 객체 생성
2. 객체를 매개변수로 받아서 사용
3. 지역변수로 참조
Association (연관), Directed Association (방향성 있는 연관)
연관은 보통 다른 객체의 참조를 가지는 필드를 의미한다.
왼쪽은 상호 참조이고 오른쪽은 한쪽에서만 참조하고 있는 형태이다.
Aggregation (집합)
집합은 전체와 부분의 관계를 나타낸다.
전체 소멸시 부분은 사용가능. 독립적.
Composition (합성)
합성도 집합과 비슷하게 전체와 부분의 관계를 나타내지만 개념적으로 집합보다 더 강한 집합을 의미한다.
합성에서는 whole 인스턴스가 part 인스턴스의 전체 수명을 책임진다. 즉 part는 whole의 소유인 강한집합이다.
또한, part에 해당하는 인스턴스는 공유될 수 없다. 전체 소멸 시 부분도 소멸.
참조
https://www.nextree.co.kr/p6753/
모두 즐거운 코딩하세요~
'기타' 카테고리의 다른 글
DIP(Dependency Inversion Principle)에 관하여 (0) | 2024.03.09 |
---|---|
도커, 도커 컴포즈 도대체 왜 필요한데? (0) | 2023.12.16 |
컴포지트 패턴(Composite Pattern) 간단히 살펴보기 (0) | 2023.04.30 |
Git commit message 관리 (0) | 2023.03.19 |
GoLand(IntelliJ) 라이브 템플릿 사용방법 (0) | 2023.02.07 |