Junior — Middle
78
Zašto je pri projektovanju sistema poželjno koristiti kompoziciju umesto nasleđivanja?
Компаније где су питане
СБЕР Бизнес
Одговор од АИ
sobes.tech АИ
Композиция предпочтительнее наследования, потому что она обеспечивает большую гибкость и слабую связанность компонентов. При композиции объект содержит другие объекты и делегирует им задачи, вместо того чтобы наследовать поведение и данные от базового класса.
Преимущества композиции:
- Гибкость: можно динамически менять компоненты объекта во время выполнения.
- Избежание проблем с наследованием: нет жесткой иерархии, что снижает риск ошибок, связанных с множественным наследованием или изменением поведения базового класса.
- Повторное использование кода: компоненты можно использовать в разных классах без дублирования.
Пример композиции на Python:
class Engine:
def start(self):
print("Двигатель запущен")
class Car:
def __init__(self, engine):
self.engine = engine
def start(self):
self.engine.start()
print("Машина поехала")
engine = Engine()
car = Car(engine)
car.start()
Здесь Car использует Engine через композицию, а не наследует его. Это упрощает поддержку и расширение кода.