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를 관리한다. 이런 상황을 사이클이라고 한다. 관계의 사이클은 일어나면 안 되기에 이런 객체간 

상하관계가 존재하고 관계의 사이의 사이클이 존재하지 않는다는 의미로 {계층}을 기술한다.



+ Recent posts