Comentários

0%

FOCO NO MERCADO DE TRABALHO

REUTILIZAÇÃO DE CLASSES

Jesimar da Silva Arantes

Organizando o projeto, utilizando a estrutura de pacotes do Java

Criação de modificadores de acessos adequados aos atributos e métodos, e de métodos getters e setters para encapsular os atributos, utilização de herança na aplicação, além de sobrescrever os métodos toString e equal.

Fonte: Shutterstock

Deseja ouvir este material?

Áudio disponível no material digital.

Sem medo de errar

A empresa em que você trabalha lhe passou, novamente, mais algumas tarefas para desenvolver. As tarefas listadas abaixo foram especificadas para você:

De forma a iniciar o trabalho, você decidiu revisar o Código 2.9 para adicionar os recursos mencionados. Inicialmente, você criou dois pacotes: simulator.code (aqui, ficarão as classes Robo, Caixa e Mundo2D) e simulador.main (em que ficará a classe App). Após isso, criou os devidos modificadores de acesso para os atributos, bem como os métodos getters e setters para os atributos, de forma a garantir um melhor encapsulamento, e uma classe chamada CaixaIdeia, que será uma superclasse de Caixa. 

Por fim, então, você decidiu sobrescrever os métodos toString (na classe Caixa e Robo) e equals (na classe Robo), finalizando o seu programa com todas as alterações sugeridas pelo seu chefe. 

O seu programa ficou parecido com o Código 2.18. Repare que algumas poucas partes foram omitidas. O código completo pode ser acessado no GitHub do autor.

Código 2.18 | Modelagem das classes Robo, CaixaIdeia, Caixa e Mundo2D
public class Robo {
    private float posicaoX;
    private float posicaoY;
    private int orientacao;
    private final String nome;
    private final float peso;
    private final float velocidadeMax = 5;
    private final float pesoCargaMax = 20;
    private final String tipoTracao = "esteira";
    public static final int FRENTE = 0;
    public static final int ATRAS = 1;
    public static final int ESQUERDA = 2;
    public static final int DIREITA = 3;
    ...
    public float getPosicaoX() {
        return posicaoX;
    }
    public float getPosicaoY() {
        return posicaoY;
    }
    public int getOrientacao() {
        return orientacao;
    }
    @Override
    public String toString() {
        return "Robo{" + "posicaoX=" + posicaoX + ", posicaoY="
               + posicaoY + ", orientacao=" + orientacao + '}';
    }
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Robo){
            Robo robo = (Robo)obj;
            return this.nome.equals(robo.nome);
        } else {
            return false;
        }
    }
}
public class CaixaIdeia {
    protected int posX;
    protected int posY;
    protected float peso;
    protected final float comprimento;
    protected final float largura;
    protected final float altura;
    public CaixaIdeia(int posX, int posY, float peso, 
            float comprimento, float largura, float altura) {
        this.posX = posX;
        this.posY = posY;
        this.peso = peso;
        this.comprimento = comprimento;
        this.largura = largura;
        this.altura = altura;
    }
    ... //métodos gets e sets ocultos para posX, posY e peso.
}
public class Caixa extends CaixaIdeia {
    public String nomeItem;
    public int qtdItem;
    public Caixa(String nomeItem, int qtdItem, int posX, 
                 int posY, float peso, float comprimento, 
                 float largura, float altura) {
        super(posX, posY, peso, comprimento, largura, altura);
        this.nomeItem = nomeItem;
        this.qtdItem = qtdItem;
    }
    @Override
    public String toString() {
        return "Caixa{" + "nomeItem=" + nomeItem + 
               ", qtdItem=" + qtdItem + '}';
    }
}
public class Mundo2D {
    public final int DIM_X;
    public final int DIM_Y;
    ...
} 
Fonte: elaborado pelo autor.

Após todas essas modificações, você continuou a utilizar o GitHub, conforme sugerido. Inicialmente, você estava utilizando o repositório de código via linha comando, porém, seguindo a sugestão de utilizar alguma ferramenta para facilitar o processo de versionamento, entrou no site do git e viu alguns dos principais clientes GUI (clientes com interface gráfica) para acessar o GitHub, que são: Sourcetree, disponível para Windows e MacOS; TortoiseGit, disponível apenas para Windows; GitKraken, sistema multiplataforma; e GitAhead, que também é um sistema multiplataforma. Caso tenha interesse, escolha e instale uma dessas ferramentas. Como dica, há diversos vídeos tutoriais na internet ensinando-nos como utilizar essas ferramentas.

Bons estudos!

AVALIE ESTE MATERIAL

OBRIGADO PELO SEU FEEDBACK!