علی بیات
5 سال پیش توسط علی بیات مطرح شد
2 پاسخ

وراثت یا کامپوزیشن... مسئله این است

قدم هایی که در راستای "برنامه نویس بهتری شدن" برداشته میشه; برای من، شما و یا هر شخص دیگه کم و بیش یکسان هستند.

ما شروع به یادگیری اصول اولیه می کنیم، بعدش به آرامی به سمت برنامه نویسی رویه ای حرکت می کنیم. و کم‌کم با مفهوم شئ گرایی آشنا میشیم و شروع میکنیم به کار کردن با کلاس ها و ساخت آبجکت ها.

وقتی احساس کنیم با اصول اولیه شئ گرایی آشنا هستیم، به سراغ کلاس های انتزاعی (Abstract) میریم و با اینترفیس ها کار می‌کنیم; و میتونیم روابط رو در کدهامون با استفاده از وراثت پیاده‌سازی کنیم. بعد برای نوشتن کدهای قابل توسعه و نگهداری، مجبوریم بریم سراغ قواعد سالید و با الگوهای طراحی هم آشنا بشیم.

در طول این مسیر مثال ها و سورس کدهای زیادی رو بررسی خواهیم کرد.. و نکته ای که ممکنه توجه ما رو جلب کنه اینه که: اون طور که باید به وراثت بها داده نشده; و اکثر برنامه نویس های با تجربه به جای وراثت از مفهومی به نام کامپوزیشن (Composition) استفاده می‌کنند. البته وراثت هم قطعا جایگاه خودش رو داره.

فرهنگ لغت به ما میگه که کلمه Composite یک فعله; که به عمل ساختن یا فرم دادن یک کل، از طریق ترکیب بخش‌ها یا المان‌های کوچکتر گفته میشه.

در علوم کامپیوتر کامپوزیشن، به پروسه ای گفته میشه که ما طی اون المان های مختلف برنامه رو برای ساخت یک آبجکت، ترکیب می‌کنیم. پس می‌تونیم بگیم: يک شئ هنگامی كه ويژگی های خاصی را مشخص می كنه، میتونه کامپوزيت بشه.


در این مقاله، مفهوم کامپوزیشن رو بررسی می‌کنیم و اشاره کوتاهی خواهیم داشت به الگوی طراحی استراتژی و پلی‌مورفیسم

لینک مقاله در وبلاگ

لینک مقاله در ویرگول

سوالات و نظراتتون رو میتونید داخل این گفتگو عنوان کنید.


ثبت پرسش جدید
mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
7

دو نوع رویکرد بالا به پایین وجود داره : composition و aggregation که هر دوتاشون کارشون فرم دادن یک کل، از طریق ترکیب بخش‌ها یا المان‌های کوچکتر هست.

توی کامپوزیشن وقتی عنصر والد از بین بره تمامی عنصر های کوچکتر از بین میرن و رابطه بین عناصر زیر مجموعه بدون عنصر والد امکانپذیر نیست. مثلا اگه منوهای یک سایت رو در نظر بگیرید اگه منوی وارد از بین بره زیر منو ها هم از بین میرن.

اما aggregation نوعی رویکرد بالا به پایین هست که توی اون عمر عناصر سطح پایینتر توسط عناصر سطح بالا مدیریت نمیشه. یعنی اگه عنصر والد از بین بره عنصر های کوچکتر همچنان میتونن به حیاط خودشون ادامه بدن. مثلا اجزای کامپیوتر مثل cpu و hard disk رو میشه در نظر گرفت که با از بین رفتن کامپیوتر این اجزا از بین نمیرن و میتونن به صورت مجزا مورد استفاده قرار بگیرن.

رابطه های دیگه هم مثل generalization(ارث بری) و association هم داریم که میتونید راجبش مطالعه کنید.


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
5

@khanzadimahdi

درود بر شما آقای خانزادی
اطلاعات خوب و کاملی رو به اشتراک گذاشتید
و تفاوت composition و aggregation رو به زیبایی توضیح دادید (من شخصا لذت بردم)

سپاس‌گذارم و سال نوی خوبی رو برای شما آرزو می‌کنم.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام