امکانش هست یک مثال ساده از اصل abstraction بیان کنید کمی واسم مبهمه. با تشکر
سلام و احترام
فرض کنید شما میخواید به چندین روش نوتیفیکشن توی اپلیکیشنتون ارسال کنید مثل sms, email, whatsapp, telegram و..
فکر میکنید چی بین تمامی این نوتیفیکیشنها مشترکه؟
متد send بین تمامی این موارد مشترکه چون ما مطمئنیم که قراره یه پیامی رو ارسال کنن، ما میایم این مورد رو یه قرار داد میکنیم ینی اینکه ما میگیم هر کسی که میخواد بیاد وظیفه ارسال نوتیفیکین رو داشته باشد باید داخل خودش یه متد send داشته باشه تا نوتیفیکشن خودشو به روش خودش ارسال کنه و من کاری ندارم دقیقا روش اون چی میخواد باشه، برای من مهمه که یه نوتیفیکشین ارسال بشه
قطعا روشی که ما با sms اسال میکنیم با email متفاوته پس این متد رو همون طور که بهتون گفتم یه قرارداد میکنیم بین همه کلاسهای نوتیفیکشن تا هر کدومشون داخل کلاس خودشو به روش خودشون این متد رو پیاده سازی کنن
امیر صالحی۰۷ فروردین ۱۴۰۰، ۱۹:۲۵
با سلام
در تکمیل صحبتهای جناب صالحی؛ من یک مثال از دنیای واقعی براتون میزنم که بهتر درک کنید موضوع رو.
همه ما شنیدیم که میگن به دیگران خوبی کنید.
خوب این خوبی کردن میتونه به چندین روش انجام بشه
ی نفر دست یک شخص میان سال رو میگیره از خیابون رد میکنه
ی نفر برای بچههای یک خانواده کم بضاعت تبلت میخره
ی نفر هم کیف پولی رو که پیدا میکنه به صاحبش برمیگردونه
تو این مثال ها؛ هر 3 نفر دارن خوبی میکنن ولی به روشهای مختلف.
و حالا باتوجه به صحبت جناب صالحی؛ ما میایم این خوبی کردن رو یک قرار داد میکنیم
و حالا هرکسی به هر روشی که خواست اینکار رو انجام بده.
amir tavakolian۰۷ فروردین ۱۴۰۰، ۱۹:۵۴
ممنون از پاسختون
یعنی از اصل انتزاع صرفا برای وضع یه سری قانون استفاده میشه؟
Abstraction is one of the key concepts of object-oriented programming (OOP) languages. Its main goal is to handle complexity by hiding unnecessary details from the user.
طبق متن بالا هدف از انتزاع اینکه جزئیات غیر ضروری رو مخفی سازی کنیم که این یه جورایی به اصل کپسوله سازی هم مربوط میشه.
و طبق گفته شما یک متد داریم که به شکلهای مختلفی پیاده سازی میشه تا اینجا که میشه همون polymorphism و میاییم این متد رو یه قرارداد میکنیم بین همه کلاس هایی که از یک نوع هستند تا هر کدومشون به روش خودشون این متد رو پیاده سازی کنن
طبق متن پایین انتزاع به جلوگیری از نوشتن کد تکراری هم کمک میکنه و غیر منطقی هم نیست!
Abstraction also helps with the Don't Repeat Yourself principle. By taking what a group of objects have in common and abstracting it, we can help prevent redundant code in each object which in turn creates more maintainable code.
و من هنوز نتونسم به یک جمع بندی درست از اصل Abstraction برسم!