محمد رئوف زاهد
محمد رئوف زاهد
خواندن ۵ دقیقه·۳ سال پیش

آموزش شی گرایی در پایتون - قسمت اول

۱- مقدمه شی گرایی در پایتون

زبان های برنامه نویسی به صورت متداول در حال ظاهر شدن هستند و هر کدام از آن ها اصول خاص خودشان را دارند. برنامه نویسی شی گرا یکی از همین اصول است که تو این چند سال محبوبیت بالایی رو برای خودش در بین توسعه دهنده ها به دست آورده.

ما در این قسمت از آموزش های شی گرایی در پایتون، قرار هست در مورد ویژگی هایی در زبان برنامه نویسی پایتون صحبت کنیم که این زبان رو تبدیل به یک زبان شی گرا کرده.

۲- طبقه بندی زبان های برنامه نویسی

ما میتونیم زبان برنامه نویسی پایتون رو یک زبان برنامه نویسی شی گرا بدونیم.

در جدول زیر ما زبان های برنامه نویسی رو بر اساس ویژگی های خودشون طبقه بندی کردیم. به ویژگی های زبان پایتون دقت کنید:

۳- زبان برنامه نویسی شی گرا چیست؟

طراحی زبان برنامه نویسی پایتون بر اساس رویکرد های شی گرایی بود.

مزایای برنامه نویسی شی گرا :

  • به برنامه ما یک ساختار تمیز میدهد که در حل مسئله و توسعه آن کمک میکند.
  • نگه داری و تغیر کد ها رو آسان میکند.
  • به ماژولار بودن نرم افزار ما کمک میکند و به این ویژگی رو میدهد که هر قسمت رو به صورت شی مستقل بنویسیم که این هم به افزودن و ویرایش ویژگی ها کمک میکند.
  • به ما برای نوشتن کد های کتابخانه ها یک چارچوب مناسب ارائه میدهد که این امکان رو به ما میدهد که بتونیم اجزای متفاوت رو به آسانی تطبیق بدهیم و آن ها را تغیر دهیم.
  • به ما امکان نوشتن کد هایی با قابلیت استفاده دوباره رو میدهد.

۴- مقایسه برنامه نویسی شی گرا با رویه ای

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

در برنامه نویسی رویه ای تغیر و دسترسی به داده ها کاری بسیار ساده است، ولی از طرف دیگر برای تغیر و دسترسی به داده در برنامه نویسی شی گرا ما باید از اشیاء و متد های آن ها استفاده بکنیم و همه این ها باید در شی پیاده سازی بکنیم. این روش بیشتر بر روی داده ها تمرکز دارد تا بر روی عملکردها یا روش ها. همچنین در برنامه نویسی شی گرا بیشتر داده ها پنهان هستند و ما نمیتوانیم به آن ها به صورت مستقیم در بیرون شی دسترسی پیدا کنیم.

میتونید در جدول زیر اکثر تفاوت های بین Procedural Oriented Programming(POP) و Object-Oriented Programming (OOP) را مشاهده کنید:

۵- اصول برنامه نویسی شی گرا

برنامه نویسی شی گرا برپایه مفاهیم شیء‌ به جای اقدمات، و داده به جای منطق بنا شد. برای اینکه بتونیم یک زبان برنامه نویسی رو شی گرا بدونیم، باید بدونیم که ایا این زبان سازوکاری برای کار با اشیاء‌ و کلاس ها دارد یا خیر، همچنین باید ببینیم که امکان پیاده سازی و استفاده از مفاهیم پایه شیء گرایی مانند ارث بری، انتزاع، کپسوله سازی و چند شکلی را داشته باشد.

مفاهیم پایه های اصلی شی گرایی در زیر نوشته شده است:

کپسوله سازی:

این مفهوم به ما کمک میکند تا خصوصیاتی که غیرضرروری هستند رو مخفی کنیم کنیم که این کار مدیریت نرم افزار رو آسان میکند. این مفهوم به ما کمک میکند تا خصوصیات مهم شی رو در پشت مرز هایی مشخص مخفی کنیم و متد های امنی برای ارتباط با آن ها رائه بدهیم که یکی از این روش ها استفاده از Private است.

ارث بری:

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

انتزاع:

این ویژگی به ما کمک میکند که بتونیم جزئیات رو مخفی کنیم و متد هایی برای ارتباط با آن ها ارائه بدهیم. به عنوان مثال کسی که اسکوتر سوار میشود میداند که اگه دکمه زنگ رو بزنه یک صدایی پخش خواهد شد، ولی از این که این صدا چجوری تولید و پخش می شود هیچ اطلاعی ندارد.

چند شکلی:

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

۶- شیء گرایی در پایتون

قلب زبان برنامه نویسی پایتون اشیاء هست،‌ ولی با این حال اجباری برای اینکه شما از شیء‌ گرایی برای سازماندهی کد های خود استفاده کنید نیست. شی گرایی در کل فلسفه طراحی پایتون وجود دارد.

۷- مقایسه ماژول ها و کلاس ها و اشیاء

۷.۱- ماژول ها شبیه به Dictionaries هستند.

زمانی که ما با ماژول ها کار میکنیم،‌ باید به نکات زیر توجه کنیم:

  • ماژول پایتون یک بسته برای کپسوله سازی کدهایی با قابلیت استفاده دوباره است.

ماژول ها در یک پوشه و در کنار فایل __init__.py قرار میگیرند.

  • ماژول ها شامل توابع و کلاس ها هستند.
  • ماژول ها توسط کلمه کلیدی import وارد کد میشوند.

یاد آوری کنم که Dictionaries ها جفت key-value هستند. یعنی به عنوان مثال ما یک Dictionary داشته باشیم که حاوی کلیدی به اسم EmployeId باشد و بخواهیم به داده ای که دارد دسترسی پیدا کنیم باید به صورت زیر عمل کنیم.

employee = {'EmployeId': 'Employee Unique Id'} print(employee['EmployeId'])

برای اینکه بتونیم ار ماژول ها استفاده بکنیم باید مسیر زیر رو طی کنیم:

  • داشتن ماژولی که حاوی توابع یا کلاس باشد.
  • وارد کردن ماژول توسط کلمه کلیدی import
  • الان میتونیم با استفاده از نام ماژول به همراه یک نقطه در اخرش به تمامی کلاس ها و توابعی که در آن موجود است دسترسی پیدا کنیم.

به مثال زیر توجه کنید

employee.py:

def employee():
print(&quotHi Employees&quot)

main.py:

import employee employee.employee()

ماژول ها و dictionary ها رو وقتی با هم مقایسه بکنیم میبینیم که در بیشتر موارد شبیه هم هستند به جز موارد زیر:

  • در dictionary ها کلید ها string هستند و برای دسترسی به آن ها باید به صورت زیر عمل کرد:
myDict[&quotkey&quot]

در ماژول ها، کلید ها یک علامت هستند مانند زیر:

myModule.Key

۸- کلاس ها شبیه ماژول ها هستند

ماژول ها نسخه پیشرفته dictionaries هستند که این امکان رو دارند که در خود کد های پایتون رو نگه داری کنند و ما از طریق آن ها به آن کد ها دسترسی پیدا کنیم.

کلاس ها هم روش هایی هستند که به ما کمک میکنند تا کد هایی که به هم ربط دارند رو یک جا نگه داریم و بتونیم با نام کلاس و نقطه به ان ها دسترسی پیدا کنیم.

به عنوان مثال اگه بخوایم یک کلاس برای employee بسازیم باید به صورت زیر عمل کنیم:

class Employee:
def __init__(self):
self.Age = &quotEmployee Age&quot
def EmployeId(self):
print(&quotThis is Employee Unique id&quot)

منبع: کتاب Object Oriented Python

آموزش شی گرایی در پایتون - قسمت دوم

آموزشپایتونبرنامه نویسشی گراییتوسعه دهنده
من محمدم یه برنامه نویسی که عاشق یادگرفتنه چیز های جدیده.
شاید از این پست‌ها خوشتان بیاید