شعار ConstructiCat
CodeBust.
تصفح القسم ▾

تغليف الحقل.

المشكلة

لديك حقل عام (public field).

الحل

اجعل الحقل خاصاً (private) وأنشئ دوال وصول (access methods) له.

##مثال

قبل
class Person {
  public String name;
}
بعد
class Person {
  private String name;

  public String getName() {
    return name;
  }
  public void setName(String arg) {
    name = arg;
  }
}

##لماذا نعيد الهيكلة

أحد ركائز البرمجة كائنية التوجه (OOP) هو التغليف (Encapsulation)، أي القدرة على إخفاء بيانات الكائنات. خلاف ذلك، ستكون جميع الكائنات عامة ويمكن للكائنات الأخرى الحصول على بيانات كائنك وتعديلها دون أي فحوصات أو ضوابط! تفصل البيانات عن السلوكيات المرتبطة بها، وتتعرض نمطية (modularity) أقسام البرنامج للخطر، وتصبح الصيانة معقدة.

##الفوائد

  • إذا كانت بيانات المكون وسلوكه مترابطين بشكل وثيق وموجودين في نفس المكان في الكود، فسيكون من الأسهل عليك بكثير صيانة هذا المكون وتطويره.

  • يمكنك أيضاً إجراء عمليات معقدة تتعلق بالوصول إلى حقول الكائنات.

##كيفية إعادة الهيكلة

  1. أنشئ دالة الحصول (getter) ودالة التعيين (setter) للحقل.

  2. ابحث عن جميع استدعاءات الحقل. استبدل الحصول على قيمة الحقل بدالة الحصول، واستبدل تعيين قيم الحقل الجديدة بدالة التعيين.

  3. بعد استبدال جميع استدعاءات الحقل، اجعل الحقل خاصاً (private).

الخطوات التالية

تقنية تغليف الحقل هي الخطوة الأولى فقط لتقريب البيانات والسلوكيات المتعلقة بها من بعضها البعض. بعد إنشاء دوال وصول بسيطة للحقول، يجب عليك إعادة فحص الأماكن التي يتم فيها استدعاء هذه الدوال. من المحتمل جداً أن يكون الكود في هذه المناطق أكثر ملاءمة داخل دوال الوصول نفسها.