# 🐍 برنامهنویسی شیگرایی در پایتون
## 📌 مفهوم برنامهنویسی شیگرایی (OOP)
برنامهنویسی شیگرایی یکی از محبوبترین پارادایمهای برنامهنویسی است که به ما کمک میکند کد خود را منظمتر، قابل استفاده مجدد و قابل نگهداریتر بنویسیم.
در OOP، ما دنیای واقعی را با اشیاء (Objects) و کلاسها (Classes) مدلسازی میکنیم.
---
## 🎯 چهار اصل اساسی OOP
### 1️⃣ کپسولهسازی (Encapsulation)
پنهانسازی دادههای داخلی و نمایش فقط آنچه لازم است.
class BankAccount:
def __init__(self, owner, balance):
self.owner = owner
self.__balance = balance # Private attribute
def deposit(self, amount):
if amount > 0:
self.__balance += amount
return True
return False
def get_balance(self):
return self.__balance
# استفاده
account = BankAccount("علی", 1000)
account.deposit(500)
print(account.get_balance()) # 1500
### 2️⃣ وراثت (Inheritance)
قابلیت ارثبری ویژگیها از کلاس والد.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.name} میگه: واق واق! 🐕"
class Cat(Animal):
def speak(self):
return f"{self.name} میگه: میو میو! 🐱"
# استفاده
dog = Dog("سگی")
cat = Cat("گربهای")
print(dog.speak())
print(cat.speak())
### 3️⃣ چندریختی (Polymorphism)
توانایی استفاده از یک رابط واحد برای انواع مختلف.
class Shape:
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
# استفاده
shapes = [Rectangle(5, 3), Circle(4)]
for shape in shapes:
print(f"مساحت: {shape.area()}")
### 4️⃣ انتزاع (Abstraction)
پنهانسازی جزئیات پیچیده و نمایش فقط ویژگیهای ضروری.
from abc import ABC, abstractmethod
class PaymentProcessor(ABC):
@abstractmethod
def process_payment(self, amount):
pass
class CreditCardPayment(PaymentProcessor):
def process_payment(self, amount):
return f"پرداخت {amount} تومان با کارت اعتباری انجام شد ✅"
class PayPalPayment(PaymentProcessor):
def process_payment(self, amount):
return f"پرداخت {amount} تومان با PayPal انجام شد ✅"
---
## 💡 مثال کاربردی: سیستم مدیریت کتابخانه
class Book:
def __init__(self, title, author, isbn):
self.title = title
self.author = author
self.isbn = isbn
self.is_borrowed = False
def borrow(self):
if not self.is_borrowed:
self.is_borrowed = True
return f"کتاب '{self.title}' قرض گرفته شد ✅"
return "این کتاب در دسترس نیست ❌"
def return_book(self):
self.is_borrowed = False
return f"کتاب '{self.title}' برگردانده شد ✅"
class Member:
def __init__(self, name, member_id):
self.name = name
self.member_id = member_id
self.borrowed_books = []
def borrow_book(self, book):
if len(self.borrowed_books) < 3:
result = book.borrow()
if "✅" in result:
self.borrowed_books.append(book)
return result
return "شما بیش از 3 کتاب نمیتوانید قرض بگیرید!"
class Library:
def __init__(self, name):
self.name = name
self.books = []
self.members = []
def add_book(self, book):
self.books.append(book)
def register_member(self, member):
self.members.append(member)
def show_available_books(self):
available = [book.title for book in self.books if not book.is_borrowed]
return f"کتابهای موجود: {', '.join(available)}"
# استفاده
library = Library("کتابخانه مرکزی")
book1 = Book("تمیز کدنویسی", "رابرت مارتین", "12345")
member1 = Member("محمد", "M001")
library.add_book(book1)
library.register_member(member1)
print(member1.borrow_book(book1))
---
## ✨ مزایای OOP
پیام # 🐍 برنامهنویسی شیگرایی در پایتون
16 اکتبر 2025در همان حوالی فید
این پیام
Y