Comentários
Criação de construtores para classe robô, definição de atributos em constantes, sobrecarga de método e criação de uma nova classe para a função main.
Fonte: Shutterstock.
Deseja ouvir este material?
Áudio disponível no material digital.
A startup em que você trabalha lhe passou a tarefa de melhorar a modelagem da classe robô incorporando a ela novos recursos. Assim, o seu chefe, após revisar o seu código, listou as seguintes tarefas:
Após olhar com calma todas as sugestões de seu chefe, você percebeu que a primeira coisa que devia fazer era pesquisar qual o IDE que melhor lhe atenderia. Para isso, você decidiu instalar os principais (Eclipse, Netbeans e IntelliJ IDEA), e após alguns testes, escolheu um.
Em seguida, você decidiu revisar o Código 1.4 para iniciar as modificações solicitadas. Inicialmente, você analisou com calma todos os atributos que seu robô tinha, como nome, peso, velocidadeMax, pesoCargaMax, tipoTracao, posicaoX e posicaoY, e percebeu que os atributos nome, peso, velocidade máxima, peso da carga máxima e tipo de tração não se alteravam para um mesmo robô, dessa forma, decidiu declará-los como constantes, utilizando a palavra reservada final.
Posteriormente, você analisou a classe Robô e viu que ela tinha apenas o construtor padrão (implícito), então, criou quatro construtores com as seguintes assinaturas: public Robo(), public Robo(String nome), public Robo(String nome, float peso) e public Robo(String nome, float peso, float posX, float posY).
Após isso, você se deparou com o problema de sobrecarregar o método move. Após pensar bastante, percebeu que esse problema parecia bem difícil no contexto, logo, criou apenas a seguinte assinatura: public void move(float pos), em que o robô se moveria apenas para frente ou para trás, conforme o valor passado como argumento.
Por fim, você decidiu retirar da classe Robo a função main. Para isso, criou uma nova classe chamada App.java, em que colocou a função main. Após esses passos, o seu programa ficou pronto, com todas as alterações do seu chefe, e parecido com o Código 2.7.
public class App {
public static void main(String[] args) {
Robo objRobo = new Robo();
objRobo.move(60, 50);
objRobo.move(55);
}
}
public class Robo {
float posicaoX;
float posicaoY;
final String nome;
final float peso;
final float velocidadeMax = 5;
final float pesoCargaMax = 20;
final String tipoTracao = "esteira";
...
public Robo(String nome, float peso){
this.nome = nome;
this.peso = peso;
this.posicaoX = 50;
this.posicaoY = 50;
}
public Robo(String nome, float peso, float posX, float posY){
this.nome = nome;
this.peso = peso;
this.posicaoX = posX;
this.posicaoY = posY;
}
public void move(float pos){
this.posicaoY = pos;
}
public void move(float posX, float posY){
this.posicaoX = posX;
this.posicaoY = posY;
}
}
Diversas partes foram omitidas, e o código completo pode ser acessado no GitHub do autor.