زبان های برنامه نویسی به صورت متداول در حال ظاهر شدن هستند و هر کدام از آن ها اصول خاص خودشان را دارند. برنامه نویسی شی گرا یکی از همین اصول است که تو این چند سال محبوبیت بالایی رو برای خودش در بین توسعه دهنده ها به دست آورده.
ما در این قسمت از آموزش های شی گرایی در پایتون، قرار هست در مورد ویژگی هایی در زبان برنامه نویسی پایتون صحبت کنیم که این زبان رو تبدیل به یک زبان شی گرا کرده.
ما میتونیم زبان برنامه نویسی پایتون رو یک زبان برنامه نویسی شی گرا بدونیم.
در جدول زیر ما زبان های برنامه نویسی رو بر اساس ویژگی های خودشون طبقه بندی کردیم. به ویژگی های زبان پایتون دقت کنید:
طراحی زبان برنامه نویسی پایتون بر اساس رویکرد های شی گرایی بود.
مزایای برنامه نویسی شی گرا :
برنامه نویسی رویه ای از برنامه نویسی ساختار یافته مشتق میشود و مفاهیم اساسی آن را توابع - رویه و روال تشکیل میدهند.
در برنامه نویسی رویه ای تغیر و دسترسی به داده ها کاری بسیار ساده است، ولی از طرف دیگر برای تغیر و دسترسی به داده در برنامه نویسی شی گرا ما باید از اشیاء و متد های آن ها استفاده بکنیم و همه این ها باید در شی پیاده سازی بکنیم. این روش بیشتر بر روی داده ها تمرکز دارد تا بر روی عملکردها یا روش ها. همچنین در برنامه نویسی شی گرا بیشتر داده ها پنهان هستند و ما نمیتوانیم به آن ها به صورت مستقیم در بیرون شی دسترسی پیدا کنیم.
میتونید در جدول زیر اکثر تفاوت های بین Procedural Oriented Programming(POP) و Object-Oriented Programming (OOP) را مشاهده کنید:
برنامه نویسی شی گرا برپایه مفاهیم شیء به جای اقدمات، و داده به جای منطق بنا شد. برای اینکه بتونیم یک زبان برنامه نویسی رو شی گرا بدونیم، باید بدونیم که ایا این زبان سازوکاری برای کار با اشیاء و کلاس ها دارد یا خیر، همچنین باید ببینیم که امکان پیاده سازی و استفاده از مفاهیم پایه شیء گرایی مانند ارث بری، انتزاع، کپسوله سازی و چند شکلی را داشته باشد.
مفاهیم پایه های اصلی شی گرایی در زیر نوشته شده است:
این مفهوم به ما کمک میکند تا خصوصیاتی که غیرضرروری هستند رو مخفی کنیم کنیم که این کار مدیریت نرم افزار رو آسان میکند. این مفهوم به ما کمک میکند تا خصوصیات مهم شی رو در پشت مرز هایی مشخص مخفی کنیم و متد های امنی برای ارتباط با آن ها رائه بدهیم که یکی از این روش ها استفاده از Private است.
مفهوم ارث بری به ما کمک میکند تا یک رابطه سلسه مراتبی بین اشیاء و کلاس ها ایجاد کنیم. به عنوان مثال میوه نمای کلی پرتقال است. این مفهوم به ما در نوشتن کد هایی با قابلیت استفاده دوباره کمک زیادی میکند.
این ویژگی به ما کمک میکند که بتونیم جزئیات رو مخفی کنیم و متد هایی برای ارتباط با آن ها ارائه بدهیم. به عنوان مثال کسی که اسکوتر سوار میشود میداند که اگه دکمه زنگ رو بزنه یک صدایی پخش خواهد شد، ولی از این که این صدا چجوری تولید و پخش می شود هیچ اطلاعی ندارد.
مفهوم چند شکلی به معنی اشکال مختلف است. یعنی یک چیز یا روش میتواند با روش های مختلف استفاده شود. مانند متد سازنده در کلاس ها.
قلب زبان برنامه نویسی پایتون اشیاء هست، ولی با این حال اجباری برای اینکه شما از شیء گرایی برای سازماندهی کد های خود استفاده کنید نیست. شی گرایی در کل فلسفه طراحی پایتون وجود دارد.
زمانی که ما با ماژول ها کار میکنیم، باید به نکات زیر توجه کنیم:
ماژول ها در یک پوشه و در کنار فایل __init__.py قرار میگیرند.
یاد آوری کنم که Dictionaries ها جفت key-value هستند. یعنی به عنوان مثال ما یک Dictionary داشته باشیم که حاوی کلیدی به اسم EmployeId باشد و بخواهیم به داده ای که دارد دسترسی پیدا کنیم باید به صورت زیر عمل کنیم.
employee = {'EmployeId': 'Employee Unique Id'} print(employee['EmployeId'])
برای اینکه بتونیم ار ماژول ها استفاده بکنیم باید مسیر زیر رو طی کنیم:
به مثال زیر توجه کنید
employee.py:
def employee():
print("Hi Employees")
main.py:
import employee employee.employee()
ماژول ها و dictionary ها رو وقتی با هم مقایسه بکنیم میبینیم که در بیشتر موارد شبیه هم هستند به جز موارد زیر:
myDict["key"]
در ماژول ها، کلید ها یک علامت هستند مانند زیر:
myModule.Key
ماژول ها نسخه پیشرفته dictionaries هستند که این امکان رو دارند که در خود کد های پایتون رو نگه داری کنند و ما از طریق آن ها به آن کد ها دسترسی پیدا کنیم.
کلاس ها هم روش هایی هستند که به ما کمک میکنند تا کد هایی که به هم ربط دارند رو یک جا نگه داریم و بتونیم با نام کلاس و نقطه به ان ها دسترسی پیدا کنیم.
به عنوان مثال اگه بخوایم یک کلاس برای employee بسازیم باید به صورت زیر عمل کنیم:
class Employee:
def __init__(self):
self.Age = "Employee Age"
def EmployeId(self):
print("This is Employee Unique id")