کامپوزیشن (Composition)
کامپوزیشن یعنی «داشتن یک شیء» داخل شیء دیگر به جای ارثبری. به جای اینکه یک کلاس از کلاس دیگری ارث ببرد، شیءها به صورت ترکیبی ساخته میشوند و یک کلاس شامل نمونههایی از کلاسهای دیگر است.
توضیح ساختار کامپوزیشن
در کامپوزیشن، یک کلاس جدید ویژگیهای خود را از طریق داشتن اشیاء دیگر به دست میآورد. یعنی به جای ارثبری، کلاس جدید شامل نمونههایی از کلاسهای دیگر است و با آنها تعامل میکند.
مثلاً کلاس Car
به جای ارثبری از کلاس Wheel
، دارای چند نمونه Wheel
است.
مزایا و اهمیت کامپوزیشن
- انعطافپذیری بیشتر: میتوان اشیاء مختلف را به صورت ترکیبی کنار هم قرار داد و قابلیتها را بدون تغییر در وراثت، مدیریت کرد.
- کاهش وابستگی و پیچیدگی: نسبت به وراثت سلسلهمراتبی پیچیده سادهتر است و مشکلات وراثت چندگانه را ندارد.
- توسعهپذیری بهتر: افزودن یا تغییر اجزا آسانتر است بدون اینکه ساختار کلی را تحت تاثیر قرار دهد.
- کپسولهسازی بهتر: هر شیء مسئول عملکرد خودش است و مستقل نگه داشته میشود.
مثال ساده کامپوزیشن در پایتون
class Engine:
def start(self):
print("Engine started")
class Car:
def __init__(self):
self.engine = Engine() # Car has an Engine
def start(self):
self.engine.start() # استفاده از متد Engine از طریق کامپوزیشن
my_car = Car()
my_car.start() # خروجی: Engine started