Форум Сообщества Аналитиков

×


Кооперация(Прочитано 19770 раз)
Re: Кооперация Ответ #15 : 12 Мая 2010, 14:14:59
Подскажите как указать имя роли при связывании класса и кооперации (ну не ручками же)?



Re: Кооперация Ответ #16 : 12 Мая 2010, 19:48:30
Подскажите как указать имя роли при связывании класса и кооперации (ну не ручками же)?
Думаю только ручками. Идем в справку ищем Composite Structure Diagram, Role Binding, Collaboration Occurrence

« Последнее редактирование: 12 Мая 2010, 19:52:22 от Galogen »



Re: Кооперация Ответ #17 : 19 Мая 2010, 15:15:48
решили попробовать RSA, там этот момент проработан, (роли можно выбрать из имеющихся и.т.п). Правда, тяжеловато идет освоение, может есть спецы, кто подсобит?



Re: Кооперация Ответ #18 : 03 Декабря 2019, 22:01:52
Если жирно некротредить, то можно сказать следующее.
Текущий стандарт UML (который возможно отличается от стандарта из 2010 года) говорит, что кооперация -- это пачка взаимодействующих экземпляров. Если рисуется диаграмма составной структуры, показывающая "кишки" кооперации вроде:

, то роли там можно соединять только коннекторами (но не ассоциациями/агрегациями/композициями, не обобщениями, не реализациями). Так что некоторые картинки, нарисованные по ссылке, которая протухла, невозможны по текущему стандарту. Надо сказать, что и диаграмма с www.uml-diagrams.org, которую я использую, тоже нарушает стандарт. Т. к. внутренности ролей на ней не ролевые, как положено по стандарту, а интерфейсные как по стандарту не положено. Стандартные внутренности ролей -- это вложенные в роли части (parts) и/или свойства (properties). Так что по стандарту кооперация Observer должна рисоваться иначе (тут другая одноимённая кооперация, но смысл тот, что ни атрибутов, ни операций у ролей не должно быть):

Между тем, в стандарте делается некоторый финт. Говорится, что якобы есть альтернативная нотация:

"Альтернативная нотация" соединяет классы (ну, или интерфейсы) и кооперацию какими-то связями. Что это за связи, стандарт не может объяснить. Попытки проводить аналогии с классами, у которых можно по диаграмме составной структуры нарисовать диаграмму классов, где кишки (parts) класса вынуты наружу и нарисованы как классы, к которым проведены ассоциации. Соединяет ли кооперацию с классом (ну, или интерфейсом) ассоциация? Гм. По мне, сомнительно это. Из-за того, что экземпляр класса поучаствовал во взаимодействии, описанном при помощи кооперации, проводить ассоциацию? Ну уж нет.
Как бы там ни было, стандарт не разрешает рисовать подобные картинки:

Далее...
Если используется кооперация, т. е. создаётся CollaborationUse, то с экземплярами, подставляемыми на роли, она по стандарту соединяется зависимостями. Важное слово тут -- экземпляры. Стандарт не позволяет подставлять классы на роли.

Моделирование паттернов проектирования как параметризованных коопераций в связи со сказанным сопряжено такими моментами:
1) Параметрами (а не ролями!) кооперации, моделирующей паттерн, должны быть участники (participants) паттерна. У Observer это Subject, Observer и ConcreteObserver.
2) Роли в кооперации задают имена, с которыми экземпляры участников паттерна будут фигурировать на диаграммах взаимодействия.
3) Использование паттерна (т. е. увязка классов друг с другом по его рецепту) -- это конкретизация параметризованной кооперации. По параметризованной кооперации, моделирующей паттерн, создаётся другая кооперация -- её конкретизация. Они соединяются зависимостью связывания, в которой прописываются bind-инги. То есть использование паттерна -- это не использование кооперации, которая его моделирует.
« Последнее редактирование: 03 Декабря 2019, 22:08:34 от [прилетело НЛО и...] »
[...и улетело НЛО.]



Re: Кооперация Ответ #19 : 04 Декабря 2019, 02:33:44
Можно решить, что кооперация -- плохой способ моделировать паттерн [весь]. Что же делать? Можно вспомнить что в UMLе есть штуковина, внутри которой классы чувствуют себя вполне нормально, внутри которой можно рисовать и ассоциации, и обобщения, и реализации, и зависимости. Это пакет:

И есть в UMLе изобретение авторов языка Ада (того самого) -- параметризованный пакет:

Только вот зависимость связывания, согласно последним веяниям, должна рисоваться как зависимость, не как реализация.
Итак, паттерн можно моделировать  пакетом. Участники паттерна и связи между ними становятся элементами пакета. Структура описывается диаграммой, вроде той, что выше. Для описания поведения в состав пакета можно включить кооперацию и внутри неё смоделировать взаимодействие экземпляров участников. Использование паттерна описывается как конкретизация пакета [см. на диаграмме выше].
P. S. У предложенного способа есть недостаток. Связи между классами, соединёнными по рецепту паттерна оказываются отдельно от этих классов. Они лежат в пакете -- конкретизации параметризованного пакета. Где лежат сами эти классы [мне] неясно.
« Последнее редактирование: 04 Декабря 2019, 15:25:27 от [прилетело НЛО и...] »
[...и улетело НЛО.]



Re: Кооперация Ответ #20 : 07 Декабря 2019, 00:29:26

Интересно, но даже плюсик поставить негде. Совсем форум по швам расползается:(



Re: Кооперация Ответ #21 : 07 Декабря 2019, 00:30:08
Интересно, но даже плюсик поставить негде. Совсем форум по швам расползается:(

Хотя нет, нашел!



Re: Кооперация Ответ #22 : 09 Декабря 2019, 10:58:41
Хотя нет, нашел!
Спасибо, Galogen!
[...и улетело НЛО.]




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19