Class Diagram (UML)을 알아보자

seonja kim·2021년 10월 5일
0

하나의 장바구니라는 어려운 이웃 식료품 지원 프로젝트를 MVC를 분류하여 간단라도 Class Diagram 표시하기 위해 UML에 대해 알아보았다.

UML(Unified Modeling Language)이란?

  • 객체 지향적 프로그래밍 컨셉으로 컴포넌트를 표현하는 모델링 언어
  • 객체는 동물, 기계 등을 의미할 수 있고, 이 객체가 행위를 수행하기 위한 상호작용과 조작하는 방식을 정의하는 과정이 객체 지향적 프로그래밍
  • UML은 각 객체를 기록하여 추적하기 쉽게 만드는 방식 중 하나

특징

  • 시각적 그래픽 형태로 작성되어 개발자들 사이에서 원활한 의사소통을 가능하게 한다.
  • 개발과정인 분석, 설계, 구현 단계에서 필요한 모델을 명세화할 수 있는 언어이다. I/O를 명확하게 모델링하여 명세서 그대로 개발할 수 있도록 한다.
  • 다양한 언어로 변환하여 구축할 수 있다.

UML diagram types

이 많은 Diagram들 중에서 Class Diagram을 중점적으로 살펴보자.

Class Diagram

형식

Object name
Attributes
Methods

각 객체는 이름, 속성, 메소드로 이뤄진 하나의 박스 형태를 띄고 있다. 각 요소에 들어가는 내용을 살펴보자.

Attributes

  • 클래스의 각 인스턴스
  • fields, variables, properties라고도 불림

Methods

  • 클래스의 행위
  • operations, functions라고도 불림

Visibility
-: private
+ : public
# : protected
~ : package/default

예시

Dog
+breed: String
+gender: String
-owner: String
-age: number
+eat()
+poo()

protected(#)와 package/default(~)는 자주 사용되지 않는다고 한다.

Multiplicity

  • 각 클래스가 몇 개의 객체들을 가지는지 관계표시
  • 한 명의 user는 하나의 웹사이트에서 하나의 아이디와 비밀번호를 가지므로 'no more than one'으로 표시
  • 한 명의 user는 주문을 한번도 안 할수도, 여러번 나눠서 할 수 있으므로 'zero or many'로 표시

Relationships between classes

Inheritance

  • 부모 클래스 이름은 이탈릭체
  • 자식 클래스는 부모 클래스에서 특정 부분에 전문화된 형태
  • 화살표 머리는 속이 비어있는 실선으로 표현
  • 동물이라는 클래스는 하위의 강아지, 고양이 등의 동물의 특성의 모음으로 정의할 수 있음

Association

  • 같은 레벨의 클래스 간에 구조적인 관계성
  • 실선이 연결된 모양

Aggregation

  • 일정한 특성을 가지고 있는 클래스들의 집합을 나타내는 클래스
  • Class1이 Class2의 특성을 가지고 있지만 두가지는 별개로 존재할 수 있음
  • Class1을 늑대무리라고 보고 Class2를 한마리의 늑대로 볼 때, Class2는 Class1에 포함될수도 있지만 독립적으로도 존재할 수 있음
  • 실선의 빈 다이아몬드 모양으로 표시

Composition

  • 자식 객체가 부모 객체 없이 존재할 수 없음
  • 예를 들어 Class1을 백화점, Class2를 백화점 내부의 화장실이라고 볼 수 있음. 백화점 내부에는 화장실이 많으므로 그 모든 화장실은 Class1에 내포되어 있는 특성이고 Class1이 무너질 경우 모든 Class2는 사라짐
  • 채워진 다이아몬드 모양으로 표시

Dependency

  • 상위 클래스의 변화가 dependency로 연결된 하위 클래스의 결과에 영향을 줌 (하위 클래스의 변화는 상위 클래스에 영향주지 않음)
  • 점선으로 이뤄진 열려있는 화살표로 표시

진행 중인 '하나의 장바구니' 각 유저 MVC 분류


장기 나눔

장기나누미관리자바드미
MODEL- 개인 정보- 개인 정보
VIEW- 등록 페이지- 등록된 바드미와 나누미를 볼 수 있는 어드민 페이지- 등록 페이지
CONTROL- 개인 정보 입력- 개인 정보 입력

단기 나눔

단기나누미관리자바드미
MODEL- 각 나누미의 포스팅 히스토리(?)
- 각 바드미의 받은 물건 내역(?)
VIEW- 포스팅 작성 페이지
- 포스팅 디테일 페이지
CONTROL- 포스팅 올리기
- 픽업 요청 수락 또는 거절
- 지역 기반으로 포스팅보내주기
- 바드미의 요청 나누미에게 전달
- 나누미의 수락 또는 거절 상황 바드미에게 전달
- 포스팅 선택하기
- 받을 시간 선택하기
profile
Adventurer

0개의 댓글