UML
: 시스템 개발 과정에서 개발자 사이의 이ㅡ사 소통이 원활하게 이루어지도록 표준화한 통합 모델링UML 종류
접근 제어자 | 표시 |
---|---|
public | + |
private | - |
protected | # |
package | ~ |
표시 | 표기 방법 |
---|---|
속성 | [+, -, #, ~] 이름:타입 |
연산 | [+, -, #, ~] 이름 (인자1:타입1,... 인자n:타입n): 반환 타입 |
class Person {
private Phone homePhone;
...
}
단방향 연관 관계
: 한쪽으로만 방향성이 있는 연관 관계
양방향 연관 관계
: 방향이 양쪽에 있는 연관 관계 (실제로는 두 단뱡향 관계를 합친 형태
)
실제 구현할 때도 단방향 관계 두개로 구현해야 한다!!!
다대다 연관 관계일 경우,
연관 클래스(associattion class)
를 생성하는 방법을 선택한다.
다중성 표기 | 의미 |
---|---|
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 |
연관 클래스 예시
class Student {
private List<Transcript> transcripts;
}
class Transcript {
private Student student;
private Course course;
}
class Course {
private List<Transcript> transcripts;
...
}
합성 관계
: 부분 객체가 전체 객체에 속하는 관계 (전체객체가 사라지면 부분 객체도 사라진다. -> 라이프 사이클이 같다.)
집약 관계
: 한 객체가 다른 객체를 포함하는 것 (전체 객체가 사라져도 부분 객체는 살아있다.)
(합성 관계 : 왼쪽 / 집약 관계 : 오른쪽)
합성 관계 코드
class Computer {
private Memory memory;
private CPU cpu;
private Power power;
public Computer () {
this.memory = new Memory();
this.cpu = new CPU();
this.power = new Power();
}
}
집약 관계 코드
class Computer {
private Memory memory;
private CPU cpu;
private Power power;
public Computer (Memory memory, CPU cpu, Power power) {
this.memory = memory;
this.cpu = cpu;
this.power = power;
}
}
의존관계 3가지
- 클래스의 속성에 참조
- 연산의 인자로 사용
- 메서드 내부의 지역 객체로 참조
예시
public class Car {
...
public void fillGas(GasPump p) {
p.getGas(amount);
}
}