2010-11-14 45 views
0

Je dois hériter d'une classe et j'ai seulement besoin d'hériter des attributs sélectionnés, est-ce possible ou pouvez-vous hériter uniquement des classes si vous avez besoin de tous les attributs?Diagrammes de classes - Héritage d'attributs

Merci,

Chris.

+0

Il serait utile de mentionner le langage de programmation et le but d'hériter uniquement des attributs sélectionnés. – bancer

Répondre

0

Il semble que vous recherchiez un héritage d'implémentation plutôt qu'un héritage d'interface. Voir this thread pour l'explication, notez également ci-dessous si ce n'est toujours pas clair pourquoi. Étant donné que vous cherchez seulement à réutiliser un sous-ensemble des attributs sélectionnés, vous feriez probablement mieux d'utiliser Composition au lieu de Hériter.

Remarque

Il ne peut pas être l'héritage d'interface (sous-typage) puisque, par seulement « héritant » un sous-ensemble d'attributs, une instance de la sous-classe ne serait pas substituable pour une instance superclasse. Par exemple: supposons que la propriété exposée de superclasse A n'a pas hérité de la sous-classe. Lors de l'exécution, une variable v déclarée comme type de superclasse est liée à une instance de la sous-classe. Une expression référence alors v.A. Demande parfaitement raisonnable - mais il échouerait évidemment. En d'autres termes, vous avez rompu le contrat d'interface. Google 'Liskov Substitution Principe' pour plus d'informations.

0

C'est possible. Quand une superclasse définit un attribut, n'importe quelle sous-classe peut redéfinir l'attribut pour avoir la multiplicité [0..0]. Ainsi, la sous-classe peut hériter seulement de ce dont elle a besoin. Cependant, comme @sfinnie mentionné, cela casse Liskov Substitution, donc vous feriez mieux de savoir ce que vous faites!

Un projet de spécification UML 2.5 Je pratique dit:

Un MultiplicityElement peut définir une multiplicité dont les deux bornes sont nuls. Cela limite la cardinalité autorisée à 0; c'est-à-dire qu'il nécessite qu'une instanciation de cet élément ne contienne aucune valeur. [...] Cela s'applique (mais n'est pas limité à) à la redéfinition des propriétés existant dans les Classificateurs plus généraux.