L'associazione di specializzazione/generalizzazione
L'associazione di generalizzazione/specializzazione si configura
tra due classi, quando una di
queste, chiamata classe figlia o derivata o sottoclasse, è
definita utilizzando una classe già
esistente, chiamata classe padre o base o superclasse, ed estendendone caratteristiche e
funzionalità.
In altri termini, la classe figlia viene creata partendo dalla classe padre, già esistente ed
aggiungendo caratteriche e funzionalità.
Tecnicamente, si dice anche che la classe figlia deriva
dalla classe padre, o, in maniera equivalente, che la classe
padre generalizza la
classe figlia.
Questa associazione è nota anche come associazione IS-A, in
quanto la classe figlia è a tutti
gli effetti del tipo della classe padre.
I principi della programmazione O.O. alla base di questo tipo di associazione sono
l'ereditarietà ed il polimorfismo.
Nei diagrammi UML, la specializzazione/generalizzazione si rappresentata con una freccia
continua con punta chiusa diretta verso la classe padre.
L'associazione può essere
letta nel verso della freccia o nel verso contrario.
Se la si legge nel verso
della freccia si dice che la classe padre generalizza la classe
figlia, si tratta quindi di una generalizzazione.
Viceversa, se la si
legge nel verso contrario alla freccia, si dice che la classe figlia specializza la classe
padre, si tratta quindi di una specializzazione.
La figura seguente mostra un esempio di associazione di
specializzazione/generalizzazione.
