الوراثة مقابل الحاوية
الوراثة والحاوية هما مفهومان مهمان موجودان في OOP (مثال البرمجة الموجهة للكائنات: C ++). بعبارات بسيطة ، يتعامل كل من الحاوية والوراثة مع توفير خصائص أو سلوك إضافي للفصل. الميراث هو قدرة الطبقة على وراثة الخصائص والسلوك من فئة الأصل من خلال توسيعها. من ناحية أخرى ، الاحتواء هو قدرة الفصل على احتواء كائنات من فئات مختلفة كبيانات للأعضاء.
ما هو الميراث؟
كما هو مذكور أعلاه ، الوراثة هي قدرة الطبقة على وراثة الخصائص والسلوك من فئة الأصل من خلال توسيعها.يوفر الوراثة بشكل أساسي إعادة استخدام الكود من خلال السماح بتوسيع خصائص وسلوك فئة موجودة بواسطة فئة محددة حديثًا. إذا امتدت الفئة A إلى B ، فإن الفئة B تسمى الفئة الأصلية (أو الفئة الممتازة) وتسمى الفئة A الفئة الفرعية (أو الفئة المشتقة / الفئة الفرعية). في هذا السيناريو المثال ، سترث الفئة A جميع السمات والأساليب العامة والمحمية للفئة الممتازة (B). يمكن أن تتجاوز الفئة الفرعية اختياريًا (توفر وظائف جديدة أو موسعة للطرق) السلوك الموروث من الفئة الأصلية. الميراث يمثل علاقة "is-a" في OOP. هذا يعني بشكل أساسي أن A هي أيضًا B. وبعبارة أخرى ، يمكن أن تكون B هي الفئة التي تحتوي على وصف عام لكيان معين في العالم الحقيقي ولكن A تحدد تخصصًا معينًا. في مشكلة البرمجة في العالم الحقيقي ، يمكن تمديد فئة الشخص لإنشاء فئة الموظف. هذا يسمى التخصص. ولكن يمكنك أيضًا إنشاء فئة الموظف أولاً ثم تعميمها على فئة الشخص أيضًا (i.ه. تعميم). في هذا المثال ، سيكون للموظف جميع خصائص وسلوك الشخص (أي أن الموظف هو أيضًا شخص) وقد يحتوي على بعض الوظائف الإضافية (لذلك ، الشخص ليس موظفًا) أيضًا.
ما هي الحاويات
الاحتواء هو قدرة الفصل على احتواء كائنات من فئات مختلفة كبيانات للأعضاء. على سبيل المثال ، يمكن أن تحتوي الفئة A على كائن من الفئة B كعضو. هنا ، يمكن تنفيذ جميع الطرق (أو الوظائف) العامة المحددة في B ضمن الفئة A. تصبح الفئة A هي الحاوية ، بينما تصبح الفئة B هي الفئة المضمنة. يشار إلى الحاوية أيضًا باسم التكوين. في هذا المثال ، يمكن القول أن الفئة A تتكون من الفئة B. في OOP ، تمثل الحاوية علاقة "has-a". من المهم ملاحظة أنه على الرغم من أن الحاوية لديها حق الوصول لتنفيذ جميع الأساليب العامة للفئة المضمنة ، إلا أنها غير قادرة على تغيير أو توفير وظائف إضافية. عندما يتعلق الأمر بمشكلة برمجة في العالم الحقيقي ، قد يتم احتواء كائن من فئة TextBox في نموذج الفصل ، وبالتالي يمكن القول أن النموذج يحتوي على TextBox (أو بدلاً من ذلك ، يتكون النموذج من TextBox).
الفرق بين الميراث و الاحتواء
على الرغم من أن الوراثة والاحتواء هما مفهومان OOP ، إلا أنهما مختلفان تمامًا فيما يسمحان للمبرمج بتحقيقه. الوراثة هي قدرة الفصل على وراثة الخصائص والسلوك من فئة الأصل من خلال توسيعها ، بينما الاحتواء هو قدرة الفصل على احتواء كائنات من فئات مختلفة كبيانات أعضاء. إذا تم تمديد فئة ، فإنها ترث جميع الخصائص / السلوكيات العامة والمحمية وقد يتم تجاوز هذه السلوكيات بواسطة الفئة الفرعية. ولكن إذا تم تضمين فئة في فئة أخرى ، فلن تحصل الحاوية على القدرة على تغيير أو إضافة سلوك إلى المحتوى. يمثل الميراث علاقة "is-a" في OOP ، بينما يمثل الاحتواء علاقة "has-a".