Definir la mascota
Parte de la sección Programación Orientada a Objetos del Journey de Rust de Coddy. Lección 19 de 61.
Desafío
Fácil¡Te damos la bienvenida al proyecto Mascota Virtual! Durante las próximas lecciones, crearás una simulación completa de una mascota que reúne todo lo que has aprendido sobre las estructuras, los métodos, los módulos y la encapsulación.
¡Comencemos a crear tu Mascota Virtual! En este primer paso, configurarás los cimientos creando una estructura Pet en su propio módulo con una encapsulación adecuada.
Organizarás tu código en dos archivos:
pet.rs: Define tu estructuraPetcon tres campos privados:name(String),energy(u32) yhunger(u32). Implementa una función asociada públicanewque reciba un nombre y cree una mascota conenergyestablecido en100yhungerestablecido en0. Añade también un método getter públiconameque devuelva una referencia al nombre de la mascota.main.rs: Declara el módulopete incorporaPetal ámbito. Lee un nombre de la entrada, crea una mascota nueva con ese nombre e imprime un mensaje de bienvenida.
Tu mensaje de bienvenida debe seguir este formato:
Welcome, {name}!Por ejemplo, si la entrada es Buddy, la salida debería ser:
Welcome, Buddy!Recuerda que la estructura debe ser pública para poder usarse desde main.rs, pero los campos deben permanecer privados: solo se podrá acceder a ellos mediante los métodos que proporciones.
Pruébalo tú mismo
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: Crea un nuevo Pet con el nombre dado
// TODO: Imprime el mensaje de bienvenida usando el getter del nombre del pet
// Formato: "Welcome, {name}!"
}
Todas las lecciones de Programación Orientada a Objetos
1Métodos y Comportamiento
Intro a Bloques de ImplementaciónEl Parámetro SelfMétodos MutablesFunciones AsociadasMúltiples Bloques de ImplementaciónEncadenamiento de MétodosResumen - Acciones de Rectángulo4Proyecto: Mascota virtual
Definir la mascotaAlimentar a la mascota7Traits estándar
El trait DebugEl trait DisplayClone y CopyTraits de igualdadResumen - Punto imprimible10Proyecto: Sistema de documentos
El Trait DrawComponente de texto2Encapsulamiento y módulos
Conceptos básicos de módulosLa palabra clave PublicCampos privadosGettersSettersRepaso - Casillero seguro5Genéricos
Estructuras genéricasMétodos genéricosMúltiples tipos genéricosFunciones genéricasResumen - Punto de coordenadas8Traits como límites
Sintaxis de límites de traitsLímites múltiplesLa cláusula whereRetornar tipos con traitsResumen: Impresora genérica11Patrones de diseño en Rust
Patrón NewtypeComposiciónEl Trait DropFrom e IntoResumen - Mock de Smart Pointer3Enums avanzados
Enums con datosMétodos en EnumsCoincidencia de variantes de datosEl Enum Option revisitadoResumen - Enum Shape6Definición de Traits
¿Qué es un Trait?Implementación de TraitsImplementaciones por defectoSobrescribir valores por defectoTraits con parámetrosResumen - Reproductor multimediaPractica por tu cuenta: Compilador de Rust online