0%
در حال بارگذاری...

جستجو در سایت

درس ۷ مقدماتی: برنامه‌نویسی شیءگرا در پایتون

پایتون | Python مقدماتی

تا حالا فکر کردی چطور می‌تونی برنامه‌هات رو مثل یه دنیای واقعی با اشیاء و رفتارها مدل کنی؟ 🌍 برنامه‌نویسی شیءگرا (Object-Oriented Programming یا OOP) مثل ساختن بلوک‌های لگوئه که هر کدوم ویژگی‌ها و کارکردهای خاص خودشون رو دارن! برای مثال، می‌تونی یه «ماشین» بسازی که رنگ، سرعت و حرکت داره. تو این درس، با مفاهیم پایه شیءگرایی مثل کلاس‌ها، اشیاء، متدها و ویژگی‌ها آشنا می‌شی. بنابراین، اگر درس‌های ۱ تا ۶ (متغیرها، شرط‌ها، حلقه‌ها، داده‌ساختارها، توابع، فایل‌ها و ماژول‌ها) رو یاد گرفتی، حالا آماده‌ای که کدت رو به سطح بعدی ببری! 🚀 با مثال‌های واقعی، جداول مقایسه، ۱۲ تمرین و یه پروژه جذاب، این درس بهت کمک می‌کنه دنیای برنامه‌نویسی رو بهتر بفهمی. بریم شروع کنیم! 🎉

برنامه‌نویسی شیءگرا چیه؟ 🧱

OOP روشی برای سازمان‌دهی کده که از اشیاء (Objects) و کلاس‌ها (Classes) استفاده می‌کنه. کلاس مثل یه نقشه‌ست و شیء مثل یه نمونه واقعی از اون نقشه. برای مثال، کلاس «ماشین» نقشه‌ست و هر ماشین خاص (مثل ماشین قرمز) یه شیء. علاوه بر این، OOP چند مزیت داره:

  • نظم: کدت منظم‌تر و قابل‌فهمه.
  • استفاده مجدد: کلاس‌ها رو می‌تونی بارها استفاده کنی.
  • مقیاس‌پذیری: برای پروژه‌های بزرگ عالیه.

به همین دلیل، OOP در ساخت برنامه‌های پیچیده خیلی کاربردیه. بیایم یه کلاس ساده بسازیم:

class Car:
    def __init__(self, color):
        self.color = color

    def drive(self):
        print(f"ماشین {self.color} در حال حرکته!")

my_car = Car("قرمز")
my_car.drive()  # خروجی: ماشین قرمز در حال حرکته!

بنابراین، __init__ ویژگی‌های شیء رو تعریف می‌کنه و self به خود شیء اشاره داره.

کلاس و شیء: نقشه و نمونه 🏗️

کلاس با کلمه class تعریف می‌شه و شیء با صدا زدن کلاس ساخته می‌شه. برای مثال:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} می‌گه: ووف!")

dog1 = Dog("رکس", 3)
dog1.bark()  # خروجی: رکس می‌گه: ووف!

به علاوه، می‌تونی چند شیء از یه کلاس بسازی:

dog2 = Dog("مکس", 5)
dog2.bark()  # خروجی: مکس می‌گه: ووف!

💡 نکته: هر شیء ویژگی‌های (attributes) و متدهای (methods) خاص خودش رو داره.

ویژگی‌ها و متدها: قلب OOP 🧬

ویژگی‌ها داده‌های شیء (مثل نام یا سن) و متدها رفتارهای اون (مثل پارس کردن) هستن. برای مثال:

class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

    def pass_exam(self):
        if self.grade >= 10:
            return f"{self.name} قبول شد!"
        return f"{self.name} رد شد!"

student = Student("علی", 15)
print(student.pass_exam())  # خروجی: علی قبول شد!

علاوه بر این، می‌تونی ویژگی‌ها رو تغییر بدی:

student.grade = 8
print(student.pass_exam())  # خروجی: علی رد شد!

💡 نکته: متدها معمولاً با self تعریف می‌شن تا به ویژگی‌های شیء دسترسی داشته باشن.

ترکیب با درس‌های قبلی: OOP و مفاهیم پایه 🔄

برای مثال، می‌تونی کلاس‌ها رو با حلقه‌ها (درس ۲)، داده‌ساختارها (درس ۳) و فایل‌ها (درس ۵) ترکیب کنی:

class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author

    def save_to_file(self):
        with open("books.txt", "a") as file:
            file.write(f"{self.title} نوشته {self.author}\n")

books = [Book("شازده کوچولو", "آنتوان"), Book("هری پاتر", "رولینگ")]
for book in books:
    book.save_to_file()

بنابراین، OOP بهت کمک می‌کنه مفاهیم قبلی رو بهتر سازمان‌دهی کنی.

مثال‌های عملی: دنیای واقعی 💡

برای مثال، بیایم چند برنامه کاربردی با OOP بسازیم:

۱. مدیریت حساب بانکی:

class BankAccount:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.balance = balance

    def deposit(self, amount):
        self.balance += amount
        print(f"{amount} واریز شد. موجودی: {self.balance}")

    def withdraw(self, amount):
        if amount <= self.balance:
            self.balance -= amount
            print(f"{amount} برداشت شد. موجودی: {self.balance}")
        else:
            print("موجودی کافی نیست!")

account = BankAccount("مریم")
account.deposit(1000)
account.withdraw(500)

۲. ماشین حساب شیءگرا:

class Calculator:
    def __init__(self):
        self.result = 0

    def add(self, num):
        self.result += num
        return self.result

calc = Calculator()
print(calc.add(5))  # 5
print(calc.add(3))  # 8

۳. ذخیره اطلاعات دانش‌آموز:

class Student:
    def __init__(self, name, grades):
        self.name = name
        self.grades = grades

    def average(self):
        return sum(self.grades) / len(self.grades)

student = Student("رضا", [18, 15, 20])
print(f"میانگین {student.name}: {student.average()}")

به همین دلیل، این مثال‌ها درس‌های قبلی (مثل لیست‌ها و توابع) رو با OOP ترکیب می‌کنن. کدها رو توی lesson7_examples.py ذخیره کن.

خطاهای رایج و راه‌حل‌ها ⚠️

به طور کلی، این خطاها تو OOP شایعن:

خطا علت راه‌حل
AttributeError دسترسی به ویژگی یا متد ناموجود نام ویژگی یا متد رو چک کن
TypeError ورودی ناسازگار با متد نوع ورودی رو با type() بررسی کن
SyntaxError اشتباه در تعریف کلاس یا متد املا و فاصله‌گذاری (مثل self) رو چک کن

برای مثال:

class Car:
    def __init__(self, color):
        self.color = color

car = Car("آبی")
print(car.colour)  # خطا: AttributeError
# حل:
print(car.color)  # درست

تمرین‌ها: مهارتت رو تست کن! 📝

برای تسلط، این ۱۲ تمرین رو حل کن:

  1. کلاسی برای مستطیل بساز که مساحت و محیط رو حساب کنه.
  2. کلاسی برای ماشین بساز که سرعت و مدل رو ذخیره کنه و متد حرکت داشته باشه.
  3. کلاسی برای دانش‌آموز بساز که نمرات رو بگیره و معدل رو حساب کنه.
  4. کلاسی برای کتاب بساز که عنوان و نویسنده رو ذخیره کنه و به فایل بنویسه.
  5. کلاسی برای حساب بانکی بساز با امکان واریز و برداشت.
  6. کلاسی برای دایره بساز که مساحت و محیط رو با math حساب کنه.
  7. کلاسی برای مدیریت لیست خرید بساز با متدهای اضافه و حذف.
  8. کلاسی برای بازی تاس بساز که نتیجه رو ذخیره کنه.
  9. کلاسی برای مدیریت زمان بساز که تاریخ فعلی رو نمایش بده.
  10. کلاسی برای دانشجو بساز که وضعیت قبولی (نمره >= ۱۰) رو بررسی کنه.
  11. کلاسی برای لیست کارها بساز که وظایف رو توی فایل ذخیره کنه.
  12. کلاسی برای ماشین حساب بساز با متدهای جمع، تفریق و ضرب.

💡 نکته: هر تمرین رو توی فایل جدا (ex1.py، ex2.py) ذخیره کن.

پروژه کوچک: مدیریت کتابخانه ساده 📚

برای مثال، بیایم یه برنامه مدیریت کتابخانه بسازیم که کتاب‌ها رو ذخیره و نمایش بده:

  1. کلاسی برای کتاب با عنوان و نویسنده.
  2. متدهایی برای اضافه و نمایش کتاب‌ها.
  3. ذخیره در فایل.
class Library:
    def __init__(self):
        self.books = []

    def add_book(self, title, author):
        self.books.append({"title": title, "author": author})
        with open("library.txt", "a") as file:
            file.write(f"{title} نوشته {author}\n")
        print(f"کتاب {title} اضافه شد!")

    def show_books(self):
        if not self.books:
            print("کتابخانه خالیه!")
        else:
            for i, book in enumerate(self.books, 1):
                print(f"{i}. {book['title']} نوشته {book['author']}")

library = Library()
while True:
    print("\n=== کتابخانه ===")
    action = input("اضافه (a)، نمایش (s)، خروج (q): ")
    if action == "q":
        break
    elif action == "a":
        title = input("عنوان کتاب: ")
        author = input("نویسنده: ")
        library.add_book(title, author)
    elif action == "s":
        library.show_books()
print("خداحافظ!")

💡 تست کن: کتاب اضافه کن، لیست رو نمایش بده و فایل library.txt رو چک کن.

سؤالات متداول (FAQ) ❓

به طور کلی، این سؤالات برای مبتدی‌ها رایجه:

  • تفاوت کلاس و شیء چیه؟ کلاس نقشه‌ست و شیء نمونه واقعی.
  • self چیه؟ به شیء فعلی اشاره می‌کنه و برای دسترسی به ویژگی‌ها و متدهاست.
  • چطور خطای OOP رو رفع کنم؟ املای ویژگی‌ها و متدها رو چک کن.
  • OOP کی استفاده می‌شه؟ برای پروژه‌های بزرگ یا وقتی نیاز به سازمان‌دهی داری.

جمع‌بندی و قدم بعدی ⏭️

تبریک! 🚀 تو این درس برنامه‌نویسی شیءگرا رو یاد گرفتی و با بیش از ۱۲ مثال و یه پروژه، حسابی مسلط شدی. بنابراین، حالا می‌تونی برنامه‌هات رو مثل دنیای واقعی مدل کنی. علاوه بر این، درس بعدی (پایگاه داده مقدماتی) بهت یاد می‌ده چطور داده‌ها رو توی پایگاه داده ذخیره کنی. در نهایت، تمرین‌ها رو توی PythonLessons ذخیره کن و اگه دوست داشتی، توی GitHub آپلود کن تا پیشرفتت رو نشون بدی! 😎

ارسال نظر جدید

گزارش دیدگاه