Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

Javaالتجريد في جافا

  • مفهوم التجريد
  • مفهوم الـ Abstract Class في جافا
  • مفهوم الـ Abstract Method في جافا
  • أمثلة شاملة حول التجريد في جافا

مفهوم التجريد

التجريد ( Abstraction ) هو أسلوب مهم جداً يستخدم لتسهيل كتابة الأوامر على المبرمجين, فهو يجعلك قادراً على تنفيذ ما تريد دون الحاجة إلى معرفة كافة التفاصيل التي تم فيها تنفيذ ذلك. إذاً الـ Abstraction يجعلك تتعامل مع الأشياء بسطحية بدل أن تغوص في معرفة تفاصيل الكودات المعقدة.

فمثلاً إذا كنت تنوي بناء برنامج يتيح لمستخدميه إرسال إقتراحات حول التطبيق من خلال البريد الإلكتروني, في هذه الحالة لن يكون عليك القلق بتاتاً حول طريقة تعامل أوامر جافا مع البروتوكولات التي تعمل عندما يتم إرسال رسائل إلكترونية من خلال هذا التطبيق, لأنك لست مسؤولاً عنها, فعلياً هذه وظيفة شركة Sun التي تقوم بتطوير لغة جافا. و هم يخبرونك أنه لإرسال بريد إلكتروني إستخدم هذه الأوامر البسيطة فقط.

إذاً الـ Abstraction هو أسلوب يستخدم لإخفاء تفاصيل تنفيذ البرنامج. لتطبيق مفهوم الـ Abstraction نستخدم الكلمة abstract ضمن شروط محددة.


مصطلحات تقنية

إذا أردت تعريف الشيء كـ abstract, أكتب فقط الكلمة abstract قبله.

  • الكلاس المعرف كـ abstract يسمى Abstract Class.
  • الكلاس العادي الغير معرف كـ abstract يسمى Concrete Class.
  • الدالة المعرفة كـ abstract تسمى Abstract Method أو Abstract Function.

مفهوم الـ Abstract Class في جافا

إذا وضعت الكلمة abstract قبل إسم الكلاس, ستتغير قليلاً طريقة التعامل معه لأنه لم يعد كلاس عادي.
عندها سيراه و يعامله المترجم كـ Abstract Class.


نقاط مهمة حول الـ Abstract Class

  • الكلاس العادي لا يمكنه أن يحتوي على دوال نوعها abstract.
  • الـ Abstract Class يمكنه أن يحتوي على دوال عادية, و يمكنه أن يحتوي على دوال نوعها abstract.
  • إذا قمت بتعريف الكلاس كـ abstract, فهذا يعني أن هذا الكلاس لا يمكن إنشاء كائنات منه.
  • بما أنه لا يمكن إنشاء كائنات من Abstract Class, فهذا يعني أنه للإستفادة من هذا الكلاس, يجب وراثته.
  • الكلاس الذي يرث من كلاس نوعه abstract, يجب أن يفعل Override لجميع الدوال المعرفة كـ abstract.


طريقة تعريف كلاس نوعه abstract

نكتب فقط الكلمة abstract قبل الكلمة class.

مثال

abstract class Example {
}
abstract class Example { }

مفهوم الـ Abstract Method في جافا

إذا كنت تريد بناء دالة و جعل الكلاس الذي يرثها هو المسؤول عن كتابتة محتواها, قم بتعريفها كـ abstract.


نقاط مهمة حول الـ Abstract Method

  • إذا وضعت الكلمة abstract قبل إسم الدالة, فهذا يعني أنها دالة من النوع abstract.
  • الدالة التي نوعها abstract هي دالة لها إسم و نوع محدد, لكنها لا تحتوي على body (جسم), أي لا تملك أقواس بداية و نهاية { }.
  • الدالة العادية تحتوي على أقواس البداية و النهاية { }.
  • الـ Abstract Method يجب وضع فاصلة منقوطة ; في آخرها بدل أقواس البداية و النهاية.
  • الكلاس الذي يرث من كلاس نوعه abstract, يجب أن يفعل Override لكل دوالة نوعها abstract, أي يجب أن يكتب الـ body لهذه الدوال.


طريقة تعريف دوال نوعها abstract في جافا

نكتب فقط الكلمة abstract بعد Modifier الدالة.

أمثلة

public abstract void print();
public abstract int getId();
public abstract void setId(int id);
public abstract void print(); public abstract int getId(); public abstract void setId(int id);


إنتبه: عندما تفعل Override لدالة نوعها abstract, يجب أن لا تعرفها كـ abstract من جديد.

مثال

لنفترض أننا قمنا بتعريف دالة إسمها displayMessage() كـ abstract.

public abstract void displayMessage();
public abstract void displayMessage();

لا يجب أن نكتب abstract عندما تفعل لها Override.

@Override
public abstract void displayMessage() { // abstract methods cannot have a body <-- [ abstract سيظهر لك هذا التنبيه بسبب الكلمة ]
}
@Override public abstract void displayMessage() { // abstract methods cannot have a body <-- [ abstract سيظهر لك هذا التنبيه بسبب الكلمة ] }

لتصحيح هذا الخطأ, نمسح فقط الكلمة abstract.

@Override
public void displayMessage() { // نلاحظ أن التنبيه إختفى
}
@Override public void displayMessage() { // نلاحظ أن التنبيه إختفى }

أمثلة شاملة حول التجريد في جافا

وضعنا هنا ثلاثة أمثلة بسيطة و مترابطة تعلمك الأساسيات.

شاهد الأمثلة


وضعنا هنا مثال بسيط حول Abstract Class يرث من Abstract Class.

شاهد المثال


وضعنا هنا مثال مهم يعلمك متى تحتاج إلى إنشاء Abstract Class.

شاهد المثال


سترى فائدة الـ Abstraction أيضاً في دروس متقدمة عندما تستخدم كلاسات جاهزة تتيح لك التعامل مع الشبكات (Networks), الواجهات (GUI) و قواعد البيانات (DataBases) بكل سهولة. كما أنك ستراها عندما تعمل على بناء مشاريع كبيرة, تجبرك على إستخدام هذا الأسلوب لتسهيل العمل في المشروع.