خانه / درس ۷ مقدماتی: برنامهنویسی شیءگرا در پایتون درس ۷ مقدماتی: برنامهنویسی شیءگرا در پایتون 📅 ۱۴۰۴/۰۸/۱۸ ✍️ سجاد ⌛ 6 دقیقه مطالعه 👁️ 12 پایتون | Python مقدماتی 🗨️ 🤍 0 📤 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) # درست تمرینها: مهارتت رو تست کن! 📝 برای تسلط، این ۱۲ تمرین رو حل کن: کلاسی برای مستطیل بساز که مساحت و محیط رو حساب کنه. کلاسی برای ماشین بساز که سرعت و مدل رو ذخیره کنه و متد حرکت داشته باشه. کلاسی برای دانشآموز بساز که نمرات رو بگیره و معدل رو حساب کنه. کلاسی برای کتاب بساز که عنوان و نویسنده رو ذخیره کنه و به فایل بنویسه. کلاسی برای حساب بانکی بساز با امکان واریز و برداشت. کلاسی برای دایره بساز که مساحت و محیط رو با math حساب کنه. کلاسی برای مدیریت لیست خرید بساز با متدهای اضافه و حذف. کلاسی برای بازی تاس بساز که نتیجه رو ذخیره کنه. کلاسی برای مدیریت زمان بساز که تاریخ فعلی رو نمایش بده. کلاسی برای دانشجو بساز که وضعیت قبولی (نمره >= ۱۰) رو بررسی کنه. کلاسی برای لیست کارها بساز که وظایف رو توی فایل ذخیره کنه. کلاسی برای ماشین حساب بساز با متدهای جمع، تفریق و ضرب. 💡 نکته: هر تمرین رو توی فایل جدا (ex1.py، ex2.py) ذخیره کن. پروژه کوچک: مدیریت کتابخانه ساده 📚 برای مثال، بیایم یه برنامه مدیریت کتابخانه بسازیم که کتابها رو ذخیره و نمایش بده: کلاسی برای کتاب با عنوان و نویسنده. متدهایی برای اضافه و نمایش کتابها. ذخیره در فایل. کپی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 آپلود کن تا پیشرفتت رو نشون بدی! 😎 ← درس قبلی: درس ۶ مقدماتی: ماژولها و کتابخانهها در پایتون درس بعدی: درس ۸ مقدماتی: پایگاه داده مقدماتی با SQLite در پایتون → برچسبها: OOP pythonpythonبرنامهنویسی شیءگرابرنامهنویسی مبتدیپایتونشیء پایتونکلاس پایتونمتد پایتون ارسال نظر جدید لغو پاسخ ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
تا حالا فکر کردی چطور میتونی برنامههات رو مثل یه دنیای واقعی با اشیاء و رفتارها مدل کنی؟ 🌍 برنامهنویسی شیءگرا (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) # درست تمرینها: مهارتت رو تست کن! 📝 برای تسلط، این ۱۲ تمرین رو حل کن: کلاسی برای مستطیل بساز که مساحت و محیط رو حساب کنه. کلاسی برای ماشین بساز که سرعت و مدل رو ذخیره کنه و متد حرکت داشته باشه. کلاسی برای دانشآموز بساز که نمرات رو بگیره و معدل رو حساب کنه. کلاسی برای کتاب بساز که عنوان و نویسنده رو ذخیره کنه و به فایل بنویسه. کلاسی برای حساب بانکی بساز با امکان واریز و برداشت. کلاسی برای دایره بساز که مساحت و محیط رو با math حساب کنه. کلاسی برای مدیریت لیست خرید بساز با متدهای اضافه و حذف. کلاسی برای بازی تاس بساز که نتیجه رو ذخیره کنه. کلاسی برای مدیریت زمان بساز که تاریخ فعلی رو نمایش بده. کلاسی برای دانشجو بساز که وضعیت قبولی (نمره >= ۱۰) رو بررسی کنه. کلاسی برای لیست کارها بساز که وظایف رو توی فایل ذخیره کنه. کلاسی برای ماشین حساب بساز با متدهای جمع، تفریق و ضرب. 💡 نکته: هر تمرین رو توی فایل جدا (ex1.py، ex2.py) ذخیره کن. پروژه کوچک: مدیریت کتابخانه ساده 📚 برای مثال، بیایم یه برنامه مدیریت کتابخانه بسازیم که کتابها رو ذخیره و نمایش بده: کلاسی برای کتاب با عنوان و نویسنده. متدهایی برای اضافه و نمایش کتابها. ذخیره در فایل. کپی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 آپلود کن تا پیشرفتت رو نشون بدی! 😎 ← درس قبلی: درس ۶ مقدماتی: ماژولها و کتابخانهها در پایتون درس بعدی: درس ۸ مقدماتی: پایگاه داده مقدماتی با SQLite در پایتون → برچسبها: OOP pythonpythonبرنامهنویسی شیءگرابرنامهنویسی مبتدیپایتونشیء پایتونکلاس پایتونمتد پایتون