Ringkasan, Pengelola Kebun Binatang
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 48 dari 61.
Tantangan
MudahMari 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 traitSpeakpublik dengan methodspeakyang menerima&selfdan mengembalikanString. Lalu buat tiga struct publik,Dog,Cat, danBird, masing-masing dengan fieldnamepublik (String). Implementasikan traitSpeakuntuk setiap hewan dengan suara khasnya:- Dog harus mengembalikan
{name} says: Woof! - Cat harus mengembalikan
{name} says: Meow! - Bird harus mengembalikan
{name} says: Tweet!
- Dog harus mengembalikan
main.rs: Sertakan module animals dan buat kebun binatang! BuatVec<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
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