Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- class Persona {
- public:
- Persona() {
- //cout << "Costruttore vuoto della classe madre\n";
- }
- Persona(string _cognome, string _nome, int _anno_nascita, string _tessera_sanitaria)
- {
- cognome=_cognome;
- nome=_nome;
- anno_nascita= _anno_nascita;
- tessera_sanitaria = _tessera_sanitaria;
- }
- string get_cognome() {return cognome;}
- string get_nome() {return nome;}
- int get_anno_nascita() {return anno_nascita;}
- void set_cognome(string nuovo_cognome) {cognome=nuovo_cognome;}
- void set_nome(string nuovo_nome) {nome=nuovo_nome;}
- void set_anno_nascita(int nuovo_anno) {anno_nascita = nuovo_anno;}
- virtual string schedaAnagrafica() {
- string s = "SCHEDA ANAGRAFICA di " + cognome + " " + nome + "\n";
- s += string(45, '=') + "\n";
- s += "Nato nell'anno: " + to_string(anno_nascita) + "\n";
- s += "N. tessera sanitaria: " + tessera_sanitaria + "\n";
- return s;
- }
- protected:
- string cognome="";
- string nome="";
- int anno_nascita=0;
- string tessera_sanitaria="";
- };
- class Sportivo : public Persona {
- public:
- Sportivo(string _cognome, string _nome, int _anno_nascita)
- : Persona(_cognome, _nome, _anno_nascita, "")
- {
- }
- int get_battiti_a_riposo() {return battiti_a_riposo;}
- string get_data_ultima_visita() {return data_ultima_visita;}
- void set_battiti_a_riposo(int nuovi_battiti) {battiti_a_riposo=nuovi_battiti;}
- void set_data_ultima_visita(string data) {data_ultima_visita=data;}
- // string schedaAnagrafica() {
- // string s = Persona::schedaAnagrafica();
- //
- // s += "Battiti cardiaci al minuto a riposo: " + to_string(battiti_a_riposo) + "\n";
- // s += "Data ultima visita medica sportiva: " + data_ultima_visita + "\n";
- //
- // return s;
- // }
- string schedaAnagrafica() override {
- string s = "SCHEDA ANAGRAFICA di " + cognome + " " + Persona::nome + "\n";
- s += string(45, '=') + "\n";
- s += "Nato nell'anno: " + to_string(anno_nascita) + "\n";
- if (tessera_sanitaria!="")
- s += "N. tessera sanitaria: " + tessera_sanitaria + "\n";
- s += "Battiti cardiaci al minuto a riposo: " + to_string(battiti_a_riposo) + "\n";
- s += "Data ultima visita medica sportiva: " + data_ultima_visita + "\n";
- s+= "Detto... " + nome + "\n";
- return s;
- }
- private:
- int battiti_a_riposo = 0;
- string data_ultima_visita="";
- string nome="El Furia";
- };
- class Alunno : public Persona {
- public:
- Alunno(string _cognome, string _nome, int _anno_nascita, string _istituto)
- : Persona(_cognome, _nome, _anno_nascita, "")
- {
- istituto = _istituto;
- }
- string get_istituto() {return istituto;}
- void set_istituto(string _istituto) {istituto = _istituto;}
- string schedaAnagrafica() override {
- string s = Persona::schedaAnagrafica();
- s += "Frequentante l'istituto: " + istituto + "\n";
- return s;
- }
- private:
- string istituto="";
- };
- class Lavoratore : public Persona {
- public:
- Lavoratore(string _cognome, string _nome, int _anno_nascita, string _codice_fiscale)
- : Persona(_cognome, _nome, _anno_nascita, "")
- {
- codice_fiscale = _codice_fiscale;
- }
- string get_codice_fiscale() {return codice_fiscale;}
- void set_codice_fiscale(string _codice_fiscale) {codice_fiscale = _codice_fiscale;}
- string schedaAnagrafica() override {
- string s = Persona::schedaAnagrafica();
- s += "Codice Fiscale: " + codice_fiscale + "\n";
- return s;
- }
- private:
- string codice_fiscale="";
- };
- int main()
- {
- // Persona p1 = Persona("Rossi", "Mario", 1990, "CX3247-AS-2011C");
- // cout << p1.schedaAnagrafica() << endl;
- //
- // Sportivo sp1 = Sportivo("Verdi", "Sandro", 1987);
- // cout << sp1.schedaAnagrafica() << endl;
- //conformitá di tipo + late binding (dynamic binding)
- vector<Persona *>persone = vector<Persona *>();
- persone.push_back(new Alunno("Sandroni", "Sandro", 2006, "G. Romani"));
- persone.push_back(new Sportivo("Speedy", "Gonzales", 2000));
- persone.push_back(new Lavoratore("Fantozzi", "Ugo", 1950, "SONSFI50GAT123O"));
- for (int i=0; i<persone.size(); i++)
- cout << persone[i]->schedaAnagrafica();
- // Persona *p1 = ;
- // Persona *p2 = ;
- // Persona *p3 = ;
- //
- // cout << p1->schedaAnagrafica() << endl;
- // cout << p2->schedaAnagrafica() << endl;
- // cout << p3->schedaAnagrafica() << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement