================================================== Luokkien väliseen yhteistyöhön liittyvät osat: ================================================== ================================================================================ jasen.h ================================================================================ class cJasen { // Jäsenluokka, jolle tulee vielä paljon ominaisuuksia int tunnus_nro; string nimi; string hetu; ... double maksu; string lisatietoja; static int seuraava_nro; public: cJasen() { alusta(); } void alusta(); void vastaa_aku_ankka(); void tulosta(ostream &os) const; int rekisteroi() { tunnus_nro = seuraava_nro; seuraava_nro++; return tunnus_nro;} int Tunnus_nro() const { return tunnus_nro; } }; ================================================================================ jasen.cpp ================================================================================ int cJasen::seuraava_nro = 1; ================================================================================ harrastu.h ================================================================================ class cHarrastus { int tunnus_nro; int viite_nro; string ala; int aloitusvuosi; int tuntia_viikossa; static int seuraava_nro; public: ... void vastaa_pitsin_nyplays(int nro) { viite_nro = nro; ala = "Pitsin nypläys"; aloitusvuosi = rand()%100+1900; tuntia_viikossa = rand()%60; } int Viite_nro() { return viite_nro; } int rekisteroi() { tunnus_nro = seuraava_nro; seuraava_nro++; return tunnus_nro;} int Tunnus_nro() const { return tunnus_nro; } }; ================================================================================ harsteet.h ================================================================================ class cHarrastukset { .... int kohdalla; ... cHarrastukset(const cHarrastukset &) {} void operator=(const cHarrastukset &) {} public: ... const cHarrastus *eka(int nro); const cHarrastus *seuraava(int nro); ... }; ================================================================================ harsteet.cpp ================================================================================ int cHarrastus::seuraava_nro = 1; const cHarrastus *cHarrastukset::seuraava(int nro) { int i; for (i=kohdalla+1; iViite_nro() == nro ) { kohdalla = i; return alkiot[i]; } } return NULL; } const cHarrastus *cHarrastukset::eka(int nro) { kohdalla = -1; return seuraava(nro); } ================================================================================ kerho.h ================================================================================ class cKerho { cJasenet jasenet; cHarrastukset harrastukset; void alusta() { } public: cKerho(int koko=0):jasenet(),harrastukset() { alusta(); } ~cKerho() { talleta(); } string lue_tiedostosta(const string &tied); string talleta() { return jasenet.talleta() + harrastukset.talleta(); } const string &Kerhon_nimi() const { return jasenet.Koko_nimi(); } int Jasenia() const { return jasenet.Lkm(); } // poista poistaa jäsenistöstä ja harrasteista ne joilla on nro - tekemättä! int poista(int nro) { return 0; } int TeeBak(const string &bak_tark) { return jasenet.TeeBak(bak_tark)+ harrastukset.TeeBak(bak_tark);} string Tiedoston_nimi() const { return jasenet.Tiedoston_nimi(); } string Bak_nimi() const { return jasenet.Bak_nimi(); } const cHarrastus *eka_harrastus(int nro) { return harrastukset.eka(nro); } const cHarrastus *seuraava_harrastus(int nro){ return harrastukset.seuraava(nro);} // const cJasen *eka_jasen(int nro) { return jasenet.eka(nro); } // const cJasen *seuraava_jasen(int nro) { return jasenet.seuraava(nro); } string lisaa(const cHarrastus &har) { return harrastukset.lisaa(har); } string lisaa(const cJasen &jasen) { return jasenet.lisaa(jasen); } const cJasen &anna_jasen(int i) const { return jasenet.anna(i); } }; ================================================================================ naytto.cpp ================================================================================ void cNaytto::tulosta(ostream &os,const cJasen &jasen) { const cHarrastus* har; int nro = jasen.Tunnus_nro(); jasen.tulosta(os); har = kerho->eka_harrastus(nro); while ( har ) { har->tulosta(os); har = kerho->seuraava_harrastus(nro); } } void cNaytto::kysy_tiedot(cJasen &jasen) { cHarrastus har; int nro = jasen.Tunnus_nro(); cout << "Toistaiseksi osaan lisätä vain Aku Ankan" << endl; jasen.vastaa_aku_ankka(); int lkm = rand()%5; for (int i=0; ilisaa(har)) ) break; } } void cNaytto::lisaa_uusi_jasen(char valinta) { cJasen jasen; otsikko(valinta,"Uuden jäsenen lisäys"); jasen.rekisteroi(); kysy_tiedot(jasen); cout << "Lisätäänkö" << endl; tulosta(cout,jasen); cout << ":"; int pois = 1; if ( kylla_vastaus() ) pois = ilmoitus(kerho->lisaa(jasen)); if ( pois ) kerho->poista(jasen.Tunnus_nro()); } void cNaytto::tulosteet(char valinta) { otsikko(valinta,"Tulosteet"); cout << "Toimii toistaiseksi vain näytölle\n" << endl; cout << "---------------------------------------------------------" << endl; for (int i=0; iJasenia(); i++) { const cJasen &jasen = kerho->anna_jasen(i); tulosta(cout,jasen); cout << endl; } cout << "---------------------------------------------------------" << endl; odota_jotakin(); }