Il Cuoco sa cucinare la pasta con un solo ingrediente.
#include "iostream" using namespace std; class Cuoco{ public: void Pasta(char * condimento){ cout << "Io cucino la pasta con " << condimento << endl; getchar(); } }; void main(){ Cuoco Mario; Mario.Pasta("sugo"); }
Io cucino la pasta con sugo
Il Cuoco ha un Apprendista, cui ha insegnato, ovviamente, a cucinare la pasta con un ingrediente:
#include "iostream" using namespace std; class Cuoco{ public: void Pasta(char * condimento){ cout << "Io cucino la pasta con " << condimento << endl; getchar(); } }; class Apprendista: public Cuoco{ }; void main(){ Cuoco Mario; Apprendista Antonio; Mario.Pasta("sugo"); Antonio.Pasta("sugo"); }
Io cucino la pasta con sugo Io cucino la pasta con sugo...ma anche con altri ingredienti: ognuno dei due sa cucinare la pasta con un solo ingrediente, e Cuoco e Apprendista si sbizzarriscono...
.... void main(){ Cuoco Mario; Apprendista Antonio; Mario.Pasta("ragu'"); Antonio.Pasta("burro"); }
Io cucino la pasta con ragu' Io cucino la pasta con burro
..... void main(){ Cuoco Mario; Apprendista Antonio; Mario.Pasta("fagioli"); Antonio.Pasta("ceci"); }
Io cucino la pasta con fagioli Io cucino la pasta con ceciIl codice di Apprendista è scritto senza alcun metodo, perché, essendo un discepolo del Cuoco, è OVVIO che sappia fare quello che faccia il Cuoco, e quindi il metodo è implicito in quanto ereditato da Cuoco.
Ma i giovani portano sempre qualche innovazione.
E così l'Apprendista impara a cucinare anche la Pasta con DUE ingredienti!
#include "iostream" using namespace std; class Cuoco{ public: void Pasta(char * condimento){ cout << "Io cucino la pasta con " << condimento << endl; getchar(); } }; class Apprendista: public Cuoco{ public: void Pasta(char * condimento, char * condimento2){ cout << "Io cucino la pasta con " << condimento << " e con " << condimento2 << endl; getchar(); } }; void main(){ Cuoco Mario; Apprendista Antonio; Mario.Pasta("fagioli"); Antonio.Pasta("sugo", "piselli"); }
Io cucino la pasta con fagioli Io cucino la pasta con sugo e con piselli
void main(){ Cuoco Mario; Apprendista Antonio; Mario.Pasta("sugo"); Antonio.Pasta("aglio", "olio"); }
Io cucino la pasta con sugo Io cucino la pasta con aglio e con olio
Un giorno il Cuoco non c'è, e lascia la cucina all'Apprendista, che è molto apprezzato dalla clientela perché diversamente dal suo maestro sa fare anche la pasta con due ingredienti anziché con uno.
Però arriva un vecchio cliente, molto abitudinario, il signor Giuseppe, il quale non ama le novità e chiede all'Apprendista un semplice piatto di Pasta col sugo, come era soliti cucinargli il bravo Cuoco maestro.
L'Apprendista ci prova, ma...
..... void main(){ Apprendista Antonio; Antonio.Pasta("sugo"); }
1>------ Inizio compilazione: Progetto: test15, Configurazione: Debug Win32 ------ 1> foglio1.cpp 1>c:\users\antonello\documents\visual studio 2010\projects\test15\test15\foglio1.cpp(23): error C2660: 'Apprendista::Pasta': la funzione non accetta 1 argomenti ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========L'APPRENDISTA HA SCOPERTO CHE NON E' PIU' IN GRADO DI FARE LA PASTA CON UN SOLO INGREDIENTE!!!
Da quando egli ha elaborato il modo di fare la pasta con due ingredienti, non è più in grado di farla con un ingrediente solo!!!
L'eredità del maestro si è volatilizzata!!!
Allora bisogna apportare questa modifica alla classe Apprendista:
class Apprendista: public Cuoco{ public: void Pasta(char * condimento){ Cuoco::Pasta(condimento); } void Pasta(char * condimento, char * condimento2){ cout << "Io cucino la pasta con " << condimento << " e con " << condimento2 << endl; getchar(); } };E adesso il giovine Apprendista sarà in grado di accontentare l'abitudinario cliente refrattario alle novità:
Io cucino la pasta con sugo
Nessun commento:
Posta un commento