JAVA

UML 클래스 다이어그램

JJJAEOoni 2022. 3. 7. 01:02
반응형

UML(Unified Modeling Language) 다이어그램 : 시스템을 모델로 표현해주는 대표적인 모델링 언어

 

클래스 다이어그램은 구조 다이어그램으로

클래스 내부 구성요소 및 클래스 간의 관계를 도식화하여

시스템의 특정 모듈이나 일부 및 전체를 구조화한다.

 

클래스 다이어그램의 목적에 따라 개념, 명세, 구현 단계로 나눌 수 있다.

 

개념 단계에서는 클래스만 도출하고

관계를 단순화하는 것이 목적이다.

명세와 구현 단계에서는 개발 직전 설계나 구현 이후 설명 목적으로 사용되고

이 다이어그램을 기반으로 코드를 구현하거나

코드를 기반으로 다이어그램을 그리기 때문에 코드와 연관이 깊다.

클래스 다이어그램에서 클래스는 이름, 속성(변수), 메서드 순으로 나열한다.

속성과 메서드는 생략이 가능하지만 이름은 필수로 입력해야 한다.

속성과 메서드 앞에 기호가 붙는다.

+ public

- private

# protected

~ default

 

{readonly}가 붙으면 final

밑줄을 그으면 static을 의미한다.

 

속성을 보면 접근 제어자, 필드명, 타입 순으로 작성한다.

{접근제어자} {필드명}:{타입}

 

메서드는 접근제어자, 메서드명(파라미터 타입), 반환 타입 순으로 작성한다.

{접근제어자} {메서드명}({파라미터타입}):{반환타입}

 


 

클래스 간 관계를 정확하게 하는 것이 클래스 다이어그램을 그리는 주된 목적이다.

이 관계를 나타내는 표현은 아래와 같다.

이미지 참조:  https://en.wikipedia.org/wiki/Class_diagram

 

Association

다른 객체의 참조를 가지고 있을 때 이러한 연관 관계를 나타낸다.

여기서는 위처럼 방향이 있는 실선방향이 없는 실선 두 가지로 연관 관계를 나타낼 수 있다.

A → B와 같이 방향이 있는 실선의 경우, A가 B를 참조한다는 의미이다.

A - B는 A가 B를, B가 A를 참조할 수도 있고 둘 다 참조 이거나 둘 다 참조가 아니거나 라는 의미이다.

 

아래는 방향성 있는 연관관계에 대한 예시이다.

해당 예시는 동일한 코드를 표현하는 예시들이다.

 

 

Inheritance

상속 관계를 나타낸다.

Generalization - 일반화라고도 많이 부른다.

부모 클래스와 자식 클래스 간의 상속 관계를 나타낼 때 사용한다.

 

 

Realization

인터페이스를 상속하여 클래스에서 실제 기능을 실현화할 때 사용한다.

실체화는 아래와 같이 두 가지로 표시가 가능하다.

 

 

Dependency

클래스 간 참조 관계를 나타낼 때 사용한다.

Association과의 차이점으로는 Association은 변수로 다른 클래스와 연관이 있을 때 사용하고

Dependency는 메서드의 파라미터나 반환에 사용되는 클래스 관계를 나타낼 때 사용합니다.

 

즉, Association 관계는 해당 클래스의 멤버 변수로 할당할 때 사용하고

Dependency 관계는 로컬 변수, 파라미터, 반환 값으로 호출되는 메서드가

실행되는 동안에만 유지가 될 때 사용한다.

 

 

Composition

Aggregation과 비슷하게 전체 - 부분의 집합 관계를 나타낼 때 사용하지만

Aggregation 보다는 더 강력한 집합을 의미할 때 사용한다.

합성 관계에서는 부분이 전체에 종속적이고 생명주기를 관리한다라고 볼 수 있다.

반응형