Ereditarietà

Il secondo meccanismo che caratterizza la programmazione ad oggetti è l’ereditarietà, cioè la possibilità di derivare un oggetto da un altro.

Vediamo con un esempio, sempre in sintassi C++.

class impiegato {

public:

char* nome;

int eta;

float stipendio;

};

class dirigente:impiegato {

public:

char* reparto;

};

In questo piccolo spezzone di codice vengono dichiarate due classi.

La prima memorizza i dati relativi ad un impiegato, cioè nome, età e stipendio.

La seconda presenta la novità: è la classe "dirigente". Un dirigente è anche un impiegato, cioè ogni dirigente ha tutte le caratteristiche di un impiegato, più alcune che sono proprie solo del dirigente. In questo caso per il dirigente viene indicato anche il reparto che dirige, mentre tutte le altre caratteristiche sono derivate dalla classe impiegato.

Questo semplice esempio dimostra la flessibilità di un sistema ad oggetti: se estendiamo la classe impiegato, automaticamente tutte le classi derivate beneficiano delle nuove caratteristiche. Non dobbiamo modificare codice sparso qua e là nel programma, ma solo nella dichiarazione di impiegato e anche il dirigente avrà le nuove implementazioni.

Questa rapida carrellata ha evidenziato come i moderni linguaggi di programmazione abbiano dei meccanismi che facilitano la costruzione di programmi modulari:

indipendenza del database dal linguaggio (SQL),

forte tipizzazione,

regole di visibilità per dati e procedure

per arrivare alla moderna programmazione ad oggetti, che ha le istruzioni necessarie ad implementare i meccanismi di classe ed ereditarietà.

I linguaggi che possiedono queste caratteristiche permettono di tradurre le specifiche architetturali in codice per il computer, poichè riescono a rispettare la divisione in moduli impostata nella fase di progettazione.