“상속은 이러한 것이고, 이렇게 사용하면 되는 겁니다”
보다는 감탄사가 나올 정도의 느낌을 받게 다음의 순서로 상속을 설명하고자 한다.
90년대 후반부터 객체지향은 매우 급속히 확산되어왔다. 그리고 그 과정에서 ‘상속’에 대한 관점도 많이 달라졌다.
“기존에 정의해 놓은 클래스의 재활용을 목적으로 만들어진 문법적 요소가 상속이다.”
재활용의 목적으로만 존재하지 않음을 배워야한다.
class PermanentWorker{
private:
char name[100];
int salary;
public:
생성자
int GetPay() const
void ShowSalaryInfo() const
};
class EmployeeHandler{
private:
PermanentWOrker* empList[50];
int empNum;
public:
생성자
void AddEmployee ...
void ShowAllSalaryInfo ...
void ShowTotalSalary ...
소멸자 ...
};
그리고 이렇게 기능의 처리를 실제로 당담하는 클래스를 가리켜 ‘컨트롤(control) 클래스’ 또는 ‘핸들러(handler) 클래스’라 한다.
PermanentWorker 클래스만 놓고 보면, 이프로그램이 어떠한 기능을 제공하는지 구체적으로 알 수 없다. 하니반 EmployeeHandler 클래스를 보면, 이 프로글매이 어떠한 기능을 제공하는지 구체적으로 알 수 있다. 이렇듯 컨트롤 클래스는 기능 제공의 핵심이 되기 때문에 모든 객체지향 프로그램에서 반드시 존재하는 클래스이다.
모든 소프트웨어 설계에 있어서 중요시하는 것 중 하나는 다음과 같다.