Я начинаю изучать OOAD, и мне трудно найти пример кода C++
, который иллюстрирует, как Association
, Aggregation
и Composition
реализованы программно. (Есть несколько сообщений повсюду, но они относятся к С# или java). Я нашел пример или два, но все они противоречат инструкциям моего инструктора, и я смущен.
Я понимаю, что в:
- Ассоциация: Foo имеет указатель на объект Bar в качестве члена данных
- Агрегация: Foo имеет указатель на объект Bar, и данные Bar глубоко копируются в этом указателе.
- Состав: Foo имеет объект Bar в качестве элемента данных.
И вот как я его реализовал:
//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;
}
};
Это правильно? Если нет, то как это сделать? Было бы также полезно, если бы вы также дали мне ссылку на код из книги (чтобы я мог обсудить с моим инструктором)