#include "iostream"
using namespace std;
class Animale{
public:
virtual void muoviti()=0;
virtual void verso() =0;
};
class Trainatore{
public:
virtual void azione()=0;
};
class Cavallo:public Animale,public Trainatore{
void muoviti(){
cout << "io galoppo" << endl;
getchar();
}
void verso(){
cout << "io nitrisco" << endl;
getchar();
}
void azione(){
cout << "io traino il carro velocemente" << endl;
getchar();
}
};
class Bue:public Animale,public Trainatore{
void muoviti(){
cout << "io cammino" << endl;
getchar();
}
void verso(){
cout << "io muggisco" << endl;
getchar();
}
void azione(){
cout << "io traino il carro lentamente" << endl;
getchar();
}
};
class Gatto:public Animale{
public:
void muoviti(){
cout << "io cammino felpato" << endl;
getchar();
}
void verso(){
cout << "io miagolo" << endl;
getchar();
}
};
class Motore:public Trainatore{
public:
void rifornimento(){
cout << "voglio benzina" << endl;
getchar();
}
void azione(){
cout << "io traino il carro molto velocemente" << endl;
getchar();
}
};
void trazione(Trainatore * anim){
anim->azione();
}
void main(){
Cavallo Furia;
Bue Filippo;
Motore mioMotore;
trazione(&Furia);
trazione(&Filippo);
trazione(&mioMotore);
}
Queste non sono lezioni, ma appunti che prendo, da non professionista del campo ma da semplice appassionato, per facilitarmi lo studio della programmazione, quindi possono contenere, e in effetti contengono, diversi errori e improprietà, che poi correggo, quando me ne accorgo, con i miei progressi. Per questo non sono assolutamente da prendere per oro colato, ma anzi con molto senso critico.
giovedì 14 agosto 2014
Perfezionamento delle classi astratte usate come interfacce in C++
Ecco: più appropriato che la classe astratta usata come interfaccia possieda una funzione che la classe astratta da cui derivano le classi dei vari animali non possiede. Così dalla classe astratta Animale faccio derivare pure la classe Gatto che non implementa l'interfaccia Trainatore in quanto, come è noto, il gatto non viene impiegato per trainare alcunché!
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento