ما هو الفرق بين الطبقات الملموسة والفئات التجريدية؟


الاجابه 1:

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

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

  1. وراثة التنفيذ - توفر آلية لإعادة استخدام التعليمات البرمجية. يوفر وراثة الواجهة - آلية للطباعة الفرعية.

إذا امتدت الفئة ب من الفئة "أ" ، فإن هذا لا يعني بالضرورة أن "ب" هي "أ". قد يعني هذا فقط أن "ب" يرث بعض الكود من "أ".

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

عندما تفصل لغة الميراث عن التنفيذ من الوراثة البينية ، يصبح من الممكن معالجة بعض المشكلات بشكل مختلف. فمثلا:

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

الاجابه 2:

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


الاجابه 3:

لنفترض أن هناك واجهة يتم تنفيذها من قبل أي من الفئتين.

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

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


الاجابه 4:

لنفترض أن هناك واجهة يتم تنفيذها من قبل أي من الفئتين.

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

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