Требования к реализации логики предметной области

Для обеспечения возможности анализа списка свиданий в управляющем классе SuitorManager необходимо реализовать соответствующие методы поиска и сортировки списка поклонников. Методы поиска должны возвращать в качестве результата связный список поклонников, отвечающих заданным критериям. При этом возвращаемый список должен быть объявлен как параметр по ссылке. Методы сортировки должны принимать в качестве параметра (по ссылке) либо полный список поклонников, либо список поклонников, сформированный одним из методов поиска. В случае необходимости следует также модифицировать содержание реализованных ранее классов.

Класс Suitor должен содержать:

1. Метод, вычисляющий значение рейтинга данного поклонника по результатам всех проведенных с ним свиданий.

2. Метод, возвращающий дату последнего свидания с данным поклонником.

Класс SuitorManager должен содержать:

1. Метод поиска поклонников, которым Полли ни разу не назначала свидания. При этом необходимо использовать метод класса Suitor, возвращающий общее количество свиданий, назначенных данному поклоннику.

2. Метод поиска поклонников, с которыми Поли уже встречалась (также должен использоваться метод класса Suitor, возвращающий общее количество свиданий, назначенных данному поклоннику).

3. Метод сортировки списка поклонников по алфавиту (в качестве параметра (по ссылке) передаетсясписок объектов класса Suitor).

4. Метод сортировки списка поклонников по рейтингу, росту и весу (в качестве параметра (по ссылке) передается список объектов класса Suitor)

5. Метод сортировки списка поклонников по дате регистрации (в качестве параметра (по ссылке) передаетсясписок объектов класса Suitor). Для этого в классе Suitor необходимо реализовать метод, возвращающий дату последнего свидания с данным поклонником.

4.3. Требования к реализации интерфейса взаимодействия
с пользователем

В результате выполнения лабораторной работы, необходимо реализовать код, демонстрирующий следующие возможности:

1. Формирование и просмотр полного списка поклонников: добавление, удаление, изменение характеристик зарегистрированного поклонника.

2. Формирование и просмотр списка поклонников, с которыми у Полли еще не было свиданий.

3. Формирование и просмотр списка поклонников, с которыми у Поли уже были свидания

4. Просмотр списка поклонников, упорядоченного по алфавиту. К просмотру предлагается либо полный список поклонников, либо списки, сформированные в соответствии с п.№№2,3.

5. Просмотр списка поклонников, упорядоченных рейтингу, росту и весу. К просмотру предлагаются списки, сформированные в соответствии с п.№№ 2,3.

6. Просмотр списка поклонников, упорядоченных по дате последнего свидания. К просмотру предлагается список, сформированный в соответствии с п.№3.

7. Назначение свиданий для того или иного поклонника (добавление, удаление, изменение характеристик назначенного свидания, учет оценочного балла в том числе). Поклонник выбирается из списка, сформированного в результате анализа списка поклонников в соответствии с п.п.№№:4,5,6. Критерии анализа (алфавит, рейтинг, наличие свиданий), в соответствии с которыми формируется представляемый список, должен выбираеться пользователем. В сформированном списке самые привлекательные поклонники будут находиться в самом начале. Если первый в списке поклонник не сможет прийти на встречу в назначенное время, Полли позвонит второму.

При реализации данного кода необходимо предусмотреть возможность обработки генерируемых внутри созданных классов исключений.




ЛАБОРАТОРНАЯ РАБОТА №6

(4 часа)

Вопросы для самостоятельной подготовки

5.2. Требования к реализации обобщенного алгоритма
сортировки связного списка

В класс шаблонного связного списка TlLst необходимо добавиь метод, реализующий обощенный (независимый от типа элементов списка) алгоритм сортировки. Для обеспечения возможности реализации обобщенного алгоритма, метод сортировки в качестве параметра должен принимать специальный объект-компаратор, ответственный за реализацию операции сравнения элементов списка.

Предполагается, что для сравнения объектов определенного типа по определенным критериям (полям), создается отдельный класс-компаратор, инкапсулирующий метод сравнения двух элементов. Чтобы метод сортировки мог единообразно использовать различные компараторы, сравнивающие различные типы данных, все компараторы должны быть наследниками одного абстрактного класса CComparer, в котором объявляется виртуальный метод сравления Compare, замещаемый в каждом конкретном классе-компараторе для реализации конкретного алгоритма сравнения.

Данный метод принимает в качестве параметров сравниваемые объекты, и возвращает в качестве результата целочисленное значение, на которое накладываются следующие ограничения:

· возвращается «1», если первый объект «лучше» второго;

· возвращается «-1», если первый объект «хуже» второго;

· возвращается «0», если объекты эквивалентны.

При реализации метода сортировки, следует ориентироваться на то, что в результате «лучшие» объекты должны находиться вначале упорядоченного списка, «худшие» - в конце.

Чтобы обощенный метод сортировки мог единообразно использовать метод сравнения каждого конкретного компаратора (единообразно передавать в него для сравнения элементы списка независимо от их типа), метод сравнения должен принимать в качестве формальных параметров указатели на пустой тип данных. При реализации метода сравнения в конкретном компараторе, параметры следует преобразовывать к фактическому типу данных.

Таким образом, применяется паттерн объектно-ориентированного проектирования «стратегия»: алгоритм, имеющий несколько взаимозаменяемых вариантов реализации, инкапсулируется в отдельный класс. В данном случае алгоритмы сравнения двух объектов по различным критериям взаимозаменяемы при реализации обобщенного алгоритма сортировки.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: