جلسه سی و یکم

شی گرایی

مثال 1: کلاسی برای مدیریت محصولات یک فروشگاه بنویسید.

مثال 2: کلاسی برای مدیریت یک کتابخانه بنویسید.

الگوی طراحی سینگلتون (Singleton)

در پایتون یک الگوی بسیار مهم و کاربردی است که ضمانت می کند در طول اجرای برنامه، تنها یک نمونه از یک کلاس خاص وجود داشته باشد

الگوی سینگلتون بسیار مفید است زمانی که نیاز به یک نمونه یگانه از یک کلاس در طول اجرای برنامه باشد، مانند مدیریت منابع مشترک، کنترل کننده های سیستم و غیره. این الگو به شما کمک می کند تا از ایجاد نسخه های اضافی جلوگیری کنید و به این ترتیب منابع سیستم را بهینه سازی کنید.

دکوراتورها (Decorators)

یک ویژگی قدرتمند و انعطاف پذیر هستند که به شما امکان می دهند کد را به طور موقت یا دائمی تغییر دهید. دکوراتورها می توانند به عنوان یک تابع یا یک کلاس تعریف شوند.

بطور خلاصه، دکوراتورها در پایتون به شما امکان می دهند:

1. تابع یا کلاس را قبل از اجرا تغییر دهید.

2. عملکرد جدیدی به تابع یا کلاس اضافه کنید.

3. تابع یا کلاس را بدون تغییر کد اصلی آن، بازنویسی کنید.

یک دکوراتور استاندارد در پایتون با استفاده از @ سمبل قبل از تابع یا کلاس تعریف می شود.

دکوراتورها می توانند پارامترهای ورودی پذیرا باشند، اجازه دهند که تابع یا کلاس اصلی پارامترهای خود را بگیرد، و حتی می توانند تابع را به طور کامل جایگزین کنند.

مثال 3: کلاسی برای اعداد باینری

دکوریتور @staticmethod در پایتون یک روش بسیار مفید است که به شما اجازه می دهد تا متد هایی را تعریف کنید که به عنوان متد های ایستا (static methods) عمل می کنند.

ویژگی های متد های ایستا در پایتون به شرح زیر است:

1. **عدم نیاز به پرس و جوی برای (self)**: متد های ایستا نیازی به یک شیء مشخص (self) ندارند و می توانند بدون هیچ گونه مرجعی از کلاس فراخوانی شوند.

2. **امکان فراخوانی بدون ایجاد شیء**: متد های ایستا را می توان بدون ایجاد یک شیء از کلاس، مستقیماً از کلاس فراخوانی کرد.

3. **عدم دسترسی به متغیرهای داخلی کلاس**: متد های ایستا نمی توانند به متغیرهای داخلی کلاس دسترسی پیدا کنند، زیرا به شی خاصی مرتبط نیستند.

4. **استفاده برای محاسبات و عملیات کمکی**: متد های ایستا معمولاً برای انجام محاسبات کمکی یا عملیات مستقل از شی استفاده می شوند.

استفاده از متد های ایستا به شما کمک می کند تا کد شما را منظم تر و قابل خواندن تر کنید و همچنین در برخی موارد عملکرد بهتری را ارائه دهید.

.

مثال 4: با استفاده از کلاس فاکتوریل و ساخت شی فاکتوریل عدد را محاسبه کنید