Salve a tutti. Spero che qualcuno mi possa chiarire tutto, anche perchè non so più dove sbattere la testa . Ho il seguente esercizio:
" Siano date due classi per la gestione di un ente pubblico . Le classi sono: 1) Settore : nome , numero,ecc 2) classe Ufficio derivata pubblica da Settore con i seguenti dati: nome ufficio,numero impiegati ,metodi di accesso ai dati,ecc. (Parte che non ho capito) "Sviluppare un main in cui vi sia un'opportuna struttura dati Ente ( lista) degli elementi trattati che contiene tutte le informazioni sui relativi settori e uffici . Si organizzi un menu che : 1) permetta inserimento dati settore e ufficio ; 2) Visualizza uffici,il relativo settore ..bla bla.
Ora, so di creare queste due classi ; ma non so come collegare la lista a queste classi! So creare una lista ,ma non ho idea di come inserire dati provenienti dalle classi E' fattibile ,anzi , ha senso, considerare le due classi Settore e Ufficio come nodi? Il fatto è che la struttura deve unire i dati di entrambi le classi,quindi dovrei creare ogni nodo con tutte le informazioni delle due classi..ma come si fa?
EDIT:
Ho provato a farlo, non so se è la maniera più corretta:
//
// main.cpp
#include <iostream>
using namespace std;
/*struct Nodo { // quello che volevo aggiungere all'inizio solo che non l'ho incluso . Mi conveniva usare questo ? Solo che così facendo, non aveva senso dichiarare tutte quelle variabili nelle due classi ( visto che poi li avrei dovuto copiare qui )
int numReparti;
string Nome;
int numImpiegati;
int numPratiche;
Nodo * succ;
};*/
class Settore {
public:
int numReparti;
string codSector;
Settore (){
numReparti = 0;
codSector ="";
}
void pova();
};
void Settore::pova() {
}
class Ufficio: public Settore
{
public:
string Nome;
int numImpiegati;
int numPratiche;
Ufficio*head;
Ufficio*succ;
Ufficio() {
head = NULL;
Nome ="";
numImpiegati=0 ,numPratiche =0;
}
void InseriscidatisuLista(string sector,int ni , int numpr,string uff);
void visualizzaUfficiConCondizione();
void visualizzaUfficioPerSettore(string Settore);
};
void Ufficio::visualizzaUfficiConCondizione() {
if (head==NULL) {
cout <<"lista vuota";
}else
{
Ufficio*alias = head;
cout << "-----Funzione pratiche assegnate----"<< endl ;
while (alias!=NULL ) {
if ((alias->numPratiche)*3 >numImpiegati) {
cout <<"Settore: " << alias->Nome<<"| | Ufficio: " << alias->Nome << endl ;
}
alias = alias->succ;
}
}
}
void Ufficio::visualizzaUfficioPerSettore(string Settore) {
if (head==NULL) {
cout <<"lista vuota";
}else
{
Ufficio*alias = head;
cout << "-----Funzione visualizza ufficio perSettore----"<< endl ;
while (alias!=NULL ) {
if (alias->codSector==Settore) {
cout <<"Ufficio: " << alias->Nome << endl ;
}
alias = alias->succ;
}
}
}
void Ufficio::InseriscidatisuLista(string sector,int ni , int numpr,string uff){
if (head==NULL) {
this->head= new Ufficio;
this->head->codSector = sector;
this->head->numImpiegati = ni;
this->head->numPratiche = numpr;
this->head->Nome = uff;
}else
{
Ufficio* alias = new Ufficio;
alias->codSector = sector;
alias->numImpiegati = ni;
alias->numPratiche = numpr;
alias->Nome = uff;
alias->succ = head;
head = alias;
}
}
int main(int argc, const char * argv[]) {
Ufficio uff ;
uff.InseriscidatisuLista("B",44,22,"02");
uff.InseriscidatisuLista("A",44,22,"01");
uff.InseriscidatisuLista("A",434,22,"023");
uff.InseriscidatisuLista("B",443,2423,"12");
uff.InseriscidatisuLista("A",44,22,"02");
uff.InseriscidatisuLista("D",44,223,"21");
uff.InseriscidatisuLista("A",434,224,"123");
uff.InseriscidatisuLista("A",443,22,"1692");
uff.visualizzaUfficioPerSettore("A");
uff.visualizzaUfficiConCondizione();
return 0;
}