جلسه بیست و هشتم
شی گرایی
شیگرایی
شی گرایی (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.")
شیگرایی در پایتون به برنامهنویسان کمک میکند تا برنامههای منسجمتر، قابلتوسعهتر و سازمانیافتهتری بنویسند. این رویکرد به ویژه در پروژههای بزرگ و پیچیده بسیار مفید است.