Programmazione orientata agli oggetti: Che cos’è l’ereditarietà

Programmazione orientata agli oggetti: Che cos’è l’ereditarietà

Nella programmazione orientata agli oggetti, l’ereditarietà permette di definire una classe da una esistente. Questa nuova classe viene chiamata sottoclasse, riceve attributi, metodi e messaggi alla classe generatrice, definita superclasse. La sottoclasse può sviluppare ulteriori attributi e metodi; se la superclasse modifica i suoi metodi e attributi, anche la sottoclasse viene coinvolta in tali operazioni.

La classe descrive una entità della realtà nei tipi e nei comportamenti. Vi sono casi in cui i tipi sono simili, e differiscono per poche caratteristiche aggiuntive o per alcuni comportamenti leggermente diversi. Tramite l’ereditarietà è possibile rappresentare questo concetto, e la similarità tra i tipi viene espressa introducendo i tipi base e i tipi derivati. Un tipo base contiene tutte le caratteristiche e i comportamenti che sono condivisi con i suoi tipi derivati. Si crea un tipo base per rappresentare il nucleo di una idea di un oggetto nel sistema e da esso si derivano gli altri tipi per esprimere in modi differenti il concetto che si vuole realizzare.

Programmazione orientata agli oggetti: Che cos'è l'ereditarietà

Un tipo definito tramite l’ereditarietà, oltre a contenere tutti i membri del tipo base, sia quelli privati che quelli nascosti, eredita anche l’interfaccia della classe base. Questo vuol dire che tutte le chiamate alla classe base possono essere inoltrate anche alla classe derivata; quindi la classe derivata è dello stesso tipo della classe base.

Si parla di ereditarietà multipla quando una classe ha più superclassi; ereditarietà semplice quando la classe possiede una sola superclasse. L’aspetto essenziale dell’ereditarietà è la relazione che si viene a creare tra le classi, considerando il case che una sottoclasse può essere a sua volta superclasse, si parla di gerarchia di ereditarietà.

Le classi derivate possono essere differenziate dalla classe base secondo due tipologie:

  • lla classe derivata viene aggiunto almeno un metodo in più rispetto alla classe base: estensione della classe;
  • almeno un metodo della classe base viene modificato: l’overriding del metodo. La classe estesa definisce un metodo con la stessa signature e lo stesso tipo di ritorno di un metodo della

Quando si estende una classe per aggiungervi nuove funzionalità, viene creata la relazione comunemente nota relazione IsA: l’estensione crea un nuovo tipo di oggetto che “è un” tipo simile all’originale. La relazione IsA è diversa  lla relzione  S “ha un”, nella  ale un oggetto ne utilizza un altro per poter memorizzare parte dello stato  o effettuare un certo compito, esso cioè “ha un” riferimento all’altro oggetto.

Un metodo può essere ridefinito solo se è accessibile. Se il metodo non è accessibile, non può essere ereditato, e se non è ereditato, non può essere ridefinito.

Precedente Programmazione orientata agli oggetti: Che cos'è l'incapsulamento Successivo Programmazione orientata agli oggetti: Che cos'è il polimorfismo

Lascia un commento

*