UML
Unified Modeling Language : 통합 모델링 언어
- 시스템을 모델로 표현해주는 대표적인 모델링 언어
UML 다이어그램 종류
구조 다이어그램
- 클래스다이어그램, 객체다이어그램, 복합체구조다이어그램, 배치다이어그램, 컴포넌트다이어그램, 패키지다이어그램
행위 다이어그램
- 활동다이어그램, 상태머신다이어그램, 유즈케이스다이어그램, 상호작용다이어그램
클래스 다이어그램
- 시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 대표적인 UML구조 다이어그램
- 목적 : 시스템을 구성하는 클래스들 사이의 관계 표현
클래스
- 동일한 속성과 행위를 수행하는 객체의 집합
- 객체를 생성하는 설계도
클래스는 공통의 속성과 책임을 갖는 객체들의 집합이자 실제 객체를 생성하는 설계도
관계
연관 관계
- 실선 화살표
- 클래스들이 개념상 서로 연결되었음
- 보통은 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일때 표시
- 오랜시간동안 같이할 객체와의 관계
ex) 자동(Car)차와 소유한 사람(Person)의 관계
public class Person {
private Car owns;
}
의존 관계
- 점선 화살표
- 일반적으로 한 클래스가 다른 클래스를 사용하는 경우
- 클래스의 속성(멤버변수)에서 참조할 때 : 연관 관계
- 연산의 인자(참조값)로 사용될 때 : 의존 관계
- 메서드 내부의 지역객체로 참조될 때 : 의존 관계
- 짧은 시간 동안 이용하는 관계
ex) 자동차(Car)와 주유기(GasPump)의 관계
public class Car{
...
public void fillGas(GasPunp p){
p.getGas(amount);
}
}
! 연관관계-의존관계 차이
- 실선+화살표 - 점선+화살표
![](https://velog.velcdn.com/images%2Foungoo%2Fpost%2F29917212-5928-47a6-b316-6662a52db367%2Fimage.png)
일반화 관계
- 실선 빈화살표
- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 (상속관계)
- 부모클래스는 자식 클래스의 공통 속성이나 연산을 제공하는 틀
실체화 관계
- 점선 빈화살표
- 인터페이스를 구현하는 것
- 클래스처럼 표기하고 스테레오타입으로
<<interface>>
추가
! 일반화관계-실체화관계 차이
- 실선+빈화살표 - 점선+빈화살표
![](https://velog.velcdn.com/images%2Foungoo%2Fpost%2Fa5e69c35-78ab-455b-aba0-d5a04a1d0db2%2Fimage.png)
집합관계
- 전체와 부분의 관계를 명확하게 명시하고자 할 때
1. 집약관계 (aggregation)
- 실선 빈마름모
- 한 객체가 다른 객체를 포함 (전체 쪽에 빈 마름모)
'부분'을 나타내는 객체를 다른 객체와 공유할 수 있음
- 전체 객체의 라이프타임과 부분객체의 라이프 타임이 독립적
전체 객체가 메모리에서 사라진다 해도 부분객체 사라지지 않음
ex) 생성자에서 참조값을 인자로 받아 필드 세팅
=> Computer 객체가 없어질때 MainBoard와 CPU가 소멸되는 것은 아님
![](https://velog.velcdn.com/images%2Foungoo%2Fpost%2F506e8495-acdc-4e0a-83cc-7feaa5881f89%2Fimage.png)
2. 합성관계
- 실선 마름모
- 부분 객체가 전체 객체에 속하는 관계
'부분'을 나타내는 객체를 다른 객체와 공유할 수 없음
- 전체 객체의 라이프타임과 부분객체의 라이프 타임은 의존적
전체 객체가 없어지면 부분 객체도 없어짐
ex) 생성자에서 필드에 대한 객체를 생성
![](https://velog.velcdn.com/images%2Foungoo%2Fpost%2F9035b42e-59db-47d9-b75a-cc021e4e3f1b%2Fimage.png)
! 집약관계-합성관계 차이
![](https://velog.velcdn.com/images%2Foungoo%2Fpost%2Fca399e87-024e-478f-beac-6ce7236e0651%2Fimage.png)
- 집약관계 : 라이프타임이 독립적
- 합성관계 : 라이프타임을 함께함
![](https://velog.velcdn.com/images%2Foungoo%2Fpost%2F94e98f5c-fa55-4a8c-acc8-4082cdd630d5%2Fimage.png)
게시판 클래스다이어그램
P11_BoardTest
![](https://velog.velcdn.com/images%2Foungoo%2Fpost%2Ff85324ca-7964-4218-90d1-11658e3cd7c9%2Fboard_class.jpg)
참고
연관관계랑 집합관계 헷갈림