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

مقدمه
شیگرایی (Object Oriented Programming) یک سبک برنامهنویسی است که بر ساختاردهی برنامه به صورت آبجکتها (اشیاء) تاکید دارد. این روش باعث میشود کد شما خواناتر، قابل استفاده مجدد و توسعهپذیر باشد. پایتون یکی از زبانهایی است که کاملاً از شیگرایی پشتیبانی میکند.
شیگرایی دقیقاً چیست و چرا اهمیت دارد؟
در برنامهنویسی شیگرا، دنیای واقعی را مدلسازی میکنیم.
مثلاً: یک “سگ” (Dog) در دنیای واقعی اسم، سن، صدا و رفتار دارد. با شیگرایی، این اشیا یا objectها را با کلاسها تعریف میکنیم، ویژگیها (attribute) و رفتارها (method) را به آنها میدهیم. پس از آن میتوان هر چند بار که خواستیم، شیء جدید با این خصوصیات ایجاد کنیم.
این کار باعث میشود:
- کد تکراری کمتر شود
- توسعه و نگهداری راحتتر شود
- کدها قابل توسعه و انعطافپذیر بمانند
مفاهیم اصلی شیگرایی
شیگرایی بر پایه چند مفهوم کلیدی استوار است:
- کلاس (Class): نقشهای کلی برای ساخت اشیاء. همانند یک الگو.
- شیء (Object): نمونهی ساختهشده بر اساس کلاس.
- خاصیت (Attribute): ویژگیهای هر شیء.
- متد (Method): عملکردها یا توابع مربوط به هر شیء.
- وراثت (Inheritance): توانایی یک کلاس برای به ارث بردن ویژگیها و متدهای یک کلاس دیگر.
- کپسولهسازی (Encapsulation): مخفیکردن دادهها و ساختار داخلی یک کلاس و فقط اجازه دسترسی از طریق متدها.
- چندریختی (Polymorphism): یک اینترفیس مشترک اما پیادهسازیهای متفاوت در کلاسهای مختلف.
مثال ساده: کلاس و شیء در پایتون
بیایید با یک مثال ساده شروع کنیم.
تعریف یک کلاس
class Dog:
def __init__(self, name, age):
self.name = name # خاصیت (attribute)
self.age = age # خاصیت (attribute)
def bark(self): # متد (method)
print("Woof! My name is", self.name)
ساخت شیء از کلاس
dog1 = Dog("Rex", 3)
dog2 = Dog("Bella", 5)
dog1.bark() # خروجی: Woof! My name is Rex
dog2.bark() # خروجی: Woof! My name is Bella
در اینجا، Dog یک کلاس است و dog1 و dog2 هرکدام یک شیء یا آبجکت از این کلاساند.
مفاهیم پیشرفتهتر با مثال
وراثت (Inheritance)
فرض کنیم میخواهیم یک کلاس جدید با عنوان GuideDog ایجاد کنیم که همه ویژگیهای Dog را داشته باشد اما یک متد اضافی هم دارد.
class GuideDog(Dog): # GuideDog ارثبَر از Dog
def guide(self):
print(self.name, "is helping their owner.")
حالا:
dog3 = GuideDog("Lucky", 6)
dog3.bark() # Woof! My name is Lucky
dog3.guide() # Lucky is helping their owner.
کپسولهسازی (Encapsulation)
معمولاً دادههای خصوصی با قرار دادن __ قبل از نام خاصیت (Attribute) مخفی میشوند:
class Cat:
def __init__(self, name):
self.__name = name # خاصیت خصوصی
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name
cat1 = Cat("Kitty")
print(cat1.get_name()) # خروجی: Kitty
cat1.set_name("Nina")
print(cat1.get_name()) # خروجی: Nina
چندریختی (Polymorphism)
مثالی از متدهای مشترک اما رفتار متفاوت:
class Animal:
def speak(self):
print("I am an animal.")
class Dog(Animal):
def speak(self):
print("Woof!")
class Cat(Animal):
def speak(self):
print("Meow!")
animals = [Dog(), Cat()]
for animal in animals:
animal.speak() # Woof! سپس Meow!
جمعبندی
شیگرایی به شما کمک میکند کدهای ساختاریافتهتر، خواناتر و قابل گسترش بنویسید. با استفاده از کلاسها میتوانید اشیاء مختلف تعریف کنید، آنها را گسترش دهید یا رفتارشان را تغییر دهید. یادگیری شیگرایی یک قدم مهم در حرفهای شدن در پایتون است.