Java Academy · Pelajaran

Pelaksanaan

Tukarkan reka bentuk kepada kod yang berfungsi: takrifkan kelas asas, laksanakan bentuk konkrit dan cetak hasil daripada senarai bercampur.

Pelajaran 2 daripada 38 langkah

Pelaksanaan ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 3. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 3 pelajaran.

Rumusan rancangan

Kami akan menulis asas Shape dengan area() dan perimeter(), kemudian menambah Circle dan Rectangle. Gunakan nama yang ringkas dan matematik yang mudah dibaca, serta utamakan kaedah pembantu kecil untuk pencetakan.

Kod: asas dan Circle

Kelas asas mentakrifkan antara muka dan pembantu info() yang kecil. Circle melaksanakan pengiraan matematik dan toString() untuk menghasilkan keluaran yang jelas.

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
  }
}

Pembina dan semakan perlindungan

Pembina menetapkan medan. Untuk pemula, lindungi daripada nilai negative dengan mengehadkannya kepada sifar. Aplikasi sebenar menggunakan pengesahan atau pengecualian, tetapi di sini kami mengekalkannya ringkas.

Kod: tambah Rectangle

Rectangle menyertai hierarki dan menggunakan antara muka yang sama. Perhatikan bahawa kedua-dua bentuk boleh dicetak dengan kod yang sama kerana kelas asas mentakrifkan kontrak.

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);
  }
}

Senarai dan pencetakan

Satu senarai Shape membolehkan kita mencampurkan Circle dan Rectangle. Gelung ringkas boleh mencetak setiap item. Untuk keluaran mudah alih, simpan satu bentuk setiap baris dan formatkan nombor kepada dua tempat perpuluhan.

Kod: laporan ringkas

Laporan: gelung kecil mencetak jenis dan ringkasan bagi setiap bentuk. Polimorfisme memastikan gelung kekal kemas, sementara setiap bentuk menyediakan pengiraan matematiknya sendiri.

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());
    }
  }
}

Semakan pelaksanaan

Semakan pantas: Apakah yang diperlukan untuk setiap bentuk konkrit dalam hierarki ini?

Rumusan

Rumusan: Kami menulis Shape, Circle dan Rectangle; menambah semakan perlindungan yang ringkas; serta mencetak laporan kecil daripada senarai bercampur. Pelajaran seterusnya: tingkah laku polimorfik seperti pengisihan mengikut area.

Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Pelaksanaan” percuma?

Ya — teks penuh “Pelaksanaan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 3 pelajaran.

Apakah yang akan saya pelajari dalam “Pelaksanaan”?

Tukarkan reka bentuk kepada kod yang berfungsi: takrifkan kelas asas, laksanakan bentuk konkrit dan cetak hasil daripada senarai bercampur. Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 3.

Berapa lamakah pelajaran “Pelaksanaan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Reka Bentuk
  2. Pelaksanaan
  3. Tingkah Laku Polimorfik
← Kembali ke Java Academy