Implementasi
Ubah desain menjadi kode yang berfungsi: definisikan kelas dasar, implementasikan bentuk konkret, dan cetak hasil dari daftar campuran.
Implementasi adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.
Ringkasan rencana
Kita akan membuat Shape dasar dengan area() dan perimeter(), lalu menambahkan Circle dan Rectangle. Gunakan nama yang singkat dan perhitungan yang mudah dibaca, serta utamakan metode pembantu kecil untuk pencetakan.
Kode: dasar + Circle
Kelas dasar mendefinisikan antarmuka dan pembantu info() kecil. Circle menerapkan perhitungan 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
}
}
Konstruktor & pengaman
Konstruktor menetapkan atribut. Untuk pemula, cegah masukan yang nilainya kurang dari nol dengan membatasinya ke nol. Aplikasi nyata menggunakan validasi atau pengecualian, tetapi di sini kita membuatnya sederhana.
Kode: menambahkan Rectangle
Rectangle bergabung ke dalam hierarki dan menggunakan antarmuka yang sama. Perhatikan bahwa kedua bentuk dapat dicetak dengan kode yang sama karena kelas dasar mendefinisikan kontraknya.
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);
}
}
Daftar & pencetakan
Sebuah daftar Shape memungkinkan kita mencampur Circle dan Rectangle. Perulangan sederhana dapat mencetak setiap item. Untuk keluaran perangkat seluler, tampilkan satu bentuk per baris dan tampilkan angka dengan dua angka desimal.
Kode: laporan singkat
Laporan: sebuah perulangan kecil mencetak jenis dan ringkasan untuk setiap bentuk. Polimorfisme menjaga perulangan tetap rapi, sementara setiap bentuk menyediakan perhitungannya 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());
}
}
}
Pemeriksaan implementasi
Pemeriksaan singkat: Apa yang diwajibkan untuk setiap bentuk konkret dalam hierarki ini?
Ringkasan
Ringkasan: Kita telah membuat Shape, Circle, dan Rectangle; menambahkan pengaman sederhana; serta mencetak laporan singkat dari daftar campuran. Pelajaran berikutnya: perilaku polimorfik seperti pengurutan berdasarkan area.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Implementasi” gratis?
Ya — teks lengkap “Implementasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Implementasi”?
Ubah desain menjadi kode yang berfungsi: definisikan kelas dasar, implementasikan bentuk konkret, dan cetak hasil dari daftar campuran. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.
Berapa lama pelajaran “Implementasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Desain
- Implementasi
- Perilaku Polimorfik