Definindo o Pet
Parte da seção Programação Orientada a Objetos do Journey de Rust da Coddy. Lição 19 de 61.
Desafio
FácilBoas-vindas ao projeto Pet Virtual! Nas próximas lições, você criará uma simulação completa de um animal de estimação que reúne tudo o que aprendeu sobre structs, métodos, módulos e encapsulamento.
Vamos começar a criar seu Pet Virtual! Nesta primeira etapa, você preparará a base criando uma struct Pet em seu próprio módulo, com o encapsulamento adequado.
Você organizará seu código em dois arquivos:
pet.rs: Defina sua structPetcom três campos privados:name(String),energy(u32) ehunger(u32). Implemente uma função associada públicanewque receba um nome e crie um animal comenergydefinido como100ehungerdefinido como0. Adicione também um método getter públiconameque retorne uma referência ao nome do animal.main.rs: Declare o módulopete coloquePetno escopo. Leia um nome da entrada, crie um novo animal com esse nome e imprima uma mensagem de boas-vindas.
Sua mensagem de boas-vindas deve seguir este formato:
Welcome, {name}!Por exemplo, se a entrada for Buddy, a saída deverá ser:
Welcome, Buddy!Lembre-se de que a struct deve ser pública para poder ser usada a partir de main.rs, mas os campos devem permanecer privados: acessíveis somente por meio dos métodos que você fornecer.
Experimente você mesmo
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: Crie um novo Pet com o nome fornecido
// TODO: Imprima a mensagem de boas-vindas usando o getter do nome do pet
// Formato: "Welcome, {name}!"
}
Todas as lições de Programação Orientada a Objetos
1Métodos e Comportamento
Introdução a Blocos de ImplementaçãoO Parâmetro SelfMétodos MutáveisFunções AssociadasMúltiplos Blocos de ImplementaçãoEncadeamento de MétodosRecapitulação - Ações de Retângulo4Projeto: Pet Virtual
Definindo o PetAlimentando o Pet7Traits Padrão
A Trait DebugA Trait DisplayClone e CopyTraits de IgualdadeRecapitulação - Ponto Imprimível10Projeto: Sistema de Documentos
A Trait DrawComponente de Texto2Encapsulamento e Módulos
Fundamentos de MódulosA Palavra-chave PublicCampos PrivadosGettersSettersRecapitulação - Cofre Seguro5Genéricos
Structs GenéricasMétodos GenéricosMúltiplos Tipos GenéricosFunções GenéricasRecapitulação - Ponto de Coordenada8Traits como Restrições
Sintaxe de Restrições de TraitRestrições MúltiplasA Cláusula WhereRetornando Tipos com TraitsRecapitulação - Impressora Genérica11Padrões de Projeto em Rust
Padrão NewtypeComposiçãoA Trait DropFrom e IntoRecapitulação - Mock de Smart Pointer3Enums Avançados
Enums com DadosMétodos em EnumsCorrespondência de Variantes de DadosO Enum Option RevisitadoRecapitulação - Enum Shape6Definição de Traits
O que é uma Trait?Implementando TraitsImplementações PadrãoSobrescrevendo PadrõesTraits com ParâmetrosRecapitulação - Media PlayerPratique por conta própria: Compilador de Rust online