جلسه بیست و هشتم

شی گرایی

شی‌گرایی

شی گرایی (Object-Oriented Programming – OOP) در پایتون یک پارادایم برنامه‌نویسی است که به برنامه‌نویسان امکان می‌دهد تا مفاهیم و ساختارهای واقعی‌تری را در برنامه‌های خود پیاده‌سازی کنند. شی‌گرایی در پایتون بر پایه چهار اصل اصلی استوار است:

1. **کپسوله‌سازی (Encapsulation)**: تجمیع داده‌ها (attributes) و رفتارهای (methods) مرتبط با هم در یک واحد منسجم به نام کلاس. این امر به انسجام و انتزاع بیشتر کد کمک می‌کند.

 

2. **ابستراکشن (Abstraction)**: پنهان‌سازی جزئیات پیاده‌سازی و در معرض قرار دادن فقط آن بخش از کلاس که برای استفاده‌کنندگان ضروری است. این موضوع باعث می‌شود که پیچیدگی‌های درونی کلاس از دید کاربر پنهان بماند.

 

3. **وراثت (Inheritance)**: امکان ایجاد کلاس‌های جدید بر اساس کلاس‌های موجود. این امر به استفاده مجدد از کد و افزایش سازمان‌دهی برنامه کمک می‌کند.

4. **چندریختی (Polymorphism)**: امکان استفاده از یک رابط مشترک برای اشیاء با انواع مختلف. این ویژگی به انعطاف‌پذیری برنامه کمک می‌کند.

 

در پایتون، کلاس‌ها واحدهای اصلی شی‌گرایی هستند. هر کلاس شامل ویژگی‌ها (attributes) و متدهای (methods) مرتبط با آن است. با استفاده از کلاس‌ها، می‌توان اشیاء (objects) مختلفی را ایجاد کرد که هر یک دارای حالت و رفتار خاص خود هستند.

مثال 1:ساخت کلاس.

				
					class Car():
    """A simple attempt to model a car."""
    def __init__(self, make, model, year):
        """Initialize car attributes."""
        self.make = make
        self.model = model
        self.year = year
        # Fuel capacity and level in gallons.
        self.fuel_capacity = 15
        self.fuel_level = 0
    def fill_tank(self):
        """Fill gas tank to capacity."""
        self.fuel_level = self.fuel_capacity
        print("Fuel tank is full.")
    def drive(self):
        """Simulate driving."""
        print("The car is moving.")
				
			

ساخت شی از کلاس:

				
					my_car = Car('audi', 'a4', 2016)
my_old_car = Car('subaru', 'outback', 2013)
my_truck = Car('toyota', 'tacoma', 2010)
				
			
				
					:دسترسی به مقادیر ویژگی ها
print(my_car.make)
print(my_car.model)
print(my_car.year)
				
			
				
					:دسترسی به متود های یک کلاس
my_car.fill_tank()
my_car.drive()
				
			

می‌توانید مقدار یک ویژگی را مستقیماً تغییر دهید، یا می‌توانید روش‌هایی بنویسید که به‌روزرسانی مقادیر را با دقت بیشتری مدیریت می‌کنند.

				
					my_new_car = Car('audi', 'a4', 2016)
my_new_car.fuel_level = 5
				
			
				
					:نوشتن متودی برای به روز رسانی مقدار یک ویژگی
def update_fuel_level(self, new_level):
    """Update the fuel level."""
    if new_level <= self.fuel_capacity:
        self.fuel_level = new_level
    else:
        print("The tank can't hold that much!")
				
			
				
					:نوشتن متودی برای افزایش مقدار یک ویژگی
def add_fuel(self, amount):
    """Add fuel to the tank."""
    if (self.fuel_level + amount <= self.fuel_capacity):
        self.fuel_level += amount
        print("Added fuel.")
    else:
        print("The tank won't hold that much.")
				
			

شی‌گرایی در پایتون به برنامه‌نویسان کمک می‌کند تا برنامه‌های منسجم‌تر، قابل‌توسعه‌تر و سازمان‌یافته‌تری بنویسند. این رویکرد به ویژه در پروژه‌های بزرگ و پیچیده بسیار مفید است.