Compito per casa assegnato il 06/10/2014 con consegna per il 08/10/2014
Esercizio su classi, ereditarietà, metodi
e proprietà:
Creare una classe "Padre"
Persona dalla quale ereditare due classi "Figlio" Studente e
Dipendente.
La classe "Padre" deve contenere un metodo
per l’inserimento, uno per la visualizzazione dei dati e uno per l’aggiornamento
di uno o più campi inseriti.
Il programmatore dovrà decidere i criteri public,protected o
private da assegnare al modificatore.
#include <iostream>
using namespace std;
class Persona{
public:
Persona();
void inserisciPersona()
{
cout<<"Inserisci il Nome: "<<endl;
cin>>nome;
cout<<"Inserisci il Cognome: "<<endl;
cin>>cognome;
cout<<"Inserisci la Data di Nascita: "<<endl;
cin>>dataNascita;
cout<<"Inserisci la Citta': "<<endl;
cin>>citta;
}
void visualizzaPersona()
{
cout<<"Nome: "<<nome<<endl;
cout<<"Cognome: "<<cognome<<endl;
cout<<"Data di Nascita: "<<dataNascita<<endl;
cout<<"Citta': "<<citta<<endl;
};
void aggiornaPersona()
{
char menu;
do
{
cout<<"Quale campo vuoi modificare? 1)Nome 2)Cognome 3)Data di Nascita 4)Citta"<<endl;
cin>>menu;
switch(menu)
{
case '1': cout<<"Inserisci il Nome: "<<endl;
cin>>nome;
break;
case '2': cout<<"Inserisci il Cognome: "<<endl;
cin>>cognome;
break;
case '3': cout<<"Inserisci la Data di Nascita: "<<endl;
cin>>dataNascita;
break;
case '4': cout<<"Inserisci la Citta': "<<endl;
cin>>citta;
break;
default: cout<<"Scelta non valida"<<endl;
}
}while((menu<'1')||(menu>'4'));
};
protected:
char nome[15];
char cognome[15];
char dataNascita[11];
char citta[15];
};
Persona::Persona()
{
char nome[15];
char cognome[15];
char dataNascita[11];
char citta[15];
}
class Studente : public Persona {
public:
Studente();
void inserisciStudente()
{
cout<<"Inserisci la classe dello studente: "<<endl;
cin>>classe;
cout<<"Inserisci la sezione dello studente: "<<endl;
cin>>sezione;
cout<<"Inserisci l'indirizzo di studi dello studente: "<<endl;
cin>>indirizzo;
}
void aggiornaStudente();
void visualizzaStudente()
{
visualizzaPersona();
cout<<"Classe: "<<classe<<endl;
cout<<"Sezione: "<<sezione<<endl;
cout<<"Indirizzo: "<<indirizzo<<endl;
};
protected:
char classe[10];
char sezione[2];
char indirizzo[15];
};
void Studente::aggiornaStudente()
{
char scelt;
char menu;
do{
cout<<"Quale parte vuoi modificare? 1)persona 2)studente"<<endl;
cin>>scelt;
switch(scelt)
{
case '1': aggiornaPersona();
break;
case '2':
do{
cout<<"Quale campo vuoi modificare? 1)Classe 2)Sezione 3)Indirizzo"<<endl;
cin>>menu;
switch(menu)
{
case '1': cout<<"Inserisci la classe dello studente: "<<endl;
cin>>classe;
break;
case '2': cout<<"Inserisci la sezione dello studente: "<<endl;
cin>>sezione;
break;
case '3': cout<<"Inserisci l'indirizzo di studi dello studente: "<<endl;
cin>>indirizzo;
break;
default: cout<<"Scelta non valida"<<endl;
};
}while((menu<'1')||(menu>'3'));
break;
default: cout<<"Scelta non valida!"<<endl;
}
}while((scelt<'1')||(scelt>'2'));
}
Studente::Studente()
{
char classe[10];
char sezione[2];
char indirizzo[15];
}
class Dipendente : public Persona {
public:
Dipendente();
void inserisciDipendente()
{
cout<<"Inserisci la mansione del dipendente: "<<endl;
cin>>mansione;
cout<<"Inserisci lo stipendio del dipendente: "<<endl;
cin>>stipendio;
}
void aggiornaDipendente();
void visualizzaDipendente()
{
visualizzaPersona();
cout<<"Mansione: "<<mansione<<endl;
cout<<"Stipendio: "<<stipendio<<endl;
};
protected:
char mansione[15];
char stipendio[6];
};
void Dipendente::aggiornaDipendente() {
char scelt;
char menu;
do{
cout<<"Quale parte vuoi modificare? 1)persona 2)dipendente"<<endl;
cin>>scelt;
switch(scelt)
{
case '1': aggiornaPersona();
break;
case '2':
do{
cout<<"Quale campo vuoi modificare? 1)Mansione 2)Stipendio"<<endl;
cin>>menu;
switch(menu)
{
case '1': cout<<"Inserisci la mansione del dipendente: "<<endl;
cin>>mansione;
break;
case '2': cout<<"Inserisci lo stipendio del dipendente: "<<endl;
cin>>stipendio;
break;
default: cout<<"Scelta non valida"<<endl;
};
}while((menu!='1')&&(menu!='2'));
break;
default: cout<<"Scelta non valida!"<<endl;
};
}while((scelt<'1')||(scelt>'2'));
}
Dipendente::Dipendente()
{
char mansione[15];
char stipendio[6];
}
main()
{
int menu;
char scelta1;
cout << "Esercizio 06/10/2014";
cout << endl << endl;
Persona prova;
Studente prova2;
Dipendente prova3;
do{
cout << "Che tipo di oggetto usi? 1)Persona 2)Studente 3)Dipendente"<<endl;
cin>>menu;
if((menu<1)||(menu>3))
cout<<"Scelta non valida!"<<endl;
}while((menu<1)||(menu>3));
if(menu==1)
{
prova.inserisciPersona();
do{
cout << "Vuoi visualizzare i dati inseriti? s/n"<<endl;
cin >> scelta1;
}while((scelta1!='s')&&(scelta1!='n'));
if(scelta1=='s')
prova.visualizzaPersona();
do{
cout << "Vuoi aggiornare i dati inseriti? s/n"<<endl;
cin >> scelta1;
}while((scelta1!='s')&&(scelta1!='n'));
if(scelta1=='s')
prova.aggiornaPersona();
cout<<endl<<endl;
prova.visualizzaPersona();
}
else
if(menu==2)
{
prova2.inserisciPersona();
prova2.inserisciStudente();
do{
cout << "Vuoi visualizzare i dati inseriti? s/n"<<endl;
cin >> scelta1;
}while((scelta1!='s')&&(scelta1!='n'));
if(scelta1=='s')
prova2.visualizzaStudente();
do{
cout << "Vuoi aggiornare i dati inseriti? s/n"<<endl;
cin >> scelta1;
}while((scelta1!='s')&&(scelta1!='n'));
if(scelta1=='s')
prova2.aggiornaStudente();
cout<<endl<<endl;
prova2.visualizzaStudente();
}
else
if(menu==3)
{
prova3.inserisciPersona();
prova3.inserisciDipendente();
do{
cout << "Vuoi visualizzare i dati inseriti? s/n"<<endl;
cin >> scelta1;
}while((scelta1!='s')&&(scelta1!='n'));
if(scelta1=='s')
{
prova3.visualizzaDipendente();
do{
cout << "Vuoi aggiornare i dati inseriti? s/n"<<endl;
cin >> scelta1;
}while((scelta1!='s')&&(scelta1!='n'));
if(scelta1=='s')
prova3.aggiornaDipendente();
cout<<endl<<endl;
prova3.visualizzaDipendente();
}
}
return 0;
}
Lavoro di gruppo sviluppato con Mattia Callegaro