khaled0mohammed نشر 11 يناير 2022 أرسل تقرير نشر 11 يناير 2022 ما هو مفهوم Encapsulation وما الفائدة منه 2 اقتباس
0 Ali Haidar Ahmad نشر 13 يناير 2022 أرسل تقرير نشر 13 يناير 2022 - التغليف هو أشبه بكبسولة الدواء التي تحتوي داخلها خليطاً من المواد الطبية. - يعتبر التغليف أحد المفاهيم الأساسية في البرمجة الشيئية (OOP). - إليك عدة تعاريف لمفهوم التغليف (Encapsulation): هو العملية التي نقوم من خلالها بتغطية الكود والبيانات مع بعضها ضمن وحدة واحدة. هو فكرة مضمونها تجميع البيانات والطرق التي تعمل على تلك البيانات في وحدة واحدة، على سبيل المثال ، Class في Java. هو عبارة عن أسلوب يمكن اتباعه لإخفاء البيانات الأساسية في الكلاس, أي لإخفاء الخصائص الموجودة فيه ( Global Variables ), و جعل الكلاسات الأخرى قادرة على التعامل مع هذه الخصائص فقط من خلال دوال يقوم بإنشائها المبرمج الأساسي للكلاس. - من الناحية العملية، فإنه في التغليف، يتم إخفاء المتغيرات أو البيانات الخاصة بالكلاس عن أي كلاء آخر ولا يمكن الوصول إليها إلا من خلال دالة عضو من نفس الكلاس. - يتم تحقيق مبدأ التغليف عن طريق التصريح عن جميع المتغيرات في الكلاس كمتغيرات خاصة (private) وكتابة طرق (دوال) عامة (public) في الكلاس لتعيين قيم المتغيرات والحصول عليها. - فوائد التغليف: من خلال توفير طريقة (دالة) setter أو getter فقط، يمكنك جعل الكلاس للقراءة فقط أو للكتابة فقط (زيادة المرونة) على سبيل المثال، إذا أردنا جعل الكلاس قابل للقراءة فقط "class read-only" نقوم بحذف دوال الضبط setter، وفي حال أردنا جعله للكتابة فقط نقوم بحذف دوال ال getter. يوفر لك التحكم في البيانات. طريقة لتحقيق إخفاء البيانات في Java. لن يكون لدى المستخدم أي فكرة عن التنفيذ الداخلي للكلاس، حيث لن يكون مرئياً للمستخدم كيف يخزن الكلاس القيم في المتغيرات. سيعرف المستخدم فقط أننا نقوم بتمرير القيم إلى طريقة الضبط setter ويتم تهيئة المتغيرات بهذه القيمة الممررة. قابلية إعادة الاستخدام: يحسن التغليف أيضاً من قابلية إعادة الاستخدام ويسهل تغييره مع المتطلبات الجديدة. مثال: سنعطي الآن مثالاً بسيطاً للتغليف، حيث سنقوم بتعريف كلاس يحقق مبدأ التغليف و يحتوي على حقل واحد فقط مع دالة setter ودالة getter. package com.javaproject; public class Student{ // private هنا قمنا بتعريف متغير يمثل اسم الطالب وحددنا الوصول إليه ك private String studentName; // هنا قمنا بتعريف متغير للحصول على هذا المتغير // getter أي أننا عرفنا دالة public String getName(){ return studentName; } // هنا قمنا بتعريف دالة لضبط قيمة هذا المتغير // أي قمنا بتعريف دالة تقوم بتحديد اسم الطالب // setter أي أننا عرفنا دالة public void setName(String studentName){ this.studentName=studentName; } } الآن سنقوم باختبار الكلاس السابق الذي قمنا بتغليفه: package com.javatproject; class Test{ public static void main(String[] args){ // إنشاء كائن من الكلاس السابق // أو بمعنى آخر تعريف طالب Student stu=new Student(); // تحديد اسم لهذا الطالب stu.setName(Ali"); // طباعة اسم هذا الطالب System.out.println(stu.getName()); } } اقتباس
0 qusayabomal3aqa نشر 11 يناير 2022 أرسل تقرير نشر 11 يناير 2022 الغرض من التغليف: يحمي الكود من الآخرين. قابلية صيانة الكود. مثال: public class Addition(){ int age=5; // هذا المتغير لا يمكن ان يكون سالب، لانه لا يوجد عمر بالسالب } إذا قام شخص ما بتغيير المتغير إلى 5- فهو غير واقعي. للتغلب على المشكلة نحتاج إلى اتباع الخطوات التالية: يمكننا جعل المتغير خاصًا أو محميًا. بحيث يمكن تعديل الكود أعلاه على النحو التالي: public class Addition(){ private int a = 5; // هنا يتم تمييز المتغير على أنه خاص // Setter public integer setAge(int a){ if(a > 0){// هنا يتم تطبيق الشرط ونضمن ان لا تكون قيمة المتغير سالبة $this.a = a; } } // Getter public integer getAge() { // هذه الدالة للوصول الى المتغير لانك لا تستطيع الوصول له مباشرة لانه محمي return a; } } للتغليف ، نحتاج إلى جعل جميع متغيرات الصنف خاصة وإنشاء دالة ادخال القيمة للمتغير ودالة للوصول الى المتغير. وهذا بدوره سيجبر الآخرين على الاتصال بالدوال بدلاً من الوصول إلى البيانات مباشرة. 1 اقتباس
السؤال
khaled0mohammed
ما هو مفهوم Encapsulation وما الفائدة منه
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.