Ulasan: Kalkulator Bentuk
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 33 dari 87.
Tantangan
MudahMari kita buat kalkulator bentuk yang menggabungkan semua konsep polimorfisme yang telah kamu pelajari di bab ini. Kamu akan membuat class abstrak Shape dengan subclass konkret, lalu menggunakan polimorfisme untuk menghitung dan menampilkan luas secara seragam.
Kamu akan membagi kodemu ke dalam empat file:
Shape.java: Buat class abstrak yang menjadi dasar bagi semua bentuk. Setiap bentuk memiliki fieldname(String). Sertakan constructor untuk menginisialisasinya, method gettergetName(), dan method abstrakgetArea()yang mengembalikan nilai double. Tambahkan juga methoddescribe()yang mengembalikan:[name]: [area](dengan area diformat hingga 2 angka desimal menggunakanString.format("%.2f", getArea())).Circle.java: Buat class konkret yang memperluas Shape. Lingkaran memiliki fieldradius(double). Gunakansuperuntuk memberikan "Circle" sebagai nama. ImplementasikangetArea()agar mengembalikan luas menggunakanMath.PI * radius * radius.Rectangle.java: Buat class konkret lain yang memperluas Shape. Persegi panjang memiliki fieldwidthdanheight(keduanya double). Berikan "Rectangle" sebagai nama kepada constructor induk. ImplementasikangetArea()agar mengembalikan hasil perkalian width dengan height.Main.java: Buat kalkulator bentuk yang menunjukkan polimorfisme dalam aksi. Kamu akan menerima tiga input: radius lingkaran, width, dan height persegi panjang.Buat Circle dan Rectangle, lalu simpan keduanya dalam array berisi referensi
Shape. Lakukan perulangan pada array dan untuk setiap bentuk, cetak deskripsinya menggunakan methoddescribe().Setelah perulangan, hitung dan cetak total luas semua bentuk dengan format:
Total area: [sum](juga diformat hingga 2 angka desimal). Gunakan perulangan atau akumulator terpisah untuk menjumlahkan luas dengan memanggilgetArea()pada setiap referensi bentuk.
Kamu akan menerima tiga input: radius lingkaran (double), width persegi panjang (double), dan height persegi panjang (double).
Output-mu harus menampilkan tiga baris, satu deskripsi untuk setiap bentuk, lalu total luas. Perhatikan bagaimana kamu dapat memperlakukan berbagai bentuk secara seragam melalui tipe abstrak Shape, sementara setiap bentuk menghitung luasnya dengan caranya sendiri!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca input
double radius = scanner.nextDouble();
double width = scanner.nextDouble();
double height = scanner.nextDouble();
// TODO: Buat object Circle menggunakan radius
// TODO: Buat object Rectangle menggunakan width dan height
// TODO: Buat array berisi referensi Shape dan simpan kedua bentuk di dalamnya
// TODO: Telusuri array dengan perulangan dan cetak deskripsi setiap bentuk menggunakan describe()
// TODO: Hitung total luas semua bentuk
// Gunakan perulangan atau akumulator untuk menjumlahkan luas dengan memanggil getArea() pada setiap bentuk
// TODO: Cetak total luas dengan format: "Total area: [sum]"
// Gunakan String.format("%.2f", totalArea) untuk pemformatan
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online