English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، ستتعلم من خلال الأمثلة كيفية تحقيق التجميع وإخفاء البيانات في Java.
التجميع هي واحدة من أهم الميزات في البرمجة الموجهة للأغراض المتعددة. التجميع يشير إلى ربط المجالات والطرق في كائن واحد.
يرتبط تجميع المجالات والطرق في الكائن أيضًا بعملية إخفاء البيانات.
عادةً، يتم تعريف التجميع كعملية لربط الكود المماثل في مكان واحد.
في Java، يمكننا ربط المجالات والطرق التي يتم التعامل معها معًا في نفس الكائن. على سبيل المثال،
class Rectangle { int length; int breadth; public void getArea() {} }
في البرنامج المذكور أعلاه، تقوم الطريقة getArea() بحساب مساحة المربع. من أجل حساب المساحة، تحتاج إلى الطول (length) والعرض (breadth). لذلك، يتم وضع مجالات البيانات length وbreadth والطريقة getArea() داخل فئة Rectangle.
يُعتبر إخفاء البيانات طريقة لتحديد الوصول إلى أعضاء البيانات من خلال إخفاء التفاصيل المفصلة.
يقدم التجميع أيضًا طريقة لإخفاء البيانات.
يمكن تحقيق إخفاء البيانات من خلال استخدام علامات التبويب لتحديد الوصول. في Java، هناك أربعة علامات التبويب لتحديد الوصول:
public - يُستخدم لتحديد أن الخاصية أو الطريقة عامة، يمكن الوصول إليها في أي مكان، بمعنى أنه يتم تعيين جميع الخاصيات والطرق كـ public افتراضيًا
private - يُستخدم لتحديد أن الخاصية أو الطريقة خاصة، ولا يمكن الوصول إليها خارج الكائن الذي تم إعلانه
protected - الميزات أو الأساليب المُعديلة هي محمية، وهي تشبه private، ولكن الفرق هو أن يمكن الوصول إليها أيضًا في الفروع.
default - لا يحتوي على أي مُعديل للوصول، يُسمى عادةً نمط الوصول الافتراضي. في هذا النمط، يُسمح بالوصول فقط داخل نفس المجموعة.
للحصول على معلومات إضافية، يرجى زيارةمؤشرات Java.
class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Main { public static void main(String[] args) { Person p1 = new Person(); p1.setAge(24); System.out.println("عمرى هو " + p1.getAge()); } }
نتائج الإخراج
عمرى هو 24
في هذا المثال، لدينا حقل خاص age. لأنه خاص، لا يمكن الوصول إليه من الخارج. لكي نصل إلى age، استخدمنا الأساليب العامة getAge() وsetAge(). هذه الأساليب تسمى أساليب getter وsetter.
إذا حاولت الوصول إلى حقل age من فئة Main، فإنه سيظهر رسالة خطأ.
p1.age = 24; // خطأ: age له وصول خاص في Person
عند تعيين age كخاص، يمكن تقييد الوصول من الخارج دون إذن. هذا هو التخفي.
class Person { protected String profession; protected void displayInfo() { System.out.println("I am a " + profession); } } class Teacher extends Person { public static void main(String[] args) { Teacher t1 = new Teacher(); t1.profession = "teacher"; t1.displayInfo(); } }
نتائج الإخراج
I am a teacher
في البرنامج السابق، قمنا بإنشاء فئة Person تحتوي على الحقول المحمية profession والأسلوب المحمي displayInfo().
لقد قمنا بتحديد هذه العضوية من فئة Teacher (فرع لـ Person).
في Java،التعطيل يمكن أن يساعدنا في الحفاظ على الحقول والأساليب ذات الصلة معًا، مما يجعل شيفرة لدينا أكثر تنظيماً وسهولة في القراءة.
It helps to control the modification of our data fields. Consider a situation where we want the age field in the class to be a non-negative number. Here, we can set age to private and apply logic within the setAge() method. For example,
class Person { private int age; public void setAge(int age) { if (age >= 0) { this.age = age; } } }
Getter and setter methods provide read-only or write-only access to our class fields. For example,
getName() // Provide read-only access setName() // Provide write-only access
It helps to decouple the components of the system. These decoupled components can be developed, tested, and debugged independently and simultaneously. And, any changes to a specific component will not have any effect on other components.
People usually think that encapsulation is data hiding, but this is not entirely correct.
Encapsulation means binding related fields and methods together.This allows us to achieve data hiding.Encapsulation itself is not data hiding.