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

Для организации управления списком поклонников следует реализовать класс SuitorManager, инкапсулирующий закрытый связный список объектов класса Suitor. Данный класс должен обеспечивать контроль доступа к элементам списка с целью соблюдения ограничений предметной области. Соответственно, необходимо гарантировать наличие в системе только одного экземпляра управляющего класса, который бы контролировал все множество поклонников. Для этого следует реализовать паттерн объектно-ориентированного проектирования «одиночка» (singleton): в классе SuitorManager создается и используется статический инициализирующий метод, который контролирует значение статического поля, содержащего указатель на уникальный экземпляр данного класа; при этом конструктор по умолчанию объявляется закрытым или защищенным. Попытка инстанцировать класс непосредственно, вызовет ошибку на этапе компиляции. Это дает гарантию, что будет создан только один экземпляр данного класса.

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

Класс SuitorManager должен содержать методы, реализующие логику управления списком поклонников:

· добавление нового поклонника,

· удаление из списка поклонника с заданным идентификатором,

· возвращение полного списка поклонников,

· поиск поклонника по уникальному идентификатору,

· поиск поклонника по фамилии и имени,

· возвращение значения максимального уникального идентификатора в списке поклонников;

· проверку на существование в списке поклонника, для которого назначено свидание на заданное время.

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

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

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

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

В классе Suitor необходимо модифицировать метод назначения свидания поклоннику посредством обращения запроса к полю, хранящему указатель на управляющий объект _suitorManager ( вызовметода проверки на существование в общем списке поклонника, для которого назначено свидание на заданное время). Если на заданное время свидание уже назначено, следует генерировать исключение.

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

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

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

2. Назначение свиданий для того или иного поклонника: добавление, удаление, изменение характеристик назначенного свидания (учет оценочного балла в том числе).

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




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

(4 часа)

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

1. Алгоритм сортировки и поиска в основе решения задач управления (контроля и анализа) объектами предметной области.

2. Реализация алгоритмов сортировки по нескольким критериям: порядок анализа критериев и порядок следования объектов в результирующем списке.

3. Реализация алгоритмов сортировки и поиска как ответственность управляющего класса.


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



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