본문 바로가기

ComputerScience/Software Engineering

소프트웨어공학 - 9. Class diagram -> Code Generation

728x90

1. University Information System

- 대학 정보 시스템을 만들기 위한 class diagram을 만들어볼 것이다.

- 대학은 여러개의 단과대학으로 구성되어있다.

- 각 단과대는 여러 기관들로 구성되어 있다. 

- 각 기관마다 주소가 있다.

 

- 단과대 마다 학장이 있다.

- 학장은 직원에 속한다. 직원은 연구직, 행정직으로 분류된다.

- 모든 직원은 security number, 이름, 이메일이 있다.

- 연구직원은 전공이 있고 최소 1개의 기관에 배정된다.

- 연구직원은 프로젝트에 속할 수 있다. 직원마다 기여 시간이 있다.

- 일부 연구직원은 lecturer도 겸직한다.

 

- course는 id, 이름, 시간으로 정의된다.

2. Step1. Identifying Classes

- 어떤 직원이 영원히 학장일수는 없다. 학장은 class라기보다는 임명되는 role, 자격이기 때문에 클래스로 만들기는 부적절하다.

3. Step2. Identifiying the Attributes

- 밑줄 속성은 static 멤버 변수이다. 총 직원수를 카운트하기 위한 목적으로 선언되었다.

4. Step3. Identifying Relationships

- 관점에 따라서는 lecturer라는 독립된 class를 만들지 않고 역할을 부여하는 방식으로 설계할 수도 있다.

- 여기서는 한번 lecturer면 계속 lecturer여야 한다.

 

- Employee의 인스턴스는 필요가 없다. 모든 직원은 행정직 아니면 연구직이다. 따라서 Employee는 abstract 클래스이다.

- 한 단과대는 여러개의 기관으로 구성되어있다. 따라서 Faculty는 한개 이상의 Institute class로 구성된다.

- 그리고 한 institute는 반드시 한 faculty에 속한다.

- 관계1 : Dean역할을 갖는 한명의 employee가 0개 혹은 1개의 faculty(단과대)를 리드한다.

- 관계2: 최소 한명 이상의 employee는 정확히 한개의 faculty에 속한다.

 

- 최소 한명 이상의 연구직원은 최소 한개 이상의 기관에서 일한다.

- 한 직원이 동시에 여러 기관에서 기여할 수 있기 때문에 shared aggregation의 약한 결합이 적합하다.

- 연구직원은 프로젝트에 특정 시간만큼 참여할 수 있다.

- 복수 lecturer는 복수 과목을 teach한다.

5. 결과

6. Code Generation

- enumeration 생성 예시이다.

- 상속관계는 extends 사용

- 다른 클래스와의 관계는 멤버 변수로 추가된다.

- course를 support하는 직원들을 멤버변수, hashtable로 관리한다.

- 다른 클래스와 맺는 관계 수에 따라서 멤버변수 타입이 배열인지 아닌지 결정된다.

728x90
반응형