التصميم (الواجهات والوراثة)
صمّم واجهة Shape بسيطة باستخدام واجهة وفئة أساسية صغيرة؛ وقرّر ما ينتمي إلى العقد وما يُعد تفصيلًا من تفاصيل التنفيذ.
التصميم (الواجهات والوراثة) درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.
نظرة عامة على المشروع
الهدف: تعريف عقد صغير وواضح للأشكال.
- استخدموا واجهة للسلوك
- حافظوا على أقل سطح ممكن
- اسمحوا بدمج العديد من الأشكال
العقد أولًا
أنشئوا عقدًا صغيرًا باسم IShape يتضمن Area() وPerimeter(). ويمكن للأدوات الاعتماد على الواجهة.
using System;
// Interface: minimal behavior all shapes must provide
public interface IShape
{
double Area();
double Perimeter();
}
// A tiny helper to print any IShape
public static class ShapePrinter
{
public static void Print(IShape s)
{
Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
}
}
public class Program
{
public static void Main(string[] args)
{
// No concrete shapes yet; interface compiles and is ready.
Console.WriteLine("Shape API ready");
}
}
فئة أساس اختيارية
يمكنكم إضافة فئة أساس abstract صغيرة للمساعدات المشتركة، لكن حافظوا على أن تكون الواجهة هي العقد الرسمي.
using System;
// Optional base for helpers; interface stays the main contract
public abstract class ShapeBase : IShape
{
public abstract double Area();
public abstract double Perimeter();
// Shared rounding helper
protected double Round2(double x)
{
return Math.Round(x, 2);
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Base class prepared for shared helpers");
}
}
الأشكال الملموسة
تطبّق الأشكال الملموسة الواجهة باستخدام implement. ويمكن للعملاء التعامل معها بشكل موحّد عبر IShape.
using System;
public interface IShape
{
double Area();
double Perimeter();
}
public class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
public class Circle : IShape
{
private readonly double _r;
public Circle(double r) { _r = r; }
public double Area() { return 3.14159 * _r * _r; }
public double Perimeter() { return 2 * 3.14159 * _r; }
}
public class Program
{
public static void Main(string[] args)
{
IShape a = new Rectangle(3, 4);
IShape b = new Circle(2);
Console.WriteLine("Rect A=" + a.Area() + " P=" + a.Perimeter());
Console.WriteLine("Circ A=" + b.Area() + " P=" + b.Perimeter());
}
}
مجموعات IShape
استخدموا List<IShape> لتخزين العديد من الأشكال ومعالجتها بالطريقة نفسها.
using System;
using System.Collections.Generic;
public interface IShape
{
double Area();
double Perimeter();
}
public class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
public class Circle : IShape
{
private readonly double _r;
public Circle(double r) { _r = r; }
public double Area() { return 3.14159 * _r * _r; }
public double Perimeter() { return 2 * 3.14159 * _r; }
}
public class Program
{
public static void Main(string[] args)
{
List<IShape> shapes = new List<IShape>();
shapes.Add(new Rectangle(2, 5));
shapes.Add(new Circle(1.5));
foreach (IShape s in shapes)
{
Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
}
}
}
قائمة التحقق من التصميم
قائمة التحقق:
- الواجهة هي العقد (صغير وواضح).
- تحافظ الأشكال الملموسة على كون الحقول private.
- استخدموا double للحسابات البسيطة، وأبقوا الثوابت محلية.
- فضّلوا تعدد الأشكال على عمليات التحقق من النوع.
اختيار العقد
مراجعة
مراجعة: عرّفوا واجهة IShape صغيرة، وأبقوا التفاصيل الداخلية private، واستخدموا مجموعات من الواجهة للمعالجة باستخدام تعدد الأشكال.
الأسئلة الشائعة
هل درس «التصميم (الواجهات والوراثة)» مجاني؟
نعم — نص درس «التصميم (الواجهات والوراثة)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «التصميم (الواجهات والوراثة)»؟
صمّم واجهة Shape بسيطة باستخدام واجهة وفئة أساسية صغيرة؛ وقرّر ما ينتمي إلى العقد وما يُعد تفصيلًا من تفاصيل التنفيذ. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «التصميم (الواجهات والوراثة)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التصميم (الواجهات والوراثة)
- التنفيذ والاختبارات
- السلوكيات متعددة الأشكال