Lezione XI Laboratorio di Programmazione
Ereditarieta Fondamentale proprieta dei linguaggi OO. Permette di specificare un nuova classe derivata da unaltra. Classe A Classe B B e sottoclasse di A A e superclasse di B B aggiunge i propri metodi e attributi a quelli di A. Sintassi: class B: public A;
Ereditarieta Ad esempio: CPoligono CRettangoloCTriangolo class CRettangolo : public CPoligono; class CTirangolo : public CPoligono; int base,altezza; Metodo area diverso!
Public, private e protected Classe A Classe B public: int x; private: int y; protected: int z; Classe C La keyword protected si comporta come public anche per le sottoclassi, mentre con le altre si comporta come private. (utile per accedere ad attributi della superclasse) C vede solo A.x B vede A.x e A.z
Esempio class CPoligono { protected: int base,altezza; public: void valori (int a, int b); }; class CRettangolo: public CPoligono { public: int area (void) { return (base * altezza); } }; class CTriangolo: public CPoligono { public: int area (void) { return (base * altezza / 2); } };
Ereditarieta multipla Permette di specificare un nuova classe che dispone di metodi ereditati contemporaneamente da piu classi. Classe AClasse B Sintassi: class C: public A, public B; Classe C
Ereditarieta multipla Sempre un esempio con i poligoni: RomboRettangolo Quadrato
Ereditarieta multipla CPoligono CRettangoloCTriangolo COutput class COutput { public: void output (int i); }; class CRettangolo: public CPoligono, public COutput {... }; In questo caso un oggetto X della classe CRettangolo avra a disposizione: X.area e X.output(...)
Esercizio Persona StudenteProfessore Corso Modellare le classi persona, professore, studente e corso. Scrivere un programma per la ricerca degli alunni che seguono il corso del prof x. Nome, cognome Matricola Corsi seguiti Ufficio Corso impartito