Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 42
Текст из файла (страница 42)
° Обобщение вариантов использования. Если вариант использования встречается в модели в нескольких разновидностях, следует выделить обшее поведение в абстрактный вариант использования, а затем конкретизировать каждую из разновидностей. Не стоит применять обобщение только для того, чтобы описать общий фрагмент поведения. Для этого предназначено отношение включения.
° Включение вариантов использования. Если вариант использования включает хорошо определенный фрагмент поведения, который может оказаться полезным и в других ситуациях, можно выделить этот фрагмент в отдельный вариант использования и включить его в исходный вариант использования. В большинстве случаев включаемый вариант должен быть осмысленным, но не самодостаточным. Например, проверка пароля имеет смысл для пользователей, но цель ее становится ясной только в контексте более широкого варианта использования. ° Расширение вариантов использования. Если вы можете определить осмысленный вариант использования с необязательными чертами, выделите базовое поведение в вариант использования и добавляйте к нему эти черты посредством отношения расширения. Это позволяет тестировать и отлаживать систему без расширений, которые могут быть добавлены впоследствии.
Применяйте расширение вариантов использования в тех случаях, когда система может быть поставлена в различной конфигурации: либо с дополнительными функциями, либо без них. ° Расширение и включение. Оба эти отношения позволяют разбивать поведение на мелкие фрагменты. Отношение включения подразумевает, что включаемое поведение является обязательной частью системы (даже в том случае, если оно выполняется не каждый раз), тогда как отношение расширения подразумевает, что система будет иметь смысл и без добавленного поведения (даже если в ваши намерения не входит поставлять ее в такой конфигурации).
8.2. Процедурные модели последовательности В главе 7 мы рассматривали диаграммы последовательности с независимыми объектами, которые одновременно находились в активном состоянии. Объект оставался активным после отправки сообшения и мог реагировать на другие сообщения, не 186 Глава 8 ° Дополнительные вопросы моделирования взаимодействий ожидая ответа на свое. Такой подход применим к высокоуровневым моделям. Однако большинство реализаций являются процедурными. Они ограничивают количество объектов, которые могут выполняться одновременно.
УМБ позволяет показывать процедурные вызовы на диаграммах последовательности при помощи специальных обозначений. 8.2.1. Диаграммы последовательности с пассивными объектами Наличие процедур в коде предполагает, что не все объекты находятся в состоянии активности одновременно. Большинство объектов пассивны и не имеют собственных потоков управления. Пассивный объект не активируется до тех пор, пока он не будет вызван. Как только выполнение операции завершается и управление возвращается вызывающему, пассивный объект снова перестает быть активным.
На рис. 8.5 приведен пример диаграммы последовательности вычисления комиссии за транзакцию на фондовой бирже. Объект транзакции получает запрос на вычисление своей комиссии. Он получает уровень обслуживания клиента из его таблицы, затем определяет комиссию по этому уровню при помощи таблицы ставок, а затем возвращает значение комиссии вызывающему. аыв Рис. 8.5. Диаграммы последовательности с пассивными объектами Период времени выполнения объекта обозначается в ПМЕ тонким прямоугольником.
Это называется активацией или фокусом управления (1осцз о( сопгго1). Активация показывает период времени, в течение которого осуществляется выполнение вызванного метода (даже если при этом вызываются другие операции). Период, в течение которого объект существует, но не является активным, обозначается пунктирной линией. Весь период существования объекта называется линией лаини (Иейпе), которая показывает время жизни объекта (Иевше).
8.2. Процедурные модели последовательности 187 8.2.2. Диаграммы последовательности с временными объектами Расширения системы обозначений, применяемые для описания процедурных вызовов, показаны на рис. 8.6. Объект о~уессА является активным и инициирует операцию. Поскольку он активен, его прямоугольник перекрывает весь временной период, отраженный на диаграмме. Объект оЬ7есГВ является пассивным, он существует весь период времени, отраженный на диаграмме, но проводит в активном состоянии только часть этого времени.
Его существование обозначается пунктирной линией (линией жизни), перекрывающей всю диаграмму. Когда объект оЬ7есгВ обрабатывает вызов, его линия жизни расширяется и становится прямоугольником. Часть этого времени объект оЬ|есгВ выполняет рекурсивную операцию, на что указывает двойной прямоугольник активации между вызовом операции орегат(опЕ объектом оЬ7есГС и возвращением значения. Объект оЬ7есгс создается и уничтожается в течение периода времени, изображенного на диаграмме, поэтому его линия жизни не перекрывает диаграмму целиком. всше огввг) Рис.
8.6. Диаграмма последовательности с временным обьектом Вызов обозначается стрелкой, которая проводится от вызывающего активного объекта к объекту, который становится активным после его вызова. Хвост стрелки находится у края прямоугольника вызывающего активного объекта. Острый конец стрелки указывает на верхний край прямоугольника объекта, который становится активным, потому что именно вызов активирует его. Жирная стрелка обозначает передачу вызова (в противоположность тонкой стрелке, обозначающей сигнал — см. главу 7).
Возврат обозначается в ()М1 пунктирной стрелкой, соединяющей нижний край прямоугольника вызванного (активированного) объекта с боковым краем вызвавшего объекта. Не каждый возврат из вызова сопровождается возвращаемым значением (например, возврат из оЬ7есгС в оЬ7ессВ). Таким образом, активация 188 Глава 8 ° Дополнительные вопросы моделирования взаимодействий обозначается стрелкой вызова, указывающей на ее начало, и стрелкой возврата, исходящей из ее конца.
Активированный объект может вызывать другие объекты. Стрелки возврата из вызова можно не ставить на диаграмме, потому что они всегда исходят из нижнего края прямоугольника, однако для ясности лучше их ставить. Если объект не существует на момент начала диаграммы последовательности, он должен создаваться внутри нее. Создание обозначается в 13МЪ значком объекта, который ставится у конца стрелки вызова, создающего объект.
Например, вызов сгеатеС создает объект оЬ7есГС. Новый объект может и не получить управление после своего создания. В нашем примере оЬ|есгС получает управление, на что показывает прямоугольник активации, начинающийся сразу после прямоугольника объекта. Большой значок Х обозначает конец существования объекта, уничтожаемого в период, отображенный на диаграмме последовательности.
Этот значок ставится около конца стрелки вызова, уничтожающего объект. Если объект уничтожает себя сам и передает управление другому объекту, Х ставится около начала исходящей стрелки. Линия жизни объекта не должна выходить за символы, обозначающие создание и уничтожение этого объекта. Вызов второго метода того же объекта (включая рекурсивный вызов) обозначается в УМ1 стрелкой, идущей от прямоугольника активности к верхнему краю другого прямоугольника, который накладывается на первый. В нашем примере второй вызов орегаБолЕ объекта оЬЕасгВ является рекурсивным (он вложен в первый вызов орегагюпЕ~.
Второй прямоугольник немного сдвигается в сторону относительно первого. Количество накладывающихся прямоугольников показывает количество активаций одного и того же объекта. На диаграмме последовательности можно показывать и условные переходы, но система обозначений для них слишком сложна, чтобы включать ее в нашу книгу. Подробнее см. ~КшпЪаиаЪ-05]. 82.3. Руководство к процедурным моделям последовдтельности В этом разделе мы приводим дополнительные рекомендации по разработке процедурных моделей последовательности, не вошедшие в главу 7. ° Активные и пассивные объекты. Нужно понимать разницу между активными и пассивными объектами.
Большинство объектов являются пассивными и не имеют собственного потока управления. Активные объекты, по определению, всегда активны и обладают собственным фокусом управления. ° Дополнительные средства. Дополнительные средства показывают возможную реализацию на диаграммах последовательности. Используйте их с осторожностью. Детали реализации стоит показывать только для особенно сложных или наиболее важных диаграмм последовательности.