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

This site uses Just the Docs, a documentation theme for Jekyll.