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

UptoLike

Объектно-ориентированное программирование на С++
petr.SetTest(0, 51.5);
. . .
petr.SetExam(0, 60.0);
. . .
petr.Print();
// перевод к следующему семестру
petr.NextSession();
}
catch (int e)
{
// обработка исключений,
// связанных с невозможностью фиксации
// сдачи зачетов и экзаменов
if (e == 1)
cout << "Студент на допущен к сессии"
<< endl;
if (e == 2)
cout << "Некорректные баллы" << endl;
if (e == 3)
cout << "Некорректный номер зачета
или экзамена" << endl;
}
petr.Print();
}
2.2.7. Виртуальные функции и абстрактные классы
Внесем изменения в класс «Учебная группа». Предыдущая версия
класса Group содержала массив объектов класса Student. Допустим,
что в группе могут учиться также и контрактные студенты. Для их
хранения в класс Group можно добавить еще один массив объектов
класса ContractStudent. В этом случае придется в методах класса
Group обрабатывать оба массива по отдельности, хотя, возможно,
одинаковым образом. Принцип наследования, который был применен при
разработке двух классов-студентов, позволяет использовать более
эффективные средства ООП для единообразной обработки студентов
обоих типов. Этим средством является использование виртуальных
функций, которые определяются в базовом классе и переопределяются в
производном.
Механизм использования виртуальных функций основывается на
возможности хранения в переменной, являющейся указателем или
ссылкой на базовый класс, адреса объекта производного класса. По
107
                          Объектно-ориентированное программирование на С++
              petr.SetTest(0, 51.5);
              .    .    .
              petr.SetExam(0, 60.0);
              .    .    .
              petr.Print();
              // перевод к следующему семестру
              petr.NextSession();
         }
         catch (int e)
         {
              // обработка исключений,
              // связанных с невозможностью фиксации
              // сдачи зачетов и экзаменов
              if (e == 1)
                   cout << "Студент на допущен к сессии"
                                                       << endl;
              if (e == 2)
                   cout << "Некорректные баллы" << endl;
              if (e == 3)
                   cout << "Некорректный номер зачета
                             или экзамена" << endl;
         }
         petr.Print();
    }



     2.2.7. Виртуальные функции и абстрактные классы

    Внесем изменения в класс «Учебная группа». Предыдущая версия
класса Group содержала массив объектов класса Student. Допустим,
что в группе могут учиться также и контрактные студенты. Для их
хранения в класс Group можно добавить еще один массив объектов
класса ContractStudent. В этом случае придется в методах класса
Group обрабатывать оба массива по отдельности, хотя, возможно,
одинаковым образом. Принцип наследования, который был применен при
разработке двух классов-студентов, позволяет использовать более
эффективные средства ООП для единообразной обработки студентов
обоих типов. Этим средством является использование виртуальных
функций, которые определяются в базовом классе и переопределяются в
производном.
     Механизм использования виртуальных функций основывается на
возможности хранения в переменной, являющейся указателем или
ссылкой на базовый класс, адреса объекта производного класса. По
                                                                       107