바람직한 Design
- 복잡성 최소화
- 편리한 유지 관리(모듈화,표준화,컴포넌트화)
- 설계수준: 표현하려는 내용이 다 표현되었는지 확인. 다른 다이어그램에도 동일하게 표현되었는지 확인
- 시스템을 구성하는 설계도를 보여줄 수 있어야함(관점에 따라 나타내는 대상이 다름)
Class diagram
시스템을 구성하는 요소를 문서화
ㅋㅡㄹ래스 사이의 연관,일반화,집합 관계를 표시
클래스의 기능, 속성, 오퍼레이션을 나타냄
문제 영역의 클래스 명세로부터 구현을 위한 자세한 걸계까지 시스템의 클래스 구조를 나타냄
시스템이ㅡ 클래스들이 클래스 라이브러리와 어ㄷ떻께 ㅋㅋㅋㅋ 협력하는지를 나타냄
클래스들의 인터페이스를 나타내고
시스템 안에 어떤 객체가 존재할 수 있는지 나타냄ㅋㅋㅋ
Object(객체)
- 실 세계에서 인지할 수 있는 개별적인 실체
- 자신의 특성과 정보를 상태(state)로 가지며, 이를 바탕으로 행동(behavior)을 외부에 제공
- 각 객체는 개별적인 존재이므로 서로 다른 상태를 가질 수 있음
- 상태가 동일하다고 해서 동일한 하나의 객체는 아님
클래스
- 유사한 상태와 행동을 가지는 객체들을 한꺼번에 부르는 용어
- 시스템이 처리해야 할 자료와 그와 관련된 오퍼레이션을 정의한 작은 모듈
인스턴스
- 클래스로부터 객체를 생성하는 행위를 실체화한것
클래스 다이어그램
'class'라는 객체지향 설계단위를 이용하여 시스템의 정적인 구조를 표현한 다이어그램
프로그램의 구조를 잘 나타내고있어 코딩 작업에 근간이 됨(Attribute, operation 정의, interface 정의 등)
Class, Relationship으로 구성
Class
구성요소: Class name, attribute(속성), operation(동작)
- class: 공통의 속성, 오퍼레이션, 관계,의미를 공유하는 객체들의 집합
- 속성: 클래스의 구조적 특성에 이름을 붙인것으로 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위를 기술
- operation: 이름,타입,매개변수들과 연관된 행위를 호출하는데 요구되는 제약사항들을 명세하는 클래스의 행위적 특징
Attribute 표기법
Visibility Name:Type = Default Value
visibility는 다음과 같은 종류가 있음: public/private/protected
(예시)
- day:int
+ year:int=2008
Operation 표기법
의미있는 동사형으로 표현
Visibility Name(Parameter-list):Return type - Expression[Property-String]
(예시)
+getDay():int
+setDay(d:int):void
Relationship
- Generalization(일반화 관계)
- Realization(실체화 관계)
- Association(연관 관계)
- Dependency(의존 관계)
Generalization
: 일반적인것에서 특화된 것과의 관계를 나타낸다.
보통 inheritance(상속)을 표현한다.
표현은 실선 끝에 삼각형이 달린 화살표를 사용
(예시)
사람 ◁ㅡ 남자
Realization(실체화 관계)
: interface와 그것을 구현한 것과의 관계를 나타낸다.
표현은 점선 끝에 삼각형이 달린 화살표를 사용
<<인터페이스>>A ◁- - - 클래스B
Association(연관 관계)
: 한 instance가 다른 instance를 소유하거나 파라미터로 instance를 받아서 처리하는 관계
단방향, 양방향이 존재.
단방향은 ㅡ> 화살표로 나타내며, 화살표의 대상은 자신을 가리키는 클래스의 존재여부를 알지 못한다.
양방향은 ㅡ 선으로 구현되며 서로 연관이 되어있다
(예시)
Circle ㅡ> point
써클은 포인트클래스를 소유함
---
대상이 되는 객체의 Life Cycle에 따라서 2가지로 분류됨
Aggregation: 집합 연관 관계
메인 클래스가 삭제될 시 대상 클래스는 같이 삭제가 안됨(라이프 사이클이 다름)
분리가 돼도 독립적으로 동작
약한 결합
전체와 부분을 나타내는 관계이며 전체와 부분은 서로 독립적임
(예시)
프린터 ㅡ◇컴퓨터
Composition: 복합 연관 관계
메인 클래스가 삭제될 시 대상 클래스도 같이 삭제됨(라이프 사이클 동일)
분리가 되면 의미가 없어짐
강한 결합
has-A 관계
(예시)
부서 ㅡ◆ 회사
Dependency(의존 관계)
: 한 객체가 다른 객체를 소유하지는 않지만, 다른 객체의 변경에 따라서 같이 변경이 일어남
한 클래스의 메서드가 다른 클래스의 객체를 인자로 받아 사용하는 경우
한 클래스의 메서드 내부에서 다른 클래스의 객체를 생성하여 사용하는 경우
다른 클래스의 메서드가 또 다른 클래스의 객체를 반환하는 경우
클래스 관계 중 가장 약한 결합이며 일시적인 사용을 표현
화살표 방향은 사용하는 쪽에서 사용되는 쪽
프로그래머 ----> 컴퓨터
------------------
Multiplicity(다중성)
* = (0~무한대)
'2023-1 > 소프트웨어 설계' 카테고리의 다른 글
Use case diagram 2 (0) | 2023.06.16 |
---|---|
04 - Use Case Diagram (0) | 2023.04.16 |
03 - UML (0) | 2023.04.16 |
02 - Planning (0) | 2023.04.16 |
01 (1) | 2023.04.16 |
댓글