🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ علی
درمورد مفهوم abstraction
جامعه پی اچ پی ایجاد شده در ۰۷ فروردین ۱۴۰۰

سلام 

 

امکانش هست یک مثال ساده از اصل 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 برسم!

علی ۰۸ فروردین ۱۴۰۰، ۱۳:۰۹