جلسه بیست و هشتم
شی گرایی
شیگرایی
شی گرایی (Object-Oriented Programming – OOP) در پایتون یک پارادایم برنامهنویسی است که به برنامهنویسان امکان میدهد تا مفاهیم و ساختارهای واقعیتری را در برنامههای خود پیادهسازی کنند. شیگرایی در پایتون بر پایه چهار اصل اصلی استوار است:
1. **کپسولهسازی (Encapsulation)**: تجمیع دادهها (attributes) و رفتارهای (methods) مرتبط با هم در یک واحد منسجم به نام کلاس. این امر به انسجام و انتزاع بیشتر کد کمک میکند.
2. **ابستراکشن (Abstraction)**: پنهانسازی جزئیات پیادهسازی و در معرض قرار دادن فقط آن بخش از کلاس که برای استفادهکنندگان ضروری است. این موضوع باعث میشود که پیچیدگیهای درونی کلاس از دید کاربر پنهان بماند.
3. **وراثت (Inheritance)**: امکان ایجاد کلاسهای جدید بر اساس کلاسهای موجود. این امر به استفاده مجدد از کد و افزایش سازماندهی برنامه کمک میکند.
4. **چندریختی (Polymorphism)**: امکان استفاده از یک رابط مشترک برای اشیاء با انواع مختلف. این ویژگی به انعطافپذیری برنامه کمک میکند.
در پایتون، کلاسها واحدهای اصلی شیگرایی هستند. هر کلاس شامل ویژگیها (attributes) و متدهای (methods) مرتبط با آن است. با استفاده از کلاسها، میتوان اشیاء (objects) مختلفی را ایجاد کرد که هر یک دارای حالت و رفتار خاص خود هستند.
مثال 1:ساخت کلاس.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<xmp>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.")</xmp> |
ساخت شی از کلاس:
1 2 3 4 5 |
<xmp>my_car = Car('audi', 'a4', 2016) my_old_car = Car('subaru', 'outback', 2013) my_truck = Car('toyota', 'tacoma', 2010)</xmp> |
1 2 3 4 5 6 |
<xmp>:دسترسی به مقادیر ویژگی ها print(my_car.make) print(my_car.model) print(my_car.year)</xmp> |
1 2 3 4 5 |
<xmp>:دسترسی به متود های یک کلاس my_car.fill_tank() my_car.drive()</xmp> |
میتوانید مقدار یک ویژگی را مستقیماً تغییر دهید، یا میتوانید روشهایی بنویسید که بهروزرسانی مقادیر را با دقت بیشتری مدیریت میکنند.
1 2 3 4 |
<xmp>my_new_car = Car('audi', 'a4', 2016) my_new_car.fuel_level = 5</xmp> |
1 2 3 4 5 6 7 8 9 |
<xmp>:نوشتن متودی برای به روز رسانی مقدار یک ویژگی 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!")</xmp> |
1 2 3 4 5 6 7 8 9 10 |
<xmp>:نوشتن متودی برای افزایش مقدار یک ویژگی 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.")</xmp> |
شیگرایی در پایتون به برنامهنویسان کمک میکند تا برنامههای منسجمتر، قابلتوسعهتر و سازمانیافتهتری بنویسند. این رویکرد به ویژه در پروژههای بزرگ و پیچیده بسیار مفید است.