التحميل الزائد مقابل التجاوز: الفرق والمقارنة

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

الوجبات السريعة الرئيسية

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

التحميل الزائد مقابل التجاوز

التحميل الزائد هو ميزة برمجة موجهة للكائنات تسمح بوجود العديد من الطرق التي تحمل الاسم نفسه ولكن توجد معلمات مميزة. التجاوز هو عملية توفير تطبيق جديد لطريقة ما في فئة فرعية موجودة بالفعل في الطبقة الفائقة.

التحميل الزائد مقابل التجاوز

يستلزم التحميل الزائد كتابة نفس الوظائف عدة مرات بمعلمات مختلفة. ومع ذلك ، لا يمكننا فعل ذلك بلغة البرمجة C. خلاف ذلك، جافا يدعم مفهوم التحميل الزائد.

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

في لغة الكمبيوتر ، يتم استخدام طريقة الغلبة في مفهوم الوراثة. عندما يتم إنشاء وظيفة في الطبقة العليا ثم يتم استخدامها في فئة فرعية عن طريق وراثة أساليب الفئة الرئيسية.

يسمح للفئة الفرعية بتجاوز وظيفة الفئة الأصلية لأن الأولوية للفئة الفرعية عند تشغيل البرنامج.

جدول المقارنة

الميزاتالحمولة الزائدةتجاوز
تعريفطرق متعددة بنفس الاسم ولكن معلمات مختلفة في حدود نفس الصفإعادة تعريف طريقة موجودة في أ فئة فرعية مع الالجائزة  نفس الاسم والمعلمات كطريقة الطبقة الأم
الهدفتوفير وظائف متعددة بناءً على أنواع أو مجموعات بيانات الإدخال المختلفةتخصص في سلوك الطريقة الموروثة من فئة أساسية
مجالنفس الصففصول الوالدين والطفل
تقنيةتعدد الأشكال في وقت الترجمة بناءً على توقيعات المعلماتتعدد الأشكال في وقت التشغيل يعتمد على نوع الكائن الديناميكي
وراثةغير مطلوبيتطلب الميراث
نوع الإرجاعيمكن أن تكون هي نفسها أو مختلفةيجب أن يكون هو نفسه أو متغيرًا (يمكن أن يكون نوع إرجاع الفئة الفرعية نوعًا أوسع من النوع الأصلي)
طرق ثابتةيمكن أن تكون مثقلةلا يمكن تجاوزها
الطرق الخاصةيمكن أن تكون مثقلةلا يمكن تجاوزها
مثالadd(int a, int b)add(double a, double b) في نفس الفئة للتعامل مع أنواع مختلفة من الأرقامdraw() تم تجاوز الطريقة في فئة المستطيل في فئة Square لرسم مربع بدلاً من المستطيل العام

ما هو التحميل الزائد؟

التحميل الزائد هو مفهوم في البرمجة يسمح للفئة بأن يكون لها طرق أو مُنشئات متعددة بنفس الاسم ولكن بمعلمات مختلفة. فهو يمكّن اسم وظيفة واحدة من تمثيل وظائف مختلفة بناءً على نوع الوسائط أو عددها.

اقرأ أيضا:  Flutter vs Ionic: الفرق والمقارنة

طريقة التحميل الزائد

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

عامل البناء الزائد

يطبق التحميل الزائد للمنشئ نفس الفكرة على منشئي الفئة. يمكن أن تحتوي الفئة على مُنشئات متعددة بقوائم معلمات مختلفة، مما يوفر طرقًا مختلفة لتهيئة الكائنات.

مثال

class Calculator { int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } }

في مثال جافا هذا، Calculator يوضح الفصل طريقة التحميل الزائد باستخدام اثنين add طرق، واحدة للأعداد الصحيحة وأخرى للزوجي.

المميزات

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

ما هو التجاوز؟

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

المفاهيم الرئيسية

وراثة

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

طريقة التوقيع

يتطلب التجاوز الحفاظ على نفس توقيع الطريقة في الفئة الفرعية كما هو الحال في الفئة الفائقة. يتضمن ذلك اسم الطريقة ونوع الإرجاع وأنواع المعلمات. يُقال إن الطريقة التي تم تجاوزها في الفئة الفرعية "تتجاوز" الطريقة الموجودة في الفئة الفائقة.

اقرأ أيضا:  Bitdefender Family Pack مقابل Total Security: الفرق والمقارنة

مثال

class Shape { void draw() { System.out.println("Drawing a shape"); } } class Circle extends Shape { @Override void draw() { System.out.println("Drawing a circle"); } }

في مثال جافا هذا، Circle الطبقة تتجاوز draw طريقة من فئتها الفائقة Shape لتوفير تنفيذ محدد لرسم دائرة.

استخدام @Override التعليق التوضيحي

@Override يتم استخدام التعليق التوضيحي في لغات البرمجة مثل Java للإشارة بوضوح إلى أن إحدى الطرق الموجودة في فئة فرعية تهدف إلى تجاوز طريقة في الفئة الفائقة. يساعد هذا التعليق التوضيحي في اكتشاف الأخطاء في وقت الترجمة إذا كان توقيع الطريقة لا يتطابق مع أي طريقة في الفئة الفائقة.

class Circle extends Shape { @Override void draw() { System.out.println("Drawing a circle"); } }

المميزات

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

الاختلافات الرئيسية بين التحميل الزائد والتجاوز

  • فريف:
    • التحميل الزائد: يتضمن تحديد طرق أو مُنشئات متعددة بنفس الاسم ولكن بمعلمات مختلفة داخل نفس الفئة.
    • تجاوز: يحدث عندما توفر فئة فرعية تطبيقًا محددًا لطريقة محددة بالفعل في فئتها الفائقة، مع الحفاظ على توقيع الطريقة.
  • اﻟﻌﻨﻮان
    • التحميل الزائد: يتم تعريف الطرق أو المنشئات التي تحمل نفس الاسم داخل نفس الفئة.
    • تجاوز: يحدث في فئة فرعية ترث طريقة من فئتها الفائقة.
  • توقيع الطريقة:
    • التحميل الزائد: يتم التمييز بناءً على عدد المعلمات أو أنواعها أو ترتيبها، بينما يظل اسم الطريقة كما هو.
    • تجاوز: يتطلب الحفاظ على نفس توقيع الطريقة (الاسم ونوع الإرجاع والمعلمات) في كل من الفئة الفائقة والفئة الفرعية.
  • الشرح:
    • التحميل الزائد: لا يتم استخدام أي تعليق توضيحي محدد للإشارة إلى التحميل الزائد.
    • تجاوز: يشار في كثير من الأحيان باستخدام التعليقات التوضيحية مثل @Override (على سبيل المثال، في Java) للإعلان بوضوح عن نية تجاوز طريقة من الفئة الفائقة.
  • صلة:
    • التحميل الزائد: تُستخدم عادةً ضمن فئة واحدة لتوفير طرق متعددة لاستخدام إحدى الطرق.
    • تجاوز: يتضمن علاقة بين فئة فائقة وفئة فرعية، مما يسمح للفئة الفرعية بتوفير تنفيذها للطرق الموروثة.
  • الغرض:
    • التحميل الزائد: يعزز قابلية قراءة التعليمات البرمجية والمرونة من خلال توفير إصدارات متعددة من الطريقة لأنواع أو مجموعات مختلفة من المعلمات.
    • تجاوز: يسهل تعدد الأشكال والتخصيص وصيانة التعليمات البرمجية المركزية من خلال السماح للفئات الفرعية بتوفير تطبيقات محددة للطرق الموروثة.
مراجع حسابات
  1. https://link.springer.com/chapter/10.1007/978-3-642-14107-2_25
  2. https://dl.acm.org/doi/abs/10.1145/1141277.1141608

آخر تحديث: 11 فبراير 2024

النقطة 1
طلب واحد؟

لقد بذلت الكثير من الجهد في كتابة منشور المدونة هذا لتقديم قيمة لك. سيكون مفيدًا جدًا بالنسبة لي ، إذا كنت تفكر في مشاركته على وسائل التواصل الاجتماعي أو مع أصدقائك / عائلتك. المشاركة هي ♥ ️

6 أفكار حول "الحمل الزائد مقابل التجاوز: الفرق والمقارنة"

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

    رد
  2. مقالة ثاقبة تشرح الاختلافات المعقدة بين التحميل الزائد والتجاوز في البرمجة الموجهة للكائنات. تمكنت المقالة من تغطية الجوانب النظرية والعملية بشكل فعال.

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

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

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

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

    رد

اترك تعليق

هل تريد حفظ هذه المقالة لوقت لاحق؟ انقر فوق القلب الموجود في الزاوية اليمنى السفلية للحفظ في مربع المقالات الخاصة بك!