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