2011-07-22 1 views
1

J'ai une classe supérieure, appelons-la voiture. J'ai une interface, appelons ça ITyre et j'ai deux classes qui implémentent ITyre. Appelons les Goodyear et Bridgestone.UML Une interface peut-elle faire partie d'une relation d'agrégation?

Suis-je autorisé à avoir une association de composition entre l'interface ITyre et Car (du point de vue d'UML, pas un langage particulier)?

Répondre

1

Si vous vouliez dire,

public class Car 
{ 
    ITyre something; 
} 

Oui, vous pouvez. En fait, ce sera bien si vous le faites de cette façon. Pour que votre voiture ne dépende d'aucune implémentation concrète particulière. Votre mise en œuvre ici vous donnera la flexibilité d'échanger des pneus (DI ou usine) indépendamment de qui les a construits.

+0

Un petit ajout: la composition est un peu déroutante car elle définit la propriété d'un objet. Naturellement, la composition implique un objet faisant partie d'un objet plus grand. Dans le cas d'interfaces, seule l'interface fait partie de l'objet plus grand contenant. Cependant, il s'agit toujours d'une composition au sens UML. L'objet 'Tyre' ne devrait pas exister sans un objet' Car' propriétaire, que ce soit par inclusion directe ou via une interface. – SomeWittyUsername

Questions connexes