اتحاد طلبة هندسة الحاسوب والشبكات - المدونه الرسميه C.N.E : Object Oriented Programming Using Java-13 AR

المشاركات الشائعة

Object Oriented Programming Using Java-13 AR


An Example About Implementation of Interfaces & Multi-Inheritance

المثال التالي يحتوي على ثلاث interfaces وثلاث classes وهي كالتالي:

Interfaces:

Summation
Subtraction
Multiplication

Classes:

DivAndRem
BasicOperations
MyClass

بحيث:

الBasicOperations سيرث كلاً من الثلاث interfaces والDivAndRem.
الMyClass يحتوي على الإقتران main.

نستطيع تمثيل كل ما هو مذكور أعلاه باستخدام 2 Classes ولكننا عمدنا إلى إستخدام كل ما ذُكر لشرح مفاهيم الImplementation والMulti-Inheritance.

الInterface Summation:


الInterface Subtraction:


الInterface Multiplication:


الClass DivAndRem:


الClass BasicOperations:


الClass MyClass:


صندوق الناتج:


لاحظ أنك سنحتاج إلى تعريف محتويات كل الإقترانات التي تم الإعلان عنها في الinterfaces (الإقترانات الabstract), وذلك سيتم داخل الBasicOperations وهو الclass الذي ورث من الinterfaces.
في هذه الحالة, تجنب تسمية إقتران للإعلان عنه داخل interface بنفس الإسم لإقتران اخر تم الإعلان عنه داخل interface اخر. في حال فعلت ذلك, فإنك ستحتاج إلى تعريف محتويات إقترانين بنفس الإسم داخل الBasicOperations, وهو الأمر الذي سينتج عنه خطأ عند المُحول البرمجي (compiler) في حال لم يتمكن من التعامل مع هذين الإقترانين على أنهُما overloaded.

لاحظ أن المتغيرات الخاصة بالinterfaces تم الإعلان عنها على أنها final, وهذا يعني أن قيم هذه المُتغيرات لا يُمكن تغييرها.
لذلك, فإن هذه المتغيرات يجب أن تحصل على قيمها في نفس جُمل الإعلان عنها. أما غير ذلك فإن المُحول البرمجي سيُظهر خطأً.

لا تقلق, لأن وجود الكثير من الinterfaces والclasses لا يعني بالضرورة أن البرنامج سيكون صعب التتبُع.
تذكر دائماً أن التعليمات التي سيتم تنفيذها عند تشغيلك للبرنامج هي فقط ما تمت كتابتها داخل الإقتران main, وهو المكان الذي تقوم بالإعلان عن الobjects فيه, وإستدعاء الإقترانات, والدخول إلى مُتغيرات الclasses والinterfaces وتغيير قيمهم إن أمكن ذلك.

التعليمات المكتوبة داخل الإقتران main ستُنفذ بشكل تسلسلي وتلقائي من قبل المُحول البرمجي عند تشغيل البرنامج. بينما التعليمات المُتواجدة خارج الmain, هي تعليمات غير قابلة للإستخدام ما لم توجد تعليمات داخل الmain تسمح بذلك!

الإقتران main في هذا البرنامج يحتوي على ثلاثة تعليمات, وهي على الترتيب:

1- BasicOperations BO=new BasicOperations ();

وهذه التعليمة تقوم بالإعلان عن object جديد بإسم BO من BasicOperations, وبذلك فإن موقعاً من الذاكرة سيتم حجزه لهذه النُسخة الجديدة من BasicOperations.

سيتم إستدعاء الconstructor الإفتراضي لDivAndRem, ومن ثم الconstructor الإفتراضي لBasicOperations.

لاحظ أن عمليه مناداة الconstructors لا تتم إلا للclasses, وذلك لأن الinterfaces لا تحتوي على constructors.
دائماً هناك super واحد لكل sub (لا يوجد لأي شخص أكثر من أب واحد).
يُمكن أن يكون لديك العديد من الinterfaces التي تتم وراثتها من class واحد (يمكن لأي شخص أن يكون لديه العديد من الأعمام على سبيل المثال).

2- BO.computeAll ();

ستقوم هذه الجُملة بإستدعاء الإقتران computeAll من خلال الBO.
الإقتران computeAll يقوم بحساب نتائج العمليات الحسابية الأساسية الخمسة وتخزين النتائج داخل المتغيرات الخمسة التي تم الإعلان عنها داخل الBasicOperations. إقترانات حساب العمليات الحسابية تحتاج منا تحديد المتغيرات التي ستقوم هذه الإقترانات بالتعامُل معها, وذلك عن طريق كتابة إسم الinterface قبل إسم المُتغير في التعليمة التي ستقوم بإستخدام هذا المُتغير, وذلك لتجنُب وقوع المُحول البرمجي في الحيرة, وبالتالي ظهور خطأ (على سبيل المثال, Subtraction.y تُستخدم للوصول إلى المُتغير y الموجود داخل Subtraction).

3- BO.printAll ();

ستقوم هذه التعليمة بإستدعاء الإقتران printAll من خلال الBO.
الإقتران printAll سيقوم بدوره بطباعة قيم المُتغيرات x و y الموجودة داخل كل من الinterfaces والclasses التي تحتوي مثل هذه المُتغيرات, وذلك بإستدعاء إقترانات أُعلن عنها خصيصاً لذلك. وهذه الإقترانات بعضها مُعلن عنه داخل الinterfaces وبالتالي فإن محتواه مُعرف داخل BasicOperations, وهذه الإقترانات بالذات تحتاج إلى تحديد أي المُتغيرات التي ستقوم بطباعة قيمها, وذلك بذكر إسم الinterface قبل إسم المُتغير داخل جُملة الطباعة. نقوم بفعل ذلك لتجنب إحداث الغموض للمُحول البرمجي, وبالتالي ظهور الأخطاء. (على سبيل المثال, Subtraction.y تقوم باستخدام المُتغير y الموجود داخل Subtraction).

يقوم printAll أيضاً بطباعة قيم المُتغيرات الخمسة الموجودة داخل BasicOperations والتي يتم تخزين نتائج العمليات الحسابية الخمسة فيها.

**************************************************

للحُصول على نسخة نصية من كود هذا البرنامج, تفضل بالضغط هنا.

مفاهيم الPolymorphism والNested Classes والStatic Class Members سيتم شرحها في الدرس القادم بإذن الله ...


سامر المناصرة
< >

ليست هناك تعليقات:

إرسال تعليق