Menu
Coddy logo textTech

Özet - Hayvanat Bahçesi Yöneticisi

Coddy'nin Rust Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 48 / 61.

challenge icon

Görev

Kolay

Öğrendiğin 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 teker teker konuşturulabildiği bir sistem oluşturacaksın.

Kodunu iki dosyaya ayıracaksın:

  • animals.rs: Speak alan ve bir speak döndüren &self metoduna sahip herkese açık bir String trait'i tanımla. Ardından, her birinin herkese açık bir Dog alanı (String) bulunduğu üç herkese açık yapı, Cat, Bird ve name, oluştur. Her hayvan için Speak trait'ini, karakteristik seslerini kullanarak uygula:
    • Dog, {name} says: Woof! döndürmelidir
    • Cat, {name} says: Meow! döndürmelidir
    • Bird, {name} says: Tweet! döndürmelidir
  • main.rs: Hayvanlar modülünü dahil et ve bir hayvanat bahçesi oluştur! Sağlanan girdileri kullanarak her hayvan türünden bir tane içeren bir Vec<Box<dyn Speak>> oluştur. Bunları şu sırayla ekle: önce Dog, ardından Cat, sonra Bird. Son olarak hayvanat bahçende dolaş ve her hayvanın sesini kendi satırına yazdır.

Bu görev, trait nesnelerinin gerçek gücünü gösterir: tamamen farklı üç hayvan türü tek bir koleksiyonda birlikte yaşar ve her biri aynı speak() çağrısına kendine özgü davranışıyla yanıt verir.

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

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

Örneğin, girdiler Rex, Whiskers ve Tweety olduğunda:

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

Üç girdi alacaksın: 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 girdi 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();

    // TODO: zoo adında bir Vec<Box<dyn Speak>> oluştur
    // Hayvanları sırayla ekle: önce Dog, sonra Cat, sonra Bird

    // TODO: zoo üzerinde dolaş ve her hayvanın sesini yazdır
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Rust derleyicisi