Задание:
Задание 1.
Определить класс Person, который имеет
• закрытое поле типа string, в котором хранится имя;
• закрытое поле типа string, в котором хранится фамилия;
• закрытое поле типа System.DateTime для даты рождения. В классе Person определить конструкторы:
• конструктор c тремя параметрами типа string, string, DateTime для инициализации всех полей класса;
• конструктор без параметров, инициализирующий все поля класса некоторыми значениями по умолчанию.
В классе Person определить свойства c методами get и set:
• свойство типа string для доступа к полю с именем;
• свойство типа string для доступа к полю с фамилией;
• свойство типа DateTime для доступа к полю с датой рождения;
• свойство типа int c методами get и set для получения информации(get) и изменения (set) года рождения в закрытом полетипа DateTime, в котором хранится дата рождения.
В классе Person определить
• перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех полейкласса;
• виртуальный метод string ToShortString(), который возвращает строку, содержащую только имя и фамилию.
Определить тип Education - перечисление(enum) со значениями Specialist, Вachelor, SecondEducation.
Определить класс Exam, который имеет три открытых автореализуемых свойства, доступных для чтения и записи:
• свойство типа string, в котором хранится название предмета;
• свойство типа int, в котором хранится оценка;
• свойство типа System.DateTime для даты экзамена.
В классе Exam определить:
• конструктор с параметрами типа string, int и DateTime для инициализации всех свойств класса;
• конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию;
• перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех свойствкласса.
Определить класс Student, который имеет
• закрытое поле типа Person, в котором хранятся данные студента;
• закрытое поле типа Education для информации о форме обучения;
• закрытое поле типа int для номера группы;
• закрытое поле типа Exam *+ для информации об экзаменах, которые сдал студент.
В классе Student определить конструкторы:
• конструктор c параметрами типа Person, Education, int для инициализации соответствующих полей класса;
• конструктор без параметров, инициализирующий поля класса значениями по умолчанию.
В классе Student определить свойства c методами get и set:
• свойство типа Person для доступа к полю с данными студента;
• свойство типа Education для доступа к полю с формой обучения;
• свойство типа int для доступа к полю с номером группы;
• свойство типа Exam *+ для доступа к полю со списком экзаменов.
В классе Student определить
• свойство типа double ( только с методом get), в котором вычисляется средний балл как среднее значение оценок в спискесданных экзаменов;
• индексатор булевского типа (только с методом get) с одним параметром типа Education; значение индексатора равно true,если значение поля с
формой обучения студента совпадает со значением индекса, и false в противном случае;
• метод void AddExams ( params Exam [] ) для добавления элементов в список экзаменов;
• перегруженную версию виртуального метода string ToString() для формирования строки со значениями всех полей класса,включая список экзаменов;
• виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка экзаменов, но со значением среднего балла.
В методе Main()
1. Создать один объект типа Student, преобразовать данные в текстовый вид с помощью метода ToShortString() и вывестиданные.
2. Вывести значения индексатора для значений индекса Education.Specialist, Education.Bachelor иEducation.SecondEducation.
3. Присвоить значения всем определенным в типе Student свойствам, преобразовать данные в текстовый вид с помощьюметода ToString() и вывести данные.
4. C помощью метода AddExams( params Exam*+ ) добавить элементы в список экзаменов и вывести данные объектаStudent, используя метод ToString().
5. Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерногоступенчатого массивов с одинаковым числом элементов типа Exam.
Задание 2.
В классе Person из лабораторной работы 1 и в классах, дополнительно указанных в вариантах, надо
• переопределить (override) виртуальный метод bool Equals (object obj);
• определить операции == и != ;
• переопределить виртуальный метод int GetHashCode();
Реализация виртуального метода bool Equals (object obj) в классе System.Object определяет равенство объектов как равенство ссылокна объекты. Некоторые классы из базовой библиотеки BCL переопределяют метод Equals(). В классе System.String этот методпереопределен так, что равными считаются строки, которые совпадают посимвольно. Реализация метода Equals() в структурном типеDateTime равенство объектов DateTime определяет как равенство значений.
В лабораторной работе требуется переопределить метод Equals так, чтобы объекты считались равными, если равны все данныеобъектов. Для класса Person это означает, что равны даты рождения и посимвольно совпадают строки с именем и фамилией.
Определение операций == и != должно быть согласовано с переопределенным методом Equals, т.е. критерии, по которым проверяетсяравенство объектов в методе Equals, должны использоваться и при проверке равенства объектов в операциях == и !=.
Переопределение виртуального метода int GetHashCode() также должно быть согласовано с операциями == и !=. Виртуальный методGetHashCode() используется некоторыми классами базовой библиотеки, например, коллекциями-словарями. Классы базовойбиблиотеки, вызывающие метод GetHashCode() из пользовательского типа, предполагают, что равным объектам отвечают равныезначения хэш-кодов. Поэтому в случае, когда под равенством объектов понимается совпадение данных (а не ссылок), реализацияметода
GetHashCode() должна для объектов с совпадающими данными возвращать равные значения хэш-кодов.
В классах, указанных в вариантах лабораторной работы, требуется определить метод object DeepCopy() для создания полной копииобъекта. Определенные в некоторых классах базовой библиотеки методы Clone() и Copy() создают ограниченную (shallow) копиюобъекта – при копировании объекта копии создаются только для полей структурных типов, для полей ссылочных типов копируютсятолько ссылки. В результате в ограниченной копии объекта поля-ссылки указывают на те же объекты, что и в исходном объекте.
Метод DeepCopy() должен создать полные копии всех объектов, ссылки на которые содержат поля типа. После создания полная копияне зависит от исходного объекта - изменение любого поля или свойства исходного объекта не должно приводить к изменению копии.
При реализации метода DeepCopy() в классе, который имеет поле типа System.Collections.ArrayList, следует иметь в виду, чтоопределенные в классе ArrayList конструктор ArrayList(ICollection) и метод Clone() при создании копии коллекции, состоящей изэлементов ссылочных типов, копируют только ссылки. Метод DeepCopy() должен создать как копии элементов коллекции ArrayList,так и полные копии объектов, на которые ссылаются элементы коллекции. Для типов, содержащих коллекции, реализация методаDeepCopy() упрощается, если в типах элементов коллекций также определить метод
DeepCopy().
Требования к программе
Определить интерфейс
interface IDateAndCopy
{ object DeepCopy();
DateTime Date { get; set; }
}
Определить новые версии классов Exam, Person и Student из лабораторной работы 1. В классы Exam, Person и Student добавитьреализацию интерфейса IDateAndCopy. Новую версию класса Student определить как класс, производный от класса Person.
Все поля новой версии класса Person определить с доступом protected, сохранить все свойства, определенные в первой версиикласса.
В новой версии класса Person дополнительно
• переопределить метод virtial bool Equals (object obj) и определить операции == и != так, чтобы равенство объектов типаPerson трактовалось как совпадение всех данных объектов, а не ссылок на объекты Person;
• переопределить виртуальный метод int GetHashCode();
• определить виртуальный метод object DeepCopy();
• реализовать интерфейс IDateAndCopy.
Определить класс Test, который имеет два открытых автореализуемых свойства, доступных для чтения и записи:
• свойство типа string, в котором хранится название предмета;
• свойство типа bool для информации о том, сдан зачет или нет.
В классе Test определить:
• конструктор c параметрами типа string и bool для инициализации свойств класса;
• конструктор без параметров, инициализирующий все свойства класса некоторыми значениями по умолчанию;
• перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех свойствкласса.
Класс Student определить как производный от класса Person. Новая версия класса Student имеет следующиеполя:
• закрытое поле типа Education для информации о форме обучения;
• закрытое поле типа int для номера группы;
• закрытое поле типа System.Collections.ArrayList, в котором хранится список зачетов (объекты типа Test);
• закрытое поле типа System.Collections.ArrayList для списка экзаменов (объекты типа Exam).
Код следующих конструкторов, методов и свойств из старой версии класса Student необходимо изменить с учетом того, что частьполей класса перемещена в базовый класс Person, и в новой версии класса Student список экзаменов хранится в коллекцииSystem.Collections.ArrayList:
• конструктор c параметрами типа Person, Education, int для инициализации соответствующих полей класса;
• конструктор без параметров для инициализации по умолчанию;
• свойство типа Person; метод get свойства возвращает объект типа Person, данные которого совпадают с данными подобъектабазового класса, метод set присваивает значения полям из подобъекта базового класса;
• свойство типа double ( только с методом get), в котором вычисляется средний балл как среднее значение оценок в спискесданных экзаменов;
• свойство типа System.Collections.ArrayList с методами get и set для доступа к полю со списком экзаменов;
• метод void AddExams ( params Exam[] ) для добавления элементов в список экзаменов;
• перегруженная версия виртуального метода string ToString() для формирования строки со значениями всех полей класса,включая список зачетов и экзаменов;
• виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка зачетов иэкзаменов, но со значением среднего балла.
Дополнительно в новой версии класса Student
• определить перегруженную версию виртуального метода object DeepCopy();
• реализовать интерфейс IDateAndCopy;
• определить свойство типа int с методами get и set для доступа к полю с номером группы. В методе set бросить исключение,если присваиваемое значение меньше или равно 100 или больше 599. При создании объекта- исключения использовать одиниз определенных в библиотеке CLR классов- исключений, инициализировать объект-исключение с помощью конструктора спараметром типа string, в сообщении передать информацию о допустимых границах для значения свойства.
В новой версии класса Student определить
• итератор для последовательного перебора всех элементов (объектов типа object) из списков зачетов и экзаменов(объединение);
• итератор c параметром для перебора экзаменов (объектов типа Exam) с оценкой больше заданного значения.
В методе Main()
1. Создать два объекта типа Person с совпадающими данными и проверить, что ссылки на объекты не равны, а объекты равны,вывести значения хэш- кодов для объектов.
2. Создать объект типа Student, добавить элементы в список экзаменов и зачетов, вывести данные объекта Student.
3. Вывести значение свойства типа Person для объекта типа Student.
4. С помощью метода DeepCopy() создать полную копию объекта Student. Изменить данные в исходном объекте Student и вывестикопию и исходный объект, полная копия исходного объекта должна остаться без изменений.
5. В блоке try/catch присвоить свойству с номером группы некорректное значение, в обработчике исключения вывести сообщение,переданное через объект-исключение.
6. С помощью оператора foreach для итератора, определенного в классе Student, вывести список всех зачетов и экзаменов.
7. С помощью оператора foreach для итератора с параметром, определенного в классе Student, вывести список всех экзаменов соценкой выше 3.
Дополнительное задание:
В методе Main()
8. С помощью оператора foreach для объекта типа Student вывести список предметов, которые есть как в списке зачетов, так и всписке экзаменов.
9. С помощью оператора foreach для итератора, определенного в классе Student, вывести список всех сданных зачетов и сданных экзаменов.
10.С помощью оператора foreach для итератора, определенного в классе Student, вывести список сданных зачетов, длякоторых сдан и экзамен.
Нарисовать UML диаграмму получившегося приложения (диаграммы классов и т.д.).
' .
Выполнить лабораторную работу по программированию на С#. Работа включает несколько заданий: Определить класс Person, который имеет • закрытое поле типа string, в котором хранится имя... В классе Person определить свойства c методами get и set: • свойство типа string для доступа к полю с... #1505195
Тема полностью: Выполнить лабораторную работу по программированию на С#. Работа включает несколько заданий: Определить класс Person, который имеет • закрытое поле типа string, в котором хранится имя... В классе Person определить свойства c методами get и set: • свойство типа string для доступа к полю с именем;... В классе Person определить • перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех полейкласса; Определить тип Education - перечисление(enum) со значениями Specialist, Вachelor, SecondEducation. Определить класс Exam, который имеет три открытых автореализуемых свойства, доступных для чтения и записи В классе Exam определить: • конструктор с параметрами типа string, int и DateTime для инициализации всех свойств класса; ...
Артикул: 1505195
- Предмет: Методы автоматизации
- Разместил(-а): 733 Дарья в 2015 году
- Количество страниц: 3
- Формат файла: zip
- Последняя покупка: 13.09.2018
1 490p.
Материалы, размещаемые в каталоге, с согласия автора, могут использоваться только в качестве дополнительного инструмента для решения имеющихся у вас задач,
сбора информации и источников, содержащих стороннее мнение по вопросу, его оценку, но не являются готовым решением.
Пользователь вправе по собственному усмотрению перерабатывать материалы, создавать производные произведения,
соглашаться или не соглашаться с выводами, предложенными автором, с его позицией.
Тема: | Выполнить лабораторную работу по программированию на С#. Работа включает несколько заданий: Определить класс Person, который имеет • закрытое поле типа string, в котором хранится имя... В классе Person определить свойства c методами get и set: • свойство типа string для доступа к полю с именем;... В классе Person определить • перегруженную(override) версию виртуального метода string ToString() для формирования строки со значениями всех полейкласса; Определить тип Education - перечисление(enum) со значениями Specialist, Вachelor, SecondEducation. Определить класс Exam, который имеет три открытых автореализуемых свойства, доступных для чтения и записи В классе Exam определить: • конструктор с параметрами типа string, int и DateTime для инициализации всех свойств класса; ... |
Артикул: | 1505195 |
Дата написания: | 13.05.2015 |
Тип работы: | Контрольная работа |
Предмет: | Методы автоматизации |
Количество страниц: | 3 |
К работе прилагаются файлы программ.
Файлы артикула: Выполнить лабораторную работу по программированию на С#. Работа включает несколько заданий: Определить класс Person, который имеет • закрытое поле типа string, в котором хранится имя... В классе Person определить свойства c методами get и set: • свойство типа string для доступа к полю с... по предмету методы автоматизации
Пролистайте "Выполнить лабораторную работу по программированию на С#. Работа включает несколько заданий: Определить класс Person, который имеет • закрытое поле типа string, в котором хранится имя... В классе Person определить свойства c методами get и set: • свойство типа string для доступа к полю с..." и убедитесь в качестве
После покупки артикул автоматически будет удален с сайта до 22.01.2025
Гарантируем возврат денег!
Качество каждой готовой работы, представленной в каталоге, проверено и соответствует описанию. В случае обоснованных претензий мы гарантируем возврат денег в течение 24 часов.
Утром сдавать, а работа еще не написана?
Через 30 секунд после оплаты вы скачаете эту работу!
Сегодня уже купили 49 работ. Успей и ты забрать свою пока это не сделал кто-то другой!
ПРЕДЫДУЩАЯ РАБОТА
Нейронная сеть распознавания двузначных чисел
СЛЕДУЮЩАЯ РАБОТА
Подбор информации о составе 46-го гвардейского ночного бомбардировочного авиационного полка 325-й ночной бомбардировочной авиационной дивизии 4-й...