Rückblick – Rechteck-Aktionen
Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 7 von 61.
Aufgabe
EinfachErstellen Sie ein Rectangle-Struct mit zwei Feldern: width (u32) und height (u32).
Fügen Sie einen Implementierungsblock für Rectangle mit folgendem Inhalt hinzu:
new— eine assoziierte Funktion, diewidth: u32undheight: u32entgegennimmt und ein neuesRectanglezurückgibtarea— nimmt&selfentgegen und gibt die Fläche alsu32zurückscale— nimmt&mut selfund einenfactor: u32entgegen und multipliziert sowohl die Breite als auch die Höhe mit dem Faktor
Sie erhalten drei Eingaben:
- Erste Zeile: die Breite (u32)
- Zweite Zeile: die Höhe (u32)
- Dritte Zeile: der Skalierungsfaktor (u32)
Erstellen Sie ein veränderbares Rectangle mit Rectangle::new und den angegebenen Dimensionen. Geben Sie die ursprüngliche Fläche aus, skalieren Sie dann das Rechteck um den angegebenen Faktor und geben Sie die neue Fläche aus.
Erwartetes Ausgabeformat:
{initial_area}
{scaled_area}Probier es selbst
use std::io;
// TODO: Definiere hier das Rectangle-Struct
// TODO: Füge den Implementierungsblock für Rectangle hinzu mit:
// - new: assoziierte Funktion, die Breite und Höhe entgegennimmt und ein Rectangle zurückgibt
// - area: Methode, die &self entgegennimmt und u32 zurückgibt
// - scale: Methode, die &mut self und einen Faktor entgegennimmt und Breite sowie Höhe multipliziert
fn main() {
let mut input = String::new();
// Breite einlesen
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Höhe einlesen
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Skalierungsfaktor einlesen
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Erstelle ein veränderbares Rectangle mit Rectangle::new
// TODO: Gib die ursprüngliche Fläche aus
// TODO: Skaliere das Rechteck um den Faktor
// TODO: Gib die neue Fläche aus
}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