Sto iniziando a studiare OOAD e ho difficoltà a trovare un esempio di codice C++
che illustra come Association
, Aggregation
e Composition
sono implementati a livello di programmazione. (Ci sono diversi post ovunque ma si riferiscono a C # o java). Ho trovato un esempio o due, ma sono tutti in conflitto con le istruzioni del mio istruttore e sono confuso.
La mia comprensione è questa in:
- Associazione: Foo ha un puntatore all'oggetto Bar come membro dati
- Aggregation: Foo ha un puntatore all'oggetto Bar e i dati di Bar sono copiati in profondità in quel puntatore.
- Composizione: Foo ha un oggetto Bar come membro dati.
Ed è così che l'ho implementato:
//ASSOCIATION
class Bar
{
Baz baz;
};
class Foo
{
Bar* bar;
void setBar(Bar* _bar)
{
bar=_bar;
}
};
//AGGREGATION
class Bar
{
Baz baz;
};
class Foo
{
Bar* bar;
void setBar(Bar* _bar)
{
bar = new Bar;
bar->baz=_bar->baz;
}
};
//COMPOSTION
class Bar
{
Baz baz;
};
class Foo
{
Bar bar;
Foo(Baz baz)
{
bar.baz=baz;
}
};
È corretto? Se no, allora come dovrebbe essere fatto invece? Sarebbe gradito se mi dessi anche un riferimento di un codice da un libro (in modo che io possa discutere con il mio istruttore)