بخشی از پاورپوینت

اسلاید 1 :

برنامه سازی پیشرفته (برنامه نویسی شیءگرا: مفاهیم بیشتر)

اسلاید 2 :

یاد آوری ..

اسلاید 3 :

Operator Overloading
باز تعریف عملگرها و متدهای درون-ساخت پایتون برای انواع داده جدید
تابحال با یک نمونه بازتعریف آشنا شدیم:
برای استفاده از تابع درون-ساخت print، از متد __str__ استفاده کردیم.

اسلاید 4 :

Operator Overloading
سوال: خروجی کد زیر چیست؟
سوال: چگونه می توان از عملگر + برای افزودن دو زمان به یکدیگر استفاده کرد؟
باید عملگر + را overload کنیم. یعنی معنی جدیدی برای آن تعریف کنیم.

اسلاید 5 :

پایتون برای هر یک از عملگرهای درون ساخت، متدهای خاصی تحت عنوان متدهای جادویی (Magic Methods) را تعریف کرده است. این متدها دارای نام مشخص بوده و در ابتدا و انتهای نام آنها از __ استفاده شده است.

اسلاید 6 :

بنابراین، برای افزودن قابلیت جمع دو ساعت، باید متد جادویی __add__ را در کلاس MyTime بازتعریف (Overload) کنیم.

اسلاید 9 :

تمرین

کلاس Point را به گونه ای بازنویسی کنید که امکان مقایسه نقاط (از نظر فاصله تا مرکز)، جمع و تفریق دو نقطه و ضرب یک نقطه در یک عدد ثابت وجود داشته باشد.
کلاس مستطیل را به گونه ای بازنویسی کنید که امکان مقایسه دو مستطیل از نظر اندازه وجود داشته باشد.
متد جادویی __del__ در کلاس Ball را به گونه ای بازنویسی کنید که توپ ها در زمان برخورد به یکدیگر منفجر شده و حذف گردند.
با استفاده از متد __add__، کلاس Ball را به گونه ای بازنویسی کنید که در زمان برخورد توپ ها با یکدیگر، توپ بزرگتر، توپ کوچکتر را بلعیده و اندازه آن افزایش پیدا کند.

اسلاید 10 :

کپسوله سازی (Encapsulation)

این متد تنها درون کلاس مورد استفاده قرار می گیرد (متد کمکی برای سایر متدها). چگونه می توان آن را مخفی کرد؟
چگونه می توان مقداردهی به ویژگی های کلاس را کنترل کرد؟

اسلاید 11 :

کپسوله سازی: مخفی کردن پیچیدگی های غیرضروری

کپسوله سازی (Encapsulation)
کپسوله سازی در نوع داده لب تاپ: کاربر نیازی به دیدن و دسترسی به حافظه، پردازنده و . ندارد بنابراین، در محصول نهایی، این قطعات نباید به شکل فیزیکی دیده شوند. حتی بخش هایی که مشتری نیاز به دسترسی به آنها دارد نیز از طریق واسط ها انجام می شوند. به عنوان مثال، کاربر نیاز دارد تا ورودی را بر روی بافرهای ورودی قرار دهد. ولی کاربر دسترسی مستقیم به بافرها ندارد و این عمل از طریق واسطی به نام کیبورد انجام می شود.
کپسوله سازی در نوع داده ماشین: کاربر نیازی به دیدن و دسترسی به گیربکس، تسمه تایم، انژکتور و . ندارد بنابراین، در محصول نهایی، این قطعات نباید به شکل فیزیکی دیده شوند. اگرچه کاربر نیاز به تغییر جهت حرکت چرخ ها دارد، ولی این دسترسی از طریق واسطی به نام فرمان انجام می شود.

اسلاید 12 :

کپسوله سازی در طراحی کلاس ها:

کپسوله سازی (Encapsulation)

1- متدهایی که خارج از کلاس استفاده نمی شوند (مانند متد seconds_to_time()) را با قرار دادن __ در ابتدای نام آنها، مخفی کن

2- صفاتی که دسترسی مستقیم به آنها از طریق اشیاء می تواند مشکل ساز باشد (مانند دقیقه ها و ثانیه ها در ساعت) را با قرار دادن __ در ابتدای نام آنها مخفی کرده و سپس یک متد setter و یک متد getter جهت دسترسی و دستکاری آنها ایجاد کن.

اسلاید 13 :

کپسوله سازی در کلاس MyTime

کپسوله سازی (Encapsulation)

1- متد seconds_to_time یک متد کمکی است و بنابراین، بهتر است آن را به صورت زیر تعریف کنیم:

اسلاید 14 :

2- ویژگی hours نمی تواند مقداری منفی دریافت کند. بنابراین، بهتر است این ویژگی را مخفی کرده (نام آن را __hours قرار دهیم ) و برای آن یک setter و یک getter تعریف کنیم:

اسلاید 15 :

3- ویژگی های minutes و seconds نمی توانند مقداری خارج از [0,60) دریافت کنند. بنابراین، بهتر است این ویژگی ها را نیز مخفی کرده و برای آنها setter و getter تعریف کنیم:

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید