English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

Java التحكم في العملية

Java الأعداد

Java موجهة الأغراض المتعددة (I)

Java موجهة الأغراض المتعددة (II)

Java موجهة الأغراض المتعددة (III)

معالجة الاستثناءات في Java

Java القوائم (List)

Java Queue (الطوابير)

Java Map المجموعات

Java Set المجموعات

Java إدخال/مخرجات (I/O)

Java Reader/Writer

موضوعات أخرى في Java

التجميع في Java

في هذا الدرس، ستتعلم من خلال الأمثلة كيفية تحقيق التجميع وإخفاء البيانات في Java.

التجميع في Java

التجميع هي واحدة من أهم الميزات في البرمجة الموجهة للأغراض المتعددة. التجميع يشير إلى ربط المجالات والطرق في كائن واحد.

يرتبط تجميع المجالات والطرق في الكائن أيضًا بعملية إخفاء البيانات.

تجميع المجالات والطرق

عادةً، يتم تعريف التجميع كعملية لربط الكود المماثل في مكان واحد.

في Java، يمكننا ربط المجالات والطرق التي يتم التعامل معها معًا في نفس الكائن. على سبيل المثال،

class Rectangle {
   int length;
   int breadth;
   public void getArea() {}
}

في البرنامج المذكور أعلاه، تقوم الطريقة getArea() بحساب مساحة المربع. من أجل حساب المساحة، تحتاج إلى الطول (length) والعرض (breadth). لذلك، يتم وضع مجالات البيانات length وbreadth والطريقة getArea() داخل فئة Rectangle.

إخفاء البيانات في Java

يُعتبر إخفاء البيانات طريقة لتحديد الوصول إلى أعضاء البيانات من خلال إخفاء التفاصيل المفصلة.

يقدم التجميع أيضًا طريقة لإخفاء البيانات.

يمكن تحقيق إخفاء البيانات من خلال استخدام علامات التبويب لتحديد الوصول. في Java، هناك أربعة علامات التبويب لتحديد الوصول:

  • public - يُستخدم لتحديد أن الخاصية أو الطريقة عامة، يمكن الوصول إليها في أي مكان، بمعنى أنه يتم تعيين جميع الخاصيات والطرق كـ public افتراضيًا

  • private - يُستخدم لتحديد أن الخاصية أو الطريقة خاصة، ولا يمكن الوصول إليها خارج الكائن الذي تم إعلانه

  • protected - الميزات أو الأساليب المُعديلة هي محمية، وهي تشبه private، ولكن الفرق هو أن يمكن الوصول إليها أيضًا في الفروع.

  • default - لا يحتوي على أي مُعديل للوصول، يُسمى عادةً نمط الوصول الافتراضي. في هذا النمط، يُسمح بالوصول فقط داخل نفس المجموعة.

للحصول على معلومات إضافية، يرجى زيارةمؤشرات Java.

مثال 1: استخدام بيانات خاصة المخفية

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 كخاص، يمكن تقييد الوصول من الخارج دون إذن. هذا هو التخفي.

مثال 2: استخدام تعطيل البيانات المخفية

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.

Data Hiding and Encapsulation

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.