2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 43
Текст из файла (страница 43)
15.7 представлен API компонента анимации. Вы видите здесь четыре интерфейса, составляющие API: IApplicationСоветы и подсказки219(IПриложение), IModels (IМодели), IRendering (IВизуализация) и IScripts(IСценарии). Другие компоненты могут использовать один или несколько таких интерфейсов по необходимости.IScriptsAnimatorIRenderingIApplicationIModelsРис. 15.7. Моделирование APСоветы и подсказкиКомпоненты позволяют вам инкапсулировать части вашей системы, чтобы уменьшить количество зависимостей, сделать их явными, а также повысить взаимозаменяемость и гибкость на случай,если система должна будет изменяться в будущем. Хороший компонент наделен следующими характеристиками: инкапсулирует сервис с хорошо очерченным интерфейсоми границами; имеет внутреннюю структуру, которая допускает возможность ее описания; не комбинирует несвязанной функциональности в пределаходной единицы; организует внешнее поведение, используя интерфейсы и порты в небольшом количестве; взаимодействует только через объявленные порты.Если вы решили показать реализацию компонента, используявложенные подкомпоненты, примите во внимание следующее: не злоупотребляйте использованием подкомпонентов.
Еслиих слишком много, чтобы они легко уместились на однойстранице, применяйте дополнительные уровни декомпозиции некоторых из них; убедитесь, что подкомпоненты взаимодействуют только через определенные порты и коннекторы; определите, какие подкомпоненты непосредственно взаимодействуют с внешним миром, и моделируйте их делегирующими коннекторами.Компоненты220Когда вы изображаете компонент в UML: дайте ему имя, которое ясно описывает его назначение. Таким же образом именуйте интерфейсы; присваивайте имена подкомпонентам и портам в случае, еслиих значение нельзя определить по их типам или же в моделиприсутствует множество частей одного типа; скрывайте ненужные детали.
Вы не должны показывать вседетали реализации на диаграмме компонентов; показывайте динамику компонентов, используя диагр аммывзаимодействия.Часть IVОсновы моделированияповеденияГлава 16. ВзаимодействияГлава 17. ВариантыиспользованияГлава 18. Диаграммы вариантовиспользованияГлава 19. ДиаграммывзаимодействияГлава 20. ДиаграммыдеятельностиВведениеГлава 16. ВзаимодействияВ этой главе:Роли, ссылки, сообщения, действия и последовательностиМоделирования потоков управленияСоздание хорошо структурированных алгоритмовВ грамотно выстроенной системе объекты не обособленны – онивзаимодействуют друг с другом, передавая сообщения.
Взаимодействие – это такое поведение, которое предполагает обмен сообщениями между множеством объектов в пределах определенного контекста и предназначено для достижения определенных целей.Взаимодействия используются для того, чтобы моделироватьдинамические аспекты коопераций, которые представляют собойсообщества объектов, играющих специфические роли и работающих совместно для обеспечения поведения, большего чем поведениепростой суммы элементов. Эти роли представляют прототипныеэкземпляры классов, интерфейсов, компонентов, узлов и вариантовиспользования.
Их динамические аспекты визуализируются, специфицируются, конструируются и документируются в виде потоков управления. Эти потоки управления могут быть представленыв системе простыми последовательными потоками либо включатьветвление, циклы, рекурсии и параллелизм. Вы можете моделировать взаимодействие двумя способами: выделяя временную последовательность сообщений или же подчеркивая эту последовательность в контексте некоторой структурной организации объектов.Хорошо структурированные взаимодействия подобны хорошоструктурированным алгоритмам: они эффективны, просты, адаптируемы и понятны.ВведениеЗдание – это живая сущность. Хотя каждое здание и состоитиз статических объектов, таких как кирпичи, раствор, балки, пластик, стекло и сталь, все эти вещи в своей совокупности работают динамически для достижения такого поведения, которое удобно223жителям дома.
Двери и окна открываются и закрываются. Включается и выключается свет. Системы отопления, кондиционирования, терморегуляции и вентиляции сообща обеспечивают температурный режим. В «интеллектуальных» домах сенсорные датчикиопределяют наличие или отсутствие деятельности жителей и соответствующим образом регулируют освещение, отопление, охлаждение и громкость звука в аудиоF и телеаппаратуре. Здания строятсяс учетом перемещения людей и вещей с места на место. К тому жедом должен адаптироваться к изменениям температуры, повышающейся и понижающейся в течение суток, а также к ее сезоннымколебаниям. Все хорошо структурированные здания проектируются с учетом противостояния динамическим воздействиям: ветру,землетрясениям и перемещению жителей.МоделироваТо же самое касается программных систем.
Скажем, системание струкуправления полетами может управлять многими терабайтами информации, которая большую часть времени хранится нетронутойтурныхна некотором диске и становится необходимой лишь в результатеаспектовнекоторых обстоятельств, например в связи с продажей билетов,системывылетом самолета или планированием расписания полетов. В реакобсужтивных системах, например в компьютерах и микроволновых педаетсячах, объекты вызываются к жизни и выполняют свою работу, когдав частях IIи III; также систему приводит в действие определенное событие – нажатие клавиши или истечение заданного срока.вы можетеВ UML статические аспекты системы моделируются такими элемоделироментами, как диаграммы классов и диаграммы объектов. Эти диаграмвать динамы позволяют визуализировать, специфицировать, конструироватьмическиеи документировать сущности, которые составляют систему, – в частаспектыности классы, интерфейсы, компоненты, узлы, варианты использовасистемы,ния и их экземпляры вместе со связями, существующими между ними.используяДинамические аспекты системы в UML моделируются взаимоконечныедействиями.
Как и диаграммы объектов, взаимодействия статичесавтоматы,как показано ки определяют фазы поведения, представляя все объекты, ведущиесовместную работу для достижения определенной цели. Однако,в главе 22.в отличие от диаграмм объектов, взаимодействия также представДиаграммыляют сообщения, передаваемые от объекта к объекту. Чаще всегообъектовсообщения вызывают операции или передачу сигнала; кроме того,обсужмогут сопровождаться созданием и уничтожением других объектов.даютсяВзаимодействия используются для моделирования потока управв главе 14,ленияв пределах операции, класса, компонента, варианта использодиаграммыванияили системы в целом. С помощью диаграмм взаимодействиявзаимодействыможетесоставить представление об этих потоках двумя способавия –ми.ВоFпервых,можно сосредоточиться на том, как сообщения пев главе 19,редаютсявовремени,а воFвторых – на структурных связях междукооперации –объектамивовзаимодействии,и затем рассмотреть, как сообщенияв главе 28.передаются в контексте структуры.Разницамежду строительствомнебоскребаи собачьейбудкиобсуждаетсяв главе 1.Взаимодействия224Графическое представление сообщений в UML проиллюстрировано на рис.
16.1. Эта нотация позволяет вам отразить наиболееважные свойства сообщения: имя, параметры (если таковые есть)и последовательность. Графически сообщение изображается линией со стрелкой и почти всегда включает имя его операции.последовательный номеррольссылкарольРис. 16.1. Сообщения, ссылки и последовательностьБазовые понятияДиаграммывнутреннейструктурыпоказываютструктурные соединения междуролями, какпоказанов главе 15;объектыобсуждаютсяв главе 14,системыи подсистемы –в главе 32,кооперации – в главе 28.Взаимодействие (interaction) – это поведение, в которое вовлечено множество сообщений, передаваемых между объектами, которые играют определенные роли в некоем контексте для достижениязаданной цели.Сообщение – это спецификация взаимодействия объектов, которая передает информацию и ожидает последующих действий.КонтекстВзаимодействие имеет место всякий раз, когда объекты соединены друг с другом. Вы найдете взаимодействия в кооперациях объектов, существующих в контексте системы или подсистемы, а такжев контексте операций и, наконец, классов.Чаще всего взаимодействия встречаются в кооперациях объектов, представленных в контексте системы или подсистемы в целом.
Например, в системе WebFкоммерции вы обнаружите такиеклиентские объекты, как экземпляры классов BookOrder (ЗаказКниги) и OrderForm (БланкЗаказа), которые взаимодействуют другс другом. Там же присутствуют клиенты (опятьFтаки экземплярыBookOrder), взаимодействующие с объектами на сервере, напримерэкземплярами BockOrderManager (МенеджерЗаказов).
Таким образом,взаимодействия не только включают локализованную кооперациюобъектов (как, например, вокруг OrderForm), но и распространяютсячерез многие концептуальные уровни системы (в частности, взаимодействия с BackOrderManager).Базовые понятияОперацииобсуждаются в главах4 и 9; моделированиеоперацийрассматриваетсяв главах 20и 28.Классыобсуждаютсяв главах 4и 9.Компонентыобсуждаются в главе15, узлы –в главе 27,вариантыиспользования–в главе 17;моделированиереализацийвариантовиспользованиярассматриваетсяв главе 28,классификаторы – в главе 9.225Помимо прочего, вы найдете взаимодействия между объектамив реализации операций. Параметры операций, их локальные переменные, глобальные по отношению к операции (но видимые в ней)объекты могут взаимодействовать друг с другом для обеспеченияработы алгоритма, реализующего операцию. Например, операцияmoveToPosition(p : Position) (перейтиНаПозицию (p : Позиция), определенная в классе движущегося робота, включает взаимодействиес параметром p, глобальными по отношению к операции объектами, такими как CurrentPosition (ТекущаяПозиция), и, возможно,несколькими локальными объектами: локальными переменными,используемыми операцией для вычисления промежуточных точекна пути к новой позиции.Наконец, взаимодействия в контексте класса можно применятьдля визуализации, специфицирования, конструирования и документирования его семантики.
Например, чтобы понять смысл класса RayTraceAgent, можно описать взаимодействие, которое покажет,как его атрибуты кооперируются друг с другом (и с глобальнымипо отношению к экземплярам класса объектами, и с параметрами,определенными для его операций).На заметку. Взаимодействие можно обнаружить и в представлении компонента, узла или варианта использования,которые по своей сути являются разновидностями классификаторов UML.