تجريد جافا - إتقان OOP مع التجريد في Java

ستساعدك هذه المقالة حول Java Abstraction على فهم استخدام فئة Abstract وواجهة المستخدم وكيفية تحقيق ذلك باستخدام Abstraction.

في المدونة السابقة ، تعرفت على في جافا. الآن في هذه المدونة ، سوف نفهم أحد الركائز المهمة الأخرى لـ مثل Java Abstraction الذي تتمثل وظيفته الرئيسية في إخفاء تفاصيل التنفيذ الداخلية.

سأغطي الموضوعات المذكورة أدناه في هذه المقالة:





يمكنك أيضًا متابعة هذا التسجيل لـ حيث يمكنك فهم الموضوعات بطريقة مفصلة مع أمثلة.



التجريد في OOP

عندما نتحدث بشكل عام عن التجريد ، فإن لغة البرنامج هي مثال على التجريد. لنأخذ مثالاً ونكتب إفادة كـ-

س = ص + ض

في البيان أعلاه ، نضيف متغيرين يتم تخزينهما في موقعين مختلفين ثم نقوم بتخزين النتيجة في موقع جديد. إذن ، ماذا سيحدث بعد ذلك؟ كما تعلم ، هناك سجلات ، ومجموعات تعليمات ، وعدادات برامج ، ووحدات تخزين ، وما إلى ذلك. عندما نشير إلى التجريد في Java ، فإننا نتحدث عن التجريد في وكيف يتم تحقيقه. يبدأ مفهوم التجريد في OOP مباشرة في اللحظة التي يتم فيها تصور الفصل. يتم تطبيق التجريد في كل مكان في البرامج و OOP.



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

التجريد ليس سوى جودة التعامل مع الأفكار وليس الأحداث. إنه يتعامل بشكل أساسي مع إخفاء التفاصيل الداخلية وإظهار الأشياء الأساسية للمستخدم.

استدعاء - تجريد جافا -Edureka

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

أ) فئة الملخص

كيفية التقاط لقطة شاشة في محرك الويب السيلينيوم باستخدام جافا

ب) الواجهة

دعونا نفهم هذه المفاهيم بمزيد من التفصيل.

فئة مجردة

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

ملحوظة: يمكنك تحقيق 0-100٪ تجريد باستخدام فئة مجردة.

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

دعونا نلقي نظرة على بناء جملة فئة مجردة:

فئة الرياضة المجردة {// abstract class sports Abstract void jump () // abstract method}

واجهه المستخدم

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

في الأساس ، الواجهة عبارة عن مجموعة من الأساليب ذات الصلة بأجسام فارغة. دعونا نفهم الواجهات من خلال أخذ مثال لواجهة الشكل مع الأساليب ذات الصلة.

شكل الواجهة العامة {public void draw () public double getArea ()}

يجب أن تكون هذه الأساليب موجودة في كل 'شكل' ، أليس كذلك؟ لكن عملهم سيكون مختلفًا.

لنفترض أنك تريد رسم شكل ، على سبيل المثال دائرة ، مربع ، مستطيل وما إلى ذلك. أنت تعلم بالفعل ، كل شكل له أبعاده الخاصة مثل نصف القطر والارتفاع والعرض. لنفترض أنني أريد رسم دائرة وحساب مساحتها. بالنظر إلى الأمر نفسه ، قمت بإنشاء طريقتين في الكود أعلاه ، وهما draw () و getArea (). الآن ، باستخدام هذه الأساليب ، يمكنني رسم أي شكل وحساب المنطقة من خلال تنفيذ واجهته.

الآن ، دعنا نلقي نظرة على الوظائف المتعلقة بكيفية تنفيذ هذه الواجهة.
من أجل تنفيذ هذه الواجهة ، سيتغير اسم فصلك إلى أي شكل ، دعنا نقول 'دائرة'. لذلك ، لتنفيذ واجهة الفصل ، سأستخدم الكلمة الرئيسية 'تنفيذ':

ينفذ public class Circle الشكل {private double radius public Circle (double r) {this.radius = r} void draw () {System.out.println ('Drawing Circle')} public double getArea () {return Math.PI * this.radius * this.radius} public double getRadius () {return this.radius}} public class Test {public static void main (String args []) {Shape c = new Circle (8) c.draw () System. out.println ('Area =' + c.getArea ())}}

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

مثال في الوقت الفعلي على التجريد في جافا

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

public Interface Sport {void play ()} // الآن ، سننشئ فئة تسمى 'Badminton' فئة عامة Badminton تنفذ الرياضة {Override public void play () {System.out.println ('Playing badminton')}} // بعد ذلك ، دعنا ننشئ آخر فصل دراسي خاص بنا من فئة 'كرة القدم' ، وهو تطبيق كرة القدم للرياضة {Override public void play () {System.out.println ('Playing football')}

الخطوة الأخيرة هي إنشاء فئة رئيسية تسمى 'SportInterface'.

عامة SportInterface {public static void main (String args []) {// your code here}}

عند تنفيذ البرنامج أعلاه ، سيكون الإخراج كما هو موضح أدناه:

لعب كرة الريشة ------------------- لعب كرة القدم

أتمنى أن تكونوا واضحين في التعامل مع الواجهة وكيف يمكنكم تحقيق التجريد باستخدامها. الآن ، دعنا نختتم هذه المقالة بمقارنة التجريد والتغليف.

التجريد مقابل التغليف

التجريد التغليف
يحل المشكلة في مستوى التصميميحل المشكلة في مستوى التنفيذ
تستخدم لإخفاء البيانات غير المرغوب فيها وإعطاء النتائج ذات الصلةيعني التغليف إخفاء الكود والبيانات في وحدة واحدة لحماية البيانات من العالم الخارجي
التصميم الخارجي - يستخدم من حيث التصميمالتصميم الداخلي - يستخدم من حيث التنفيذ

أتمنى أن تفهم الفرق بين التجريد والتغليف. بهذا ، ننتهي على مدونة Java Abstraction. آمل ، لقد وجدتها مفيدة وساعدت في إضافة قيمة إلى معرفتك. إذا كنت ترغب في معرفة المزيد عن Java ، يمكنك الرجوع إلى

الآن بعد أن فهمت 'ما هو تجريد Java' ، تحقق من من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم تم تصميم دورة تدريب وشهادة Java J2EE و SOA من Edureka للطلاب والمهنيين الذين يرغبون في أن يصبحوا مطوري Java. تم تصميم الدورة التدريبية لمنحك السبق في برمجة Java وتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & Spring.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في مدونة 'Java Abstraction' وسنعاود الاتصال بك في أقرب وقت ممكن.