‫في هذا الدرس ، سوف تتعلم الفرق الجوهري بين الفئات المجردة والواجهات.
‫عند تصميم التطبيقات ، من الضروري معرفة متى يجب استخدام فئة مجردة ومتى تستخدم
‫واجهة ومتى لا تستخدم أيًا منهما.
‫تبدو واجهات وفئات الملخصات متشابهة في بعض النواحي ، ولكن هناك اختلافات
‫رئيسية ستحدد الخيار الأفضل لما تحاول تحقيقه.
‫يعد فهم الفرق بين فئة مجردة وواجهة أمرًا مهمًا للغاية ، حتى نتمكن من تصميم
‫تطبيقات مقترنة بشكل فضفاض وقابلة للتوسيع ، بحيث يمكننا تعديل التطبيقات وتغييرها
‫بسهولة دون كسر كل شيء.
‫سنناقش هذه الاختلافات وكيفية تحديد وقت استخدام أي منها في هذا الفيديو.
‫لكن قبل أن نفعل ذلك ، أولاً ، دعونا نجدد ذاكرتنا حول الطبقات والواجهات المجردة.
‫لذا أولاً ، فصول مجردة.
‫الفئة المجردة هي فئة غير مكتملة أو فئة لا يمكن إنشاء مثيل لها ، مما يعني أنه لا يمكننا إنشاء
‫كائنات منها.
‫الغرض من فئة مجردة هو توفير مخطط للفئات المشتقة وتعيين بعض القواعد مثل ما يجب
‫أن تطبقه الفئات المشتقة.
‫لكن لماذا نحتاج إلى تصنيف الفصل كفئة مجردة في البداية؟
‫ما الخطأ في الفصول العادية؟
‫تخيل أن لدينا دراجة نارية وسيارة فئة وأنهما يشتركان في بعض الوظائف لتقليل تكرار
‫الكود.
‫نقوم بإنشاء فئة أساسية تسمى السيارة لمنع إنشاء حالات من نوع المركبات وفرض كل طريقة
‫لتنفيذ نسختها من أساليب المركبات.
‫علينا أن نضع علامة عليها كفئة مجردة.
‫يمكننا الاستفادة من الفئات المجردة لتصميم المكونات وتحديد مستوى معين من الوظائف المشتركة التي
‫يجب تنفيذها بواسطة الفئات المشتقة.
‫لذلك دعونا نجعل هذه السيارة مجردة وسيكون هذا جيدًا.
‫الآن دعونا نلقي نظرة على الواجهات مرة أخرى.
‫لذا فإن الواجهة عبارة عن عقد ويمكن أن تحتوي فقط على إعلانات الطريقة.
‫لا يمكن أن تحتوي على تعريفات الطريقة.
‫يحددون القدرة التي يمتلكها الفصل.
‫لنتخيل أن لدينا ثلاث فصول ، لذلك لدينا الفصل والدراجة والدراجة النارية والسيارة.
‫ومن ثم نريد التأكد من أن كل هذه الفئات ترث من هذه السيارة الطبقية.
‫وإذا كنت ترغب في إضافة وظائف القيادة الذاتية لسيارتنا ، على سبيل المثال ، ونريد منك إنشاء
‫فئات أخرى ، على سبيل المثال ، قد تنشئ شيئًا مثل الطائرة ، فليس من المنطقي إضافة وظيفة القيادة
‫الذاتية إلى مركبة من الفئة الأساسية لأنه لن تحتوي جميع الفئات الفرعية لدينا على هذه
‫الميزة.
‫سيكون من الأنسب إضافته في شكل واجهة تسمى I self driving.
‫ثم يمكن لهذه الفئات التي تنفذ هذه الواجهة أن توفر المنطق لتحقيق ذلك.
‫الآن دعنا نتحدث عن أوجه التشابه بين الواجهات والفئات المجردة.
‫يمكن إنشاء مثيل لكل من الواجهات والفئات المجردة.
‫هذا يعني أنه لا يمكننا إنشاء كائنات منها ، لكن كلاهما يدعم تعدد الأشكال ، مما يعني أنه يمكننا
‫تخزين كائن من نوع cat في متغير من فئة حيوان فئة مجردة.
‫الشيء نفسه ينطبق على الواجهات حيث يمكننا تخزين أي مجموعة مثل قائمة أو مكدس في متغير من النوع
‫i القابل للعد.
‫فلنلقِ نظرة الآن على الاختلافات الرئيسية.
‫تم تصميم فئة مجردة ليتم توريثها بواسطة الفئات الفرعية التي تقوم بتنفيذ أو تجاوز طرقها.
‫بمعنى آخر ، يتم تنفيذ الفئات المجردة جزئيًا أو لا يتم تنفيذها على الإطلاق.
‫من ناحية أخرى ، لا يتم تنفيذ الواجهات على الإطلاق.
‫ثم لا يمكن أن يكون للفصل المجرد منشئ معاكس لذلك.
‫يمكن أن تحتوي فئات الملخصات على مُنشئين ومجالات بالإضافة إلى تعريفات للطريقة
‫، وسيكون التنفيذ من مسؤولية الفئة التي نفذت الواجهة.
‫من ناحية أخرى ، قد تحتوي فئة مجردة على طريقة وتعريفات وحقول ، وبما أن الواجهات لا تحتوي على
‫أي مُنشئين ، كما ذكرنا ، لا يمكن أن تحتوي أيضًا على حقول.
‫حتى الآن يمكن للفئات تنفيذ العديد من الواجهات ، وهي طريقة لتحقيق نوع من التوريث المتعدد ،
‫لأن C-sharp هي لغة وراثة واحدة ولا تسمح بذلك افتراضيًا.
‫لذلك يمكن للفصل أن يرث فئة واحدة فقط.
‫لذلك إذا نفذت فئة واجهة ، فيجب عليها تنفيذ جميع أعضائها ، مثل الخصائص والطرق
‫وما إلى ذلك.
‫من ناحية أخرى ، عندما يمتد الفصل إلى فئة مجردة ، يجب أن يطبق أعضائه المجردون
‫فقط.
‫إذن الجزء غير المنفذ من الفصل المجرد.
‫دعونا نلقي نظرة على تشبيه هنا.
‫تخيل أنني رأيت مدربًا حادًا في الدروس التعليمية في الاتحاد الأوروبي حيث لا يستطيع المعلم تحقيق أي شيء ما
‫لم يكن خبيرًا في موضوع ما أو كانت خبيرة في موضوع ما لأنه لا يمكننا الحصول على أمثلة من الفصول المجردة.
‫لذلك سيحتاج المعلم إلى أن يصبح خبيرًا في موضوع ما لتدريسه.
‫لذلك أصبح المدرب خبيرًا حادًا ، والآن يمكنه أو يمكنها تدريس لغة سي-شارب.
‫في مرحلة ما ، اضطر مدرب متجر C إلى تحرير مقاطع الفيديو الخاصة به.
‫على الرغم من أنه لا يتعين على جميع المدربين فعل نفس الشيء.
‫لذلك قمنا بتطبيق الواجهة الأولى لمحرر الفيديو لكي يعمل ، لذلك ليس كل المعلمين بحاجة إلى أن يكونوا قادرين على التحرير
‫، ولكن أولئك الذين ينفذون محرر الفيديو هذا يجب أن يفعلوا ذلك.
‫حسنا.
‫هل ينبغي للمرء أن يختار الميراث على الواجهة عند تصميم مكتبات فئة المتاجر؟
‫حسنًا ، استخدم فئة مجردة إذا كان لديك بعض الوظائف التي تريد أن تحتوي عليها الفئات الفرعية.
‫على سبيل المثال ، إذا كان لديك مجموعة من الوظائف ، فأنت تريد أن تضعها الفئات الفرعية في فئة
‫مجردة.
‫يتم استخدام فئة الملخص عندما تشترك الفئة المشتقة في خصائصها الأساسية وسلوك الطبقة المجردة
‫، وهو نوع السلوك الذي يحدد الطبقة بالفعل.
‫استخدم واجهة إذا كنت تريد سلوك أو وظيفة عقد عام فقط.
‫عادة ما تكون الواجهات فضفاضة مقارنة بالفئات المجردة.
‫لن ترغب في استخدام الواجهات في موقف تكتب فيه نفس الكود باستمرار لجميع
‫طرق الواجهة.
‫استخدم فئة مجردة وحدد كل طريقة مرة واحدة.
‫إذن ملخص سريع.
‫عندما نتحدث عن الفئات المجردة ، قمنا بتعريف خصائص نوع الكائن مع تحديد ماهية
‫الكائن.
‫عندما نتحدث عن واجهة ونحدد القدرات التي نعد بتقديمها ، فإننا نتحدث
‫عن إنشاء عقد حول ما يمكن أن يفعله الكائن.
‫إذن ما هو الكائن فئة مجردة.
‫ما يمكن أن يفعله الكائن.
‫واجهة.
‫حسنا.
‫لذلك آمل أن تكون قد استمتعت وفهمت هذا الملخص وهذه النظرة العامة على النوعين المختلفين من الأساليب.
‫والآن دعنا نمضي قدمًا ونستخدم هذه المفاهيم في أمثلة مختلفة خلال المحاضرات التالية وطوال
‫بقية الدورة.