2018.06.19
Chapter 01 객체지향 모델링
1.1 모델링
모델의 역할
모델 특징
1.2 UML
UML(Unified Modeling Language)
1.2 UML
UML 다이어그램 종류
클래스 다이어그램 | 시스템을 구성하는 클래스 사이의 관계 표현 |
객체 다이어그램 | 객체 정보를 보여준다 |
복합체 구조 다이어그램 | 복합 구조의 클래스와 컴포넌트 내부 구조 표현 |
배치 다이어 그램 | 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조 표현 |
컴포넌트 다이어그램 | 컴포넌트 구조 사이의 관계 표현 |
패키지 다이어그램 | 클래스나 유즈 케이스 등을 포함한 여러 모델 요소들을 그룹화해 패키지를 구성하고 패키지들 사이의 관계 표현 |
구조 다이어그램
1.2 UML
UML 다이어그램 종류
활동 다이어그램 | 업무 처리 과정이나 연산이 수행되는 과정 표현 |
상태 머신 다이어그램 | 객체의 생명 주기 표현 |
유즈 케이스 다이어그램 | 사용자 관점에서 시스템 행위 표현 |
순차 다이어그램 | 시간 흐름에 따른 객체 사이의 상호작용 표현 |
상호작용 개요 다이어그램 | 여러 상호작용 다이어그램 사이의 제어 흐름 표현 |
통신 다이어그램 | 객체 사이의 관계를 중심으로 상호작용 표현 |
타이밍 다이어그램 | 객체 상태 변화와 시간 제약을 명시적으로 표현 |
행위 다이어그램
1.3 클래스 다이어그램
1.3.1 클래스
학생 |
---|
-이름 -전공 -학번 -과목 |
+수강하다() |
UML 클래스의 표현 예
클래스 이름
속성
연산
1.3 클래스 다이어그램
1.3.1 클래스
접근 제어자 | 표시 | 설명 |
---|---|---|
public | + | 어떤 클래스의 객체에서든 접근 가능 |
private | - | 이 클래스에서 생성된 객체들만 접근 가능 |
protected | # | 클래스와 동일 패키지 또는 상속 관계에 있는 하위 클래스의 객체들만 접근 가능 |
package | ~ | 동일 패키지에 있는 클래스의 객체들만 접근 가능 |
표기 방법 | |
---|---|
속성 | [+|-|#|~]이름:타입[다중성 정보][=초기값] |
연산 | [+|-|#|~]이름(인자1:타입1, ..., 인자n:타입n)반환 타입 |
1.3 클래스 다이어그램
1.3.1 클래스
Course |
---|
id name numOfStudents |
addStudent() deleteStudent() |
Course |
---|
-id: String -name: String -numOfStudents: Integer |
+addStudent(student: Student): void deleteStudent(id: Integer): void |
분석 단계 클래스
설계 단계 클래스
1.3 클래스 다이어그램
1.3.2 관계
관계 | 설명 |
---|---|
연관 관계(association) | - 클래스들이 개념상 서로 연결되었음을 나타냄 - 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일 때 표시 - 실선이나 화살표로 표시 |
일반화 관계(generalization) | - 상속 관계 - 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 - IS-A 관계 - 속이 빈 화살표로 표시 |
집합 관계 (composition, aggregation) |
- 클래스들 사이의 전체 또는 부분 같은 관계 - 집약(aggregation), 합성(composition) 관계 존재 |
의존 관계(dependency) | - 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 - 두 클래스의 관계가 한 메서드를 실행하는 동안과 같은, 매우 짧은 시간만 유지 - 점선 화살표로 표시 |
실체화 관계(realization) | - 책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계 - 빈 삼각형, 점선으로 표시 |
1.3 클래스 다이어그램
1.3.2 관계 - 연관 관계
Professor
Student
상담한다
-advisor
-student
연관 관계의 역할 이름은 연관된 클래스의 객체들이 서로를 참조할 수 있는 속성의 이름으로 활용할 수 있다
1.3 클래스 다이어그램
1.3.2 관계 - 연관 관계
다중성 - 연관된 객체 수를 명시
다중성 표기 | 의미 |
---|---|
1 | 엄밀하게 1 |
* | 0 또는 그 이상 |
0..* | 0 또는 그 이상 |
1..* | 1 이상 |
0..1 | 0 또는 1 |
2..5 | 2 또는 3 또는 4 또는 5 |
1, 2, 6 | 1 또는 2 또는 6 |
1, 3..5 | 1 또는 3 또는 4 또는 5 |
1.3 클래스 다이어그램
1.3.2 관계 - 연관 관계
연관 클래스 - 연관 관계에 추가할 속성이나 행위가 있을 때 사용
Student
Course
수강하다
1..*
1..*
Transcript
Student
Course
1..*
1..*
Transcript
연관 클래스를 일반 클래스로 변환한 예
1.3 클래스 다이어그램
1.3.2 관계 - 연관 관계
재귀적 연관 관계
직원
0..*
0..1
-사원
-관리자
{계층}
1.3 클래스 다이어그램
1.3.2 관계 - 일반화 관계
가전 제품
세탁기
TV
식기세척기
부모 클래스
(슈퍼 클래스)
자식 클래스
(서브 클래스)
1.3 클래스 다이어그램
1.3.2 관계 - 집합 관계
집약관계
합성관계
1.3 클래스 다이어그램
1.3.2 관계 - 집합 관계
전체
부분
전체
부분
집약
합성
1.3 클래스 다이어그램
1.3.2 관계 - 의존 관계
person
car
-owns
person
car
-owns
gas pump
1.3 클래스 다이어그램
1.3.2 관계 - 인터페이스와 실체화 관계
plane
bird
<<interface>>
Flyable
plane
bird
Flyable
+fly()