Стереотипы UML, примененные к шаблону проектирования Class Inheritance
При использовании папируса (+Eclipse) я столкнулся с проблемой, которую я изначально считал несоответствием. Но, задумавшись над этим, я начал думать, что у меня может быть "ошибка" в моих базовых концепциях UML-проектирования.
Хорошо, рассмотрим основную проблему наследования классов, где Man
а также Woman
специализации Person
, (другие слова, Person
это суперкласс Man
а также Woman
).
Затем, если вы применяете стереотип Worker
(содержащий параметры job
а также salary
например) Person
не должны подклассы также получить тот же стереотип Worker
? Разве они не должны содержать job
а также salary
параметры?
Я действительно думал, что стереотипы были также унаследованы от суперкласса, но когда я реализую этот дизайн в инструменте Papyrus, я не вижу никаких унаследованных job
или же salary
, Каждый подкласс такой же, как если бы у него не было примененного стереотипа.
Заранее спасибо!
====================== Отредактировано для получения дополнительной информации ========================
Я обнаружил, что в 2000 году для UML v1.3 была открыта проблема, касающаяся наследования стереотипов в подклассах.
Выпуск 3210: Наследование стереотипов (uml-rtf)
В моей интерпретации, пример, приведенный в разделе " Обсуждение", является именно тем, что я спрашивал выше Однако, похоже, что рецензент понял, что проблема заключается в том, чтобы просить подтип стереотипа, а не распространение ограничений из стереотипного класса на его подклассы.
Это точка, добавленная в UML v1.3:
Стереотипы являются Обобщаемыми Элементами. Если стереотип является подтипом другого стереотипа, он наследует все ограничения и помеченные значения из своего супертипа стереотипа и должен применяться к базовому классу того же типа. Стереотип отслеживает базовый класс, к которому он может быть применен.
Позже это было объявлено устаревшим в UML v1.4 и удалено в UML 2.
Итак, в основном, согласно моей интерпретации, вопрос существовал... но спецификации UML все еще не определяют его.
1 ответ
Я также думаю, что стереотипы унаследованы, но я не смог найти какой-либо ссылки на это в Интернете или в стандарте UML в отношении этого момента. Но из вашего описания вы, вероятно, должны использовать либо множественное наследование, либо интерфейсы.
Стереотипы используются для расширения класса - дают больше свойств элементу класса, а не экземплярам. Класс в UML имеет имя, свойства (поля) и методы. Когда вы добавляете стереотип к классу, вы фактически добавляете другой класс свойств к классу. Например, если вы пишете систему MVC (Model-View-Controller) и хотите указать, какие классы являются представлениями, какие являются моделями, а какие контроллерами, использование стереотипов было бы хорошим ответом, поскольку вы описываете свойство класса, а не конкретных случаев. Это не похоже на ваш случай.