الاقتران السائب مقابل الاقتران الضيق في Java: الفرق بين الاقتران السائب والاقتران الضيق

نشرت: 2021-05-02

جدول المحتويات

مقدمة

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

ما هو الاقتران في جافا؟

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

ما هي أنواع الوصلات؟

الاقتران في Java من نوعين.

اقتران فضفاض في جافا

عندما يكون للفئتين أو الوحدات النمطية أو المكونات تبعيات منخفضة على بعضهما البعض ، فإن هذا يسمى الاقتران السائب في Java . الاقتران السائب في Java يعني أن الفئات مستقلة عن بعضها البعض. المعرفة الوحيدة التي يمتلكها فصل ما عن الفصل الآخر هي ما كشفه الفصل الآخر من خلال واجهاته في اقتران فضفاض. إذا تطلب الموقف استخدام كائنات من الخارج ، فيُطلق عليها حالة اقتران فضفاض .

هنا ، نادرًا ما يستخدم الكائن الأصل الكائن ، ويمكن تغيير الكائن بسهولة من مصادر خارجية. يتميز الاقتران السائب في Java بميزة عن الاقتران الضيق لأنه يقلل من صيانة الكود وجهوده. لا يتطلب التغيير في أحد الفصول تغييرات في الفصل الآخر ، ويمكن لفصلين العمل بشكل مستقل.

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

رمز

فك اقتران الحزمة

حجم الفصل {

العامة الثابتة الفراغ الرئيسي (سلاسل سلسلة []) {

اسطوانة ب = اسطوانة جديدة (25 ، 25 ، 25) ؛

System.out.println (b.getVolume ()) ؛

}

}

الدرجة النهائية اسطوانة {

حجم كثافة العمليات الخاصة ؛

الأسطوانة (طول int ، عرض int ، ارتفاع int) {

this.volume = الطول * العرض * الارتفاع ؛

}

public int getVolume () {

حجم الإرجاع

}

}

شرح: في المثال أعلاه ، الصنف A والفئة B غير مترابطتين.

مثال 2

استيراد java.io.IOException ؛

واجهة الغذاء {

عرض الفراغ العام () ؛

}

فئة الايطالية {

غذاء ؛

الأطعمة الإيطالية العامة {

this.s = s ؛

}

عرض الفراغ العام () {

System.out.println ("إيطالي") ؛

s.display () ؛

}

}

صنف صيني ينفذ طعام {

اللغة الصينية العامة () {}

عرض الفراغ العام () {

System.out.println ("الصينية") ؛

}

}

صنف مكسيكي أدوات طعام {

المكسيكي العام () {}

عرض الفراغ العام () {

System.out.println ("مكسيكي") ؛

}

}

اختبار الفصل العام {

يلقي public static void main (String args []) IOException {

الغذاء ب = الصينية الجديدة () ؛

الغذاء ج = مكسيكي جديد () ؛

الإيطالية أ = الإيطالية الجديدة (ب) ؛

//a.display () ستطبع الإيطالية والصينية

العرض()؛

الإيطالية a1 = الإيطالية الجديدة (c) ؛

//a.display () ستطبع الإيطالية والمكسيكية

a1.display () ؛

}

}

انتاج |

إيطالي

صينى

إيطالي

مكسيكي

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

احصل على شهادات هندسة البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

اقتران ضيق

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

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

رمز

حزمة ضيقة الاقتران

حجم الفصل {

العامة الثابتة الفراغ الرئيسي (سلاسل سلسلة []) {

الأسطوانة ب = الأسطوانة الجديدة (15 ، 15 ، 15) ؛

System.out.println (b.volume) ؛

}}

فئة اسطوانة {

حجم كثافة العمليات العامة

الأسطوانة (طول int ، عرض int ، ارتفاع int) {

this.volume = الطول * العرض * الارتفاع ؛ }}

انتاج |

3375

شرح: في المثال أعلاه ، ترتبط الفئة A والفئة B معًا وتعملان مع بعضهما البعض كفريق.

الاختلافات بين الاقتران السائب والاقتران الضيق

يسرد الجدول التالي الفروق بين أداة التوصيل السائبة والاقتران الضيق.

اقتران فضفاض اقتران ضيق
الكائنات مستقلة عن بعضها البعض. كائن واحد يعتمد على كائن آخر لإكمال مهمة.
اختبار أفضل القابلية للاختبار ليست كبيرة مثل أداة التوصيل السائبة في Java .
الاتصال غير المتزامن اتصال متزامن
تنسيق أقل. إن تبديل الكود بين فئتين ليس بالأمر السهل. يوفر تنسيقًا أفضل. يمكنك بسهولة تبديل التعليمات البرمجية بين كائنين.
لا يوجد مفهوم للواجهة يتبع مبادئ GOF للتفاعل
تدفق معلومات أقل المزيد من تدفق المعلومات
متغير للغاية ليس لديها القدرة على التغيير.

خاتمة

باختصار ، يعتبر الاقتران السائب في Java أفضل بكثير بالمقارنة مع أدوات التوصيل الضيقة. يوفر مرونة أفضل وإمكانية إعادة استخدام التعليمات البرمجية. نظرًا لأن الفئتين مستقلتان عن بعضهما البعض ، فإنها تجعل التغييرات في الكود سهلة للغاية. كما أنه يوفر قابلية اختبار أفضل.

إذا كنت مهتمًا بمعرفة المزيد حول تطوير البرامج ، فراجع ماجستير العلوم في علوم الكمبيوتر من جامعة لندن جون مورس (LJMU) المصمم للمهنيين العاملين والعروض 12 + المشاريع والواجبات ، 1-ON-1 مع مرشدين الصناعة ، 500+ ساعة من التعلم.

استعد لمهنة المستقبل

تقدم بطلب للحصول على ماجستير العلوم في التعلم الآلي والذكاء الاصطناعي