mercoledì 7 novembre 2012

Usare Aggregazione

Gli oggetti di un gioco sono spesso combinazioni di altri oggetti. Per esempio in un gioco di gare, un auto da corsa può essere vista come la combinazione di singoli oggetti quali il corpo, le ruote, e un motore. Altre volte si può vedere un singolo oggetto come una collezione di oggetti correlati tra loro. La simulazione di un guardiano di zoo, si può vedere lo zoo come una collezione di un arbitrario numero di animali. Questo tipo di relazioni possono essere imitate tra gli oggetti mediante uso dell'aggregazione in OOP. Per esempio si può scrivere una classe Auto_Corsa, la quale ha un dato membro motore, il quale è un oggetto Motore. Oppure si può scrivere la classe Zoo che ha gli animali come membro dati, i quali sono una collezione di oggetti Animali.

Programma Fattoria di roditori

Il programma fattoria di roditori definisce un nuovo tipo di roditore dotato di nome. Dopo che il programma annuncia il nome del roditore, crea una fattoria di roditori – Una collezione di roditori. Infine il programma richiama tutta la fattoria ed ogni roditore si presenta con il nome. Seguito il codice del programma:
// Fattoria di roditori
// Dimostra contenitori di oggetti
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Roditore
{
    public:
                  Roditore(const string& nome = “”): m_Nome(nome){}
                  string DaiNome( ) const { return m_Nome; }
     private:
                 string m_Nome;
};
class Fattoria
{
   public:
               Fattoria(int spazi =1) { m_Roditori.reserve (spazi); }
               void Somma( const Roditore& aRoditore) { m_Roditori.push_back(aRoditore); }
               void Richiamo() const
                 { for (vector<Roditore>::const_iterator iter = m_Roditori.begin(); iter != m_Roditori.end(); ++iter)
          cout << iter -> DaiNome() << “ qui.\n”;
              }
   private:
               vector<Roditore> m_Roditori;
};

int main()
{
      Roditore ctopo(“Topolino”);
      cout << “Il mio nome e' ” << ctopo.DaiNome() << endl;
      cout << “Creiamo la fattoria” << endl;
      Fattoria miaFattoria(3)
      cout << “Aggiungi 3 topi alla fattoria.\n”;
      miaFattoria.Somma( Roditore(“Minni”));
      miaFattoria.Somma( Roditore(“Mortimer”));
      miaFattoria.Somma( Roditore(“Topps”));
      cout << “Appello\n”;
      miaFattoria.Richiamo();

   return 0;
}

Nessun commento:

Posta un commento