Форум Сообщества Аналитиков
Общий раздел => Теория моделирования и нотации => UML SysML и пр. => Тема начата: UMLNube от 20 Февраля 2009, 15:22:50
-
Привет, гуру UML.
Я пытаюсь реализовать свой UML-профиль на С# на основе реализации метамодели на С#. Проблема в том, что я не понимаю как можно расширить класс Operation (например, Infrastructure::Core::Constructs::Operation) с использованием профилирования.
Ассоциация Extension из пакета Profiles разрешает метаклассу быть только типа Infrastructure::Core::Constructs::Class.
Infrastructure::Core::Constructs::Operation - это метакласс? Как его подставить вместоInfrastructure::Core::Constructs::Class? Ведь Operation не наследует от Class..
Подскажите кто сталкивался...
-
А где пытаетесь расширить профиль? В какой среде?
-
Ну как тут мимо пройти...
Infrastructure::Core::Constructs::Operation -- это имя конкретного экземпляра метакласса, взятого из метамодели UML.
Infrastructure::Core::Constructs::Class -- это тип, к которому принадлежит любой экземпляр метакласса.
Нет нужды подставлять имя экземпляра вместо его типа.
В современной версии стандарта есть рис. 12.26, поясняющий это. Если заменить имя (значение слота name) экземпляра метакласса с "Class" на "Operation", то всё встанет на свои места.