В ООП ассоциация и агрегация — это два разных типа связей между классами. Ассоциация — это широкая связь, где один класс использует или ссылается на другой. Агрегация — это специализированная форма ассоциации, которая представляет отношение «содержит», где один класс включает другой как составную часть.
Ассоциация показывает, как классы связаны между собой. В отношении один-ко-многим один класс может хранить несколько экземпляров другого:
public class Library
{
public List<Book> Books { get; set; }
public Library()
{
Books = new List<Book>();
}
}
public class Book
{
public string Title { get; set; }
}
Здесь класс Library хранит коллекцию объектов Book, демонстрируя ассоциацию один-ко-многим.
Агрегация показывает отношение «содержит», где один класс включает другой как свойство. Вложенный объект обычно передаётся через конструктор:
public class Car
{
public Engine CarEngine { get; set; }
public Car(Engine engine)
{
CarEngine = engine;
}
}
public class Engine
{
public string Model { get; set; }
}
В этом примере класс Car содержит объект Engine. Engine — это необходимый компонент Car, что наглядно иллюстрирует классическое отношение агрегации.
Оба вида связей реализуются через свойства класса и конструкторы. Главное различие — в степени зависимости: ассоциация представляет более слабую связь между классами, тогда как агрегация указывает на более тесное отношение «целое — часть».
При агрегации содержащийся объект не может существовать независимо от содержащего класса, тогда как при ассоциации оба класса остаются независимыми сущностями.
Новый — ещё не проверен сообществом
Вы