Das Haustier definieren
Teil des Abschnitts Objektorientierte Programmierung der Rust-Journey von Coddy. Lektion 19 von 61.
Aufgabe
EinfachWillkommen beim Projekt „Virtuelles Haustier“! In den nächsten Lektionen wirst du eine vollständige Haustiersimulation erstellen, die alles zusammenführt, was du über Structs, Methoden, Module und Kapselung gelernt hast.
Beginnen wir mit dem Aufbau deines virtuellen Haustiers! In diesem ersten Schritt richtest du die Grundlage ein, indem du ein Pet-Struct in einem eigenen Modul mit ordnungsgemäßer Kapselung erstellst.
Du organisierst deinen Code über zwei Dateien:
pet.rs: Definiere deinPet-Struct mit drei privaten Feldern:name(String),energy(u32) undhunger(u32). Implementiere eine öffentliche zugehörige Funktionnew, die einen Namen entgegennimmt und ein Haustier erstellt, bei demenergyauf100undhungerauf0gesetzt ist. Füge außerdem eine öffentliche Getter-Methodenamehinzu, die eine Referenz auf den Namen des Haustiers zurückgibt.main.rs: Deklariere daspet-Modul und holePetin den Gültigkeitsbereich. Lies einen Namen aus der Eingabe, erstelle ein neues Haustier mit diesem Namen und gib eine Willkommensnachricht aus.
Deine Willkommensnachricht sollte diesem Format folgen:
Welcome, {name}!Wenn die Eingabe beispielsweise Buddy lautet, sollte die Ausgabe wie folgt aussehen:
Welcome, Buddy!Denke daran, dass das Struct öffentlich sein sollte, damit es aus main.rs verwendet werden kann, die Felder jedoch privat bleiben sollten: Sie dürfen nur über die von dir bereitgestellten Methoden zugänglich sein.
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();
// TODO: Erstelle ein neues Pet mit dem gegebenen Namen
// TODO: Gib die Willkommensnachricht mit dem Namens-Getter des Pets aus
// Format: "Welcome, {name}!"
}
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