클래스 다이어그램
시스템의 정적 구조
시스템을 구성하는 클래스와 그들 간의 관계 표현
- 클래스 이름, 속성, 연산
- 속성과 연산의 접근 제어자
- + (public), - (private), # (protected), ~ (package)
- 속성의 표현
- static은 밑줄
- [+ or - or # or ~] 이름: 타입[다중성 정보][=초기값]
- 연산의 표현
- static은 밑줄
- [+ or - or # or ~] 이름(인자1: 타입1, ..., 인자n: 타입n): 반환타입
표현식이 Swift 같네요 public func someFunc(num: Int, name: String) -> String 이런 느낌
제약 조건
{ } 또는 노트 심볼 이용
다중성
클래스의 관계
연관, 일반화, 실체화, 집합, 의존 관계
클래스의 (개념적) 연관 관계
해석하자면 사람은 자동차를 0개 이상 소유할 수 있다. 자동차는 한 사람에게 소유된다고 해석된다.
// 코드로 표현하자면
class Person {
private Car[] car;// 사람은 0개 이상의 차를 가질 수 있다.
}
class Car {
private Person owner;// 차는 한 사람에게만 소유된다.(차의 소유자는 한 명)
}
연관 클래스
- 연관 관계에 속성 추가
- 한 클래스에서 다른 클래스를 사용하는 경우
- 클래스의 속성에서 참조
- 연산의 인자/지역변수로 참조
클래스의 일반화 관계
기반 클래스와 파생 클래스 간에 is a kind of 관계
파생 클래스들의 공통(슈퍼) 클래스
클래스의 실체화 관계
인터페이스와 상속(구현) 클래스 간의 관계
can do this 관계
클래스의 집합 관계
- 전체와 부분간의 관계
- 집약
- 한 객체(전체 객체)가 다른 객체(부분 객체) 포함
- 생명 주기가 서로 독립적
- 부분 객체는 다른 객체와 공유 가능
- 합성
- 부분 객체가 전체 객체의 생명 주기에 종속
- 전체 객체가 소멸되면 부분 객체도 소멸
- 집약
클래스의 의존 관계
- 일시적 연관 관계
- 서비스를 이용할 때마다 서비스 제공 객체가 변동
- 사람-자동차: 연관 관계 (지속적 서비스 제공)
- 자동차-주유소: 의존 관계 (일시적 서비스 제공)
- 연산의 인자/지역변수로 참조
- 서비스를 이용할 때마다 서비스 제공 객체가 변동
클래스 다이어그램 작성
- 유스케이스 기술서 등의 문서에서 명사를 추출
- 클래스 후보
- 사물, 역할, 조직, 장소, 트랜잭션, 외부 시스템 등
- 제외 대상
- 시스템 전체, 중복, 모호함, 지나치게 상세, 속성/값/연산
- 클래스 후보
- 클래스 간의 논리적 관계 조사
- 객체 간의 상호작용 분석
이미지 출처
https://blog.naver.com/PostView.nhn?blogId=ljh0326s&logNo=221002118528
'CS' 카테고리의 다른 글
[소프트웨어 공학] Maven (0) | 2022.09.26 |
---|---|
[소프트웨어 공학] 객체지향 개발 프로세스 (0) | 2022.09.19 |
[소프트웨어 공학] 순차 다이어그램(Sequence Diagram) (0) | 2022.09.19 |
[소프트웨어 공학] 패키지 다이어그램 (0) | 2022.09.19 |
[소프트웨어공학] 모델링, UML, 유스케이스 다이어그램 (2) | 2022.09.15 |