Back to questions
Junior — Middle
83
В чем различие между использованием композиции и агрегации при проектировании классов и объектов?
Answer from AI
sobes.tech AI
Композиция и агрегация — это два типа отношений между объектами в объектно-ориентированном проектировании.
-
Композиция — это отношение "часть-целое", где часть не может существовать без целого. Если объект-целое уничтожается, то и его части тоже уничтожаются. Пример: класс
Автомобильи классДвигатель. Двигатель существует только внутри автомобиля. -
Агрегация — более слабая связь, где часть может существовать независимо от целого. Например, класс
Класси классСтудент. Студент может существовать без конкретного класса.
Пример на Python:
class Engine:
pass
class Car:
def __init__(self):
self.engine = Engine() # композиция
class Student:
pass
class SchoolClass:
def __init__(self, students):
self.students = students # агрегация
s1 = Student()
s2 = Student()
class1 = SchoolClass([s1, s2])
Здесь Engine создаётся внутри Car и не существует отдельно, а Student создаётся отдельно и передаётся в SchoolClass.