تفاوت تجرید و کپسوله سازی

پرسیده شده
فعالیت 939 روز پیش
دیده شده 483 بار
0

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

فایل پیوست

parisa mohamadi
parisa mohamadi

29 شهریور 00

1
حذف شده

سلام وقت بخیر

برای انتزاع یا تجرید 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 استفاده شده باید تغییرات رو اعمال کنید.

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

فایل پیوست

میلاد عزیززاده گلنگشی

توسط

میلاد عزیززاده گلنگشی

30 شهریور 00

1
حذف شده

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

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

فایل پیوست

آقای سلطانی

توسط

آقای سلطانی

31 شهریور 00

جلسه مفاهیم شی گرایی (Object Oriented Programming)