UML
UML(Unified Modeling Language, 통합 모델링 언어)
❤소프트웨어 엔지니어링 분야에서 시스템 설계 시각화에 대한 표준화된 방법을 제공하기 위한 범용 모델링 언어
❤소프트웨어 엔지니어들은 보통 UML사용보다는 각자의 방법으로 다이어그램을 생성한다. 그러나 이런 다이어그램에는 종종 UML의 요소가 포함된다.
❤크게 구조적 다이어그램, 행동 다이어그램으로 나뉜다.
구조적 UML 다이어그램
시스템의 정적 측면을 나타낸다.
모델링되는 시스템에 있어야 하는 사항과 구조를 강조한다.
소프트웨어 아키텍쳐(소프트웨어의 요소, 관계, 속성으로 구성되는 시스템의 구조)를 문서화하는데 광범위하게 사용된다.
행동 UML 다이어그램
시스템의 동적 측면을 나타낸다.
모델링되는 시스템에서 발생하는 일과 기능을 강조한다.
시스템의 기능을 설명하는데 광범위하게 사용된다.
클래스 다이어그램 표기

Generalization(일반화)
❤일반화는 부모클래스와 자식 클래스간의 상속 관계를 나타낸다.
❤자식클래스에서 뻗어나온 실선이 부모클래스에 빈 삼각형으로 가르키는 그림
Realization(실제화)
❤인터페이스의 구현을 표현할 때 사용
❤인터페이스를 클래스처럼 표기하고 <<interface>>를 추가하는 방법, 빈 동그라미로 표현하는 방법 2가지가 있다.
Association(연관)
❤A클래스가 B클래스의 기능을 사용(참조)하는 경우는 화살표로 표기한다.
→참조당하는 쪽을 화살표로 표기한다.
❤A와 B가 서로 기능을 사용(참조)하는 경우는 실선으로 표기한다.
Dependency(의존)
❤A클래스가 B클래스의 기능을 사용(참조)하는 경우
→ 참조의 형태는 메서드 내에서 대상 클래스의 객체생성, 객체 사용, 메서드 호출, 객체 리턴, 매개변수로 사용하면서 해당 객체를 잠시만 사용하는 것
❤연관관계와 차이는 더 짧은 시간이라는 것
→ 긴 시간이면 연관관계
→ 함수 안에서 클래스를 생성하고 기능을 호출한 후, 클래스가 사라지면 의존관계이다.

❤다음과 같이 <<>>표기로 어떠한 목적의 의존관계인지 명시할 수도 있다.
Aggregation(집합)
❤A클래스가 B,C,D 클래스를 포함하는데, A클래스가 소멸되어도, B,C,D클래스는 소멸되지 않는다면 집약관계
❤포함하는 클래스에 빈 다이아몬드를 표시한다.
❤독립적으로 존재하는 클래스를 집약하여 기능을 하는 구조를 의미
Composition(합성)
❤A클래스가 B,C,D클래스를 포함하는데, A클래스가 소멸되면, B,C,D 클래스도 삭제되는 경우 합성관계
❤포함하는 클래스에 채운 다이아몬드를 표시한다.
❤객체의 기능을 여러 객체로 나누어 관리하는 구조를 의미
❤집합관계와의 차이는 합성관계가 더 강한 집합이라는 것
→ 포함하는 클래스(A)가 포함되는 클래스(B)의 전체 수명을 책임진다.(A클래스 안에서 B클래스의 인스턴스를 생성해야하고, 외부에서 B클래스를 생성하지 못하도록 A클래스에는 B클래스에대한 setter가 있으면 안된다.)
→ 포함되는 클래스의 인스턴스는 공유될 수 없다. (깊은 복사를 해야한다.)