Ringkasan: Enum Shape
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 18 dari 61.
Tantangan
MudahMari buat kalkulator geometri yang menggunakan enum untuk merepresentasikan berbagai bentuk, yang masing-masing menyimpan dimensinya sendiri. Enum Shape milikmu akan menunjukkan bagaimana satu tipe dapat menampung berbagai struktur data dan menyediakan perilaku terpadu melalui method.
Kamu akan membuat dua file untuk mengatur kodemu:
shape.rs: Definisikan enumShapepublik dengan dua varian:Circle: menyimpan satu nilaif64yang merepresentasikan jari-jari (sintaks tuple)Rectangle: menyimpan field bernama:width(f64) danheight(f64)
areayang menggunakan pencocokan pola untuk menghitung luas yang tepat berdasarkan variannya. Untuk lingkaran, gunakan3.14159sebagai π.main.rs: Bawa masuk module shape-mu, buat satu instance dari setiap varian bentuk menggunakan input yang diberikan, lalu cetak luas setiap bentuk.
Method area milikmu harus mengembalikan f64. Saat melakukan pencocokan, uraikan setiap varian untuk mengambil dimensinya dan gunakan rumus yang sesuai:
- Luas lingkaran:
π × radius² - Luas persegi panjang:
width × height
Output harus menampilkan luas setiap bentuk pada baris tersendiri, dengan tepat satu angka di belakang koma:
Circle area: {area}
Rectangle area: {area}Contohnya, dengan jari-jari lingkaran 5.0 dan persegi panjang dengan lebar 4.0 serta tinggi 6.0, outputnya adalah:
Circle area: 78.5
Rectangle area: 24.0Kamu akan menerima tiga input: jari-jari lingkaran, lebar persegi panjang, dan tinggi persegi panjang.
Coba sendiri
mod shape;
use shape::Shape;
fn main() {
// Baca input
let mut radius_input = String::new();
std::io::stdin().read_line(&mut radius_input).expect("Failed to read line");
let radius: f64 = radius_input.trim().parse().expect("Invalid number");
let mut width_input = String::new();
std::io::stdin().read_line(&mut width_input).expect("Failed to read line");
let width: f64 = width_input.trim().parse().expect("Invalid number");
let mut height_input = String::new();
std::io::stdin().read_line(&mut height_input).expect("Failed to read line");
let height: f64 = height_input.trim().parse().expect("Invalid number");
// TODO: Buat bentuk Circle menggunakan radius
// TODO: Buat bentuk Rectangle menggunakan width dan height
// TODO: Tampilkan luas setiap bentuk dengan satu angka di belakang koma
// Format: "Circle area: {area}" dan "Rectangle area: {area}"
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Method dan Perilaku
Pengantar Blok ImplementasiParameter SelfMethod MutableFungsi TerkaitBeberapa Blok ImplementasiMethod BerantaiRangkuman: Aksi Persegi Panjang4Proyek: Hewan Peliharaan Virtual
Mendefinisikan Hewan PeliharaanMemberi Makan Hewan Peliharaan2Enkapsulasi dan module
Dasar-Dasar moduleKata Kunci publicField privateGetterSetterRekap: Loker AmanLatihan sendiri: Compiler Rust online