Menu
CoddyTech

Ringkasan, Pengelola Kebun Binatang

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 48 dari 61.

challenge icon

Tantangan

Mudah

Mari kita buat pengelola kebun binatang yang menggabungkan semua konsep trait object yang sudah kamu pelajari! Kamu akan membuat sistem tempat berbagai hewan, masing-masing dengan suara khasnya sendiri, dapat disimpan dalam satu koleksi dan dibuat bersuara satu per satu.

Kamu akan menyusun kodemu dalam dua file:

  • animals.rs: Definisikan trait Speak publik dengan method speak yang menerima &self dan mengembalikan String. Lalu buat tiga struct publik, Dog, Cat, dan Bird, masing-masing dengan field name publik (String). Implementasikan trait Speak untuk setiap hewan dengan suara khasnya:
    • Dog harus mengembalikan {name} says: Woof!
    • Cat harus mengembalikan {name} says: Meow!
    • Bird harus mengembalikan {name} says: Tweet!
  • main.rs: Sertakan module animals dan buat kebun binatang! Buat Vec<Box<dyn Speak>> yang berisi satu hewan dari setiap tipe menggunakan input yang disediakan. Tambahkan hewan dengan urutan berikut: Dog terlebih dahulu, lalu Cat, kemudian Bird. Terakhir, lakukan iterasi melalui kebun binatangmu dan cetak suara setiap hewan pada barisnya sendiri.

Tantangan ini menunjukkan kekuatan nyata trait object: tiga tipe hewan yang benar-benar berbeda hidup bersama dalam satu koleksi, dan masing-masing merespons pemanggilan speak() yang sama dengan perilakunya sendiri.

Output-mu harus menampilkan suara setiap hewan secara berurutan:

{dog_name} says: Woof!
{cat_name} says: Meow!
{bird_name} says: Tweet!

Contohnya, dengan input Rex, Whiskers, dan Tweety:

Rex says: Woof!
Whiskers says: Meow!
Tweety says: Tweet!

Kamu akan menerima tiga input: nama anjing, nama kucing, dan nama burung.

Coba sendiri

mod animals;

use animals::{Speak, Dog, Cat, Bird};

fn main() {
    // Baca input untuk nama hewan
    let mut dog_name = String::new();
    std::io::stdin().read_line(&mut dog_name).expect("Failed to read line");
    let dog_name = dog_name.trim().to_string();

    let mut cat_name = String::new();
    std::io::stdin().read_line(&mut cat_name).expect("Failed to read line");
    let cat_name = cat_name.trim().to_string();

    let mut bird_name = String::new();
    std::io::stdin().read_line(&mut bird_name).expect("Failed to read line");
    let bird_name = bird_name.trim().to_string();

    // TODO: Buat Vec<Box<dyn Speak>> bernama zoo
    // Tambahkan hewan secara berurutan: Dog terlebih dahulu, lalu Cat, kemudian Bird

    // TODO: Telusuri zoo dan cetak suara setiap hewan
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Rust online