Classi

Il nuovo costrutto che deve essere presente in ogni linguaggio orientato agli oggetti è quello di CLASSE.

Una classe deve raccogliere in un’unica dichiarazione attributi e metodi, distinguendo la parte privata da quella pubblica. Per C++ la classe è una estensione del concetto di record.

class data {

int giorno, mese, anno;

public:

void set( int,int,int);

void leggi( int*, int* int*);

void stampa();

};

In questo spezzone di codice è stata dichiarata la classe "data". E’ composta da tre variabili di tipo intero: giorno, mese ed anno, che sono chiuse nella parte privata della classe, non sono cioè visibili dall’esterno.

Segue la dichiarazione di tre metodi, "set" per fissare una data, "leggi" per estrarre i valori dalla parte privata, "stampa" che scrive la data sul dispositivo di output.

Rispetto al record della programmazione strutturata troviamo il concetto di parte privata e di metodi associati.

Il record era un semplice dato, quindi non poteva "nascondersi" a chi lo adoperava, altrimenti avremmo avuto dei dati non raggiungibili; le regole di visibilità erano definite solo per le procedure e le variabili locali di queste.

Ora invece un record ha dei metodi associati, cioè delle procedure che sono legate al nuovo tipo appena definito, ed ecco che nascondere parte dei dati è possibile perchè questi restano sempre visibili ai loro metodi.

I metodi sono programmi che vedono la parte privata del record. Ad ogni dato sono associate le procedure che lo manipolano. E’ importante notare che gli attributi non sono variabili locali dei metodi, ma variabili globali dell’intero programma raggiungibili solo attraverso le vie definite dai metodi: una classe si "protegge" da ogni uso indiscreto.

Una classe è un dato o una procedura? Nell’equazione di With "Algorithms+Data Structures=Programs" da che parte sta?

Bene una classe è entrambe le cose. Nella programmazione ad oggetti dati e procedure non sono più staccati, ma convivono nel concetto di classe.