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

UptoLike

Объектно-ориентированное программирование на С++
переменные создаются один раз и доступны для любого объекта этого
класса. Значение статической переменной класса должно быть
проинициализировано глобально:
int Student::countTests = 6;
int Student::countExams = 4;
Кроме новых свойств и методов в новой версии класса Student
имеется еще одно отличие: все структурные свойства объявлены со
спецификатором protected. К protected-элементам можно
обращаться из самого класса и из производных от него классов. В
рассматриваемом примере это позволяет получать доступ к элементам
класса Student из его наследника ContractStudent.
Теперь определим производный класс ContractStudent:
// объявление класса "Студент-контрактник"
class ContractStudent: public Student
{
private:
double payment; // оплата обучения за семестр
double credit; // долг по оплате
public:
// конструкторы класса
ContractStudent(char*, int, int, int, int,
double, double = 0.0);
ContractStudent();
// метод получения суммы оплаты обучения
double GetPayment();
// метод изменения суммы оплаты обучения
void SetPayment(double);
// метод получения суммы долга
double GetCredit();
// метод уменьшения суммы долга
void DescCredit(double);
// метод сдать зачет
void SetTest(int, double);
// метод проверки допуска к экзаменационной сессии
bool PassedTests();
// метод проверки, сдана ли сессия
bool PassedExams();
// метод сдать экзамен
void SetExam(int, double);
// метод допуска к обучению в новой сессии
bool NextSession();
// метод распечатки информации о
93
                         Объектно-ориентированное программирование на С++
переменные создаются один раз и доступны для любого объекта этого
класса. Значение статической переменной класса должно быть
проинициализировано глобально:

    int Student::countTests = 6;
    int Student::countExams = 4;

    Кроме новых свойств и методов в новой версии класса Student
имеется еще одно отличие: все структурные свойства объявлены со
спецификатором protected. К protected-элементам можно
обращаться из самого класса и из производных от него классов. В
рассматриваемом примере это позволяет получать доступ к элементам
класса Student из его наследника ContractStudent.
    Теперь определим производный класс ContractStudent:

    // объявление класса "Студент-контрактник"
    class ContractStudent: public Student
    {
    private:
         double payment; // оплата обучения за семестр
         double credit; // долг по оплате
    public:
         // конструкторы класса
         ContractStudent(char*, int, int, int, int,
                                      double, double = 0.0);
         ContractStudent();
         // метод получения суммы оплаты обучения
         double GetPayment();
         // метод изменения суммы оплаты обучения
         void SetPayment(double);
         // метод получения суммы долга
         double GetCredit();
         // метод уменьшения суммы долга
         void DescCredit(double);
          // метод сдать зачет
         void SetTest(int, double);
         // метод проверки допуска к экзаменационной сессии
         bool PassedTests();
         // метод проверки, сдана ли сессия
         bool PassedExams();
         // метод сдать экзамен
         void SetExam(int, double);
         // метод допуска к обучению в новой сессии
         bool NextSession();
         // метод распечатки информации о

                                                                       93