Вопрос по моделированию эффекта операции(Прочитано 5424 раз)
Хочется при помощи диаграмм объектов описать эффект от выполнения операции. Не совсем ясно, как это сделать.
Например, пусть есть диаграмма классов где сказано, что любой экземпляр класса Class1 связан с двумя экземплярами Class2. Есть диаграмма объектов, изображающая соединения до вызова операции Class1::setFS(). Можно изобразить схожую диаграмму объектов, изображающую соединения после вызова. Например, после setFS(C,B) левый объект поменяется с правым. Вопрос, как представить это в модели, чтобы нетолько человеку, просматривающему модель, было понятно, что вызов операции приводит к переходу от одной диаграммы объектов к другой?



нарисуйте, пожалуйста, диаграмму объектов до вызова (указав при этом не только те экземпляры класса Class2, которые ассоциированы с экземпляром класса Class1, но и те, которые приходят как параметры метода setFS() ) и после вызова, а то не совсем понятно, что значит "левый объект поменяется с правым".



Да, Денис, пример я описал фрагментарно. Положим, это операция Class1::setFS(a,b) устанавливает у экземпляра Class1 значение first равным a, second -- b. Диаграмма объектов нарисована в состоянии до, после вместо B будет C, вместо C -- B. Пример бессмысленный, он не важен, по большому счету. Вопрос касается того, как вообще можно (если можно) привязывать объекты и их соединения к моментам времени до вызова операции и после вызова. Конечно, для операции можно задать предусловие и постусловие на OCL, но хочется графическим способом воспользоваться.






Спасибо, Денис.



Кстати или нет, трое друзей пишут, что в UML2 <<become>> был отменен. Хотя в спецификации на одной из диаграмм проскакивает. По-прежнему признателен за помощь.



я сейчас достаточно "свободно" трактую спецификацию. Главное, чтобы было понятно, что нарисовано.



В современной версии UML есть подвид зависимости называемый <<derive>>. Им связывают элементы модели, такие что, один вычисляется из второго. Положение дел до вызова операции -- это базовый элемент, на основе которого вычисляется / <<derive>>-ится второй -- положение дел после вызова. В приведённом примере можно считать, что есть две спецификации экземпляра Class1, соединённые <<derive>>. По смыслу это один и тот же экземпляр, "снятый" в разные моменты времени. В кооперации, описывающей реализацию операции setFS(C,B), можно завести для этого 2 элемента.
« Последнее редактирование: 26 Июня 2022, 13:01:01 от [прилетело НЛО и...] »
[...и улетело НЛО.]




 

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