Class Diagram

다이어그램

  • Class Diagram

  • Use Case Diagram

  • Sequence Diagram

클래스 다이어그램

정의

시스템의 정적인 면을 표현하기 위해 주로 사용되는 UML 구조 다이어그램

클래스, 클래스 간 관계를 보여준다.

표현 예시

  • 객체명

    객체명
  • 객체명 + 필드

    객체명+필드
  • 객체명 + 메서드

    객체명+메서드
  • 객체명 + 필드 + 메서드

    객체명+필드+메서드

용도에 따른 표현 예시

  • 분석 단계: 타입(자료형), 가시화 정보(접근 제어자) 생략

    분석단계
  • 설계 단계: 타입(자료형), 가시화 정보(접근 제어자) 포함

    설계단계

클래스 간 관계 표현법

  1. 연관 (Association) - 한 클래스가 다른 클래스를 사용

  2. 일반화 (Generalization) - 상속 관계

  3. 집합

    3-1. 집약 (Aggregation) - 포함 관계를 가지지만 독립적 라이프타임을 가짐

    3-2. 합성 (Composition) - 포함 관계를 가지며 의존적 라이프타임을 가짐

  4. 의존 (Dependency) - 한 클래스가 다른 클래스를 인자로 받아 사용

  5. 실체화 (Realization) - 인터페이스의 구현

연관 (Association)

방향성

클래스 간 연관 관계는 양방향이거나 단방향이다.

양방향은 선(—), 단방향은 화살표(→)로 표기한다.

  • 양방향

    양방향
  • 단방향

    단방향

    단방향인 경우 A→B이면 A만 B를 참조하고 B는 A에 대해 알지 못함을 뜻한다.

다중성

클래스 간 연간 관계는 일대일, 일대다, 다대다 관계를 갖는다.

  • 일대일 (1:1)

    1:1
  • 일대다 (1:N)

    1:N
  • 다대다 (N:M)

    N:M

    다대다는 연관 클래스를 만들어 두 개의 일대다 관계로 만들 수 있다.

    N:M(2)

재귀

  • 클래스가 재귀적으로 연관되나 사이클이 발생하지는 않는다.

    재귀
  • 리눅스의 파일 계층 구조가 이에 해당한다.

일반화 (Generalization)

정의

공통된 특징을 묶어 추상클래스 또는 인터페이스로 정의한 뒤 상속 또는 구현을 이용하는 것

속이 빈 실선 화살표로 표기한다.

예시

  • 가전제품에는 다양한 제품이 포함되고, 해당 제품 또한 세부적인 카테고리를 가질 수 있다.

    Generalization

집합 (Aggregation, Composition)

정의

  • 한 객체가 다른 하나를 포함

  • 각 객체의 라이프타임의 독립 의존 여부에 따라 집약, 합성으로 나뉜다.

  • 집합은 연관(Association)의 특수한 경우에 해당한다. 즉, 연관에 포함된다.

집약 (Aggregation)

  • 전체 객체와 부분 객체의 라이프타임이 독립적인 포함 구조

  • 전체 객체가 사라져도 부분 객체는 유효하여 사라지지 않는다.

  • 부분 객체를 여러 전체 객체가 공유할 수 있다.

  • 구현 단계에서는 부분 객체를 별도로 생성하고 파라미터로 받는다.

  • 빈 마름모로 표기한다.

    Aggregation

합성 (Composition)

  • 전체 객체와 부분 객체의 라이프타임이 의존적인 포함 구조

  • 전체 객체가 사라지면 부분 객체는 불유효해져 사라진다.

  • 부분 객체를 여러 전체 객체가 공유할 수 없다.

  • 구현 단계에서는 부분 객체를 전체 객체 내부의 필드로 생성한다.

  • 꽉 찬 마름모로 표기한다.

    Composition

의존 (Dependency)

정의

클래스가 다른 클래스를 사용하는 세 가지 방법이 있다.

  1. 클래스의 필드로 참조 할당

  2. 연산의 인자(parameter)로 사용

  3. 메서드 내부의 지역 객체

여기서 1번이 연관, 2번이 의존, 3번이 합성에 해당한다.

점선 화살표로 표기한다.

예시

  • 누군가 출근하면서 자동차를 타고 주유소를 이용한다고 하면, 다음과 같은 클래스 다이어그램을 그릴 수 있다.

    Dependency
    • 사람은 자동차를 이용하되, 항상 같은 차를 이용한다. 자동차를 바꾸는 일은 거의 없다.

    • 자동차는 주유할 때 특정 주유기만을 고집하지 않는다. 매번 다른 주유기를 이용할 수 있다.

    • 따라서 사람은 자동차를 필드로 소유하고(사용), 자동차는 주유소에 의존한다.

실체화 (Realization)

정의

어떤 객체들의 공통되는 능력, 특징 들을 모아 인터페이스-구현 구조를 형성

예시

  • 비행기와 새는 날 수 있다는 공통점이 있다. 이를 추상화하고 구현하면 다음과 같다.

    Realization

Last updated