2010-11-14 5 views
0

Мне нужно наследовать от класса, и мне нужно только наследовать выбранные атрибуты, возможно ли это или вы можете наследовать только классы, если вам нужны все атрибуты?Диаграммы классов - Наследование атрибутов

Thanks,

Chris.

+0

Было бы полезно упомянуть язык программирования и цель наследования только выбранных атрибутов. – bancer

ответ

0

Похоже, вы ищете наследование реализации, а не наследование интерфейсов. См. this thread для объяснения, а также примечание ниже, если до сих пор неясно, почему.

Учитывая, что вы только хотите повторно использовать подмножество выбранных атрибутов, вам, вероятно, будет лучше использовать композицию вместо наследования.

Примечание

Это не может быть наследованием интерфейса (подтипы), так как лишь «наследования» подмножества атрибутов, экземпляр подкласса не будет замещаемым для суперкласса экземпляра. Например: предположим, что свойство суперкласса A не наследует подкласс. Во время выполнения переменная v, объявленная как тип суперкласса, привязывается к экземпляру подкласса. Выражение затем ссылается на v.A. Совершенно разумный запрос - но это, очевидно, потерпит неудачу. Другими словами, вы нарушили контракт с интерфейсом. «Принцип замены Лискова» для получения дополнительной информации.

0

Это возможно. Когда суперкласс определяет атрибут, любой подкласс может переопределить атрибут с множественностью [0..0]. Таким образом, подкласс может наследовать только то, что ему нужно. Однако, как упоминалось @sfinnie, этот перерыв Liskov Substitution, так что вам лучше знать, что вы делаете!

Черновик UML 2.5 спецификации у меня есть под рукой, говорит:

MultiplicityElement можно определить кратность которых оба границы равны нулю. Это ограничивает допустимую мощность равным 0; т. е. требует, чтобы экземпляр этого элемента не содержал значений. [...] Он применяется к (но не ограничивается этим) переопределению свойств, существующих в более общих классификаторах.

Смежные вопросы