В.В. Кулямин - Технологии программирования. Компонентный подход (1134162), страница 27
Текст из файла (страница 27)
31 является связь между классами Organization и Address.Ссылочная связь (или слабая агрегация) обозначает, что объект некоторого класса A имеетв качестве поля ссылку на объект другого (или того же самого) класса B, причем ссылки наодин и тот же объект класса B могут иметься в нескольких объектах класса A.И композиция, и ссылочная связь изображаются стрелками, ведущими от класса A к классуB. Композиция дополнительно имеет закрашенный ромбик у начала этой стрелки.Двусторонние ссылочные связи, обозначающие, что объекты могут иметь ссылки друг надруга, показываются линиями без стрелок.
Такая связь показана на Рис. 31 между классамиAccount и Client.Эти связи могут иметь описание множественности, показывающее, сколько объектовкласса B может быть связано с одним объектом класса A. Оно изображается в видетекстовой метки около конца стрелки, содержащей точное число или нижние и верхниеграницы, причем бесконечность изображается звездочкой или буквой n. Для двусторонних84•связей множественности могут показываться с обеих сторон. На Рис.
31 множественности,изображенные для связи между классами Account и Client, обозначают, что один клиентможет иметь много счетов, а может и не иметь ни одного, и счет всегда привязан ровно кодному клиенту.Наследование классов изображается стрелкой с пустым наконечником, ведущей отнаследника к предку. На Рис. 31 класс CreditAccount наследует классу Account, а классыPerson и Organization — классу Client.Реализация интерфейсов показывается в виде пунктирной стрелки с пустым наконечником,ведущей от класса к реализуемому им интерфейсу, если тот показан в видепрямоугольника. Если же интерфейс изображен в виде кружка, то связь по реализациипоказывается обычной сплошной линией (в этом случае неоднозначности в ее толкованиине возникает).
Такая связь изображена на Рис. 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) показывают возможные состояния отдельныхкомпонентов или системы в целом, переходы между ними в ответ на какие-либо события ивыполняемые при этом действия.Состояния показываются в виде прямоугольников с закругленными углами, переходы — ввиде стрелок.
Начальное состояние представляется как небольшой темный кружок,конечное — как пустой кружок с концентрически вложенным темным кружком. Вы моглиобратить внимание на темный кружок на диаграмме деятельности на Рис. 35 — он тожеизображает начальное состояние: дело в том, что диаграммы деятельности являютсядиаграммами состояний специального рода, а деятельности — частный случай состояний.Пример диаграммы состояний приведен на Рис. 38.Состояния могут быть устроены иерархически: они могут включать в себя другиесостояния, даже целые отдельные диаграммы вложенных состояний и переходов междуними. Пребывая в таком состоянии, система находится ровно в одном из его подсостояний.На Рис. 38 почти все изображенные состояния являются подсостояниями состояния Site.Кроме того, в нижней части диаграммы три состояния объединены, чтобы показать, чтопереход по действию cancel возможен в каждом из них и приводит в одно и то жесостояние Basket.Рисунок 38.