logo

ما هي العلاقة في جافا؟

في البرمجة الشيئية، أحد المفاهيم الأساسية هو الميراث. في Java، يسمح لنا الميراث بإنشاء فئات جديدة بناءً على الفئات الموجودة، وراثة خصائصها وسلوكياتها. غالبًا ما يُشار إلى العلاقة بين الفئات على أنها علاقة 'is-a'. في هذا القسم، سنستكشف ماهية العلاقة وكيفية تنفيذها في Java.

فهم الميراث:

قبل الخوض في العلاقة، من المهم فهم مفهوم الميراث. الميراث هو آلية تمكن الفصل من اكتساب خصائص وأساليب فئة أخرى. تُعرف الفئة التي يتم توريثها باسم الفئة الفائقة أو الفئة الأساسية، وتسمى الفئة التي ترث الفئة الفرعية أو الفئة المشتقة.

العلاقة هي:

تمثل العلاقة، المعروفة أيضًا باسم علاقة الميراث، نوعًا من العلاقة بين فئتين حيث تكون إحدى الفئات نسخة متخصصة من فئة أخرى. إنه يعني أن الفئة الفرعية هي نوع محدد من فئتها الفائقة. على سبيل المثال، ضع في اعتبارك التسلسل الهرمي للفئة مع فئة فائقة تسمى 'Animal' وفئة فرعية تسمى 'Dog'. يمكننا أن نقول أن الكلب حيوان، وهو ما يعكس العلاقة.

فوائد العلاقة:

توفر العلاقة is-a العديد من المزايا في برمجة Java:

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

تنفيذ العلاقة Is-A في Java:

لتأسيس علاقة هي-علاقة بين الفئات في Java، يتم استخدام الكلمة الأساسية 'يمتد'. تقوم الفئة الفرعية بتوسيع الفئة الفائقة، مما يشير إلى أنها ترث جميع أعضاء (حقول وأساليب) الفئة الفائقة. بناء الجملة لإنشاء فئة فرعية كما يلي:

 class SubclassName extends SuperclassName { // Subclass members } 

على سبيل المثال، دعونا ننظر في العلاقة بين الحيوان والكلب المذكورة سابقًا:

 class Animal { // Superclass members } class Dog extends Animal { // Subclass members } 

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

فيما يلي مثال لبرنامج يوضح العلاقة 'is-a' في Java، وتحديدًا التسلسل الهرمي Animal-Dog:

IsARelationshipExample.java

 // Superclass class Animal { protected String name; public Animal(String name) { this.name = name; } public void makeSound() { System.out.println('The animal makes a sound.'); } } // Subclass class Dog extends Animal { private String breed; public Dog(String name, String breed) { super(name); this.breed = breed; } @Override public void makeSound() { System.out.println('The dog barks.'); } public void fetch() { System.out.println('The dog fetches a ball.'); } } // Main class public class IsARelationshipExample { public static void main(String[] args) { // Create an Animal object Animal animal = new Animal('Generic Animal'); // Create a Dog object Dog dog = new Dog('Buddy', 'Labrador Retriever'); // Polymorphism - Dog is treated as an Animal Animal anotherDog = new Dog('Max', 'German Shepherd'); // Call methods on the Animal object System.out.println('Animal Name: ' + animal.name); animal.makeSound(); System.out.println(); // Call methods on the Dog object System.out.println('Dog Name: ' + dog.name); System.out.println('Dog Breed: ' + dog.breed); dog.makeSound(); dog.fetch(); System.out.println(); // Polymorphism - Dog is treated as an Animal System.out.println('Another Dog Name: ' + anotherDog.name); // The makeSound() method in the Dog class is invoked anotherDog.makeSound(); // Casting to access the fetch() method specific to the Dog class ((Dog) anotherDog).fetch(); } } 

انتاج:

 Animal Name: Generic Animal The animal makes a sound. Dog Name: Buddy Dog Breed: Labrador Retriever The dog barks. The dog fetches a ball. Another Dog Name: Max The dog barks. The dog fetches a ball. 

في هذا المثال، لدينا فئة الحيوان كفئة فائقة وفئة كلب كفئة فرعية. تعمل فئة الكلاب على توسيع فئة الحيوانات، مما يؤدي إلى إنشاء علاقة. تحتوي فئة الحيوان على حقل اسم وطريقة makeSound()، بينما تحتوي فئة Dog على حقل سلالة إضافي وتتجاوز طريقة makeSound(). تقدم فئة الكلاب أيضًا طريقة جديدة هي fetch(). في الطريقة الرئيسية، نقوم بإنشاء مثيلات لفئتي الحيوان والكلب. نعرض تعدد الأشكال عن طريق تعيين كائن كلب إلى مرجع حيواني. نقوم بعد ذلك باستدعاء الأساليب على هذه الكائنات، موضحًا كيف ترث الفئة الفرعية حقول وأساليب الفئة الفائقة. أخيرًا، نعرض تحويل مرجع الحيوان مرة أخرى إلى مرجع كلب للوصول إلى طريقة الجلب () الخاصة بفئة الكلب

الصف مقابل العمود

تعد العلاقة is-a في Java جانبًا أساسيًا من البرمجة الشيئية التي تسمح بإنشاء تسلسلات هرمية للفئات. فهو يتيح إمكانية إعادة استخدام التعليمات البرمجية، وتعدد الأشكال، وتجاوز الطريقة، مما يعزز تنظيم البرامج وقابليتها للتوسعة بشكل أفضل. من خلال فهم العلاقة بين الواقع والاستفادة منها، يمكن للمطورين تصميم تطبيقات Java أكثر قوة ومرونة.