2012-02-23 11 views
8

In C++ poiché l'ereditarietà privata non è considerata come una relazione is-a, come deve essere visualizzata in un diagramma di classe e se viene mostrata come una relazione has-a allora come può si differenzia tra una composizione e un'eredità privata?Come mostrare la relazione di ereditarietà privata in uno schema di classe UML

+4

Questa è una domanda eccellente. Il problema è che l'ereditarietà privata è un ossimoro, motivo per cui non fa parte del dizionario UML. Lo mostrerei come ha-a con un'osservazione che afferma che è ereditata privatamente. Un'altra scelta è quella di rifattorizzare il tuo progetto per evitare l'ereditarietà privata: i casi in cui devi averlo sono pochi e distanti tra loro, quindi buone possibilità sono che un semplice has-a funzioni bene. – dasblinkenlight

risposta

2

Dovrebbe essere un rapporto di Composizione (solido diamante nero sul lato sottoclasse), perché:

  • eredità privata significa "implementato in termini di", ma in questo senso si può essere semplicemente trattato come " ha una "relazione".
  • Un'istanza della sottoclasse possiede chiaramente la parte di base dell'oggetto dell'oggetto e la proprietà non è condivisa con altri oggetti.
Problemi correlati