UML

허북이_·2023년 5월 1일
0

개발방법론

목록 보기
1/1

UML (Unified Modeling Language)

: 시스템을 모델로 표현해주는 대표적인 모델링 언어

Purpose.

  1. 의사소통 또는 설계 논의를 위해
  2. 전체 시스템의 구조 및 클래스의 의존성 파악을 위해
  3. 유지보수를 위한 설계의 back-end 문서 제작을 위해

Kind

  • Structure Diagram
    클래스 다이어그램, 객체 다이어그램, 복합체 구조 다이어그램, 배치 다이어그램, 컴포넌트 다이어그램, 패키지 다이어그램

  • Behavior Diagram
    활동 다이어그램, 상태 머신 다이어그램, 유즈 케이스 다이어그램, 상호작용 다이어그램

Class Diagram

보편적인 시스템의 정적인 면을 보여주는 대표적인 UML 구조 다이어그램으로 시스템을 구성하는 클래스들 사이의 관계를 표현합니다.

Class
: 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀(template)이다. 객체를 정의하기 위한 메소드와 변수로 구성된다. - Wikipedia

변화의 기본단위
디자인 패턴을 제대로 이해하기 위해 프로그램을 보고 어떤것이 변화하는지 잘 살펴보아야합니다.

Purpose.

  1. 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해
  2. 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 위해

Expression

클래스 이름비고
속성 (Class의 특징)경우에 따라 생략 가능
연산 (Class가 수행하는 책임)경우에 따라 생략 가능

속성과 연산의 가시화를 정의

  • 접근자를 사용해 나타냅니다.
접근제어자표시설명
public+어떤 클래스의 객체에서든 접근 가능
private-이 클래스에서 생성된 객체들만 접근 가능
protected#이 클래스와 동일 패키지에 있거나 상속 관계에 있는 하위 클래스의 객체들만 접근 가능
packge~동일 패키지에 있는 클래스의 객체들만 접근 가능

분석 단계와 설계 단계의 클래스 다이어그램

Course
id
name
nameOfStudent
addStudent()
deleteStudent()
Course
- id: string
- name: string
- nameOfStudent: integer
+ addStudent(student: Student): void
deleteStudent(id: integer): void

Relationship

UML에서 클래스 사이의 관계를 나타내는 방법은 다음과 같다.

관계표시설명
연관 관계
(association)
실선 or 화살표클래스들이 개념상 서로 연결되었음을 나타낸다. 대개, 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일 때 표시한다.
일반화 관계
(generalization)
속이 빈 화살표객체지향 개념에서는 상속 관계라고 한다. 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 이를 IS-A 관계라고 하며 UML에서는 일반화 관계로 모델링한다.
집약 관계
(aggregation)
속이 빈 다이아몬드집합 관계 중 하나, 클래스들 사이의 전체 또는 부분 같은 관계를 나타낸다. 전체 객체의 라이프타임과 부분 객체의 라이프타임은 독립적이다. 즉, 전체 객체가 없어져도 부분 객체는 없어지지 않는다.
합성 관계
(composition)
속이 찬 다이아몬드집합 관계 중 하나, 클래스들 사이의 전체 또는 부분 같은 관계를 나타낸다. 전체 객체의 라이프타임과 부분 객체의 라이프타임은 의존적이다. 즉, 전체 객체가 없어지면 부분 객체도 없어진다.
의존 관계
(dependency)
점선 화살표연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때를 나타낸다. 차이점은 두 클래스의 관계가 한 매서드를 실행하는 동안과 같은, 매우 짧은 시간만 유지된다는 점이다.
실체화 관계
(realization)
빈 삼각형과 점선책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계를 나타낸다.

Reference.
https://sabarada.tistory.com/72
https://gmlwjd9405.github.io/2018/07/04/class-diagram.html
https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9E%98%EC%8A%A4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)

profile
인간 거북이 허북이

0개의 댓글