/* In alcuni casi potremmo avere la necessita' di passare subito dei
* parametri al costruttore di una classe. E' possibile:
*
* class animale { // Definisco la classe animale
* ...
* public: // La parte che segue e' PUBLIC (visibile da tutti)
* animale(int zamp); // Costruttore con parametri
* ~animale(void); // Distruttore
* ...
* };
*
* // Ecco il costruttore
*
* animale::animale(int zamp)
* {
* lunghezza = 0
* numerozampe = zamp; // Il num. zampe lo metto subito
* cout << "animale inizializzato con " << zamp << " piedi\n";
* }
*
* In effetti, se si crea un dato animale, il numero di zampe lo possiamo
* sapere subito... mentre la lunghezza puo' variare con l'eta', quindi
* la metteremo dopo.
* Per passare il valore al momento della dichiarazione si puo' fare in
* due modi:
*
* 1) animale cane = animale(4);
* 2) animale cane(4);
*
* Il secondo, essendo il piu' breve, risulta essere il piu' usato.
*/
#include <iostream.h> // Header necessario per usare CIN e COUT
// Questo e' un commento C++ ad una sola linea
class animale { // Definisco la classe animale
float lunghezza; // Questa parte e' PRIVATE di default
int numerozampe;
public: // La parte che segue e' PUBLIC (visibile da tutti)
animale(int zamp); // Costruttore con parametri
~animale(void); // Distruttore
void mettilungh(float i); // Questi sono i prototipi delle funzioni
void mettizampe(int l); // (o metodi) della nostra classe.
float leggilungh(void);
int leggizampe(void);
};
// Ora scriviamo i metodi della classe animale:
// Ecco il costruttore. Parametri: in entrata il numero di zampe (int).
animale::animale(int zamp)
{
lunghezza = 0;
numerozampe = zamp; // Il num. zampe lo metto subito
cout << "animale inizializzato con " << zamp << " piedi\n";
}
// Ecco il distruttore
animale::~animale(void)
{
cout << "animale distrutto\n";
}
/*-------------------------------------------------------------------------*
* mettilungh: definisce la lunghezza dell'animale.
* parametri: in entrata la lunghezza in formato float.
*-------------------------------------------------------------------------*/
void animale::mettilungh(float i)
{
lunghezza = i; // Scrive il valore nella variabile privata "lunghezza".
}
/*-------------------------------------------------------------------------*
* mettizampe: definisce il numero di zampe dell'animale.
* parametri: in entrata il num. di zampe in formato int.
*-------------------------------------------------------------------------*/
void animale::mettizampe(int l)
{
numerozampe = l; // Scrive il valore nella variabile privata "numerozampe".
}
/*-------------------------------------------------------------------------*
* leggilungh: legge e restituisce la lunghezza dell'animale.
* parametri: in uscita la lunghezza in formato float.
*-------------------------------------------------------------------------*/
float animale::leggilungh(void)
{
return lunghezza;
}
/*-------------------------------------------------------------------------*
* leggizampe: legge e restituisce il num. di zampe dell'animale.
* parametri: in uscita il num. di zampe in formato int.
*-------------------------------------------------------------------------*/
int animale::leggizampe(void)
{
return numerozampe;
}
///////////////////////////////////////////////////////////////////////////
// Il main...
///////////////////////////////////////////////////////////////////////////
int main(void)
{
float temp; // Variabile temporanea che usiamo per le lunghezze.
int temp2; // Idem, per il num. zampe.
// Ora possiamo dichiarare alcuni oggetti di tipo animale e usarli:
animale cane1(4),cane2(4); // ecco che istanzio 3 animali...
animale millepiedi(1000); // ossia creo degli esemplari dalla
// classe "astratta".
// (Passandogli subito un parametro).
// Gli altri parametri li chiediamo all'utente.
cout << "\nLunghezza cane 1? "; // Stampa la frase come un printf()
cin >> temp; // Legge il valore come scanf()
cane1.mettilungh(temp); // Passa a mettilungh la variabile temp
cout << "Lunghezza cane 2? "; // Stampa la frase come un printf()
cin >> temp; // Legge il valore come scanf()
cane2.mettilungh(temp); // Passa a mettilungh la variabile temp
cout << "Lunghezza millepiedi? "; // Stampa la frase come un printf()
cin >> temp; // Legge il valore come scanf()
millepiedi.mettilungh(temp); // Passa a mettilungh la variabile temp
cout << "Num. esatto piedi del millepiedi? "; // Stampa la frase.
cin >> temp2; // Legge il valore.
millepiedi.mettizampe(temp2); // Passa a mettizampe la variabile temp2
// Ora visualizziamo lo stato degli animali, usando i loro metodi di lettura.
cout << "\nStato del cane1: zampe = " << cane1.leggizampe();
cout << ", lunghezza = " << cane1.leggilungh();
cout << "\nStato del cane2: zampe = " << cane2.leggizampe();
cout << ", lunghezza = " << cane2.leggilungh();
cout << "\nStato del millepiedi: zampe = " << millepiedi.leggizampe();
cout << ", lunghezza = " << millepiedi.leggilungh() << "\n";
return 0; // main() restituisce 0
}
/* I costruttori e i distruttori, comunque, sono facoltativi, non sempre
* sono indispensabili.
*/
