Comentários
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.
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.
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();
}
}
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.