Exercício de Programação Orientada a Objetos

Eu to com muita dificuldade com fazer esse código, alguém pode me ajudar por favor?

  1. Implemente o problema do robô andando em uma sala, conforme o diagrama
    abaixo:O método definirAmbiente deve ler a quantidade de linhas e colunas da sala
    (tamanho do ambiente) e inicializar o ambiente. O método iniciarRobo deve ler a
    posição inicial do robô e inicializar o objeto de Robo. Já o método menu deve mostrar
    as seguintes opções:
    1 - Andar para Frente
    2 - Andar para Trás
    3 - Parar
    4 - Virar para Direita
    5 - Virar para Esquerda
    6 - Sair
    Os métodos da classe Robo tem as seguintes funcionalidades:
    • andarFrente >> faz com que o robô ande 1 linha
    • andarTras >> faz com que o robô volte 1 linha
    • parar >> o robô não se move
    • virarDireita >> faz com que o robô ande 1 coluna
    • virarEsquerda >> faz com que o robô volte 1 coluna
    O ato de andar uma linha ou uma coluna, modifica as variáveis de posição do robô
    (linha e coluna).
    Você deve verificar se é possível o comando pedido, por exemplo, se o robô estiver
    na linha 0, ele não pode andar para trás, porque iria para a linha -1 que não existe!

diagrama

Eu começaria criando a classe Ambiente, depois a classe Robo e finalmente a classe TestarRobo.

Nesse exercicio não se podem criar mais classes sem ser essas?

O ambiente pode ser uma array bidimensional, com as variáveis x e y como dimensões. Acho q colocando o movimento dentro de um bloco try-catch quando der excessão de index pode mostrar a mensagem de movimento inválido. E cada movimento mexe no index pra determinar a nova posição. Claro que são apenas umas ideias considerando que será uma console app. Espero ter ajudado um pouco.