등장인물 간의 관계는 Association, Aggregation, Composition이 있다.
Association: 관계가 있다
Aggregation: 한 쪽이 전체고 다른 한 쪽이 부분인 관계이다. (마름모는 전체에 붙임)
Composition: 전체가 부분을 강하게 소유하고 있다. (부분은 공유될 수 없음, 전체가 죽으면 부분도 죽음)
Example)
PC와 RAM은 Aggregation 관계이다.
PC는 RAM을 소유하고 있다.
PC의 RAM은 다른 PC에게 공유될 수 있고, 전체(PC)가 죽는다고 부분(RAM)이 항상 죽는 것은 아니다.
사람과 눈은 Aggregation 관계이다.
사람은 눈을 소유하고 있다.
사람의 눈은 다른 사람에게 이식될 수 있으므로 전체(사람)가 죽는다고 부분(눈)이 죽는 것도 아니다.
고양이와 눈은 Composition 관계이다.
고양이는 눈을 소유하고 있다.
고양이의 눈은 다른 고양이에게 이식될 수 없으므로 전체(고양이)가 죽으면 부분(눈)이 죽는다.
Multiplicity
교과목 한 개당 교수 한 명이 담당한다.
교수 한 명이 0~4개의 교과목을 가르친다.
If) 여러 교수가 한 과목을 가르칠 수 있다면?
CourseOffering(0..4), Professor(1..*)
[문제]
프레젠테이션 시스템
- 파워포인트 같은 프레젠테이션 어플리케이션을 만들려고 한다. 새로운 한 문서(Document 클래스)는 한 페이지(Page 클래스) 이상을 포함하고 한 페이지는 다음과 같은 요소를 포함할 수 있다.
1. 0개 이상 1개 이하의 제목 (TitleElement 클래스)
2. 0개 이상의 그림 (PictureElement 클래스)
3. 0개 이상의 표 (TableElement 클래스)
4. 0개 이상의 글 상자 (ScriptElement 클래스)
5. 0개 이상의 Wave (WaveElement 클래스)
- WaveElement의 경우 여러 페이지에 같은 요소가 사용되는 경우, 메모리 절약을 위해 한 개의 객체만 이 모든 페이지에 공통적으로 쓰인다.
- 표의 각 셀은 글 상자이고 표는 1개 이상의 셀로 구성되어 있다.
Q. Multiplicity를 고려해서 Class Diagram을 그려라.
Answer.
클래스는 속성과 메소드로 구성된다.
시퀀스 다이어그램의 메시지(화살표 위 설명)를 보면 메소드와 속성을 대략적으로 식별할 수 있다!!
Example)
- User에서 Document로 ‘delete a Page’ 메시지가 있으면 Document 클래스는 delete()라는 메소드가 존재한다.
- Document에서 Document로 ‘save undo data’ 메시지가 있으면 Document 클래스는 UndoData라는 속성과 saveUndoData()라는 메소드가 존재한다.
(Document Class)
-: private, +: public