Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

codingfarm

클래스 다이어그램 개요 본문

소프트웨어 공학/uml

클래스 다이어그램 개요

scarecrow1992 2020. 7. 10. 20:39

클래스 다이어그램(class diagram)

$\bullet$ 시스템의 클래스와 이들 상호 간의 관계, 그리고 클래스의 오퍼레이션과 애트리뷰트를 표현한다

$\bullet$ 논리 설계 시 분석 클래스 모델링과 물리 선계시 구현 클래스 모델링을 포함한 다양한 목적에 사용된다.

 

구성요소(compartment)

$\bullet$ 클래스 명

$\bullet$ 애트리뷰트

-애트리뷰트명 : 데이터타입

$\bullet$ 오퍼레이션

- 오퍼레이션명(매개변수명 : 매개변수타입) : 반환타입

 

가시성(visibility)

$\bullet$ private : -

$\bullet$ protected : #

$\bullet$ public : +

$\bullet$ package : ~

 

예) 자동차

 

인터페이스(interface)

구성요소(copartment)

$\bullet$ <<interface>> 스테레오타입

$\bullet$ 인터페이스 명

$\bullet$ 오퍼레이션

오퍼레이션명(매개변수명 : 매개변수타입) : 반환타입

구문1)

 

구문2)

예) 운전

 

4. 클래스 다이어그램 관계

클래스 다이어그램 관계

관계 표기법
연관
(association)
집계 연관
(aggregation)
컴포지션 연관
(composition)
종속성
(dependency)
 
일반화
(generalization)
 
실현
(realization)
 

 

관계(relationship)

$\bullet$ 모델 요소 사이의 의미적인 연결(semantic connection)

$\bullet$ 구문

-관계 이름(relationship name) : 원시 객체가 대상 객체에 대하여 수행하는 행위를 동사형으로 표현

-역할 이름(role name) : 클래스의 인스턴스 즉, 객체가 수행하는 역할을 나타내는 명사로 표현

-다수성(multiplicity) : 특정한 시점에 관계에 포함될 수 있는 클래스의 객체 개수를 제한함

-방향성(navigability) : 메시지가 화살표의 방향으로만 전달될 수 있다는 것을 의미함

 

예) 회사와 개인의 관계

관계이름 : 회사와 개인 사이에는 "고용하다" 라는 관계가 있다.

역할이름 : "고용하다"라는 관계에서 회사 입장에서는 고용자의 역할을 하며 개인 입장에서는 직원의 역할을 한다.

다수성 : 하나의 회사가 여러명의 개인을 고용 한다.

방향성 : "고용하다" 라는 관계는 오직 회사가 개인에게만 할 수 있다.

 

$\bullet$ 다수성(multiplicity)

0 : 선택적(optional)

1 : 필수적(mandatory)

장식 표현 의미
$0..1$ $0$ 또는 $1$
$1$ 정확히게 $1$
$0..*$ $0$ 이상
$*$ $0$ 이상
$1..*$ $1$ 이상
$1..7$ $1$에서 $7$까지
$1..3,6,8,..10,15,19..*$ $1$에서 $3$까지 또는 $6$ 또는 $8$에서 $10$까지 또는 $15$또는 $19$이상

 

$\bullet$ 방향성(navigability)

-클래스 사이의 결합성을 이해할 수 있는 좋은 수단이 됨

--양방향성(bidirectional) : 결합성이 높음

--단방향성(unidirectional) : 결합성이 낮음

UML 표현 선택 1 선택 2 선택 3
A에서 B로 방향성
B에서 A로 방향성
   
A에서 B로 방향성
B에서 A로 무방향성
   
A에서 B로 방향성
B에서 A로 미정
  A에서 B로 방향성
B에서 A로 무방향성
A에서 B로 미정
B에서 A로 미정
A에서 B로 미정
B에서 A로 미정
A에서 B로 방향성
B에서 A로 방향성
A에서 B로 무방향성
B에서 A로 무방향성
   

 

$\bullet$ 연관(association) 관계

-모델 요소 사이의 구조적인 관계(structural relationship)을 표현함

-클래스의 속성(property)로 실현됨

-방향성(navigability)은 단방향성일 수도 있고 양방향성일 수도 있음

UML 코드
public class 회사{
    개인 직원;
};
public class 개인{
    회사 고용자;
};
public class 주문{
    제품 제품;
};
public class 제품{

};

 

$\bullet$ 컴포지션(composition) 연관 관계

-모델 요소 사이의 전체 부분(has a) 관계를 표현함

-전체 요소가 소멸될 때 모든 부분 요소도 소멸됨

-부분 요소는 전체 요소 없이 존재할 수 없음

ex) 마우스와 이를 구성하는 버튼들 사이의 관계

1
2
3
4
public class 마우스{
private : 
    버튼 부품;
};
cs
1
2
3
4
public class 버튼{
private : 
    마우스 제품;
};
cs

엄격한 의미에서 composition 관계를 지원하는 언어는 c++이 유일하다.

 

$\bullet$ 집계(aggregation) 연관 관계

-모델 요소 사이의 전체 부분(has a) 관계를 표현함

-부분 요소는 전체 요소 없이도 존재할 수 있음

-전체 요소가 소멸될 때 부분 요소가 소멸되지 않을 수 있음

ex) 컴퓨터의 부분요소가 되는 프린터

1
2
3
4
public class 컴퓨터{
private : 
    Collection<프린터> 부품;
};
cs
1
2
3
4
public class 프린터{
private : 
    컴퓨터 본체;
};
cs

컴퓨터(전체요소)가 만들어 질때 프린터(부분요소)가 만들어 지지는 않는다.(따로 만들어진다)

컴퓨터(전체요소)가 소멸되더라도 프린터(부분요소)는 계속 쓰인다.

 

$\bullet$ 종속성(dependency) 관계

-한 클래스가 다른 클래스를 사용하는 관계를 표현함

-다음과 같은 클래스 사이에 종속 관계가 형성될 수 있음

--하나의 클래스로부터 다른 클래스로 메시지가 전달됨

--하나의 클래스가 다른 클래스의 데이터의 일부가 됨

--하나의 클래스가 다른 클래스를 오퍼레이션의 매개변수로 지정함

ex) 수강등록 클래스와 학생 클래스

수강등록 클래스는 학생 클래스를 "사용" 한다.

수강등록클래스는 학생클래스의 변경에 대해 영향을 받는다.

즉, 수강등록클래스는 학생클래스에 대해 의존적이다, 종속되어있다.

 

 

$\bullet$ 일반화(generalization) 관계

-한 클래스가 다른 클래스의 구조와 행위를 공유하는 관계를 표현함

-서브 클래스(subclass)가 수퍼 클래스(superclass)를 상속하는 추상화 계층도를 정의함

-'의 일종이다(is a kind of)' 관계가 형성됨

-상속성(inheritance)

1
2
3
4
5
public class 자동차{
};
 
public class 승용차 extends 자동차{
};
cs

 

 

$\bullet$ 실현(realization) 관계

-한 클래스가 다른 클래스 또는 인터페이스(interface)의 명세(specification)를 구현하는 관계를 표현함

-다형성(ponymorphism)

1
2
3
4
5
6
7
8
9
10
11
12
13
public interface 도형{
    그리다();
}
 
public class 사각형 implements 도형{
private:
    좌표;
    가로;
    세로;
    
public:
    그리다(){}
}
cs

 

 

 

'소프트웨어 공학 > uml' 카테고리의 다른 글

2. 다이어그램으로 작업하기  (0) 2021.06.20
개요  (0) 2020.04.25
Comments