Проектирование на UML. Сборник задач - Антон Сергеевич Хританков 3 стр.


б. Композиция между MyWindow и Button называется HoldsButton. Полюс со стороны кнопки имеет имя okButton, защищенную видимость, кратность 1. Композиция между MyWindow и Label называется HoldsLabel. Украшения полюса со стороны Label: название textLabel, частная видимость, кратность 1.

в. Для реакции на события кнопки реализован паттерн Слушатель (Listener) следующим образом. Класс Button предоставляет операцию setClickListener с единственным параметром l типа IClickListener. Интерфейс IClickListener содержит единственную операцию onClick без параметров.

г. Класс MyWindow реализует интерфейс IClickListener для реакции на нажатие кнопки. Отобразите на диаграмме, что между классом Button и MyWindow есть ассоциация с именем NotifyListener с направлением от кнопки к окну. Укажите, что полюс со стороны окна называется listener, имеет тип IClickListener, множественную кратность и частную видимость.

д. И Label и Button имеют строковый атрибут text, который можно менять с помощью метода setText. Вынесите общий атрибут и метод в абстрактный базовый класс TextWidget.

е. Отобразите на диаграмме объектов, как в процессе выполнения объекты связаны между собой: объект window класса MyWindow связан с кнопкой button класса Button и с надписью label класса Label.

1.5. (см. решение в §11) Интерфейс доступа к коллекции элементов Collection обобщает интерфейс работы со списками List. Абстрактный класс BaseCollection реализует интерфейс Collection, абстрактный класс BaseList является потомком BaseCollection и реализует интерфейс List, оставляя операции по хранению данных дочерним классам.

а. Используя наследование, добавьте в модель класс ArrayList, реализующий операции со списками с помощью массива.

б. Пусть интерфейс List содержит операцию get получения элемента списка по заданной позиции k. Укажите, в каких классах должна быть объявлена данная операция, чтобы модель была согласованной. Ответ поясните.

в. Пусть интерфейс Collection содержит операцию add добавления элемента obj. Укажите, в пространстве имен каких классов может присутствовать поведение, реализующее операцию add. Ответ поясните.

1.6. Класс Collections содержит общедоступную статическую операцию addAll с возвращаемым значением типа boolean. Первый параметр операции называется coll и имеет тип Collection, второй параметр называется elements и имеет тип Object и кратность больше нуля.

а. Добавьте в класс Collections статический атрибут empty типа Collection, предназначенный только для чтения.

б. Реализуйте в классе Collections операцию addAll с помощью нечеткого поведения (метода), используя операцию добавления элемента insert (e: Object) класса Collection. Указание. Алгоритм реализации можно показать как псевдокод в комментарии в формате {method = {<language>} <method body>}.

1.7. Узел дерева Node может иметь несколько дочерних child узлов того же класса Node.

а. Приведите пример бинарного дерева, состоящего из семи узлов Node.

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

в. Разработайте модель дерева, узлы которого могут быть двух видов: узел Red и узел Black. Указание. Вид узла может изменяться, при этом следует считать, что поведение узла не изменяется при смене типа.

КОНЕЦ ОЗНАКОМИТЕЛЬНОГО ОТРЫВКА

1.8. У абстрактного класса заказа Reservation имеется два потомка: одиночный Single и подписка Subscription. Single связан с одним билетом Ticket ассоциацией бронирован reserved, Ticket может быть связан той же ассоциацией не более чем с одним Single.

а. Свяжите подписку с билетами в количестве от трех до шести включительно. Билет не обязательно связан с подпиской.

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

в. Пусть одиночная подписка наследует свойства одиночного заказа и подписки. С каким максимальным количеством билетов она может быть связана? Ответ поясните.

1.9. Умный дачный домик SmartHouse состоит из четырех стен Wall и крыши Roof. Домик реагирует на штормовые предупреждения stormWarning и укрепляет крышу harden, закрывает окна closeWindows в стенах. Используемые стройматериалы Material характеризуются ценой price и удельным весом unitWeight.

а. Добавьте стройматериалы для постройки домика: красный и белый кирпич Brick, доски Plank из сосны и дуба.

б. Укажите, что кирпич является материалом material стен. Используя ассоциации, покажите, что каркас крыши Frame сделан из не более чем сорока досок и может быть одного из видов FrameKind: мансарда, плоский или треугольный.

в. Каркас можно покрыть стройматериалом черепица Tiling, отразите это в модели.

г. Допустим, изобретен универсальный стройматериал, заменяющий доски, кирпичи и черепицу. Постройте из него дачный домик. Сколько экземпляров материала понадобится? Ответ поясните.

§2. СЦЕНАРИИ И ВАРИАНТЫ ИСПОЛЬЗОВАНИЯ

ОСНОВНЫЕ ПОНЯТИЯ

Актором (actor) называется классификатор, который моделирует пользователя или систему, внешнего по отношению к моделируемой системе или компоненту. Акторов, которые используют систему для достижения собственных целей, называют основными. Акторов, которых система использует для достижения целей других акторов, называют второстепенными.

Вариантом использования (use case) называют классификатор, который описывает совокупность сценариев взаимодействия акторов с системой или компонентом для достижения какой-либо цели, значимой для акторов. Варианты использования могут различаться по уровню цели, достижение которой они обеспечивают: высокоуровневые цели, пользовательские цели и отдельные функции системы.

Субъектом (subject) варианта использования называют систему или компонент, взаимодействие акторов с которым он описывает.

Ассоциация (association) актора с вариантом использования указывает на взаимодействие актора с субъектом в одном из сценариев данного варианта использования.

Отношение расширения (extension) между вариантами использования указывает, что при выполнении заданного в точке расширения (extension point) условия сценарий расширяемого варианта использования будет приостановлен, и взаимодействие будет продолжено в рамках расширяющего варианта использования.

Отношение включения (inclusion) указывает, что в процессе выполнения сценарии базового варианта использования вызывают выполнение сценариев включаемого варианта использования.

Как и для других классификаторов, для акторов и вариантов использования определено отношение обобщения (generalization).


ЗАДАЧИ

2.1. Актор User взаимодействует с системой OnlineTranslator в рамках абстрактного варианта использования Translate. Варианты использования TranslateText и TranslateWebPage уточняют Translate. Отобразите на диаграмме вариантов использования.

а. Вариант использования TranslateWebPage включает «include» вариант использования SetURL.

б. Вариант использования SetLanguages расширяет «extend» вариант использования Translate в точке расширения specifyLaguages. Условие расширения «язык не определен автоматически».

в. Добавьте в модель актора ExperiencedUser, уточняющего User. ExperiencedUser может взаимодействовать с системой в рамках варианта использования ProposeTranslation, который уточняет вариант использования TranslateText.

КОНЕЦ ОЗНАКОМИТЕЛЬНОГО ОТРЫВКА

в. Добавьте в модель актора ExperiencedUser, уточняющего User. ExperiencedUser может взаимодействовать с системой в рамках варианта использования ProposeTranslation, который уточняет вариант использования TranslateText.

2.2. (см. решение в §11) Автор Author направляет статью SendPaper редактору журнала Editor. Редактор передает статью на рецензирование Review нескольким рецензентам Reviewer. Затем редактор возвращает отзывы рецензентов автору в том же варианте использования SendPaper.

а. Добавьте возможность автору вместе с корректором ProofReader подготовить статью к публикации PrepareForPublishing.

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

2.3. Распознавателю текста OCR от модуля морфологии нужны возможность определить, принадлежит ли слово языку, и функция приведения слова к заданной форме, в частности, восстановления начальной формы. Также нужна функция получения грамматического значения конкретного слова.

а. Постройте модель модуля, выделите акторов, варианты использования и укажите отношения между ними.

б. Добавьте функцию вывода слов, похожих на введенное, если его нет в словаре языка. Каким образом данная возможность системы связана с другими функциями?

в. Укажите в модели, что все перечисленные задачи подразумевают выполнение поиска слова (или его основы) в словаре.

г. Некоторые языки могут не поддерживаться системой. Перед выполнением любой функции модуля морфологии нужно проверить, поддержан ли язык. Отобразите это в модели.

2.4. Ответственное лицо ResponsiblePerson может прикрепить документ AttachToIssue к обсуждаемому вопросу, выступая в роли автора author, и к постановлению AttachToResolution, выступая в роли председателя chairman.

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

б. Добавьте в модель оператора Operator, который является ответственным лицом с возможностью удаления документов DeleteDocument.

в. Доработайте модель, укажите, что при прикреплении документа рассылается оповещение SendAnnouncement. Несколько операторов могут выступать в роли контролеров controller.

г. Каким образом можно указать, что прикрепление документа возможно только к вопросу или к постановлению? Ответ поясните.

д. (*) Покажите в модели, что ответственное лицо участвует в сценарии прикрепления в роли пользователя user, объединяющей роли автора и председателя. Указание. Используйте производные свойства. См. §4.

2.5. Пользователь User настраивает подключаемые модули аудиоплеера AudioPlayer в рамках варианта использования ConfigurePlugins.

а. Добавьте к варианту использования ConfigurePlugins возможность выбора определенного модуля для настройки SelectPlugin и возможность настройки конкретного модуля ChangeSettings.

б. Добавьте в модель возможность обновить подключаемые модули UpdatePlugins с внешнего сервера PluginsServer.

Назад Дальше