تغليف البيانات

تغليف البيانات

يعد تغليف البيانات المفهوم الأكثر أهمية لفهمه عند البرمجة باستخدام الكائنات. في البرمجة الموجهة للكائنات ، يهتم تغليف البيانات بـ:

  • الجمع بين البيانات وكيفية معالجتها في مكان واحد. يتم تحقيق ذلك من خلال الدولة (الحقول الخاصة) والسلوكيات (الطرق العامة) لكائن ما.
  • السماح فقط بدخول حالة الكائن وتعديلها من خلال السلوكيات. يمكن بعد ذلك التحكم في القيم الموجودة داخل حالة الكائن.
  • إخفاء تفاصيل كيفية عمل الكائن. الجزء الوحيد من الكائن الذي يمكن الوصول إليه من العالم الخارجي هو سلوكياته. ما يحدث داخل هذه السلوكيات وكيف يتم تخزين الحالة مخفي عن الأنظار.

فرض تغليف البيانات

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

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

بعد ذلك ، يجب أن نجعل السلوكيات التي تصل وتعديل حالة الكائن. يمكن تحقيق ذلك بثلاث طرق:

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

على سبيل المثال ، يمكننا تصميم كائن الشخص ليكون له طريقتين مُنشئتين. الأول لا يأخذ أي قيم ويقوم ببساطة بتعيين الكائن ليكون له حالة افتراضية (على سبيل المثال ، الاسم الأول والاسم الأخير والعنوان سيكونان سلاسل فارغة). يعين الثاني القيم الأولية للاسم الأول والاسم الأخير من القيم المنقولة إليه. يمكننا أيضًا إنشاء ثلاث طرق وصول تسمى getFirstName و getLastName و getAddress والتي تُرجع ببساطة قيم الحقول الخاصة المقابلة. قم بإنشاء حقل mutator يسمى setAddress والذي سيقوم بتعيين قيمة حقل العنوان الخاص.

أخيرًا ، نخفي تفاصيل تنفيذ كائننا. طالما التزمنا بالحفاظ على حقول الدولة خاصة والسلوكيات العامة ، لا توجد وسيلة للعالم الخارجي لمعرفة كيفية عمل الكائن داخليًا.

أسباب تغليف البيانات

الأسباب الرئيسية لاستخدام تغليف البيانات هي:

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

شاهد الفيديو: رسالة تقنية 428 : تغليف البيانات Encapsulation