0Pricing
Java Academy · บทเรียน

การนำไปใช้งาน

เปลี่ยนการออกแบบให้เป็นโค้ดที่ทำงานได้: กำหนดคลาสฐาน นำรูปทรงรูปธรรมไปใช้งาน และพิมพ์ผลลัพธ์จากรายการที่มีหลายชนิด

การนำไปใช้งาน เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

สรุปแผน

เราจะเขียนคลาสฐาน Shape พร้อม area() และ perimeter() จากนั้นเพิ่ม Circle และ Rectangle ควรตั้งชื่อให้สั้นและเขียนคณิตศาสตร์ให้อ่านง่าย และเลือกใช้เมธอดช่วยขนาดเล็กสำหรับการพิมพ์

โค้ด: คลาสฐานและ Circle

คลาสฐานกำหนดส่วนติดต่อและเมธอดช่วย 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
  }
}

ตัวสร้างและการป้องกันค่า

ตัวสร้างใช้กำหนดค่าฟิลด์ สำหรับผู้เริ่มต้น ให้ป้องกันอินพุตที่เป็น negative ด้วยการจำกัดค่าให้เป็นศูนย์ แอปจริงจะใช้การตรวจสอบหรือข้อยกเว้น แต่ในที่นี้เราจะทำให้เรียบง่าย

โค้ด: เพิ่ม Rectangle

Rectangle เข้าร่วมลำดับชั้นและใช้ส่วนติดต่อเดียวกัน สังเกตว่ารูปทรงทั้งสองชนิดสามารถพิมพ์ด้วยโค้ดเดียวกันได้ เพราะคลาสฐานกำหนดสัญญาไว้

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 เพิ่มการป้องกันค่าแบบง่าย และพิมพ์รายงานขนาดเล็กจากรายการที่มีรูปทรงผสมกัน บทเรียนถัดไป: พฤติกรรมแบบพหุรูปแบบ เช่น การเรียงลำดับตาม area

คำถามที่พบบ่อย

บทเรียน “การนำไปใช้งาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การนำไปใช้งาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การนำไปใช้งาน”

เปลี่ยนการออกแบบให้เป็นโค้ดที่ทำงานได้: กำหนดคลาสฐาน นำรูปทรงรูปธรรมไปใช้งาน และพิมพ์ผลลัพธ์จากรายการที่มีหลายชนิด คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน

บทเรียน “การนำไปใช้งาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การออกแบบ
  2. การนำไปใช้งาน
  3. พฤติกรรมแบบพหุรูปแบบ
← กลับไปที่ Java Academy