일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다익스트라
- DP
- SQL
- Stored Procedure
- Two Points
- union find
- binary search
- Brute Force
- 이진탐색
- two pointer
- 스토어드 프로시저
- Trie
- MYSQL
- Dijkstra
- 그래프
- Hash
- String
- Today
- Total
codingfarm
클래스 다이어그램 개요 본문
클래스 다이어그램(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 |