Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Ereditarietà e Generalizzazione

Chiariamo il concetto.
Chiariamo il concetto.
Link copiato negli appunti

Se si conosce qualcosa riguardo ad una categoria di cose, automaticamente si conosce qualcosa che è possibile trasferire ad altre categorie che, in qualche modo, discendono dalla categoria che conosciamo. Chiariamo meglio questo concetto.

Ad esempio, se si conosce qualcosa su un animale generico (ad esempio si sa che un animale mangia, dorme, é nato, si sposta da un luogo ad un altro, ecc.), potremo dire che tutte le sottocategorie di animali (rettili, anfibi, mammiferi, ecc.) erediteranno le stesse caratteristiche.
Tale meccanismo, in Analisi Object Oriented, viene definito come:
Ereditarietà

figura

Un esempio di ereditarietà

Una classe figlia (o sottoclasse) può ereditare gli attributi e le operazioni da un'altra classe (che viene definita classe padre o super classe) che sarà sempre più generica della classe figlia.

Nella generalizzazione, una classe figlia può rappresentare un valido sostituto della classe padre. Cioè, in qualunque posto appaia la classe padre, sarebbe possibile far apparire la classe figlia. Il viceversa non è, invece, vero.

In UML l'ereditarietà viene rappresentata con una linea che connette la classe padre alla classe discendente e dalla parte della classe padre si inserisce un triangolo (una freccia).

Se ragioniamo dal punto di vista dell'associazione, l'ereditarietà può essere vista come un tipo di associazione.
Come devono fare gli analisti per scoprire l'ereditarietà di una o più classi? L'analista deve far si che gli attributi e le operazioni per una classe siano generali e si applichino a parecchie altre classi (le sottoclassi) che, a loro volta, potranno "specializzare" la classe padre aggiungendo attributi e operazioni propri. Un'altra possibilità è che l'analista noti che due o più classi hanno un numero di attributi ed operazioni in comune.

Le classi che non permettono di istanziare nessun tipo di oggetto sono dette classi astratte. In UML una classe astratta si indica scrivendo il suo nome in corsivo.

Riassumendo si può dire che una classe può ereditare attributi ed operazioni da un'altra classe. La classe che eredita è figlia della classe (padre) da cui prende gli attributi e le operazioni. Le classi astratte sono utilizzate soltanto come classi base per l'ereditarietà e non forniscono alcun oggetto implementabile.


Ti consigliamo anche