Форум Сообщества Аналитиков
Общий раздел => Теория моделирования и нотации => UML SysML и пр. => Тема начата: Виктор Малышко от 27 Марта 2011, 17:38:18
-
Хочется при помощи диаграмм объектов описать эффект от выполнения операции. Не совсем ясно, как это сделать.
Например, пусть есть диаграмма классов где сказано, что любой экземпляр класса Class1 связан с двумя экземплярами Class2. Есть диаграмма объектов, изображающая соединения до вызова операции Class1::setFS(). Можно изобразить схожую диаграмму объектов, изображающую соединения после вызова. Например, после setFS(C,B) левый объект поменяется с правым. Вопрос, как представить это в модели, чтобы нетолько человеку, просматривающему модель, было понятно, что вызов операции приводит к переходу от одной диаграммы объектов к другой?
-
нарисуйте, пожалуйста, диаграмму объектов до вызова (указав при этом не только те экземпляры класса Class2, которые ассоциированы с экземпляром класса Class1, но и те, которые приходят как параметры метода setFS() ) и после вызова, а то не совсем понятно, что значит "левый объект поменяется с правым".
-
Да, Денис, пример я описал фрагментарно. Положим, это операция Class1::setFS(a,b) устанавливает у экземпляра Class1 значение first равным a, second -- b. Диаграмма объектов нарисована в состоянии до, после вместо B будет C, вместо C -- B. Пример бессмысленный, он не важен, по большому счету. Вопрос касается того, как вообще можно (если можно) привязывать объекты и их соединения к моментам времени до вызова операции и после вызова. Конечно, для операции можно задать предусловие и постусловие на OCL, но хочется графическим способом воспользоваться.
-
Тут (http://blog.modelware.ru/?p=428)
-
Спасибо, Денис.
-
Кстати или нет, трое друзей пишут, что в UML2 <<become>> был отменен. Хотя в спецификации на одной из диаграмм проскакивает. По-прежнему признателен за помощь.
-
я сейчас достаточно "свободно" трактую спецификацию. Главное, чтобы было понятно, что нарисовано.
-
В современной версии UML есть подвид зависимости называемый <<derive>>. Им связывают элементы модели, такие что, один вычисляется из второго. Положение дел до вызова операции -- это базовый элемент, на основе которого вычисляется / <<derive>>-ится второй -- положение дел после вызова. В приведённом примере можно считать, что есть две спецификации экземпляра Class1, соединённые <<derive>>. По смыслу это один и тот же экземпляр, "снятый" в разные моменты времени. В кооперации, описывающей реализацию операции setFS(C,B), можно завести для этого 2 элемента.