늦은 프로그래밍 이야기

UML 본문

내일배움캠프/Diagram

UML

한정규 2022. 11. 29. 21:40

UML

 - Unified Modeling Language의 약자

 - 1997년 OMG(Object Mangement Group)에서 표준으로 채택한 통합 모델링 언어.

 

목적

 - 다른 사람들과의 의사소통 또는 설계 논의

 - 전체 시스템의 구조 및 클래스의 의존성 파악

 - 유지보수를 위한 설계의 back-end 문서


Class Diagram (클래스 다이어그램)

UML 다이어그램의 종류 / 출처 : https://www.nextree.co.kr/p6753/

 - 구조(Structure) 다이어그램 7개와 행위(Behavior) 다이어그램 7개로 구성.

 - 구조 다이어그램 : 시스템의 개념, 관계 등의 측면에서 요소들을 나타내고 각 요소들의 정적인 면을 보기 위한 것.

 - 행위 다이어그램 : 각 요소들 혹은 요소들 간의 변화나 흐름, 주고받는 데이터 등의 동작을 보기 위한 것.

 - 클래스 다이어그램 : 클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기하는 다이어그램. 시스템의 일부 또는 전체의 구조를 나타낼 수 있다.


요소 (Element)

  • 클래스 (Class)

 - 보통 3개의 구획(compartment)으로 나누어 클래스의 이름, 속성, 기능을 표기.

 - 속성기능은 생략이 가능하지만 이름은 필수로 명시.

 - 필드와 메소드의 접근제한자, 필드명(메소드명), 데이터타입, parameter, 리턴 타입 등을 나타낼 수 있다.

 - 하지만 UML 다이어그램은 필드나 메서드를 모두 선언하는 곳이 아니기 때문에 다이어그램을 그리는 목적에 필요한 것만 사용.

 - 보통 3개의 구획을 사용하지만 다른 미리 정의되거나 사용자 정의 된 모델 속성을 나타내기 위한 추가 구획도 사용할 수 있다.

 

  • 스테레오 타입 (Stereo Type)

 - UML에서 제공하는 기본 요소 외에 추가적인 확장요소를 나타내는 것.

 - 길러멧(gullemet, ≪≫) 사이에 적는다. (폰트 크기보다 작다)

 - 밑줄은 static 필드(메소드)를 의미

 - {readOnly}는 final 키워드를 사용하는 상수를 의미

 

  • 추상 클래스, 추상 메소드 (Abstract)

 - 추상 클래스의 이름과 메소드는 italic체나, {abstract} 프로퍼티를 사용하여 표기.

 - {abstract} 프로퍼티로 표기하는 것이 쉽고 명확.


클래스간의 관계

 - 클래스 간의 관계를 한눈에 쉽게 보고 의존 관계를 파악하는 것이 클래스 다이어그램의 주 목적.

 - 따라서 클래스 다이어그램에서 가장 중요한 것이 클래스 간의 관계이다.

출처 : https://www.nextree.co.kr/p6753/


Generalization (일반화)

 - 부모클래스와 자식클래스 간의 상속 관계를 나타낸다.

 - 자식클래스가 주체가 되어 부모클래스로 Generalize 하는 것을 말한다.

 - 반대의 개념은 부모클래스를 자식클래스로 Specialize(구체화) 하는 것.

 - 클래스 사이에 실선을 연결하고, 부모클래스 쪽에 비어있는 삼각형으로 나타낸다.


Realization (실체화)

 - 인터페이스의 spec(명세, 정의)만 있는 메소드를 오버라이딩 하여 실제 기능으로 구현 하는 것.

 - 2가지 표기법

 1) 인터페이스를 클래스처럼 표기하고 스테레오 타입을 추가한 후 인터페이스와 클래스 사이에 점선과 인터페이스 쪽의 비어있는 삼각형으로 연결.

 2) 인터페이스를 으로 표기하고 인터페이스의 이름을 명시한 후 인터페이스와 클래스 사이에 실선으로 연결.


Dependency (의존)

 - 일반적으로 제일 많이 사용되는 관계, 어떤 클래스가 다른클래스를 참조하는 것.

 - 클래스를 점선으로 연결 후 점선 끝에 화살표를 추가

 - 스테레오 타입으로 어떤 목적의 Dependency인지 의미를 명확히 명시할 수도 있다.

 

Association (연관), Directed Association (방향성 있는 연관)

 - 다른 객체의 참조를 가지는 필드를 의미.

 1) 일반적인 Association

 - 실선 하나로 클래스를 연결하여 표기.

 - User가 Address를 참조할 수도, Address가 User를 참조할 수도, 또는 둘다일 수도 있다.

 

 2) Directed Associaltion

 - 클래스를 실선으로 연결 후 실선 끝에 화살표를 추가.

 - 화살표가 의미하는 navigability(방향성). (참조하는 쪽과 참조 당하는 쪽을 구분)

 - User가 Address를 참조하는 것.

 - -addresses : roleName(역할명). Address가 User 클래스에서 참조될 때 어떤 역할을 가지고 있는지 의미.

 

 3) 속성 표기법

 - 2)의 다이어그램과 비슷한 의미를 가지고 있지만 여러 개의 객체에 대한 Container(컨테이너)가 List라는 것을 알려주고 있다.

 

'내일배움캠프 > Diagram' 카테고리의 다른 글

Use Case Diagram (유스케이스)  (0) 2022.12.07
Comments