البرمجة

تفهم مبدأ استبدال ليسكوف في برمجة الكائنات

باستخدام مثال البرمجة الذي قدمته، يظهر أنك تفهم مبدأ استبدال ليسكوف (Liskov Substitution Principle) وتشكك في ما إذا كنت تنتهكه أم لا. دعونا نقوم بتوضيح هذا الأمر بشكل أفضل.

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

المشكلة الرئيسية في مثال البرمجة الخاص بك هي أن الطريقة MakeSound في فئة Dog تعيد سلسلة نصوص (“Bow..Bow..”) بينما يفترض المبدأ أن الدوال في الفئات الفرعية يجب أن تكون متوقعة وتكون متسقة مع سلوك الفئة الأساسية.

إذا كنت تريد تحسين مثالك لتتفادى انتهاك مبدأ استبدال ليسكوف، فيمكنك تغيير إعادة القيمة المتوقعة في طريقة MakeSound لتكون أكثر اتساقًا. على سبيل المثال:

csharp
public class Animal { public virtual string MakeSound() { return "General Sound"; } } public class Dog : Animal { public override string MakeSound() { return "Bark"; } }

بهذه الطريقة، ستحصل على تناغم أفضل بين الفئات، ولن تكون هناك أي مشكلة في استبدال كائن من الفئة Dog في مكان كائن من الفئة Animal.

المزيد من المعلومات

بالتأكيد، دعونا نقوم بتوسيع فهمنا لمبدأ استبدال ليسكوف والتفاعل مع مثال البرمجة الذي قدمته.

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

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

ومع ذلك، يجب أن يكون سلوك الفئة المشتقة متوقعًا ومتسقًا مع الفئة الأساسية. في هذا السياق، كان من المفترض أن تكون قيمة إعادة الدالة MakeSound في Dog تعكس صوتًا عامًا للحيوانات، وليس قيمة محددة للكلب فقط.

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

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