Sobes.tech
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.