В.В. Кулямин - Технологии программирования. Компонентный подход (1133554), страница 27
Текст из файла (страница 27)
Если же интерфейс изображен в виде кружка, то связь по реализациипоказывается обычной сплошной линией (в этом случае неоднозначности в ее толкованиине возникает). Такая связь изображена на Рис. 31 между классом Account и интерфейсомAccountInterface.Один класс использует другой, если этот другой класс является типом параметра илирезультата операции первого класса. Иногда связи по использованию показываются в видепунктирных стрелок. Пример такой связи между классом Person и перечислимым типомAddressKind можно видеть на Рис. 31.Ссылочные связи, реализованные в виде ассоциативных массивов или отображений (map)— такая связь в зависимости от некоторого набора ключей определяет набор ссылокзначений — показываются при помощи стрелок, имеющих прямоугольник с перечислениемтипов и имен ключей, примыкающий к изображению класса, от которого идет стрелка.Множественность на конце стрелки при этом обозначает количество ссылок,соответствующее одному набору значений ключей.На Рис.
31 такая связь ведет от класса Person к классу Address, показывая, что объекткласса Person может иметь один адрес для каждого значения ключа kind, т.е. одиндомашний и один рабочий адреса.Диаграммы классов используются чаще других видов диаграмм.Диаграммы объектов (object diagrams) показывают часть объектов системы и связи междуними в некотором конкретном состоянии или суммарно, за некоторый интервал времени.Объекты изображаются прямоугольниками с идентификаторами ролей объектов (вконтексте тех состояний, которые изображены на диаграмме) и типами. Однородныеколлекции объектов могут изображаться накладывающимися друг на другапрямоугольниками.Такие диаграммы используются довольно редко.Рисунок 32.
Диаграмма объектов.•Диаграммы компонентов (component diagrams) представляют компоненты в несколькихсмыслах — атомарные составляющие системы с точки зрения ее сборки,конфигурационного управления и развертывания. Компоненты сборки иконфигурационного управления обычно представляют собой файлы с исходным кодом,динамически подгружаемые библиотеки, HTML-странички и пр., компонентыразвертывания — это компоненты JavaBeans, CORBA, COM и т.д. Подробнее о такихкомпонентах см.
Лекцию 12.85Компонент изображается в виде прямоугольника с несколькими прямоугольными илидругой формы «зубами» на левой стороне.Связи, показывающие зависимости между компонентами, изображаются пунктирнымистрелками. Один компонент зависит от другого, если он не может быть использован вотсутствии этого другого компонента в конфигурации системы. Компоненты могут такжереализовывать интерфейсы.Диаграммы этого вида используются редко.Рисунок 33. Диаграмма компонентов.•На диаграмме компонентов, изображенной на Рис. 33, можно также увидеть пакеты,изображаемые в виде «папок», точнее — прямоугольников с прямоугольными «наростами»над левым верхним углом. Пакеты являются пространствами имен и средствомгруппировки диаграмм и других модельных элементов UML — классов, компонентов и пр.Они могут появляться на диаграммах классов и компонентов для указания зависимостеймежду ними и отдельными классами и компонентами.
Иногда на такой диаграмме могутприсутствовать только пакеты с зависимостями между ними.Диаграммы развертывания (deployment diagrams) показывают декомпозицию системы нафизические устройства различных видов — серверы, рабочие станции, терминалы,принтеры, маршрутизаторы и пр. — и связи между ними, представленные различного родасетевыми и индивидуальными соединениями.Физические устройства, называемые узлами системы (nodes), изображаются в виде кубовили параллелепипедов, а физические соединения между ними — в виде линий.На диаграммах развертывания может быть показана привязка (в некоторый моментвремени или постоянная) компонентов развертывания системы к физическим устройствам— например, для указания того, что компонент EJB AccountEJB исполняется на сервереприложений, а аплет AccountInfoEditor — на рабочей станции оператора банка.Рисунок 34. Диаграмма развертывания.86Эти диаграммы используются достаточно редко.
Пример диаграммы развертыванияизображен на Рис. 34.Динамические диаграммыДинамические диаграммы описывают происходящие в системе процессы. К ним относятсядиаграммы деятельности, сценариев, диаграммы взаимодействия и диаграммы состояний.• Диаграммы деятельности (activity diagrams) иллюстрируют набор процессовдеятельностей и потоки данных между ними, а также возможные их синхронизации друг сдругом.Деятельность изображается в виде прямоугольника с закругленными сторонами, слева исправа, помеченного именем деятельности.Потоки данных показываются в виде стрелок.
Синхронизации двух видов — развилки(forks) и слияния (joins) — показываются жирными короткими линиями (кто-то можетпосчитать их и тонкими закрашенными прямоугольниками), к которым сходятся или откоторых расходятся потоки данных. Кроме синхронизаций, на диаграммах деятельностимогут быть показаны разветвления потоков данных, связанных с выбором того или иногонаправления в зависимости от некоторого условия. Такие разветвления показываются ввиде небольших ромбов.Диаграмма может быть поделена на несколько горизонтальных или вертикальныхобластей, называемых дорожками (swimlanes).
Дорожки служат для группировкидеятельностей в соответствии с выполняющими их подразделением организации, ролью,приложением, подсистемой и пр.Диаграммы деятельности могут заменять часто используемые диаграммы потоков данных(см. Лекцию 4), поэтому применяются достаточно широко. Пример такой диаграммыпоказан на Рис. 35.Рисунок 35. Диаграмма деятельности.•Диаграммы сценариев (или диаграммы последовательности, sequence diagrams)показывают возможные сценарии обмена сообщениями или вызовами во времени междуразличными компонентами системы (здесь имеются в виду архитектурные компоненты,компоненты в широком смысле — это могут быть компоненты развертывания, обычныеобъекты, подсистемы и пр.).
Эти диаграммы являются подмножеством специальногографического языка — языка диаграмм последовательностей сообщений (MessageSequence Charts, MSC), который был придуман раньше UML и достаточно долгоразвивается параллельно ему.87Компоненты, участвующие во взаимодействии, изображаются прямоугольниками вверхудиаграммы. От каждого компонента вниз идет вертикальная линия, называемая его линиейжизни. Считается, что ось времени направлена вертикально вниз. Интервалы времени, вкоторые компонент активен, т.е.
управление находится в одной из его операций,представлены тонким прямоугольником, для которого линия жизни компонента являетсяосью симметрии.aClient : ClientAccountManageranAccount : AccountОператорnew Client()createAccount (aClient)addAccount()new Account()deposit()Рисунок 36. Пример диаграммы сценария открытия счета.•Передача сообщения или вызов изображаются стрелкой от компонента-источника ккомпоненту-приемнику. Возврат управления показан пунктирной стрелкой, обратной ксоответствующему вызову.Эти диаграммы используются достаточно часто, например, при детализации сценариев,входящих в варианты использования. Пример такой диаграммы изображен на Рис. 36.Диаграммы взаимодействия (collaboration diagrams) показывают ту же информацию, чтои диаграммы сценариев, но привязывают обмен сообщениями/вызовами не к времени, а ксвязями между компонентами.
Пример такой диаграммы представлен на Рис. 37.aClient : Client1. new Client()2.1.1. new Account()3. deposit()anAccount : Account2.1. addAccount()Оператор2. createAccount (aClient)AccountManagerРисунок 37. Диаграмма взаимодействия, соответствующая диаграмме сценария на Рис. 36.На диаграмме изображаются компоненты в виде прямоугольников и связи между ними.Вдоль связей могут передаваться сообщения, показываемые в виде небольших стрелок,параллельных связи. Стрелки нумеруются в соответствии с порядком происходящихсобытий.
Нумерация может быть иерархической, чтобы показать вложенность действийдруг в друга (т.е. если вызов некоторой операции имеет номер 1, то вызовы,осуществляемые при выполнении этой операции, будут нумероваться как 1.1, 1.2, и т.д.).Диаграммы взаимодействия используются довольно редко.88•Диаграммы состояний (statechart diagrams) показывают возможные состояния отдельныхкомпонентов или системы в целом, переходы между ними в ответ на какие-либо события ивыполняемые при этом действия.Состояния показываются в виде прямоугольников с закругленными углами, переходы — ввиде стрелок. Начальное состояние представляется как небольшой темный кружок,конечное — как пустой кружок с концентрически вложенным темным кружком.