تعدد الأشكال وتجاوز الأساليب
أتقن تعدد الأشكال لإنشاء تعليمات برمجية مرنة وقابلة لإعادة الاستخدام من خلال تجاوز الأساليب
تعدد الأشكال وتجاوز الأساليب درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 7 من أصل 7. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 7 دروس في المجموع.
مقدمة عن تعدد الأشكال
تعدد الأشكال وإعادة تعريف الأساليب
مرحبًا بكم في الدرس التالي! ستتعلمون في هذا الدرس تعدد الأشكال، وهو مفهوم أساسي في البرمجة كائنية التوجه، وكيف يتيح لكم إعادة تعريف الأساليب لتوفير شيفرة مرنة وقابلة لإعادة الاستخدام. لنبدأ!

ما تعدد الأشكال؟
ما تعدد الأشكال؟
يعني تعدد الأشكال «أشكالًا متعددة»، ويتيح التعامل مع كائنات من فئات مختلفة على أنها كائنات من فئة أساسية مشتركة. وهذا يمنح الشيفرة مرونة وقابلية لإعادة الاستخدام.
مثال: يمكن أن يتصرف أحد الأساليب بطريقة مختلفة بناءً على نوع الكائن الذي يعمل معه.
نقطة مهمة: يتحقق تعدد الأشكال في C# من خلال إعادة تعريف الأساليب والواجهات.
فهم إعادة تعريف الأساليب
فهم إعادة تعريف الأساليب
تتيح إعادة تعريف الأساليب للفئة المشتقة توفير تنفيذ محدد لأسلوب سبق تعريفه في فئته الأساسية. استخدم الكلمة الأساسية virtual في الفئة الأساسية والكلمة الأساسية override في الفئة المشتقة. مثال:
تلميح: تضمن إعادة تعريف الأساليب استدعاء الأسلوب الصحيح للكائن، بغض النظر عن نوع مرجعه.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.Speak(); // Outputs: The dog barks.
myCat.Speak(); // Outputs: The cat meows.
}
}
استخدام تعدد الأشكال
استخدام تعدد الأشكال
يتيح لكم تعدد الأشكال كتابة شيفرة تعمل مع أنواع مختلفة من الكائنات من خلال واجهة مشتركة. مثال:
نقطة مهمة: يتيح لكم تعدد الأشكال كتابة شيفرة أكثر عمومية وقابلية لإعادة الاستخدام.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal[] animals = { new Dog(), new Cat() };
foreach (Animal animal in animals) {
animal.Speak(); // Calls the appropriate method for each object
}
}
}
استخدام الكلمة الأساسية base مع إعادة التعريف
استخدام الكلمة الأساسية base مع إعادة التعريف
تُستخدم الكلمة الأساسية base لاستدعاء أسلوب من الفئة الأساسية داخل الأسلوب المُعاد تعريفه. مثال:
تلميح: استخدم base عندما تريد الاحتفاظ بوظائف الفئة الأساسية داخل أسلوب مُعاد تعريفه.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
base.Speak(); // Calls the base class method
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The animal makes a sound. The dog barks.
}
}
الفئات والأساليب المجرّدة
الفئات والأساليب المجرّدة
توفر الفئات المجرّدة مخططًا أساسيًا للفئات المشتقة. ويمكنها أن تتضمن أساليب مجرّدة يجب إعادة تعريفها في الفئة المشتقة. مثال:
نقطة مهمة: تفرض الأساليب المجرّدة على الفئات المشتقة توفير تنفيذها الخاص.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
}
}
تحدٍّ تطبيقي
تحدٍّ تطبيقي
أنشئ فئة مجرّدة باسم Shape تحتوي على أسلوب مجرّد باسم CalculateArea(). اشتق فئتين هما Rectangle وCircle تنفّذان CalculateArea(). مثال:
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 4, Height = 5 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
أفضل الممارسات لتعدد الأشكال
أفضل الممارسات لتعدد الأشكال
إليك بعض أفضل الممارسات:
- استخدم تعدد الأشكال لتبسيط الشيفرة وتجنب التكرار.
- أعد تعريف الأساليب التي تحتاج فقط إلى سلوك محدد في الفئات المشتقة.
- استخدم الفئات والأساليب المجرّدة للواجهات المشتركة بين الفئات المشتقة.
تلميح: يجعل تعدد الأشكال شيفرتكم أسهل في التوسعة والصيانة.
أحسنتم!
أحسنتم!
تهانينا! لقد تعلمتم كيفية استخدام تعدد الأشكال وإعادة تعريف الأساليب لكتابة شيفرة مرنة وقابلة لإعادة الاستخدام. في الدرس التالي، سنستكشف العمل مع الواجهات لتحقيق التجريد وتنفيذ سلوكيات متعددة. واصلوا البرمجة!

الأسئلة الشائعة
هل درس «تعدد الأشكال وتجاوز الأساليب» مجاني؟
نعم — نص درس «تعدد الأشكال وتجاوز الأساليب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 7 دروس في المجموع.
ماذا ستتعلم في «تعدد الأشكال وتجاوز الأساليب»؟
أتقن تعدد الأشكال لإنشاء تعليمات برمجية مرنة وقابلة لإعادة الاستخدام من خلال تجاوز الأساليب تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 7 من أصل 7.
كم من الوقت يستغرق درس «تعدد الأشكال وتجاوز الأساليب»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما هي البرمجة كائنية التوجه؟
- تعريف الفئات والكائنات
- فهم الخصائص والأساليب
- المنشئات في C#
- التغليف ومعدّلات الوصول
- الوراثة: إعادة استخدام التعليمات البرمجية
- تعدد الأشكال وتجاوز الأساليب