Statusbericht
Teil des Abschnitts Objektorientierte Programmierung der Rust-Journey von Coddy. Lektion 22 von 61.
Aufgabe
EinfachDein virtuelles Haustier entwickelt sich prächtig! Jetzt geben wir ihm die Fähigkeit, über sein Befinden zu berichten. In diesem Schritt fügst du eine status-Methode hinzu, die einen vollständigen Überblick über den aktuellen Zustand deines Haustiers liefert.
Der Statusbericht sollte den Zustand deines Haustiers anhand seiner Energie- und Hungerwerte beschreiben. Dein Haustier kann je nachdem, wie gut du dich um es gekümmert hast, verschiedene Stimmungen haben:
- Wenn die Energie
50oder höher UND der Hunger50oder niedriger ist, ist dein Haustier happy - Andernfalls ist dein Haustier tired
Füge deinem status eine Pet-Methode hinzu, die &self entgegennimmt und einen vollständigen Statusbericht mit dem Namen, der Energie, dem Hunger und der Stimmung des Haustiers ausgibt.
Der Statusbericht sollte genau diesem Format entsprechen:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}Lies in deiner main.rs den Namen, den Energie- und den Hungerwert des Haustiers ein, richte dein Haustier mit diesen Werten ein und rufe anschließend die status-Methode auf, um den Bericht anzuzeigen.
Wenn beispielsweise folgende Eingabe erfolgt:
Buddy
70
30Die Ausgabe sollte sein:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyUnd wenn folgende Eingabe erfolgt:
Max
40
60Die Ausgabe sollte sein:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredMit dieser Methode kannst du jederzeit schnell das Wohlbefinden deines Haustiers überprüfen!
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.play();
println!("Energy: {}", my_pet.energy());
println!("Hunger: {}", my_pet.hunger());
}
Alle Lektionen in Objektorientierte Programmierung
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Übe selbstständig: Online-Rust-Compiler