شی گرایی در پایتون چیست؛ بررسی مفاهیم و مثال های کاربردی

مقالات
شنبه 03 شهریور 1403
جهت مطالعه این مقاله به 10 دقیقه زمان نیاز دارید
شی گرایی در پایتون چیست؛ بررسی مفاهیم و مثال های کاربردی
آنچه در این مقاله خواهیم خواند:

مقدمه:

شی‌گرایی (Object-Oriented Programming یا OOP) یک پارادایم برنامه‌نویسی است که به توسعه‌دهندگان اجازه می‌دهد برنامه‌ها را بر اساس اشیاء و کلاس‌ها بسازند. این پارادایم برنامه‌نویسی نسبت به برنامه‌نویسی رویه‌ای (Procedural Programming) که در آن کد به صورت خطی نوشته می‌شود، مزایای زیادی دارد. پایتون به عنوان یک زبان برنامه‌نویسی چندمنظوره و سطح بالا، از شی‌گرایی پشتیبانی کاملی دارد. در این مقاله به بررسی مفاهیم اصلی شی‌گرایی در پایتون و ارائه‌ی مثال‌های کاربردی می‌پردازیم تا شما با این روش برنامه‌نویسی قدرتمند و کاربردهای آن در پایتون آشنا شوید.

 

 

مفاهیم اصلی شی‌گرایی

1.کلاس (Class): کلاس یک قالب یا چارچوب است که برای ایجاد اشیاء استفاده می‌شود. در واقع کلاس‌ها نقشه‌های کلی برای ساخت اشیاء هستند و ویژگی‌ها و رفتارهای آن‌ها را تعریف می‌کنند. 

2.شی (Object): شی نمونه‌ای از یک کلاس است. وقتی یک کلاس تعریف می‌شود، می‌توان از آن اشیاء مختلفی ایجاد کرد که هر یک از این اشیاء ویژگی‌ها و رفتارهای خاص خود را دارند.

3.ویژگی‌ها (Attributes): ویژگی‌ها مشخصات و خصوصیات یک شی هستند. این ویژگی‌ها می‌توانند داده‌هایی مانند نام، سن و غیره باشند که با استفاده از متغیرها تعریف می‌شوند.

4.متدها (Methods): متدها عملکردها و رفتارهای یک شی هستند. این متدها توابعی هستند که در داخل کلاس تعریف می‌شوند و می‌توانند بر روی ویژگی‌های کلاس عملیات انجام دهند.

5.وراثت (Inheritance): وراثت به کلاس‌ها اجازه می‌دهد تا ویژگی‌ها و متدهای یک کلاس دیگر را به ارث ببرند. این ویژگی باعث می‌شود کدهای تکراری کاهش یابد و قابلیت استفاده مجدد کد افزایش یابد.

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

7.پنهان‌سازی (Encapsulation): پنهان‌سازی به معنی مخفی کردن جزئیات پیاده‌سازی و ارائه یک رابط ساده و قابل دسترسی به کاربران است. این ویژگی به محافظت از داده‌ها و جلوگیری از دسترسی غیرمجاز به آن‌ها کمک می‌کند.

بیشتر بخوانید: آموزش پایتون

 

مثال‌های کاربردی از شی‌گرایی در پایتون

برای درک بهتر مفاهیم شی‌گرایی، مثال‌های کاربردی از استفاده این مفاهیم در پایتون را بررسی می‌کنیم.

1.تعریف یک کلاس ساده

در این مثال، یک کلاس ساده به نام `Person` تعریف می‌کنیم که دارای ویژگی‌های `name` و `age` و یک متد به نام `greet` است:

 

```python

class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age

 

    def greet(self):

        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

 

#ایجاد یک شی از کلاس Person

person1 = Person("Alice", 30)

person1.greet() # خروجی: Hello, my name is Alice and I am 30 years old.

```

در این مثال، کلاس `Person` دارای یک سازنده (`__init__`) است که ویژگی‌های `name` و `age` را مقداردهی می‌کند. متد `greet` نیز یک پیام خوش‌آمدگویی چاپ می‌کند.

 

 

 

2.استفاده از وراثت

در این مثال، کلاس `Student` را تعریف می‌کنیم که از کلاس `Person` به ارث می‌برد و یک ویژگی جدید به نام `student_id` دارد:

 

```python

class Student(Person):

    def __init__(self, name, age, student_id):

        super().__init__(name, age)

        self.student_id = student_id

 

    def show_student_id(self):

        print(f"My student ID is {self.student_id}.")

 

#ایجاد یک شی از کلاس Student

student1 = Student("Bob", 22, "S12345")

student1.greet() 

#خروجی: Hello, my name is Bob and I am 22 years old.

student1.show_student_id()

 #خروجی: My student ID is S12345.

```

در این مثال، کلاس `Student` ویژگی‌ها و متدهای کلاس `Person` را به ارث می‌برد و یک متد جدید به نام `show_student_id` دارد که شناسه دانشجویی را نمایش می‌دهد.

 

 

 

3.چندریختی

در این مثال، دو کلاس `Dog` و `Cat` را تعریف می‌کنیم که هر دو دارای متدی به نام `make_sound` هستند اما هر کدام به روش خاص خود پیاده‌سازی شده‌اند:

 

```python

class Dog:

    def make_sound(self):

        print("Woof!")

 

class Cat:

    def make_sound(self):

        print("Meow!")

 

def animal_sound(animal):

    animal.make_sound()

 

#hیجاد اشیاء از کلاس‌های Dog و Cat

dog = Dog()

cat = Cat()

 

#استفاده از چندریختی

animal_sound(dog) # 

خروجی: Woof!

animal_sound(cat) # 

خروجی: Meow!

```

در این مثال، تابع `animal_sound` می‌تواند با هر شی‌ای که دارای متد `make_sound` باشد کار کند، بدون توجه به نوع کلاس آن شی.

 

 

 

4.پنهان‌سازی

در این مثال، از پنهان‌سازی برای مخفی کردن جزئیات پیاده‌سازی و حفاظت از داده‌های داخلی کلاس استفاده می‌کنیم. ویژگی‌ها و متدهای خصوصی با دو آندرلاین (`__`) در ابتدای نام آن‌ها مشخص می‌شوند.

 

```python

class BankAccount:

    def __init__(self, account_number, balance):

        self.__account_number = account_number

        self.__balance = balance

 

    def deposit(self, amount):

        if amount > 0:

            self.__balance += amount

        else:

            print("Invalid deposit amount.")

 

    def withdraw(self, amount):

        if 0 < amount <= self.__balance:

            self.__balance -= amount

        else:

            print("Invalid withdrawal amount or insufficient funds.")

 

    def get_balance(self):

        return self.__balance

 

#ایجاد یک شی از کلاس BankAccount

account = BankAccount("12345678", 1000)

account.deposit(500)

print(account.get_balance())# 

خروجی: 1500

account.withdraw(300)

print(account.get_balance())#

 خروجی: 1200

 

 

#تلاش برای دسترسی مستقیم به ویژگی‌های خصوصی (ناموفق خواهد بود)

print(account.__balance)#

 #خطا: AttributeError: 'BankAccount' object has no attribute '__balance'

```

در این مثال، ویژگی‌های `__account_number` و `__balance` به عنوان خصوصی تعریف شده‌اند و فقط از طریق متدهای کلاس قابل دسترسی و تغییر هستند.

 

مطالب مرتبط: جاوا اسکریپت یا پایتون؟ بررسی تفاوت ها و کاربردها

 

مزایای شی‌گرایی

شی‌گرایی در برنامه‌نویسی مزایای زیادی دارد که برخی از آن‌ها عبارتند از:

1. قابلیت استفاده مجدد کد: با استفاده از کلاس‌ها و وراثت، می‌توان کدهای قابل استفاده مجدد نوشت و از تکرار کدها جلوگیری کرد.

2. افزایش خوانایی و نگهداری کد: با تفکیک وظایف به کلاس‌ها و اشیاء مجزا، کدها خواناتر و نگهداری آن‌ها آسان‌تر می‌شود.

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

4. افزایش امنیت و پنهان‌سازی: با استفاده از پنهان‌سازی، می‌توان از دسترسی غیرمجاز به داده‌ها و متدهای داخلی کلاس‌ها جلوگیری کرد.

5. سهولت در تست و اشکال‌زدایی: با استفاده از کلاس‌ها و متدها، می‌توان بخش‌های مختلف کد را به طور مستقل تست و اشکال‌زدایی کرد.

 

 

جمع‌بندی

شی‌گرایی یک پارادایم برنامه‌نویسی قدرتمند و انعطاف‌پذیر است که به توسعه‌دهندگان کمک می‌کند تا کدهای سازماندهی شده و قابل نگهداری بنویسند. پایتون با پشتیبانی کامل از شی‌گرایی، این امکان را فراهم می‌کند تا برنامه‌های پیچیده و کاربردی را با استفاده از کلاس‌ها، اشیاء، وراثت، چندریختی و پنهان‌سازی توسعه دهیم. با استفاده از مثال‌های ارائه شده، می‌توان به راحتی مفاهیم اصلی شی‌گرایی را درک و در پروژه‌های خود به کار گرفت. یادگیری و استفاده از شی‌گرایی در پایتون نه تنها به افزایش توانایی‌های برنامه‌نویسی شما کمک می‌کند، بلکه باعث بهبود کیفیت کدها و پروژه‌هایتان نیز خواهد شد.

آموزشگاه پل استار برگزار کننده دوره های مختلف در زمینه هوش مصنوعی، رباتیک و برنامه نویسی برای کودکان است که شما در صورت علاقمندی به این حوزه ها می توانید با مشاوران ما برای شرکت در این دوره در تماس باشید و یا برای آگاهی از شرایط ثبت نام در این دوره ها بر روی لینک آبی قبل کلیک کنید.