Définir l'animal
Fait partie de la section Programmation Orientée Objet du Journey Rust de Coddy. Leçon 19 sur 61.
Défi
FacileBienvenue dans le projet Animal de compagnie virtuel ! Au cours des prochaines leçons, tu vas construire une simulation complète d’animal de compagnie qui réunira tout ce que tu as appris sur les structures, les méthodes, les modules et l’encapsulation.
Commençons à construire ton Animal de compagnie virtuel ! Dans cette première étape, tu vas poser les bases en créant une structure Pet dans son propre module, avec une encapsulation appropriée.
Tu organiseras ton code sur deux fichiers :
pet.rs: définis ta structurePetavec trois champs privés :name(String),energy(u32) ethunger(u32). Implémente une fonction associée publiquenewqui prend un nom et crée un animal avecenergydéfini sur100ethungerdéfini sur0. Ajoute également une méthode getter publiquenamequi renvoie une référence vers le nom de l’animal.main.rs: déclare le modulepetet rendsPetaccessible dans la portée. Lis un nom depuis l’entrée, crée un nouvel animal avec ce nom et affiche un message de bienvenue.
Ton message de bienvenue doit respecter ce format :
Welcome, {name}!Par exemple, si l’entrée est Buddy, la sortie doit être :
Welcome, Buddy!N’oublie pas que la structure doit être publique afin de pouvoir être utilisée depuis main.rs, mais que les champs doivent rester privés : ils ne doivent être accessibles qu’au moyen des méthodes que tu fournis.
Essayez vous-même
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: Créer un nouveau Pet avec le nom donné
// TODO: Afficher le message de bienvenue en utilisant le getter du nom du pet
// Format : "Welcome, {name}!"
}
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