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