Menu
Coddy logo textTech

Özet - Hayvanat Bahçesi Yöneticisi

Coddy'nin Rust Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 48 / 61.

challenge icon

Görev

Kolay

Öğrendiğiniz tüm trait nesnesi kavramlarını bir araya getiren bir hayvanat bahçesi yöneticisi oluşturalım! Her biri kendine özgü bir sese sahip farklı hayvanların tek bir koleksiyonda saklanabildiği ve her birinin sırayla konuşturulabildiği bir sistem oluşturacaksınız.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • animals.rs: &self alan ve bir String döndüren bir speak metoduna sahip, genel (public) bir Speak traiti tanımlayın. Ardından, her biri genel bir name alanına (String) sahip üç genel struct—Dog, Cat ve Bird—oluşturun. Her hayvan için Speak traitini kendilerine özgü seslerle uygulayın:
    • Dog şunları döndürmelidir: {name} says: Woof!
    • Cat şunları döndürmelidir: {name} says: Meow!
    • Bird şunları döndürmelidir: {name} says: Tweet!
  • main.rs: Hayvanlar modülünüzü içeri aktarın ve bir hayvanat bahçesi oluşturun! Sağlanan girdileri kullanarak her hayvan türünden birer tane içeren bir Vec<Box<dyn Speak>> oluşturun. Bunları şu sırayla ekleyin: önce Dog, sonra Cat, sonra Bird. Son olarak, hayvanat bahçenizde döngü kurun ve her hayvanın sesini kendi satırında yazdırın.

Bu meydan okuma, trait nesnelerinin gerçek gücünü gösterir—tek bir koleksiyonda bir arada yaşayan üç tamamen farklı hayvan türü, her biri aynı speak() çağrısına kendi benzersiz davranışıyla yanıt verir.

Çıktınız, her hayvanın sırayla konuştuğunu göstermelidir:

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

Örneğin, Rex, Whiskers ve Tweety girdileriyle:

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

Üç girdi alacaksınız: köpeğin adı, kedinin adı ve kuşun adı.

Kendin dene

mod animals;

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

fn main() {
    // Hayvan isimleri için girişi oku
    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();

    // YAPILACAK: zoo adında bir Vec<Box<dyn Speak>> oluşturun
    // Hayvanları sırayla ekleyin: Önce Köpek, sonra Kedi, sonra Kuş

    // YAPILACAK: zoo üzerinde döngü kurun ve her hayvanın sesini yazdırın
}

Object Oriented Programming bölümündeki tüm dersler