Comentários

0%

FOCO NO MERCADO DE TRABALHO

ESTRUTURAS DE DECISÃO, CONTROLE E REPETIÇÃO

Jesimar da Silva Arantes

Modelando a sala, a caixa e a orientação do robô

Criação de classe para modelar a sala em que o robô vai operar, a entidade sala e o atributo orientação para fazer o robô deslocar.

Fonte: Shutterstock.

Deseja ouvir este material?

Áudio disponível no material digital.

Sem medo de errar

A startup em que você trabalha lhe passou algumas tarefas, que foram especificadas assim:

Como forma de iniciar o trabalho, você decidiu revisar o Código 2.7 para adicionar os recursos que seu chefe deseja. Inicialmente, você optou por criar um atributo chamado orientação dentro da classe Robo. Você teve a ideia de declará-lo do tipo inteiro e, inicialmente, quis que o robô tivesse somente quatro orientações: FRENTE, ATRAS, ESQUERDA e DIREITA. 

O próximo passo foi modelar a classe caixa. Dessa forma, você pensou nos seguintes atributos: nome do item da caixa, quantidade de itens da caixa, posição no eixo x, posição no eixo y, peso, comprimento, largura e altura. Nesse momento, você decidiu criar essa classe apenas com esses atributos, sem nenhum método.

Em seguida, você optou por criar uma classe que representasse a sala, então, chamou essa classe de Mundo2D. Após isso, pensou sobre os atributos que essa classe deveria possuir e decidiu que ela teria apenas os atributos dimensão x e dimensão y.

Por fim, você modificou o programa principal na classe App e colocou dois laços do tipo for aninhados, ou seja, um laço dentro do outro. O laço mais externo controlava a direção do movimento e o laço mais interno controlava quanto de movimento seria executado em cada direção. Por fim, para selecionar a direção seguida pelo robô, você utilizou o comando switch-case

Após esses passos, o seu programa ficou pronto, com todas as alterações do seu chefe e parecido com o Código 2.9. Repare que algumas partes foram omitidas; o código completo pode ser acessado no GitHub do autor.

Código 2.9 | Modelagem das classes Robo, Caixa e Mundo2D
public class Robo {
    ...
    int orientacao;
    static final int FRENTE = 0;
    static final int ATRAS = 1;
    static final int ESQUERDA = 2;
    static final int DIREITA = 3;
    ...
    public void setOrientacao(char tecla){
        if (tecla == 'w') {
            this.orientacao = FRENTE;
        }else if (tecla == 's') {
            this.orientacao = ATRAS;
        }else if (tecla == 'a') {
            this.orientacao = ESQUERDA;
        }else if (tecla == 'd') {
            this.orientacao = DIREITA;
        }
    }
}
public class Caixa {
    String nomeItem;
    int qtdItem;
    int posX;
    int posY;
    float peso;
    final float comprimento;
    final float largura;
    final float altura;
    public Caixa(String nomeItem, int qtdItem, int posX, int posY,
            float peso, float comprimento, float largura, 
            float altura) {
        this.nomeItem = nomeItem;
        this.qtdItem = qtdItem;
        this.posX = posX;
        this.posY = posY;
        this.peso = peso;
        this.comprimento = comprimento;
        this.largura = largura;
        this.altura = altura;
    }
}
public class Mundo2D {
    final int DIM_X;
    final int DIM_Y;
    public Mundo2D(int dimX, int dimY) {
        this.DIM_X = dimX;
        this.DIM_Y = dimY;
    }
}
public class App {
    public static void main(String[] args) {
        Robo robo = new Robo();
        for (int d = 0; d < 4; d++) {
            for (int j = 1; j <= 10; j++) {
                robo.printPos();
                switch (d) {
                    case 0: //move ao longo do eixo x para frente
                        robo.move(50 + j * 4, 50);
                        break;
                    case 1: //move ao longo do eixo y para cima
                        robo.move(90, 50 + j * 4);
                        break;
                    case 2: //move ao longo do eixo x para trás
                        robo.move(90 - j * 4, 90);
                        break;
                    case 3: //move ao longo do eixo y para baixo
                        robo.move(50, 90 - j * 4);
                        break;
                }
            }
        }
        robo.printPos();
    }
} 
Fonte: elaborado pelo autor.

Por fim, você decidiu criar um projeto no GitHub com o seguinte nome SimuladorRobo, em que o código-fonte desenvolvido ficará disponível. Para tanto, a fim de submeter o projeto no GitHub, você precisará utilizar o git, que já deve estar instalado em seu computador. Existem duas formas principais de se fazer envio, uma delas se dá por meio de alguma ferramenta gráfica e a outra por meio de linha de comando. Caso você decida fazer isso via linha de comando, você provavelmente precisará dos seguintes comandos na primeira vez: git clone, git init, git add, git status, git commit, git remote add origin e git push -u origin master. Após criado o projeto e submetido, as próximas vezes serão mais simples e, em geral, você utilizará os seguintes comandos: git add, git status, git commit e git push.

Bons estudos!

AVALIE ESTE MATERIAL

OBRIGADO PELO SEU FEEDBACK!