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.

Associazione UML di specializzazione/generalizzazione