I часть
Определить тип Date как класс, который содержит:
- закрытые поля целого типа с информацией о дне, месяце, годе;
- три конструктора по умолчанию с использованием текущей даты,
конструктор с тремя параметрами;
- деструктор;
- три функции - селекторы для доступа отдельно к каждому полю;
- функцию для вывода на экран информации о дате в формате
dd.mm.yy;
- функции-модификаторы отдельно для каждого поля с возвратом ссылки на модифицированный объект.
Другие типы описать соответственно варианту. Если это не оговорено отдельно, в каждом классе, который разрабатывается, предусмотреть:
- конструкторы по умолчанию, с параметрами;
- при наличии динамических полей, в том числе символьных строк произвольной длины, в конструкторах предусмотреть выделение памяти;
- деструктор (пустой);
- функции – селекторы для доступа отдельно к каждому полю;
- функцию для вывода на экран информации о текущем состоянии объекта, в виде строки со значениями каждого из полей через пропуск; если класс содержит массив, информацию о каждом элементе массива подается отдельной строкой;
- функции-модификаторы отдельно для каждого поля с возвратом ссылки на модифицированный объект.
В тестовом примере создать 2 объекта заданного в соответствии с вариантом типа (для демонстрации вызова каждого конструктора). Значения для параметров конструктора с параметрами вводить с клавиатуры.
Вариант 1
Тип «Уровень образования» определить как перечисление (enum) с такими полями: «бакалавр», «специалист», «магистр».
Тип «Человек» определить как класс, который содержит:
- закрытые поля с именами и фамилиями, реализованные в виде символьных строк произвольной длины; с датой рождения типа Date;
- все функции реализовать соответственно общим требованиям.
Тип «Экзамен» определить как класс, который содержит:
- закрытое поле с названием экзамена как символьную строку с фиксированной длинной;
- закрытые поля с оценкой и тип Date с датой сдачи экзамена;
- все функции реализовать соответственно общим требованиям.
Тип «Студент» определить как класс, который содержит:
- закрытые поля типа «Человек» и типа «Уровень образования»;
- информацию о сданных экзаменах обработать как динамический массив (указатель и размерность, поля закрытые);
- предусмотреть функцию для добавления очередного экзамена к списку, которые были сданные;
- кроме стандартной функции вывода полной информации, предусмотреть функцию вывода сокращенной информации с фамилией и средним баллом;
- все функции реализовать соответственно общим требованиям.
В тестовом примере создать объект типа «Студент» соответственно общим требованиям и вывести информацию о них в полном и сокращенном виде.
К одному объекту добавить один экзамен и вывести обновленную информацию о нем в двух формах.
=====
II часть
Соответственно варианту к тексту первой части задания нужно внести следующие изменения:
- определить базовый и производный классы соответственно табл. 2.1;
- переписать объявление производного класса соответственно синтаксису для открытого наследования;
- переделать объявление и реализацию конструкторов производного класса, в конструкторе с параметрами обязательно предусмотреть использование конструктора с параметрами базового класса;
- в реализации функции вывода на экран информации в производном классе использовать соответственную функцию базового класса;
- к конструкторам и деструкторам базового, производного и одного из агрегированных классов приобщить вывод соответственной контрольной информации для возможности отслеживания порядка создания и уничтожения объектов.
В тестовом примере создать по одному объекту каждого из классов для контроля этапов создания соответственных объектов и вызвать функции вывода информации. Объяснить полученные результаты.
Вариант 1
Базовые классы: «Человек» Производные классы: «Студент»
=====
III часть
Соответстве