class Engine:
def start(self): return "موتور روشن شد."
class Car: # ماشین «یک موتور دارد» — ترکیب
def __init__(self, engine=None):
self.engine = engine or Engine()
def start(self):
return self.engine.start() + " ماشین آماده است."
ترکیب سه برتری دارد: (۱) رفتار را در زمان اجرا میشود عوض کرد (موتور برقی بده)، (۲) سلسلهمراتب عمیق و شکننده نمیسازد، (۳) تست با موتورِ بدلی ساده است (تزریق وابستگی از همینجا میآید). وراثت را برای «هستِ» واقعی و پایدار نگه دار (سگ یک حیوان است و همیشه خواهد بود).