مفهوم التغليف في بايثون
التغليف هو أحد المبادئ الأساسية في البرمجة الكائنية التوجه. يهدف التغليف إلى حماية البيانات عن طريق إخفاء تفاصيل التنفيذ الداخلية للكائن وجعلها غير قابلة للوصول مباشرة من الخارج. بدلاً من ذلك، يتم الوصول إلى البيانات وتعديلها فقط من خلال واجهات (طرق) مخصصة. في بايثون، يمكن تحقيق التغليف باستخدام المتغيرات والطرق الخاصة التي يتم تعريفها باستخدام الشرطة السفلية المزدوجة (__).
كيفية تطبيق التغليف في بايثون
في بايثون، يمكن تطبيق التغليف عن طريق جعل المتغيرات خاصة باستخدام الشرطة السفلية المزدوجة في بداية اسم المتغير. على سبيل المثال، إذا كان لدينا متغير باسم __balance، فإنه لا يمكن الوصول إليه مباشرة من خارج الكائن. يمكن توفير واجهات عامة (طرق) للوصول إلى هذه البيانات وتعديلها عند الحاجة. إليك مثال يوضح كيفية تطبيق التغليف في بايثون:
class BankAccount:
def __init__(self, owner, balance):
self.owner = owner
self.__balance = balance
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
return amount
else:
print("Insufficient funds")
return 0
def get_balance(self):
return self.__balance
account = BankAccount("Alice", 1000)
account.deposit(500)
print(account.get_balance()) # Output: 1500
print(account.__balance) # خطأ: لا يمكن الوصول إلى المتغير مباشرة
فوائد التغليف في البرمجة
التغليف يوفر العديد من الفوائد في البرمجة. أولاً، يحمي البيانات الحساسة من الوصول غير المصرح به والتعديل العرضي. ثانيًا، يجعل الكود أكثر مرونة وقابلية للصيانة حيث يمكن تغيير تفاصيل التنفيذ الداخلية دون التأثير على الكود الخارجي. بالإضافة إلى ذلك، يعزز التغليف مفهوم الكائنات الذاتية الدعم، حيث يمكن للكائن إدارة حالته الداخلية بشكل مستقل.
في المثال السابق، يمكن للمستخدم التعامل مع حساب البنك من خلال واجهات الإيداع والسحب دون الحاجة إلى القلق بشأن كيفية تخزين وإدارة الرصيد داخلياً. هذا يعزز من استدامة الكود وقابليته للتوسع في المستقبل.
