Skip to content

Instantly share code, notes, and snippets.

@leoniralves
Last active August 14, 2025 23:35
Show Gist options
  • Save leoniralves/592ad720de824d186517bec4bc48302a to your computer and use it in GitHub Desktop.
Save leoniralves/592ad720de824d186517bec4bc48302a to your computer and use it in GitHub Desktop.

Exercício de Kotlin – Classes, Objetos e Encapsulamento

Enunciado

Você foi contratado para criar um sistema simples de treino Pokémon.
O sistema deve permitir que Pokémons sejam criados, treinados e que suas informações sejam consultadas.


Requisitos

1. Classe Pokemon

  • Propriedades privadas:
    • nome (String)
    • nivel (Int)
    • tipo (String)
  • Construtor: recebe nome e tipo como parâmetros, mas inicia nivel sempre como 1.
  • Métodos públicos:
    • getNome(): retorna o nome do Pokémon.
    • getNivel(): retorna o nível atual.
    • treinar(): aumenta o nível em +1 e mostra uma mensagem
      "O Pokémon X agora está no nível Y!".

2. Classe Treinador

  • Propriedades privadas:
    • nome (String)
  • Construtor: recebe nome como parâmetro.
  • Métodos públicos:
    • treinarPokemon(pokemon: Pokemon): chama o método treinar() do Pokémon recebido como parâmetro.
    • mostrarInfoPokemon(pokemon: Pokemon): imprime na tela o nome, nível e tipo do Pokémon
      (use os métodos públicos da classe Pokemon para pegar essas informações, nada de acessar diretamente as variáveis privadas!).

3. Função main()

  • Crie dois Pokémons diferentes.
  • Crie um treinador.
  • Treine os Pokémons algumas vezes.
  • Mostre as informações finais de cada um.

Exemplo de saída esperada

O Pokémon Pikachu agora está no nível 2!

O Pokémon Pikachu agora está no nível 3!

O Pokémon Charmander agora está no nível 2!

Treinador Ash:

  • Pikachu (Elétrico) - Nível 3
  • Charmander (Fogo) - Nível 2

Dicas

  • Propriedades privadas só podem ser acessadas dentro da própria classe.
  • Se precisar mostrar ou alterar algo de fora, crie métodos públicos (getters, setters ou funções específicas).
  • Passar um objeto como parâmetro é como emprestar um brinquedo: o método vai poder mexer nele, mas você ainda é dono.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment