0Pricing
Java Academy · درس

التنفيذ

حوّل التصميم إلى شفرة عاملة: عرّف الفئة الأساسية، ونفّذ الأشكال الملموسة، واطبع النتائج من قائمة مختلطة.

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

مراجعة الخطة

سنكتب الفئة الأساسية Shape باستخدام area() وperimeter()، ثم نضيف Circle وRectangle. أبقوا الأسماء قصيرة والحسابات سهلة القراءة، وفضّلوا الدوال المساعدة الصغيرة للطباعة.

الشيفرة: الفئة الأساسية + Circle

تحدد الفئة الأساسية API ومساعدًا صغيرًا هو info(). تنفذ Circle الحسابات وtoString() لإخراج واضح.

public class Main {
  // Base class with a tiny print helper
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() {
      return String.format("area=%.2f, per=%.2f", area(), perimeter());
    }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) {
      // simple guard to avoid negative sizes for beginners
      radius = (r < 0) ? 0 : r;
    }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
    public String toString() { return "Circle " + info(); }
  }

  public static void main(String[] args) {
    Shape s = new Circle(2.5);
    System.out.println(s); // prints Circle area/perimeter
  }
}

المُنشئات وعمليات الحماية

تضبط المُنشئات الحقول. وبالنسبة إلى المبتدئين، امنعوا القيم السالبة بتقييدها إلى الصفر. تستخدم التطبيقات الحقيقية التحقق أو الاستثناءات، لكننا نبقي الأمر بسيطًا هنا.

الشيفرة: إضافة Rectangle

ينضم Rectangle إلى التسلسل الهرمي ويستخدم API نفسها. لاحظوا كيف يمكن طباعة الشكلين باستخدام الشيفرة نفسها، لأن الفئة الأساسية تحدد العقد.

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
    public String toString() { return "Circle " + info(); }
  }
  static class Rectangle extends Shape {
    double w, h;
    Rectangle(double w, double h) {
      this.w = (w < 0) ? 0 : w;
      this.h = (h < 0) ? 0 : h;
    }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
    public String toString() { return "Rectangle " + info(); }
  }

  public static void main(String[] args) {
    Shape a = new Circle(3.0);
    Shape b = new Rectangle(4.0, 2.0);
    System.out.println(a);
    System.out.println(b);
  }
}

القوائم والطباعة

تتيح لنا قائمة من Shape مزج Circle وRectangle. ويمكن لحلقة بسيطة طباعة كل عنصر. ولإخراج مناسب للهاتف المحمول، أبقوا شكلًا واحدًا في كل سطر ونسّقوا الأعداد إلى منزلتين عشريتين.

الشيفرة: تقرير صغير

التقرير: تطبع حلقة صغيرة النوع وملخص كل شكل. يحافظ تعدد الأشكال على نظافة الحلقة، بينما يوفّر كل شكل حساباته الخاصة.

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String label() { return getClass().getSimpleName(); }
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double radius;
    Circle(double r) { radius = (r < 0) ? 0 : r; }
    double area() { return Math.PI * radius * radius; }
    double perimeter() { return 2 * Math.PI * radius; }
  }
  static class Rectangle extends Shape {
    double w, h;
    Rectangle(double w, double h) { this.w = (w < 0) ? 0 : w; this.h = (h < 0) ? 0 : h; }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
  }

  public static void main(String[] args) {
    Shape[] shapes = { new Circle(1.2), new Rectangle(2.0, 3.0), new Circle(0.5) };
    for (int i = 0; i < shapes.length; i = i + 1) {
      Shape s = shapes[i];
      System.out.println(s.label() + " -> " + s.info());
    }
  }
}

التحقق من التنفيذ

تحقق سريع: ما المطلوب لكل شكل فعلي في هذا التسلسل الهرمي؟

مراجعة

مراجعة: كتبنا Shape وCircle وRectangle، وأضفنا عمليات حماية بسيطة، وطبعنا تقريرًا صغيرًا من قائمة مختلطة. الدرس التالي: سلوكيات متعددة الأشكال مثل الفرز حسب المساحة.

الأسئلة الشائعة

هل درس «التنفيذ» مجاني؟

نعم — نص درس «التنفيذ» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 3 دروس في المجموع.

ماذا ستتعلم في «التنفيذ»؟

حوّل التصميم إلى شفرة عاملة: عرّف الفئة الأساسية، ونفّذ الأشكال الملموسة، واطبع النتائج من قائمة مختلطة. تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «التنفيذ»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التصميم
  2. التنفيذ
  3. السلوكيات متعددة الأشكال
← العودة إلى Java Academy