Объектно-ориентированное программирование на C++. Андрианова А.А - 95 стр.

UptoLike

Объектно-ориентированное программирование на С++
при private -наследования
Класс первого
поколения
class A
{
public:
//открытые элементы
// класса первого
// поколения
void f();
. . .
};
Класс второго
поколения
class B : private A
{
. . .
};
// метод f() класса
//А стал private-
//методом класса В
Класс третьего поколения
class С : public B
{
. . .
};
// метод f() класса
А // можно вызывать
// только с помощью
// методов класса B
Схема изменения режима доступа к элементам базового класса
при protected-наследования
Класс первого
поколения
class A
{
public:
//открытые элементы
// класса первого
// поколения
void f();
. . .
};
Класс второго
поколения
class B : protected
A
{
. . .
};
// метод f() класса
// А стал
// protected-
// методом класса В
Класс третьего поколения
class С : public B
{
. . .
};
// метод f() класса А
// можно вызвать в
// классе С
Вернемся к определению классов Student и ContractStudent.
Как уже было сказано, производный класс содержит все данные и методы
базового класса и собственные элементы. Так, в класс
ContractStudent добавлены следующие новые элементы:
структурные свойства: данные о плате за обучение (payment)
и о задолженности студента (credit);
конструктор производного класса:
// прототип конструктора
95
                            Объектно-ориентированное программирование на С++
                      при private -наследования

Класс первого         Класс второго           Класс третьего поколения
поколения             поколения

class A               class B : private A     class С : public B
{                     {                       {
public:                   .   .   .               .   .   .
//открытые элементы   };                      };
// класса первого
// поколения          // метод f() класса // метод f() класса
    void f();         //А   стал private- А // можно вызывать
    .   .    .        //методом класса В // только с помощью
};                                        // методов класса B




     Схема изменения режима доступа к элементам базового класса
                   при protected-наследования

Класс первого         Класс второго           Класс третьего поколения
поколения             поколения

class A               class B : protected class С : public B
{                     A                   {
public:               {                       .   .   .
//открытые элементы       .   .   .       };
// класса первого     };
// поколения                              // метод f() класса А
    void f();         // метод f() класса // можно вызвать в
    .   .    .        // А стал           // классе С
};                    // protected-
                      // методом класса В




    Вернемся к определению классов Student и ContractStudent.
Как уже было сказано, производный класс содержит все данные и методы
базового   класса   и    собственные    элементы.    Так,   в   класс
ContractStudent добавлены следующие новые элементы:
        • структурные свойства: данные о плате за обучение (payment)
          и о задолженности студента (credit);
        • конструктор производного класса:

          // прототип конструктора
                                                                          95