Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! 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.
Дополнительное задание: В классе Student · реализовать интерфейс System.Collections.IEnumerable для перебора названий всех предметов (объектов типа string), которые есть как в списке зачетов, так и в списке экзаменов (пересечение). Для этого определить вспомогательный класс StudentEnumerator, реализующий интерфейс System.Collections.IEnumerator. · определить итератор для перебора сданных зачетов и экзаменов (объектов типа object), для этого определить метод, содержащий блок итератора и использующий оператор yield; сданный экзамен – экзамен с оценкой больше 2; · определить итератор для перебора всех сданных зачетов (объектов типа Test), для которых сдан и экзамен, для этого определить метод, содержащий блок итератора и использующий оператор yield. В методе Main() 8. С помощью оператора foreach для объекта типа Student вывести список предметов, которые есть как в списке зачетов, так и в списке экзаменов. 9. С помощью оператора foreach для итератора, определенного в классе Student, вывести список всех сданных зачетов и сданных экзаменов. 10.С помощью оператора foreach для итератора, определенного в классе Student, вывести список сданных зачетов, для которых сдан и экзамен.
Вариант 2. Требования к программе Определить интерфейс
|