abstraction

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/05/12
  • تعداد بازدید: 18

انتزاع (Abstraction) در برنامه‌نویسی شی‌گرا

انتزاع یا Abstraction یکی از اصول مهم برنامه‌نویسی شی‌گرا است که به ما کمک می‌کند پیچیدگی‌های یک سیستم را پنهان کنیم و فقط اطلاعات و عملکردهای ضروری و مورد نیاز را در دسترس قرار دهیم.

چرا انتزاع مهم است؟

در برنامه‌نویسی، اغلب سیستم‌ها و برنامه‌ها بسیار پیچیده‌اند. اگر هر بار مجبور باشیم جزئیات دقیق پیاده‌سازی را ببینیم و با آن‌ها سر و کار داشته باشیم، کار ما سخت و گیج‌کننده خواهد شد. انتزاع کمک می‌کند تا فقط بخشی از اطلاعات یا عملکردها را نمایش دهیم و بقیه را پنهان کنیم. این باعث می‌شود کد تمیزتر، قابل فهم‌تر، و نگهداری آن ساده‌تر شود.

کاربرد انتزاع در کلاس‌ها

در کلاس‌ها، انتزاع به معنی تعریف رابط‌های مشخص (متدهای عمومی) است که کاربر کلاس با آن‌ها سروکار دارد، و جزئیات داخلی (مثل متغیرهای خصوصی یا متدهای کمکی) را پنهان می‌کند. به این ترتیب، استفاده‌کننده از کلاس لازم نیست بداند داخل کلاس چه اتفاقی می‌افتد، فقط کافی است بداند که چگونه با آن کار کند.

چگونه انتزاع را در پایتون پیاده کنیم؟

- استفاده از private یا protected attributes با پیشوند _ یا __ برای مخفی کردن داده‌های داخلی کلاس
- تعریف متدهای عمومی (public methods) که تنها راه ارتباطی با کلاس هستند
- استفاده از کلاس‌های abstract (در ماژول abc) برای تعریف رابط‌های پایه که باید در کلاس‌های فرزند پیاده‌سازی شوند

مثال ساده از انتزاع با استفاده از کلاس abstract
from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def sound(self):
        pass

class Dog(Animal):
    def sound(self):
        print("Woof!")

class Cat(Animal):
    def sound(self):
        print("Meow!")

def make_sound(animal: Animal):
    animal.sound()

dog = Dog()
cat = Cat()

make_sound(dog)  # خروجی: Woof!
make_sound(cat)  # خروجی: Meow!

در این مثال، کلاس Animal یک کلاس انتزاعی است که متد sound را به صورت انتزاعی تعریف کرده است. هر کلاس فرزند باید این متد را پیاده‌سازی کند. کاربر کلاس‌ها فقط با متد sound کار دارد و نیازی به دانستن جزئیات داخلی کلاس‌ها نیست.

خلاصه

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

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.