![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сотрудничество объектов
Сотрудничество объектов заключается в привлечении друг друга к работе с целью выполнения некоторой конкретной задачи. Они не вступают в постоянные отношения. Одни и те же объекты могут привлекаться разными объектами для выполнения различных задач. Сотрудничество объектов можно представить в виде диаграммы сотрудничества. Диаграммы сотрудничества имеют структурную и интерактивную части. Структурную часть мы рассмотрели выше. Интерактивнал часть отображается в виде графа, вершинами которого являются объекты — участники рассматриваемого сотрудничества. Связи между объектами представляются ребрами. Ребра могут сопровождаться сообщениями, передаваемыми между объектами, вызовами методов и индикаторами стереотипов, которые позволяют подробнее отобразить характер связи. Связь между объектами имеет тип ассоциации. С двумя связанными объектами мотут выполняться действия. В результате действия может измениться состояние одного или двух объектов. Приведем примеры различных типов действий, связанных с объектами. • create Объект может быть создан • destroy Объект может быть разрушен • call Операция, определенная в одном объекте, может быть вызвана другим объектом или им самим • return Объекту возвращается значение • send Объекту может быть послан сигнал При вызове и выполнении любо г о м етода воз м ожно наличие передавае м ых параметров и возвра щ аемо г о значения (а также другие действия). Эти действия могут иметь место, если принимающий объект видим для вызывающего. Для объяснения причины видимости объекта можно использовать следующие стереотипы. • association Объект видим по причине существования ассоциации (самый общий случай) • parameter Объект видим, поскольку он является параметром для вызывающего объекта • local Объект видим, поскольку он имеет локальную область видимости для вызывающего объекта • global Объект видим, поскольку он имеет глобальную область видимости для вызывающего объекта • self Объект вызывает собственный метод Помимо перечисленных, возможно применение и других стереотипов. При вызове некоторого метода возможен вызов других методов иными объектами. Последовательность выполнения операций можно отобразить с помо щ ью комбинации порядковых номеров и двоеточия, отделяю щ его имя метода от соответствую щ его номера. Комбинация порядковых номеров выражает последовательность, в которой выполняются операции. Например, на рис. 10.7 показана диаграмма сотрудничества, в которой используются порядковые номера.
Как показано на рис. 10.7, объект MainObject выполняет две операции в слелующей последовательности: 1: < < create > > 2: Value: = performAction(ObjectF) При выполнении операции 1 объект MainObject создает объект Obj ectA. Объект ObjectA локален по отношению к объекту MainObject (поскольку имеет место включение объектов). Это инициирует первую последовательность операций во вложенном потоке управлени я. Дл я обозначения всех операций этой последовательности используется число 1, за которым следует число, отражающее порядок их выполнения. Итак, первая операция последовательности 1 такова: 1.1: initialize() Объект ObjectA вызывает собственный метод. Выполнение объектом собственно г о метода выражается соединительной линией, связываю щ ей объект с самим собой, и индикатором стереотипа {self} ({caм }).Onepaция ObjectA:: initialize() также запускает другую последовательность действий: 1.1.1: initializeB() 1.1.2: initializeC() В этой последовательности два других объекта (которые локальны по отношению кобъекту ObjectA) инициализируются посредством вызова соответствую щ их методов инициализации. Операция 2: performAction(ObjectD) является началом еще одной вложенной последовательности действий. Объекту ObjectA передается объект ObjectD. Объект ObjectA вызывает операцию, определенную в объекте ObjectD: 2.1: doAction() Объект ObjectA имеет право вызвать эту операцию, поскольку объект ObjectD является параметро м (переданны м объекто м MainObject), как от м ечено стереотипо м {parameter}. В результате выполнения этой последовательности действий объекту ObjectA возвра щ ается значение и объекту MainObject также возвра щ ается значение. По м и м о ко м бинаций порядковых номеров, обозначение этих вложенных потоков управления можно усилить с помощью линии с зачерненной стрелкой, указывающей в направлении выполнения последовательности действий.
|