Récapitulatif - Actions sur le rectangle
Fait partie de la section Programmation Orientée Objet du Journey Rust de Coddy. Leçon 7 sur 61.
Défi
FacileCréez une structure Rectangle avec deux champs : width (u32) et height (u32).
Ajoutez un bloc d’implémentation pour Rectangle avec les éléments suivants :
new: une fonction associée qui prendwidth: u32etheight: u32et renvoie un nouveauRectanglearea: prend&selfet renvoie l’aire sous forme deu32scale: prend&mut selfet unfactor: u32, puis multiplie la largeur et la hauteur par le facteur
Vous recevrez trois entrées :
- Première ligne : la largeur (u32)
- Deuxième ligne : la hauteur (u32)
- Troisième ligne : le facteur d’échelle (u32)
Créez un Rectangle mutable à l’aide de Rectangle::new avec les dimensions fournies. Affichez l’aire initiale, puis mettez le rectangle à l’échelle avec le facteur donné et affichez la nouvelle aire.
Format de sortie attendu :
{initial_area}
{scaled_area}Essayez vous-même
use std::io;
// TODO: Définir la structure Rectangle ici
// TODO: Ajouter le bloc d'implémentation pour Rectangle avec :
// - new : fonction associée qui prend width et height, retourne Rectangle
// - area : méthode qui prend &self, retourne u32
// - scale : méthode qui prend &mut self et factor, multiplie width et height
fn main() {
let mut input = String::new();
// Lire width
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Lire height
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Lire le facteur d'échelle
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Créer un Rectangle mutable en utilisant Rectangle::new
// TODO: Afficher l'aire initiale
// TODO: Mettre à l'échelle le rectangle par le facteur
// TODO: Afficher la nouvelle aire
}Toutes les leçons de Programmation Orientée Objet
1Méthodes et comportement
Introduction aux blocs d'implémentationLe paramètre SelfMéthodes mutablesFonctions associéesBlocs d'implémentation multiplesChaînage de méthodesRécapitulatif - Actions sur le rectangle4Projet : Animal virtuel
Définir l'animalNourrir l'animal7Traits standards
Le trait DebugLe trait DisplayClone et CopyLes traits d'égalitéRécapitulatif - Point affichable10Projet : Système de documents
Le trait DrawComposant texte2Encapsulation et modules
Bases des modulesLe mot-clé publicChamps privésGettersSettersRécapitulatif - Casier sécurisé5Généricité
Structures génériquesMéthodes génériquesPlusieurs types génériquesFonctions génériquesRécapitulatif - Point de coordonnées8Les Traits comme contraintes
Syntaxe des contraintes de traitContraintes multiplesLa clause whereRetourner des types avec des traitsRécapitulatif - Afficheur générique11Design Patterns en Rust
Le pattern NewtypeCompositionLe trait DropFrom et IntoRécapitulatif - Mock de Smart Pointer3Enums avancées
Enums avec donnéesMéthodes sur les EnumsMatching des variantes de donnéesL'Enum Option revisitéeRécapitulatif - Enum Shape6Définition des Traits
Qu'est-ce qu'un Trait ?Implémenter des TraitsImplémentations par défautRedéfinir les comportements par défautTraits avec paramètresRécapitulatif - Lecteur multimédiaEntraînez-vous par vous-même : Compilateur Rust en ligne