1. 클래스
: 동일한 속성과 행위를 수행하는 객체의 집합
위 두 개는 Course 클래스의 클래스 다이어그램이다. 왼쪽에는 구체적인 정보를 기술하지 않은 주로 쓰이는 클래스 다이어그램이고, 오른쪽은 코드를 바로 생성할 수 있게 하려고 구체적인 타입 정보를 기술한 설계 단계의 클래스 다이어그램이다. 타입 정보나 접근 제어자, 변수, 초기값, 반환형을 구체적으로 기술하는 것은 사용자 마음이다.
※ 접근 제어자
- public(+) : 어디서든 접근 가능
- private(-) : 이 클래스 내에서만 접근 가능
- protected(#) : 동일 패키지나 상속 관계에 있는 하위 클래스에서 접근 가능
- default(-) : 동일 패키지에서 접근 가능
2. 관계(다음 포스트에 다른 관계도 설명되어 있음)
※연관 관계 : 클래스들이 서로 연관되어 있다는 뜻으로 한 객체가 다른 객체를 소유하고 있거나 파라미터로 객체를 받아들여 처리하는 관계
-양방향 연관 관계
두 클래스가 서로를 참조. 위 관계는 좋지 않는 설계다. 만약 양방향 연간 관계이고
서로 다 대 다의 관계를 가지고 있을 시 연관 클래스를 만드는 게 좋다.
Borrowing 연관 클래스
- 단방향 연관 관계
Student 클래스가 Course 클래스를 1개 이상 참조하고 있다.
그러나 Course 클래스는 Student 클래스를 참조/접근하지 않는다.
- 재귀적 연관 관계 : 동일한 클래스에 속한 객체들 사이의 관계
위 관계는 manager가 staff 0명에서 다수를 관리하고 staff는 자신의 manager가 없거나 있으면 1명만있다는 뜻이다.
위의 관계를 보면 여러 명의 staff를 관리하는 manager가 다른 manager에 의해서 관리하는 상황이 생길 시 모순이
발생한다. 즉 manager와 staff를 따로 클래스를 만들면 시스템이 변화할 시 유연성이 부족할 수 있어 가급적
하나의 클래스로 만드는 게 좋다. 그래서 등장한 게 재귀적 연관 관계다.
위 그림이 재귀적 연관관계다. 하나의 클래스로 되어있는 것을 알 수 있다. 이 때 관계의 사이클이 발생
할 수도 있다. 예를 들어 manager1이 staff1을 관리하고 있고 manager2는 manager1을 관리한다. staff1이
manager2를 관리한다. 이런 상황을 사이클이라고 한다. 관계의 사이클은 일어나면 안 되기에 이런 객체간
상하관계가 존재하고 관계의 사이의 사이클이 존재하지 않는다는 의미로 {계층}을 기술한다.
'자바 > 기본' 카테고리의 다른 글
클래스 다이어 그램(2) - 관계, 인터페이스 (0) | 2017.07.01 |
---|---|
SOLID 원칙(4) - DIP, ISP (0) | 2017.06.29 |
SOLID 원칙(3) - 리스코프 치환 원칙(LSP) (0) | 2017.06.29 |
왜 main()메소드는 static인가? (1) | 2017.06.29 |
SOLID 원칙(2) - 개방/폐쇄 원칙(OCP) (0) | 2017.06.29 |