Menu
Coddy logo textTech

Rückblick – Zoo-Manager

Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 48 von 61.

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen Zoo-Manager bauen, der alle Konzepte zu Trait-Objekten zusammenführt, die Sie gelernt haben! Sie werden ein System erstellen, in dem verschiedene Tiere – jedes mit seinem eigenen einzigartigen Geräusch – in einer einzigen Sammlung gespeichert und nacheinander zum Sprechen gebracht werden können.

Sie werden Ihren Code über zwei Dateien organisieren:

  • animals.rs: Definieren Sie einen öffentlichen Speak-Trait mit einer speak-Methode, die &self entgegennimmt und einen String zurückgibt. Erstellen Sie dann drei öffentliche Structs – Dog, Cat und Bird – jeweils mit einem öffentlichen name-Feld (String). Implementieren Sie den Speak-Trait für jedes Tier mit seinen charakteristischen Geräuschen:
    • Dog sollte "{name} says: Woof!" zurückgeben
    • Cat sollte "{name} says: Meow!" zurückgeben
    • Bird sollte "{name} says: Tweet!" zurückgeben
  • main.rs: Binden Sie Ihr animals-Modul ein und erstellen Sie einen Zoo! Erstellen Sie einen Vec<Box<dyn Speak>>, der unter Verwendung der bereitgestellten Eingaben jeweils einen Tier-Typ enthält. Fügen Sie diese in der folgenden Reihenfolge hinzu: zuerst Dog, dann Cat, dann Bird. Iterieren Sie schließlich durch Ihren Zoo und geben Sie das Geräusch jedes Tieres in einer eigenen Zeile aus.

Diese Herausforderung demonstriert die wahre Stärke von Trait-Objekten – drei völlig unterschiedliche Tier-Typen, die zusammen in einer Sammlung leben und jeder auf denselben speak()-Aufruf mit seinem eigenen, einzigartigen Verhalten reagiert.

Ihre Ausgabe sollte jedes Tier in der richtigen Reihenfolge sprechend anzeigen:

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

Zum Beispiel mit den Eingaben Rex, Whiskers und Tweety:

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

Sie erhalten drei Eingaben: den Namen des Hundes, den Namen der Katze und den Namen des Vogels.

Probier es selbst

mod animals;

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

fn main() {
    // Eingabe für Tiernamen lesen
    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: Erstelle einen Vec<Box<dyn Speak>> namens zoo
    // Tiere in der Reihenfolge hinzufügen: zuerst Dog, dann Cat, dann Bird

    // TODO: Iteriere durch den zoo und gib das Geräusch jedes Tieres aus
}

Alle Lektionen in Object Oriented Programming