Создан заказ №331990
11 ноября 2014
Выполнить 4 задания на C# (классы)
Как заказчик описал требования к работе:
I часть
Определить тип Date как класс, который содержит:
- закрытые поля целого типа с информацией о дне, месяце, годе;
- три конструктора по умолчанию с использованием текущей даты,
конструктор с тремя параметрами;
- деструктор;
- три функции - селекторы для доступа отдельно к каждому полю;
- фун
кцию для вывода на экран информации о дате в формате dd.mm.yy;
- функции-модификаторы отдельно для каждого поля с возвратом ссылки на модифицированный объект.
Другие типы описать соответственно варианту. Если это не оговорено отдельно, в каждом классе, который разрабатывается, предусмотреть:
- конструкторы по умолчанию, с параметрами;
- при наличии динамических полей, в том числе символьных строк произвольной длины, в конструкторах предусмотреть выделение памяти;
- деструктор (пустой);
- функции – селекторы для доступа отдельно к каждому полю;
- функцию для вывода на экран информации о текущем состоянии объекта, в виде строки со значениями каждого из полей через пропуск; если класс содержит массив, информацию о каждом элементе массива подается отдельной строкой;
- функции-модификаторы отдельно для каждого поля с возвратом ссылки на модифицированный объект.
В тестовом примере создать 2 объекта заданного в соответствии с вариантом типа (для демонстрации вызова каждого конструктора). Значения для параметров конструктора с параметрами вводить с клавиатуры.
Вариант 1
Тип «Уровень образования» определить как перечисление (enum) с такими полями: «бакалавр», «специалист», «магистр».
Тип «Человек» определить как класс, который содержит:
- закрытые поля с именами и фамилиями, реализованные в виде символьных строк произвольной длины; с датой рождения типа Date;
- все функции реализовать соответственно общим требованиям.
Тип «Экзамен» определить как класс, который содержит:
- закрытое поле с названием экзамена как символьную строку с фиксированной длинной;
- закрытые поля с оценкой и тип Date с датой сдачи экзамена;
- все функции реализовать соответственно общим требованиям.
Тип «Студент» определить как класс, который содержит:
- закрытые поля типа «Человек» и типа «Уровень образования»;
- информацию о сданных экзаменах обработать как динамический массив (указатель и размерность, поля закрытые);
- предусмотреть функцию для добавления очередного экзамена к списку, которые были сданные;
- кроме стандартной функции вывода полной информации, предусмотреть функцию вывода сокращенной информации с фамилией и средним баллом;
- все функции реализовать соответственно общим требованиям.
В тестовом примере создать объект типа «Студент» соответственно общим требованиям и вывести информацию о них в полном и сокращенном виде.
К одному объекту добавить один экзамен и вывести обновленную информацию о нем в двух формах.
=====
II часть
Соответственно варианту к тексту первой части задания нужно внести следующие изменения:
- определить базовый и производный классы соответственно табл. 2.1;
- переписать объявление производного класса соответственно синтаксису для открытого наследования;
- переделать объявление и реализацию конструкторов производного класса, в конструкторе с параметрами обязательно предусмотреть использование конструктора с параметрами базового класса;
- в реализации функции вывода на экран информации в производном классе использовать соответственную функцию базового класса;
- к конструкторам и деструкторам базового, производного и одного из агрегированных классов приобщить вывод соответственной контрольной информации для возможности отслеживания порядка создания и уничтожения объектов.
В тестовом примере создать по одному объекту каждого из классов для контроля этапов создания соответственных объектов и вызвать функции вывода информации. Объяснить полученные результаты.
Вариант 1
Базовые классы: «Человек» Производные классы: «Студент»
=====
III часть
Соответственно варианту к тексту второй части задания нужно внести следующие изменения:
- перегрузить указанные арифметические и логические
операторы, оператор индексации и операторы форматного ввода-вывода для одного из классов соответственного варианта;
- проверку корректности по желанию можно реализовать без генерирования исключительных ситуаций;
- определить оператор присвоения для классов, для каких это целесообразно;
- функцию, которая выводит некоторую сокращенную информацию об объекте, определить как виртуальную.
Реализовать тестовый пример, в котором предусмотреть:
- демонстрацию работы каждого из перегруженных операторов;
- демонстрацию работы каждой из виртуальных функций так, что бы был задействован виртуальный механизм.
Вариант 1. Определить:
- арифметический оператор «+» для класса Date;
- логические операторы «<» и «>» для определения лучшего за общим рейтингом студента – для класса «Студент»; сравнение корректное для объектов одного образовательного уровня;
- логические операторы «==» и «!=» для проверки совпадения двух объектов класса «Человек»;
- оператор индексации для доступа к информации об экзамене – для класса «Студент»;
- операторы форматного ввода-вывода - для классов Date и «Человек».
=====
IV часть
Воспользоваться описаниями абстракций, определенными в 3 части Класс Date не создавать.
Учитывать следующее:
- в тех классах, в которых использовалось поле типа Date, воспользоваться типом System.DateTime;
- для реализации глубокого копирования воспользоваться функцией Clone() (реализация интерфейса ICloneable);
- функции-селекторы и функции-модификаторы для доступа к закрытым полям реализовать как свойства;
- там, где это целесообразно, воспользоваться спецификаторами readonly, static, protected;
- определить перегруженные версии виртуального метода ToString() для каждого класса (за исключением классов-коллекций) формированием строки со значениями всех полей;
- для класса, в каком был определен оператор индексации, определить индексатор с одним параметром;
- там, где это целесообразно, воспользоваться возможностью генерирования исключительной ситуации;
- арифметические операторы переопределить как статистические методы;
- для реализации логических операторов «==» и «!=» нужно:
1) переопределить метод Equals() так, что бы производилась проверка объектов, а не ссылок на них;
2) переопределить виртуальный метод int GetHashCode(), воспользоваться любой строкой, что может идентифицировать объект, в случае его использования в коллекции;
3) воспользоваться методом Equals() в операторных функциях для «==» и «!=»;
- для реализации логических операторов «<» и «>» или «<=» и «>=» нужно воспользоваться функцией CompareTo() (реализация интерфейса IComparable);
- операторы ««» и «»» не переопределять, вывод полной информации на консоль реализовать как виртуальную функцию с использованием метода ToString();
- вывод сокращенной информации (например, значение одного из полей) реализовать как невиртуальные функции с одинаковыми именами в базовом и производном классах.
Реализовать тестовый пример, в каком продемонстрировать:
- создание объекта и его копии;
- модификацию одного из объектов;
- сравнение объектов;
- создание третьего объекта с использованием конструктора по умолчанию;
- выполнение арифметической операции с присвоением третьему объекту и с присвоением себе для одного из объектов (например, соответственно «+» и «-»);
- использование индексатора;
- работу виртуальной и невиртуальной функции.
+ пояснени
подробнее
Заказчик
заплатил
заплатил
20 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
12 ноября 2014
Заказ завершен, заказчик получил финальный файл с работой
5
Выполнить 4 задания на C# (классы).jpg
2015-06-01 18:33
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Крайне доволен работой автора, рекомендую. Приятный в общении человек, знает свое дело.