domenica 21 ottobre 2012

Inizializzazione delle classi

Il semplice programma Semplice roditore definisce un nuovo tipo chiamato Roditore, per la creazione degli oggetti. Questo programma utilizza crea due oggetti di tipo Roditore dopodiché assegna ad ognuno di essi un livello di fame. Infine ogni roditore saluta e comunica il suo livello di fame al mondo.
Il codice del programma è il seguente:
// Semplice roditore
// Dimostrazione della creazione di un nuovo tipo
#include <iostream>
using naspace std;
class Roditore \\definizione della classe
{ public:
             int i_Fame;
             void Saluto(); // funzione membro prototipo
};
void Roditore::Saluto() //definizione funzione membro
{ cout << “Ciao, io sono un roditore. Questo è il mio livello di fame ” << i_Fame << “.\n”;
}
int main()
{
  Roditore topo1;
  Roditore topo2;
  topo1.i_Fame =3;
  topo2.i_Fame =7;
  topo1.Saluto();
  topo2.Saluto();
  system(PAUSE);
return 0;
}

Per creare questa nuova tipologia, viene definita una classe di codice che raggruppa i membri dati e le funzioni. Dalla classe è possibile creare singoli oggetti individuali le quali possiedono relative copie delle funzioni e degli oggetti virtuali ed il loro accesso. La classe è come un progetto, così come il progetto definisce la struttura dell'edificio, una classe definisce la struttura di un oggetto. Così come un muratore può costruire parecchie case con lo stesso progetto, il programmatore può definire molti oggetti utilizzando la stessa classe. Mostriamo un poco di codice per cementare questa teoria. La classe viene definita nel programma Semplice roditore con questa riga:
class Roditore \\definizione della classe

La definizione della classe inizia con la parola chiave class, seguita dal nome della classe. Per convenzione i nomi delle classi iniziano con la lettera maiuscola. Il corpo della classe è racchiuso dalle parentesi graffe e termina con un punto e virgola.

Definizione delle funzioni membro

Le funzioni membro possono essere definite all'esterno della definizione della classe. Al di fuori della classe Roditore, viene definita la funzione membro Saluto(), la quale dice ciao e mostra il livello di fame del roditore.
void Roditore::Saluto() //definizione funzione membro
{ cout << “Ciao, io sono un roditore. Questo è il mio livello di fame ” << i_Fame << “.\n”;
}

La definizione è simile a quella di tutte le altre funzioni ad eccezione di una cosa, il prefisso della funzione è Roditore:: Quando viene definita una funzione membro all'esterno della classe, essa deve essere qualificata con il nome della classe e l'operatore di risoluzione di scopo, in modo che il compilatore sappia che essa appartiene alla classe. Nella funzione membro il valore di i_Fame viene visualizzato con cout. Questo significa che Saluto() mostra il valore di i_Fame per l'oggetto specifico per il quale viene richiamata la funzione. In questo caso viene semplicemente mostrato il livello di fame. E possibile accedere ai membri dati e alle funzioni membro di un oggetto semplicemente usando il suo nome membro.

Istanziare gli oggetto

Quando viene creato un oggetto, esso viene istanziato dalla classe. Di fatto, oggetti specifici sono chiamati istanze della classe. In main(), sono state istanziate due Roditori dalla classe.
Roditore topo1;
Roditore topo2;

Come risultato vi sono due oggetti di tipo Roditore, topo1 e topo2.

Accedere ai membri dati

E' ora di far lavorare i roditori, per prima cosa viene assegnato loro un livello di fame.
Topo1.i_fame = 3;

Il codice precedente assegna un livello 3 di fame a dato membro i_Fame del topo1. Così come è possibile accedere a una funzione membro di un oggetto mediante l'operatore selezione, vale anche per i dati membro. E' possibile inoltre ottenere il valore di un dato membro mediante questa procedura. In questo programma topo1 e topo2 sono due istanze di Roditore, ognuna esiste indipendentemente e ha propria identità. Ciascuna possiede un livello di i_Fame diverso.

Richiamare le funzioni membro

Nell'istruzione successiva vengono richiamate le funzioni di Roditore, in questo caso Saluto().
topo1.Saluto();
topo2.Saluto();

La risposta del programma alle due istruzioni sarà la seguente: “Ciao sono un roditore è il mio livello di fame è 3.”, richiamato dal primo topo. Il secondo topo invece dirà: “Ciao sono un roditore è il mio livello di fame è 7.”, ognuno di essi ha visualizzato il proprio dato membro i_Fame.

Nessun commento:

Posta un commento