Отношения между классами:
Агрегация
Емельянов В.А.: Объектно-ориентированное программирование
Агрегация также предполагает отношение HAS A, но
реализуется она иначе:
UML
public abstract class Engine
{ }
public class Car
{
Engine autoEngine;
public Car(Engine engine1)
{
autoEngine = engine1;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
C#
При агрегации реализуется слабая связь, то есть в данном случае объекты Car и Engine будут равноправны. В конструктор Car() передается ссылка на уже имеющийся объект Engine. И, как правило, определяется ссылка не на конкретный класс, а на абстрактный класс или интерфейс, что увеличивает гибкость программы.