Exercício: Encapsulamento com as classes Mapa e Jogo
Objetivo
Implementar o encapsulamento nas classes Mapa, Treinador, e Jogo para controlar o acesso aos atributos e permitir que os métodos façam as operações de forma segura.
Descrição
Neste exercício você irá criar duas novas classes Mapa e Jogo. Além disso, será necessário modificar a classe Treinador. A classe Treinador deve obdecer a seguinte especificação:
classDiagram
class Mapa {
- char[][] layout
- final int largura
- final int altura
+ Mapa(int largura, int altura)
- inicializarMapa()
+ exibirMapa(int x, int y)
+ posicaoValida(int x, int y) boolean
}
class Treinador {
- String nome
- int x
- int y
- Pokemon[] pokemons
+ Treinador(String nome)
+ getNome() String
+ getX() int
+ getY() int
+ setPosicao(int x, int y)
+mover(String direcao)
+listar()
+capturar(Pokemon p) boolean
}
class Jogo {
- Mapa mapa
- Treinador treinador
+ Jogo(String nomeTreinador)
+ iniciar()
}
class Pokemon {
+ nome String
+ nivel int
+ Pokemon(String nome)
+ getNome() String
+ getNivel() String
}
%% Relações
Jogo "1" --> "1" Mapa : usa
Jogo "1" --> "1" Treinador : controla
Treinador "1" --> "1..6" Pokemon: treina
Mapa:
- Atributo:
- layout (matriz bidimensional) deve ser privado.
- Métodos:
- O método construtor deve ser utilizado para determinar a dimensão do mapa
- Crie um método public chamado exibirMapa que mostre o mapa no console, destacando a posição do treinador.
- Como parâmetro, o método deve receber a possição do treinador
- Este método deve ser usado pela classe Jogo para definir onde o treinador está, mas o layout em si deve ser inacessível.
- Crie o método posicaoValida que será reponsável por determinar se dada posição (x, y) é uma posição válida no mapa.
Treinador:
- Atributos:
- Todos os atributos (nome, x, y) devem ser privados.
- Métodos:
- Crie métodos getNome, getX, getY para obter o valor desses atributos.
- Crie métodos setX e setY para que a posição do treinador seja atualizada
Jogo:
- Essa classe controla a interação entre Mapa e Treinador.
- Use os métodos de Mapa e Treinador para atualizar a posição do treinador e exibir o mapa
- A classe Jogo deve ser a responsável por realizar a leitura do dados enviados via entrada