Class Diagram
다이어그램
Class Diagram
Use Case Diagram
Sequence Diagram
클래스 다이어그램
정의
시스템의 정적인 면을 표현하기 위해 주로 사용되는 UML 구조 다이어그램
클래스, 클래스 간 관계를 보여준다.
표현 예시
객체명
객체명 객체명 + 필드
객체명+필드 객체명 + 메서드
객체명+메서드 객체명 + 필드 + 메서드
객체명+필드+메서드
용도에 따른 표현 예시
분석 단계: 타입(자료형), 가시화 정보(접근 제어자) 생략
분석단계 설계 단계: 타입(자료형), 가시화 정보(접근 제어자) 포함
설계단계
클래스 간 관계 표현법
연관 (Association) - 한 클래스가 다른 클래스를
사용
일반화 (Generalization) - 상속 관계
집합
3-1. 집약 (Aggregation) - 포함 관계를 가지지만 독립적 라이프타임을 가짐
3-2. 합성 (Composition) - 포함 관계를 가지며 의존적 라이프타임을 가짐
의존 (Dependency) - 한 클래스가 다른 클래스를
인자로 받아 사용
실체화 (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)
정의
클래스가 다른 클래스를 사용하는 세 가지 방법이 있다.
클래스의 필드로 참조 할당
연산의 인자(parameter)로 사용
메서드 내부의 지역 객체
여기서 1번이 연관, 2번이 의존, 3번이 합성에 해당한다.
점선 화살표
로 표기한다.
예시
누군가 출근하면서 자동차를 타고 주유소를 이용한다고 하면, 다음과 같은 클래스 다이어그램을 그릴 수 있다.
Dependency 사람은 자동차를 이용하되, 항상 같은 차를 이용한다. 자동차를 바꾸는 일은 거의 없다.
자동차는 주유할 때 특정 주유기만을 고집하지 않는다. 매번 다른 주유기를 이용할 수 있다.
따라서 사람은 자동차를 필드로 소유하고(사용), 자동차는 주유소에 의존한다.
실체화 (Realization)
정의
어떤 객체들의 공통되는 능력, 특징 들을 모아 인터페이스-구현 구조를 형성
예시
비행기와 새는 날 수 있다는 공통점이 있다. 이를 추상화하고 구현하면 다음과 같다.
Realization
Last updated