클래스 다이어그램 이해하기
https://morm.tistory.com/88
https://narup.tistory.com/32
https://infinitejava.tistory.com/61
: 시스템을 구성하는 클래스들 사이의 관계를 표현해주는 그림 도식
클래스는 3칸
으로 구성(상단부터 설명)
1. 클래스 명
2. 클래스 속성(클래스의 특징,변수)
3. 연산(메서드,클래스가 수행하는 책임)
// 속성과 연산 부분은 생략하기도 한다.
//ex) 속성으로 흐름을 분석하기 위해 다이어그램을 사용하는 경우
속성 작성시 기호
가 들어가는데, 아래와 같이 나타낼 수 있다
- : private
+ : public
# : protected (클래스내부, 동일패키지, 상속받은 클래스)
다이어그램을 작성할 때
분석단계와 설계 단계가 다르다.
: UML에서 제공하는 클래스들 사이의 관계는 아래와 같다.
- 한 클래스가 다른 클래스와 연관 관계를 가지면 각 클래스의 객체는 해당 연관 관계에서 어떤 역할을 수행하는데,
이때 두 클래스의 역할 표현을 '역할 관계 이름'이라 부른다.
연관관계는 방향성을 가지고 있는데
양방향은 실선
단방향은 화살표로 표시한다.
- 단방향(화살표)의 경우 : 한 쪽은 알지만 다른 쪽은 상대방의 존재를 모른다.
ex) 사람과 핸드폰
- 양방향(실선)의 경우 : 두 클래스의 객체들이 서로를 인지한다.
ex) 상담의사와 환자
상속관계
라고 말한다.
부모 클래스와 자식 클래스 간의 상속 관계
- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때, 두 클래스 사이에는 일반화 관계가 존재한다.
이를 객체지향 개념에선 상속관계라고 한다.
- 부모 클래스(Super) : 추상적인 개념, 삼각형 표시가 있는 쪽을 의미
- 자식 클래스(Sub) : 추상적인 개념을 물려받은 구체적인 개념,
삼각형 표시가 없는 쪽으로 부모 클래스는 자식 클래스의 공통적인 속성과 연산을 제공하는 틀이다.
- 집합 관계는 클래스A가 B를 소유하고 있다거나,
클래스A가 B의 부모라거나 하는 것이 아니다.
클래스A의 인스턴스는 B클래스의 인스턴스와 배타적이지(독립적) 않다는것을 강조하기 위한 것
위 다이어그램에서 engine과 wheel은 car와 집합관계이지만,
차가 없어진다고해서 engine과 wheel이 삭제된다고 보진 않았다.
(프로그램 특성에 따라 변경될 수는 있을 것)
person이 삭제되면 head, body, leg도 존재하지 않는다
인터페이스란 책임이다. 어떤 객체의 책임이란 객체가 해야 하는 일 혹은 객체가 할 수 있는 일을 의미한다.
인터페이스의 경우 클래스 명에
<<interface>>를 달아준다
그리고 인터페이스도 마찬가지로 객체 지향 개념에서 일반화 관계에 속한다.