آموزش شیءگرایی در پایتون | کلاس و ۱۰ پروژه


🧱 شیء‌گرایی در پایتون (کلاس)

📘 آموزش کامل کلاس، اشیاء، متدها و ۱۰ پروژه

🔷 کلاس (Class) چیست؟

کلاس یک الگو یا طرح‌واره برای ایجاد اشیاء است. هر شیء نمونه‌ای از کلاس بوده و دارای ویژگی‌ها (attribute) و رفتارها (متد) می‌باشد.
🔹 __init__ : سازنده کلاس
🔹 self : ارجاع به نمونه فعلی
🔹 متد: تابع داخل کلاس
🔹 attribute: ویژگی‌های شیء
🔹 inheritance: ارث‌بری

📌 ۱۰ پروژه class در پایتون

۱ کلاس کتاب

📖 کلاس Book با عنوان، نویسنده و سال انتشار. متدی برای نمایش اطلاعات.
کتاب: جنایات و مکافات – نویسنده: داستایفسکی (۱۸۶۶)
class Book:
def __init__(self, title, author, year):
self.title = title
self.author = author
self.year = year
def info(self):
return f”کتاب: {self.title} – نویسنده: {self.author} ({self.year})”

b = Book(“جنایات و مکافات”, “داستایفسکی”, ۱۸۶۶)
print(b.info())

توضیح __init__ مقادیر اولیه را می‌گیرد. متد info رشته‌ای توصیفی برمی‌گرداند.

۲ کلاس دانشجو

🎓 کلاس Student شامل نام، شماره دانشجویی و معدل. متد وضعیت قبولی (معدل>۱۲).
دانشجو: زهرا محمدی – قبول: True
class Student:
def __init__(self, name, std_id, gpa):
self.name = name
self.std_id = std_id
self.gpa = gpa
def is_passed(self):
return self.gpa >= 12

s = Student(“زهرا محمدی”, “۴۰۱۱۲۳”, ۱۷٫۵)
print(f”دانشجو: {s.name} – قبول: {s.is_passed()}”)

توضیح متد is_passed بر اساس معدل بولین برمی‌گرداند.

۳ کلاس مستطیل

📐 کلاس Rectangle با طول و عرض. متدهای مساحت و محیط.
مساحت: ۲۴, محیط: ۲۰
class Rectangle:
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def perimeter(self):
return 2*(self.length + self.width)

r = Rectangle(6,4)
print(f”مساحت: {r.area()}, محیط: {r.perimeter()}”)

توضیح دو متد برای محاسبات مساحت و محیط.

۴ کلاس حساب بانکی

💰 کلاس BankAccount با موجودی اولیه، متدهای واریز و برداشت (با بررسی موجودی).
موجودی: ۲۵۰۰۰ – برداشت ۳۰۰۰۰: ناموفق (موجودی کافی نیست)
class BankAccount:
def __init__(self, balance=0):
self.balance = balance
def deposit(self, amount):
self.balance += amount
return f”واریز شد. موجودی: {self.balance}”
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
return f”برداشت شد. موجودی: {self.balance}”
return “موجودی کافی نیست”

acc = BankAccount(25000)
print(acc.withdraw(30000))

توضیح برداشت با شرط کافی بودن موجودی.

۵ کلاس ماشین

🚗 کلاس Car با برند، مدل، سرعت. متد شتاب (افزایش سرعت) و ترمز (کاهش).
سرعت فعلی: ۱۲۰
class Car:
def __init__(self, brand, model, speed=0):
self.brand = brand
self.model = model
self.speed = speed
def accelerate(self, increase):
self.speed += increase
def brake(self, decrease):
self.speed = max(0, self.speed – decrease)
def show_speed(self):
return f”سرعت فعلی: {self.speed}”

car = Car(“Toyota”, “Corolla”, 80)
car.accelerate(40)
print(car.show_speed())

توضیح افزایش و کاهش سرعت با متدها.

۶ کلاس ساعت دیجیتال

⏰ کلاس Clock با ساعت، دقیقه، ثانیه. متد tick (یک ثانیه افزایش) و نمایش.
زمان: ۲۳:۵۹:۵۸
بعد از tick: 23:59:59
class Clock:
def __init__(self, h, m, s):
self.h = h
self.m = m
self.s = s
def tick(self):
self.s += 1
if self.s == 60:
self.s = 0
self.m += 1
if self.m == 60:
self.m = 0
self.h = (self.h + 1) % 24
def display(self):
return f”{self.h:02d}:{self.m:02d}:{self.s:02d}”

c = Clock(23,59,58)
print(“زمان:”, c.display())
c.tick()
print(“بعد از tick:”, c.display())

توضیح مدیریت افزایش ثانیه و دقیقه و ساعت.

۷ کلاس مدرسه و دانش‌آموز

🏫 کلاس Student که به یک School تعلق دارد. نمایش نام مدرسه برای هر دانش‌آموز.
علی در مدرسه: راه رشد تحصیل می‌کند.
class School:
def __init__(self, name):
self.name = name

class Student:
def __init__(self, name, school):
self.name = name
self.school = school
def introduce(self):
return f”{self.name} در مدرسه: {self.school.name} تحصیل می‌کند.”

sch = School(“راه رشد”)
std = Student(“علی”, sch)
print(std.introduce())

توضیح ارتباط بین دو کلاس (ترکیب).

۸ کلاس کارمند

👔 کلاس Employee با نام، حقوق و متد increase(درصد) برای افزایش حقوق.
حقوق بعد از ۱۵٪ افزایش: ۵۷۵۰۰۰۰ تومان
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
def increase(self, percent):
self.salary += self.salary * percent / 100
return self.salary

emp = Employee(“رضا”, ۵۰۰۰۰۰۰)
new_salary = emp.increase(15)
print(f”حقوق بعد از ۱۵٪ افزایش: {int(new_salary)} تومان”)

توضیح افزایش درصدی حقوق با متد.

۹ کلاس مستطیل + classmethod

🔷 کلاس Rectangle با متد کلاس square برای ایجاد مربع.
مساحت مربع به ضلع ۵: ۲۵
class Rectangle:
def __init__(self, w, h):
self.w = w
self.h = h
@classmethod
def square(cls, side):
return cls(side, side)
def area(self):
return self.w * self.h

sq = Rectangle.square(5)
print(f”مساحت مربع به ضلع ۵: {sq.area()}”)

توضیح classmethod به عنوان سازنده جایگزین برای ایجاد مربع.

۱۰ ارث‌بری: حیوان و سگ

🐶 کلاس Animal با متد صدا. کلاس Dog که ارث‌بری کرده و صدا را بازنویسی می‌کند (override).
حیوان صدا می‌کند: …
سگ می‌گوید: واق واق
class Animal:
def sound(self):
return “…”

class Dog(Animal):
def sound(self):
return “واق واق”

a = Animal()
d = Dog()
print(“حیوان صدا می‌کند:”, a.sound())
print(“سگ می‌گوید:”, d.sound())

توضیح ارث‌بری و چندریختی (override).


✨ مفاهیم تکمیلی

🔸 __str__ : نمایش دوستانه
🔸 @property : دکوراتور ویژگی
🔸 ارث‌بری چندگانه
🔸 متدهای جادویی (__add__ و …)


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *