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

UptoLike

Объектно-ориентированное программирование на С++
Использование принципа наследования позволяет расширить
базовый класс посредством создания производного класса, содержащего
дополнительно:
новые данные, которые будут определять дочерний класс.
Например, расширяя структурные свойства класса Student,
добавим переменные для хранения значений общей стоимости
обучения за год, внесенной суммы, оставшейся
задолженности и, тем самым, образуем структурные свойства
нового класса ContractStudent;
новые поведенческие свойства дочернего класса. Например,
новым поведением объектов класса ContractStudent
может служить внесение оплаты за обучение;
переопределенные поведенческие свойства базового класса.
Например, если для студентов бюджетной формы обучения
для определения допуска к сессии необходимо наличие
определенного количества набранных баллов, то для
студентов-контрактников, кроме этого, необходимо отсутствие
задолженности по оплате. Это приведет к переопределению в
дочернем классе метода базового класса, осуществляющего
проверку допуска студента к сессии. Переопределенный метод
имеет тот же прототип и скрывает в производном классе метод
базового класса.
Теперь подробно рассмотрим применение принципа наследования на
примере приложения, автоматизирующего работу деканата. Как было
указано выше, родительским классом является класс Student:
// объявление класса "Студент"
class Student
{
protected:
char fio[100]; // фамилия, имя, отчество
int dayBirth; // дата рождения
int monthBirth;
int yearBirth;
int numberOfTestBook; // номер зачетной книжки
double averageMark; // средний балл успеваемости
static int countTests; // количество зачетов
// в текущую сессию
static int countExams; // количество экзаменов
// в текущую сессию
double tests[6]; // баллы за текущую работу (зачеты)
91
                           Объектно-ориентированное программирование на С++
    Использование принципа наследования позволяет расширить
базовый класс посредством создания производного класса, содержащего
дополнительно:
        • новые данные, которые будут определять дочерний класс.
          Например, расширяя структурные свойства класса Student,
          добавим переменные для хранения значений общей стоимости
          обучения    за    год,   внесенной     суммы,   оставшейся
          задолженности и, тем самым, образуем структурные свойства
          нового класса ContractStudent;
        • новые поведенческие свойства дочернего класса. Например,
          новым поведением объектов класса ContractStudent
          может служить внесение оплаты за обучение;
        • переопределенные поведенческие свойства базового класса.
          Например, если для студентов бюджетной формы обучения
          для определения допуска к сессии необходимо наличие
          определенного количества набранных баллов, то для
          студентов-контрактников, кроме этого, необходимо отсутствие
          задолженности по оплате. Это приведет к переопределению в
          дочернем классе метода базового класса, осуществляющего
          проверку допуска студента к сессии. Переопределенный метод
          имеет тот же прототип и скрывает в производном классе метод
          базового класса.
    Теперь подробно рассмотрим применение принципа наследования на
примере приложения, автоматизирующего работу деканата. Как было
указано выше, родительским классом является класс Student:

     // объявление класса "Студент"
     class Student
     {
     protected:
          char fio[100]; // фамилия, имя, отчество
          int dayBirth; // дата рождения
          int monthBirth;
          int yearBirth;
          int numberOfTestBook; // номер зачетной книжки
          double averageMark;    // средний балл успеваемости
          static int countTests; // количество зачетов
                                 // в текущую сессию
          static int countExams; // количество экзаменов
                                 // в текущую сессию
          double tests[6]; // баллы за текущую работу (зачеты)

                                                                         91