Стереотипы 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) и хотите указать, какие классы являются представлениями, какие являются моделями, а какие контроллерами, использование стереотипов было бы хорошим ответом, поскольку вы описываете свойство класса, а не конкретных случаев. Это не похоже на ваш случай.

Другие вопросы по тегам