Post

[소프트웨어 공학] UML: Class, Sequence, Package Diagram

1. Class Diagram

  • 문제나 해결책의 정적인 구조 표현

  • 클래스와 그들간의 관계 표현

시스템의 내부 구조를 나타냄

1. 클래스

  • UML의 클래스 표현

    • 세부분으로 나누어진 박스로 표현
    • 클래스 이름(필수) / 속성 / 연산

    class

​ ※ visibility (접근제어자) : (-) private (+) public (#) protected (~) package

class2

  • 반환형 : [0..*] -> (0개 이상), void -> 반환 안함
  • 초기 값 지정도 가능 : - 주소:String = “서울특별시 …”
  • +평균회원구매액():Money -> static

UML = 건물 설계 (평면도, 입면도, 투시도, 조감도 등 다양한 관점에서 표현)

※ UseCase Diagram : 시스템을 블랙박스로 보고, 내부 구조는 표현하지 않는다. (집 내부를 보여주지 않는다.)

2. 관계

1. 연관관계 (Assosiation)

클래스 (실선, 화살표 가능)
  • 개념상 서로 연결 / 역할, 연관관계 이름 명시 (선택)

  • r1,r2 -> 역할 m1,m2 -> 다중성 / 연관 관계는 클래스의 속성으로 구현 (참조 가능)

  • 다중성 해석 시 클래스 인스턴스 관점으로 해석

  • 양방향 연관 관계
    • 서로의 존재를 인지 / 클래스 —— 클래스
  • 단방향 연관 관계
    • 한 쪽만 존재 인지 / 클래스 —–> 클래스
인스턴스 (실선, 화살표 X)
  • 갑돌이는 마스크를 2020년 4월 10일10장 주문했다.
    • 갑돌이 - 고객 , 마스크 - 제품 (이름 생략 가능)
  • Instance Assosiation
    • 객체 간의 관계 - link (연관관계 X)라고 한다
  • 객체간의 관계를 파악하여 객체 다이어그램 작성 후 클래스 다이어그램 작성도 가능
연관 클래스
  • 연관 관계 이름으로

2. 일반화 관계 (Italic or guillemets) - extends

  • 일반화는 is a kind of 관계 (가전제품(추상클래스) - 식기 세척기, 냉장고 …)

(Guillemets) - UML을 새로운 개념을 반영하여 확장하는 매커니즘 -> Stereotype

3. 집합 관계 - 전체와 부분간의 관계

  • aggregation(집약) - 약한 결합
  • composition(합성) - 강한 결합

4. 의존 관계

한 클래스에서 다른 클래스를 사용하는 경우

  • 클래스의 속성에서 참조
  • 연산의 인자로 참조
  • 메소드의 지역 개체로 참조

지속적 관계 - 실선 화살표

찰나의 관계 - 점선 화살표

5. 실체화 관계 - guillemet, implement

  • 인터페이스란 계약이다
  • 인터페이스 - 클래스사이는 점선

  • provided interface 클래스가 사용하는 인터페이스를 rquired interface를 사용하여 모델링

인터페이스 사용 장점

  • 서비스 제공 클래스가 변경되도 서비스 사용 클라이언트 코드 영향 X

2. Object Diagram

  • 클래스 다이어그램의 인스턴스 (사례를 보여줌)

클래스 추출

속성 추출

클래스 간 관계 추출

objectDiagram

3. Sequence Diagram

Class Diagram : 구조 모델링

Sequence Diagram : 행위 모델링

전체 시스템을 나타내는 클래스는 제외

순차 다이어그램프레임과 결합 프레그먼트
sequencediagramframe
  • Activation (활성구간) , Return 생략할 수 있다.

  • Selft Message - 자기 자신 호출

operator

4. Package Diagram

  • 클래스 같은 여러 요소 그룹화 가능
  • 모든 요소 하나의 패키지에만 존재 가능
  • 패키지는 namespace 가진다 (같은 클래스 이름 다른 패키지에 존재 가능)
  • 패키지 제거시 내부 모든 요소 제거됨

패키지 관계

  • 의존 관계 존재

packagediagram

​ A에서 B패키지의 요소 사용

  • B 패키지 변경 시 A에게 영향을 끼침 (반대는 성립하지 않음)
  • A패키지를 B패키지 없이 단독 재사용 불가능

packagediagramimport

표현법 정리

관계사용표현
Assosiation (지속적 관계) (link라고함)속성으로 참조실선
Dependency (extended, included …) (찰나의 관계)특정 조건 만족 시 or 함수 내 지역변수로 사용점선
Generalization (일반화)is a kind of로 상속 관계빈 세모 화살표
Aggregration (약한 집합)각 요소들이 하나로 구성될 때 / 독립 O빈 마름모
Composition (강한 집합)각 요소들이 하나로 구성될 때 / 독립 X찬 마름모
Realization (실체화)인터페이스 implement 해야함빈 점선 세모 화살표
This post is licensed under CC BY 4.0 by the author.