Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Interface IRateAndCopy
{ double Rating { get; } object DeepCopy(); } Определить новые версии классов Person, Article и Magazine из лабораторной работы 1. Класс Magazine определить как производный от класса Edition. В классы Article и Magazine добавить реализацию интерфейса IRateAndCopy. В новой версии класса Person дополнительно · переопределить метод virtial bool Equals (object obj) и определить операции == и! = так, чтобы равенство объектов типа Person трактовалось как совпадение всех данных объектов, а не ссылок на объекты Person; · переопределить виртуальный метод int GetHashCode(); · определить виртуальный метод object DeepCopy(). В новой версии класса Article дополнительно · определить виртуальный метод object DeepCopy(); · реализовать интерфейс IRateAndCopy. Определить класс Edition. Класс Edition имеет · защищенное(protected) поле типа string c названием издания; · защищенное поле типа DateTime c датой выхода издания; · защищенное поле типа int с тиражом издания; В классе Edition определить: · конструктор с параметрами типа string, DateTime, int для инициализации соответствующих полей класса; · конструктор без параметров для инициализации по умолчанию; · свойства c методами get и set для доступа к полям типа; · виртуальный метод object DeepCopy(); · свойство типа int с методами get и set для доступа к полю с тиражом издания; в методе set свойства бросить исключение, если присваиваемое значение отрицательно. При создании объекта-исключения использовать один из определенных в библиотеке CLR классов-исключений, инициализировать объект-исключение с помощью конструктора с параметром типа string, в сообщении передать информацию о допустимых значениях свойства. В классе Edition переопределить (override): · виртуальный метод virtial bool Equals (object obj) и определить операции == и! = так, чтобы равенство объектов типа Edition трактовалось как совпадение всех данных объектов, а не ссылок на объекты Edition; · виртуальный метод int GetHashCode(); · перегруженную версию виртуального метода string ToString() для формирования строки со значениями всех полей класса. Новая версия класса Magazine имеет базовый класс Edition и следующие поля: · закрытое поле типа Frequency с информацией о периодичности выхода журнала; · закрытое поле типа System.Collections.ArrayList со списком редакторов журнала (объектов типа Person). · закрытое поле типа System.Collections.ArrayList, в котором хранится список статей в журнале (объектов типа Article). Код следующих конструкторов, методов и свойств из старой версии класса Magazine необходимо изменить с учетом того, что часть полей класса перемещена в базовый класс Edition, и в новой версии класса Magazine для списка статей используется тип System.Collections.ArrayList: · конструктор с параметрами типа string, Frequency, DateTime, int для инициализации соответствующих полей класса; · конструктор без параметров для инициализации по умолчанию; · свойство типа double (только с методом get), в котором вычисляется среднее значение рейтинга статей в журнале; · свойство типа System.Collections.ArrayList для доступа к полю со списком статей в журнале; · метод void AddArticles (params Article[]) для добавления элементов в список статей в журнале; · перегруженная версия виртуального метода string ToString() для формирования строки со значениями всех полей класса, включая список статей и список редакторов; · виртуальный метод string ToShortString(), который формирует строку со значениями всех полей класса без списка статей и списка редакторов, но со значением среднего рейтинга статей в журнале. Дополнительно в новой версии класса Magazine реализовать · свойство типа System.Collections.ArrayList для доступа к списку редакторов журнала; · метод void AddEditors (params Person[]) для добавления элементов в список редакторов; · перегруженную (override) версию виртуального метода object DeepCopy(); · интерфейс IRateAndCopy; · свойство типа Edition; метод get свойства возвращает объект типа Edition, данные которого совпадают с данными подобъекта базового класса, метод set присваивает значения полям из подобъекта базового класса. В новой версии класса Magazine определить · итератор с параметром типа double для перебора статей с рейтингом больше некоторого заданного значения; · итератор с параметром типа string для перебора статей, в названии которых есть заданная строка. В методе Main() 1. Создать два объекта типа Edition с совпадающими данными и проверить, что ссылки на объекты не равны, а объекты равны, вывести значения хэш- кодов для объектов. 2. В блоке try/catch присвоить свойству с тиражом издания некорректное значение, в обработчике исключения вывести сообщение, переданное через объект-исключение. 3. Создать объект типа Magazine, добавить элементы в списки статей и редакторов журнала и вывести данные объекта Magazine. 4. Вывести значение свойства типа Edition для объекта типа Magazine. 5. С помощью метода DeepCopy() создать полную копию объекта Magazine. Изменить данные в исходном объекте Magazine и вывести копию и исходный объект, полная копия исходного объекта должна остаться без изменений. 6. С помощью оператора foreach для итератора с параметром типа double вывести список всех статей с рейтингом больше некоторого заданного значения. 7. С помощью оператора foreach для итератора с параметром типа string вывести список статей, в названии которых есть заданная строка.
Дополнительное задание: В классе Magazine · реализовать интерфейс System.Collections.IEnumerable для перебора статей (объектов типа Article), авторы которых не входят в список редакторов журнала; для этого определить вспомогательный класс MagazineEnumerator, реализующий интерфейс System.Collections.IEnumerator. · определить итератор для перебора статей (объектов типа Article), авторы которых являются редакторами журнала, для этого определить метод, содержащий блок итератора и использующий оператор yield. · определить итератор для перебора редакторов журнала (объектов типа Person), у которых нет статей в журнале, для этого определить метод, содержащий блок итератора и использующий оператор yield. В методе Main() 8. С помощью оператора foreach для объекта типа Magazine вывести список статей, авторы которых не являются редакторами журнала. 9. С помощью оператора foreach для итератора, определенного в классе Magazine, вывести список статей, авторы которых являются редакторами журнала. 10.С помощью оператора foreach для итератора, определенного в классе Magazine, вывести список редакторов, у которых нет статей в журнале.
Вариант 3. Требования к программе Определить интерфейс
|