Abschließende Interaktion
Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 23 von 61.
Aufgabe
EinfachHerzlichen Glückwunsch zum Bau deines virtuellen Haustiers! In diesem letzten Schritt wirst du alles zusammenführen, indem du eine vollständige Interaktionssitzung mit deinem Haustier simulierst. Hier arbeiten alle deine Methoden harmonisch zusammen!
Dein Haustier-Modul hat bereits alles, was es braucht: Füttern, Spielen und Statusberichte. Jetzt wirst du eine Simulation erstellen, die einen Tag im Leben deines virtuellen Begleiters zeigt.
In deiner main.rs wirst du den Namen deines Haustiers einlesen und dann eine Sequenz von Interaktionen durchführen:
- Erstelle ein neues Haustier mit dem angegebenen Namen
- Zeige den anfänglichen Statusbericht an
- Spiele zweimal mit deinem Haustier
- Füttere dein Haustier einmal
- Zeige den finalen Statusbericht an
Drucke zwischen den beiden Statusberichten eine Trennlinie, um den Übergang anzuzeigen:
--- After Activities ---Wenn die Eingabe zum Beispiel wie folgt lautet:
BuddySollte die Ausgabe so aussehen:
--- Status Report ---
Name: Buddy
Energy: 100
Hunger: 0
Mood: happy
Buddy had fun playing!
Buddy had fun playing!
Buddy enjoyed the meal!
--- After Activities ---
--- Status Report ---
Name: Buddy
Energy: 60
Hunger: 0
Mood: happyErinnere dich daran, wie sich die Werte ändern: Spielen kostet jedes Mal 20 Energie und fügt 15 Hunger hinzu, während Füttern den Hunger um 30 reduziert. Nach zwei Spielsitzungen und einer Fütterung sinkt die Energie deines Haustiers von 100 auf 60, und der Hunger steigt von 0 auf 30 und sinkt dann wieder auf 0.
Diese letzte Herausforderung präsentiert das komplette virtuelle Haustiersystem, das du gebaut hast – ein vollständig gekapseltes Modul mit privaten Feldern, Gettern, Settern und Methoden, die zusammenarbeiten, um ein interaktives Erlebnis zu schaffen!
Probier es selbst
mod pet;
use pet::Pet;
fn main() {
let mut name = String::new();
std::io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
let mut energy_input = String::new();
std::io::stdin().read_line(&mut energy_input).expect("Failed to read line");
let initial_energy: u32 = energy_input.trim().parse().expect("Failed to parse energy");
let mut hunger_input = String::new();
std::io::stdin().read_line(&mut hunger_input).expect("Failed to read line");
let initial_hunger: u32 = hunger_input.trim().parse().expect("Failed to parse hunger");
let mut my_pet = Pet::new(name);
my_pet.set_energy(initial_energy);
my_pet.set_hunger(initial_hunger);
my_pet.status();
}
Alle Lektionen in Object Oriented Programming
1Methoden und Verhalten
Einführung in ImplementierungsblöckeDer Self-ParameterVeränderliche MethodenAssoziierte FunktionenMehrere ImplementierungsblöckeMethod ChainingRückblick – Rechteck-Aktionen4Projekt: Virtuelles Haustier
Das Haustier definierenDas Haustier füttern7Standard-Traits
Das Debug-TraitDas Display-TraitClone und CopyGleichheits-TraitsZusammenfassung – Druckbarer Punkt10Projekt: Dokumentensystem
Das Draw-TraitText-Komponente2Kapselung und Module
Grundlagen der ModuleDas Public-SchlüsselwortPrivate FelderGetterSetterWiederholung – Sicherer Tresor5Generics
Generische StructsGenerische MethodenMehrere generische TypenGenerische FunktionenZusammenfassung - Koordinatenpunkt8Traits als Einschränkungen
Syntax für Trait BoundsMehrfache BoundsDie Where-KlauselTypen mit Traits zurückgebenRückblick – Generischer Drucker11Design Patterns in Rust
Newtype-PatternKompositionDas Drop-TraitFrom und IntoZusammenfassung – Smart Pointer Mock3Fortgeschrittene Enums
Enums mit DatenMethoden für EnumsMatching von DatenvariantenDas Option-Enum erneut betrachtetZusammenfassung – Shape-Enum6Definition von Traits
Was ist ein Trait?Traits implementierenStandardimplementierungenStandardimplementierungen überschreibenTraits mit ParameternZusammenfassung – Media Player