تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ parisa mohamadi
تفاوت تجرید و کپسوله سازی
جامعه فلاتر ایجاد شده در ۲۹ شهریور ۱۴۰۰

سلام و وقت بخیر،توی اموزش میگید تجرید ینی پنهان کردن  جزئیات  و فقط کار کردن با کلاس، ولی توی کپسوله میگید به هر کس در حد نیازش اطلاعات بده ،اینا که قاطی شد با هم!!  و اینکه چطور توی تجرید وقتی از داخل کلاس خبر نداری  استفاده  میکنی، بالاخره کلاس اول باید نوشته بشه بعد بتونی استفاده کنی اینطور نیس مگه؟

سلام وقت بخیر

برای انتزاع یا تجرید Abstraction یک مثال میزنم تا درکش کنید هر چند استاد هم مثال قشنگی با ماشین زدن. ببینید گوشی که توی دستتون هست پیچیدگی‌های خیلی زیادی داره و شما نیاز نیست از اون پیچیدگی‌ها اطلاعی داشته باشین تا بتونین ازش استفاده کنید صرفا به شما یکسری user interface هایی داده شده تا بتونید از اون سخت افزار استفاده کنید مثل دکمه power یا volum up و volume down و غیره که شما نیاز نیست بدونید داخل سخت افزار و سیستم عامل چه اتفاقاتی میوفته هدف شما صرفا خاموش و روشن کردن یا کم و زیاد کردن صدا هست که با این کار به هدف خودتون میرسین’.. توی برنامه نویسی هم مثلا شما میخواید با دیتابیس یا یک Api ارتباط برقرار کنید و یکسری عملیات انجام بدین این کلاس نیاز نداره از جزئیات این کار خبر داشته باشه مثلا نیاز نیست بدونه دیتابیس بچ جه شکلی پیاده سازی شده یا برای فرستادن درخواست سمت سرور از چه تکنولوژی استفاده شده برای همین ما یک واسطه یا قرارداد بین این کلاس و اون سرویس‌ها مینویسیم و صرفا اون عملیات هایی که کلاس میتونانجام بده ه رو توش تعریف میکنیم. این قرارداد باید توسط یک کلاس پیاده سازی بشه تا بشه ازش استفاده کرد و ما از جزئیات این کلاس خبر نداریم.

Encapsulation هم بصورت خیلی ساده و قابل درک یعنی اینکه ما یک دروازه ورودی و خروجی برای property‌ها یا Instance variable‌ها ایجاد کنیم و این کار باعث میشه از بیرون این کلاس نشه بصورت مستقیم به این Property‌ها یا Instance variable‌ها دسترسی داشت و برای دریافت یا ذخیره یک مقدار در آنها باید از این دروازه‌های ورودی و خروجی استفاده کرد که در واقع یک Method هستند و این کار باعث میشه بتونیم کنترل بیشتری روی چیزی که در Instance variable‌ها ذخیره میشه داشته باشیم یا چیزی که به کاربر داده میشه و همچنین این کار باعث میشه تغییر مقدار روی Instance variable‌ها تنها یک جا و داخل همون کلاس اتفاق بیوفته و دیگه نیازی نیست در سایر کلاس‌ها تغییراتی اعمال بشه به عنوان مثال داخل یک Instance variable قیمت یک کالا با واحد ریال ذخیره شده و برای تغییر آن به تومان در کل جاهایی که در اپلیکیشن استفاده شده و در صورت استفاده از Encapsulation صرفا خود کلاس یکسری تغییرات نیاز داره و در صورت استفاده نکردن کل جاهایی که از این Instance variable استفاده شده باید تغییرات رو اعمال کنید.

در نهایت شاید توضیحات منو متوجه نشین که طبیعی هست و هنوز استاد جلسات مربوط به این مفاهیم رو تدریس نکردن که بعد از تدریس این مفاهیم میتونید مجدد به این تاپیک برگردین و متوجه این موضوع بشین

میلاد عزیززاده ۳۰ شهریور ۱۴۰۰، ۰۵:۲۲

شاید در این لینک بهتر مفهوم Abstract رو متوجه بشید.

https://ditty.ir/posts/oop-abstraction/JQjA5

آقای سلطانی ۳۱ شهریور ۱۴۰۰، ۱۰:۱۸