آموزش مقدماتی شیءگرایی (OOP)
در کمتر از ۱۵ دقیقه، مفاهیم پایه شیءگرایی را یاد بگیرید. کلاس، شیء، وراثت، چندریختی و کپسولهسازی — با مثالهای ساده.
۱ شیءگرایی (OOP) چیست؟
برنامهنویسی شیءگرا (OOP) یک سبک برنامهنویسی است که در آن برنامه از «اشیاء» ساخته میشود. هر شیء هم داده دارد (ویژگیها) و هم رفتار (متدها).
این سبک برخلاف برنامهنویسی رویهای است که در آن فقط توابع و متغیرهای جدا وجود دارند. OOP به شما کمک میکند برنامههای بزرگ را به بخشهای کوچک و قابل مدیریت تقسیم کنید.
۲ کلاس (Class) و شیء (Object)
کلاس یک «قالب» یا «طرح» است که ویژگیها و رفتارهای یک موجودیت را تعریف میکند. شیء یک نمونهٔ واقعی از آن کلاس است.
مثال با پایتون:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"من {self.name} هستم، {self.age} ساله")
# ساخت شیء
s1 = Student("علی", 20)
s1.introduce()
# خروجی: من علی هستم، 20 ساله
__init__ «سازنده» (constructor) است که هنگام ساخت شیء اجرا میشود. self به خود شیء اشاره میکند.
۳ کپسولهسازی (Encapsulation)
کپسولهسازی یعنی مخفی کردن جزئیات داخلی یک شیء و فقط نمایش آنچه لازم است. این کار از دسترسی غیرمجاز به دادهها جلوگیری میکند.
مثال با پایتون:
class BankAccount:
def __init__(self, balance):
self.__balance = balance # خصوصی (private)
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def get_balance(self):
return self.__balance
acc = BankAccount(1000)
acc.deposit(500)
print(acc.get_balance()) # 1500
# acc.__balance → خطا (دسترسی مستقیم ممنوع)
_name یک قرارداد «محافظتشده» است و __name یک «خصوصی» واقعی. در زبانهای دیگر (مثل Java) از private و public استفاده میشود.
۴ وراثت (Inheritance)
وراثت به یک کلاس اجازه میدهد ویژگیها و متدهای کلاس دیگری را به ارث ببرد. این کار از تکرار کد جلوگیری میکند.
مثال با پایتون:
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "سلام، " + self.name
# کلاس فرزند (ارثبری از Person)
class Student(Person):
def __init__(self, name, field):
super().__init__(name) # فراخوانی سازنده والد
self.field = field
def study(self):
return self.name + " در حال مطالعه " + self.field
s = Student("مریم", "برنامهنویسی")
print(s.greet()) # از والد به ارث برده
print(s.study()) # متد جدید
super() به کلاس والد اشاره میکند. با آن میتوانید متدهای والد را فراخوانی کنید.
۵ چندریختی (Polymorphism)
چندریختی یعنی یک متد میتواند در کلاسهای مختلف رفتار متفاوتی داشته باشد. به عبارت ساده: «یک نام، چند شکل».
مثال با پایتون:
def sound(self):
pass
class Dog(Animal):
def sound(self):
return "واق واق!"
class Cat(Animal):
def sound(self):
return "میو میو!"
# استفاده
for animal in [Dog(), Cat()]:
print(animal.sound())
# واق واق!
# میو میو!
sound در هر کلاس رفتار متفاوتی دارد. اما از دید بیرونی، همهشان یک متد sound دارند.
۶ انتزاع (Abstraction)
انتزاع یعنی تمرکز روی «چه کاری» انجام میشود، نه «چطور». شما فقط با «رابط» کار میکنید و جزئیات پیادهسازی مخفی میماند.
مثلاً وقتی با ماشین رانندگی میکنید، نیازی نیست بدانید موتور چطور کار میکند. فقط پدال گاز را فشار میدهید.
مثال با پایتون:
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, r):
self.r = r
def area(self):
return 3.14 * self.r ** 2
c = Circle(5)
print(c.area()) # 78.5
مثال تعاملی — کلاس دانشجو
با وارد کردن نام و رشته، یک «شیء» از کلاس دانشجو ساخته میشود. ببینید هر شیء چطور ویژگیهای خودش را دارد.
آزمون کوتاه
۳ سوال — دانش خود را بسنجید!
ادامهٔ مسیر یادگیری
مفاهیم پایه شیءگرایی را یاد گرفتید؟ حالا جزوههای کامل کالاکن را برای تعمیق دانشتان دانلود کنید.