[SW Engineering] 4.3. Generalization

이상윤·2024년 4월 21일
0

소프트웨어공학

목록 보기
6/11

상위-하위 클래스의 관계
한 클래스가 다른 클래스의 속성과 동작을 상속할 수 있도록 함

  • 상위 클래스 (General/Super Class)에 정의된 객체의 특성 (Attribute / Operation), 관계 (Association / Aggregation) 등이 하위 클래스(SubClass)에 전달된다. (private의 경우 제외)
  • 하위 클래스의 각 인스턴스는 동시에 상위 클래스의 간접 인스턴스 (indirect instance)로 취급된다.
  • 하위 클래스는 추가적인 고유 특성, 관계를 가질 수 있다.

Abstract Class

  • 하위 클래스들의 공통 특성을 나타내는데 쓰인다.
  • 상위 abstract 클래스의 direct instance는 존재할 수 없다.
  • 상위 abstract 클래스의 non-abstract 하위 클래스만이 인스턴스화 될 수 있다.
  • {abstract} 특성을 부여함으로써 표시한다

Multiple Inheritance

Java는 다중상속을 허용하지 않고, C++는 허용한다.
UML에서는 다양한 프로그래밍 언어를 포괄할 수 있어야 하기에 다중상속을 허용한다.

With vs Without Generalization


좌측은 Generalization 없이, 우측은 포함하여 그려졌다.
(여러명의) 학생은 (1개 또는 여러개의) 수업에 등록한다.
(1개 또는 여러개의) 수업은 (여러개의) 코스를 포함한다.
(여러개의) 코스는 (1명 또는 여러명의) 연구 협력자에 의해 진행된다.
(여러명의) 연구자는 (1개의) 단과대에 소속되고,
(여러명의) 행정 직원들이 (1개의) 단과대에 소속된다.

이때, 학생, 연구자, 행정 직원들은 모두 이름, 주소 등의 대부분의 속성을 공유하고, 단 한개씩만의 차이점을 가진다.

따라서 Person이라는 Abstract 클래스에 name, address, dob, ssNo의 Attribute를 부여하고, 이를 상속해 Student, Employee를 만들고, Employee를 상속해 ResearchAssociate, AdministrativeEmployee를 만들었다.

0개의 댓글

관련 채용 정보