코딩못하는사람

[UML] 클래스 다이어그램 본문

C.S 지식정리

[UML] 클래스 다이어그램

공부절대안함 2021. 4. 29. 06:11

UML(Unified Modeling Language) 이란?

UML은 프로그램 설계를 그림으로 알아보기 쉽게 표현하기 위해 정의한 표기법이다.

객체지향 언어와 밀접하게 관련있기 때문에 객체지향 모델링 언어라고도 한다.

소프트웨어 시스템,업무 모델링,시스템의 산출물들을 규정하고 시각화하며 문서화하는 언어이다.

프로그래밍 언어가 아닌 모델링 언어이다. (방법론X)

UML 작성 이유

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

UML 종류

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


2.행위 다이어그램(Behavior Diagram)
활동 다이어그램, 상태 머신 다이어그램, 유즈 케이스 다이어그램, 상호작용 다이어그램

 

 

클래스 다이어그램

이름에서 알 수 있듯이 클래스의 구성요소와 클래스간의 관계를 표현해주는 UML이다.

클래스 다이어그램을 이용하면 시스템의 전체 or 부분적인 구조와 의존관계를 명확히 파악할 수 있다

 

 

클래스의 이름, 속성, 그리고 메서드가 존재한다. 클래스 다이어그램으로 표현하는 방법을 보자.

 

접근제어자 리스트

  • + : public
  • - : private
  • # : protected

형식

  • 위:클래스명
    • 작성 클래스의 이름
  • 중간:속성(Attribute)
    • 접근제어자 이름: 타입 = 기본값
    • ex) -nickName: String = ""
  • 밑:메서드
    • 접근제어자 이름(파라미터 속성): 리턴값
    • ex_1) +setTitle(String)
    • ex_2) +getTitle(): String

interface와 abtsract(추상화)와 같은 요소들은 <<>>을 이용해서 <<interface>> 또는 <<abstract>>로 나타낼 수 있다.

클래스 작성 예시

관계표현

1. Association & Direct Association ( 연관 )

 

한 클래스가 다른 클래스와 연관 관계 를 가지면 각 클래스의 객체는 해당 연관 관계에서 어떤 역할 을 수행한다.
두 클래스 사이의 연관 관계가 명확한 경우에는 연관 관계 이름 을 사용하지 않아도 된다.
역할 이름 은 실제 프로그램을 구현할 때 연관된 클래스의 객체들이 서로를 참조할 수 있는 속성의 이름으로 활용할 수 있다.
연관 관계는 방향성을 가질 수 있다. 양방향은 실선으로, 단방향은 화살표로 표시한다.

 

단방향 연관관계:

참고하는쪽 클래스에서 참고 되는쪽 클래스로 화살표 방향이 표현된다. 참고하는 클래스만 상대를 알고있다.

https://gmlwjd9405.github.io/2018/07/04/class-diagram.html

양방향 연관관계:

두 클래스가 서로의 존재를 알고 있다.실선으로 표현된다.

https://gmlwjd9405.github.io/2018/07/04/class-diagram.html

보통 다대다 연관관계는 일대다,다대일 관계로 풀어낸다.

다중성 표기

2.Generalization ( 일반화 )

 

우리가 일반적으로 알고있는 클래스의 상속개념. 실선에 비어있는 화살표로 나타낸다.

https://sabarada.tistory.com/72

3.Realization ( 실체화 )

인터페이스를 실제 인스턴스로 구체화 시키는 것을 나타낸다. 점선과 비어있는 화살표로 나타낸다.

https://sabarada.tistory.com/72

4.Dependency ( 의존 )

Dependency는 클래스간의 참조가 일어나는 것. Dependency 참조는 메서드 내에서 대상 클래스의 객체를 생성하거나 사용, 리턴받아 사용하는 것을 말합니다. 이 참조는 해당 클래스와의 관계를 계속 유지하지 않는다. 점섬과 화살표로 이루어져 있습니다.

연관관계와 다른 것은 getTitleWithRanking메서드를 사용할 때 한번 의존 하고 관계를 끊는다.

 

 

클래스 다이어그램을 잘 짜고 들어가면 개발이 수월하다.

 

공부한곳

sabarada.tistory.com/72

gmlwjd9405.github.io/2018/07/04/class-diagram.html

'C.S 지식정리' 카테고리의 다른 글

NoSQL이란  (0) 2021.12.22
nginx로 로드밸런싱 해보기  (0) 2021.09.10
Redis란? (우아한 Redis 강연)  (0) 2021.07.31
유스케이스 다이어그램  (2) 2021.04.29
서버 성능 테스트/ jmeter  (0) 2021.04.18
Comments