상위-하위 클래스의 관계
한 클래스가 다른 클래스의 속성과 동작을 상속할 수 있도록 함
Java는 다중상속을 허용하지 않고, C++는 허용한다.
UML에서는 다양한 프로그래밍 언어를 포괄할 수 있어야 하기에 다중상속을 허용한다.
좌측은 Generalization 없이, 우측은 포함하여 그려졌다.
(여러명의) 학생은 (1개 또는 여러개의) 수업에 등록한다.
(1개 또는 여러개의) 수업은 (여러개의) 코스를 포함한다.
(여러개의) 코스는 (1명 또는 여러명의) 연구 협력자에 의해 진행된다.
(여러명의) 연구자는 (1개의) 단과대에 소속되고,
(여러명의) 행정 직원들이 (1개의) 단과대에 소속된다.
이때, 학생, 연구자, 행정 직원들은 모두 이름, 주소 등의 대부분의 속성을 공유하고, 단 한개씩만의 차이점을 가진다.
따라서 Person이라는 Abstract 클래스에 name, address, dob, ssNo의 Attribute를 부여하고, 이를 상속해 Student, Employee를 만들고, Employee를 상속해 ResearchAssociate, AdministrativeEmployee를 만들었다.