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

3 سال پیش
برنامه نویسی شی گرا در پایتون

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

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش مقدماتی برنامه نویسی شی گرا در پایتون خواهیم پرداخت.

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

زبانهای برنامه نویسی به طور مداوم در حال ظهور هستند ، و روشهای مختلف نیز.

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

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

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

 

کلاس زبان دسته بندی زبان ها
پارادایم برنامه نویسی Procedural C, ++C, #C, Objective-C, java, Go
Scripting CoffeeScript, JavaScript, Python, Perl, Php, Ruby
Functional Clojure, Eralang, Haskell, Scala
کلاس تالیف Static C, ++C, #C, Objective-C, java, Go, Haskell, Scala
Dynamic CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang
نوع کلاس Strong C, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala#
Weak C, C, #C, Objective-C, CoffeeScript, JavaScript, Perl, Php++
حافظه کلاس Managed Others
Unmanaged C, ++C, #C, Objective-C

 

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

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

برنامه نویسی شی گرا پایتون (OOP)، راهی برای برنامه نویسی است که بر استفاده از اشیاء و کلاس ها برای طراحی و ساخت برنامه های کاربردی تمرکز می کند. ارکان اصلی برنامه نویسی شیءگرا (OOP) عبارتند از ارث ، پلی مورفیسم ، انتزاع ، کپسوله سازی تبلیغات.

تجزیه و تحلیل شی گرا (OOA) فرایند بررسی یک مشکل، سیستم یا کار و شناسایی اشیاء و تعاملات بین آنها است.

چرا برنامه نویسی شی گرا را انتخاب کنیم؟

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

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

 

برنامه نویسی رویه ای در مقابل برنامه نویسی شی گرا

برنامه نویسی مبتنی بر رویه از برنامه نویسی ساختاری بر اساس مفاهیم توابع/رویه/روالها مشتق شده است. دسترسی و تغییر داده ها در برنامه نویسی رویه ای آسان است. از سوی دیگر ، برنامه نویسی شی گرا (OOP) امکان تجزیه یک مشکل را در تعدادی از واحدها به نام اشیاء فراهم می کند و سپس داده ها و عملکردها را در اطراف این اشیاء ایجاد می کند. بیشتر بر روی داده ها تأکید دارد تا رویه یا عملکردها. همچنین در OOP ، داده ها پنهان هستند و نمی توان با روش خارجی به آنها دسترسی پیدا کرد.

جدول موجود در تصویر زیر تفاوت های عمده بین روش POP و OOP را نشان می دهد.

تفاوت برنامه نویسی رویه ای (POP) در مقابل. برنامه نویسی شی گرا (OOP).

 

برنامه نویسی رویه ای برنامه نویسی شی گرا
اساس عملکرد تمرکز کامل بر روی داده ها و عملکردها است بر اساس یک سناریوی دنیای واقعی است. کل برنامه به قسمتهای کوچکی به نام object تقسیم می شود
قابلیت استفاده مجدد محدودیت در استفاده مجدد از کد استفاده مجدد از کد
رویکرد رویکرد بالا به پایین طراحی متمرکز بر شی
تعیین کننده های دسترسی هیچ کدام عمومی ، خصوصی و حفاظت شده
جابجایی داده ها
دسترسی داده ها  اکثر توابع از داده های جهانی برای به اشتراک گذاری استفاده می کنند که می توانند آزادانه از تابع به تابع دیگر در سیستم دسترسی داشته باشند داده ها نمی توانند آزادانه از روش به روش دیگر حرکت کنند ، می توان آنها را به صورت عمومی یا خصوصی نگه داشت تا بتوانیم دسترسی به داده ها را کنترل کنیم
پنهان کردن داده ها  روش خاصی برای پنهان کردن داده ها است، بنابراین امنیت کمی کمتر است این پنهان کردن داده ها را بسیار امن تر می کند
Overloading امکان پذیر نیست توابع و اپراتور ها اورلود می شوند
زبان C, VB, Fortran, Pascal C++, Python, Java, C#
انتزاع از انتزاع در سطح روش استفاده می کند از انتزاع در کلاس و سطح استفاده می کند

 

اصول برنامه نویسی شی گرا در پایتون

برنامه نویسی شی گرا (OOP) بر اساس مفهوم اشیاء و نه عمل و داده ها به جای منطق است. برای اینکه زبان برنامه نویسی شی گرا باشد ، باید دارای مکانیزمی باشد که امکان کار با کلاس ها و اشیاء و همچنین پیاده سازی و استفاده از اصول و مفاهیم اصلی شی گرا یعنی وراثت ، انتزاع ، محصور سازی و چند شکلی را ممکن می سازد.

Oops

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

کپسوله سازی

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

وراثت

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

انتزاع 

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

پلی مورفیسم

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

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

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

ماژول ها در برابر کلاس ها و اشیاء

ماژول ها مانند “دیکشنری” هستند
هنگام کار بر روی ماژول ها، به نکات زیر توجه کنید –

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

به یاد بیاورید که دیکشنری یک جفت کلید-مقدار است. این بدان معناست که اگر یک دیکشنری با کلید EmployeID دارید و می خواهید آن را بازیابی کنید، باید از خطوط زیر کد استفاده کنید –

 

employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])

 

شما باید روی ماژول هایی با فرایند زیر کار کنید –

  • ماژول یک فایل پایتون است که دارای توابع یا متغیرهایی در آن است.
  • فایل مورد نیاز خود را وارد کنید
  • اکنون می توانید با عملگر ‘.’ (dot) به توابع یا متغیرهای آن ماژول دسترسی پیدا کنید.
  • ماژولی به نام Employe.py را در نظر بگیرید که در آن یک تابع به نام کارمند وجود دارد. کد عملکرد در زیر آمده است –
# this goes in employee.py
def EmployeID():
   print (“Employee Unique Identity!”)

 

اکنون ماژول را وارد کرده و سپس به تابع EmployeID دسترسی پیدا کنید –

import employee
employee. EmployeID()

 

همانطور که در تصویر نشان داده شده است می توانید متغیری با نام Age در آن وارد کنید –

def EmployeID():
   print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”

 

اکنون به روش زیر به آن متغیر دسترسی پیدا کنید –

import employee
employee.EmployeID()
print(employee.Age)

 

حالا بیایید این را با دیکشنری مقایسه کنیم –

Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable

 

توجه کنید که الگوی متداولی در پایتون وجود دارد –

  • یک ظرف key = value را بردارید
  • با نام کلید چیزی از آن بیرون بیاورید
  • هنگام مقایسه ماژول با دیکشنری، هر دو مشابه هستند ، به جز موارد زیر –
  • در مورد دیکشنری، کلید یک رشته است و نحو [key] است.
  • در مورد ماژول، کلید یک شناسه است و نحو کلید .key است.

کلاس ها مانند ماژول ها هستند

ماژول یک دیکشنری تخصصی است که می تواند کد پایتون را ذخیره کند تا بتوانید با عملگر “.” به آن دسترسی پیدا کنید. کلاس راهی برای گرفتن گروهی از توابع و داده ها و قرار دادن آنها در داخل یک محفظه است تا بتوانید با عملگر “.” به آنها دسترسی پیدا کنید.

اگر مجبور هستید کلاس مشابه ماژول کارمند ایجاد کنید ، می توانید این کار را با استفاده از کد زیر انجام دهید –

class employee(object):
   def __init__(self):
      self. Age = “Employee Age is ##”
   def EmployeID(self):
      print (“This is just employee unique identity”)

 

توجه – کلاسها بر ماژول ها ترجیح داده می شوند زیرا می توانید از آنها به همان شکلی که هستند و بدون دخالت زیاد استفاده کنید. در حالی که با ماژول ها، تنها یک واحد با کل برنامه دارید.

اشیاء مانند Mini-imports

یک کلاس مانند یک مینی ماژول است و شما می توانید به روش مشابهی که برای کلاس ها انجام می دهید، با استفاده از مفهوم instantiate وارد کنید. توجه داشته باشید که وقتی از یک کلاس نمونه می گیرید، یک شی دریافت می کنید.

همانطور که در زیر نشان داده شده است، می توانید یک شیء را شبیه به فراخوانی یک کلاس مانند یک مثال –

this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age

 

شما می توانید این کار را به یکی از سه روش زیر انجام دهید –

# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)

 

منبع.

 

لیست جلسات آموزش برنامه نویسی شی گرا در پایتون

  1. آموزش برنامه نویسی شی گرا در پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه