Dividindo um programa java em classes

254 2

O programa sobre arrays em Java, criado num artigo anterior, consiste essencialmente num único método. Nós podemos ter muitos benefícios dividindo o programa em classes. Mas que classes criaremos? A estrutura para o armazenamento de dados por si é um candidato á formar uma classe autoritária, e a parte do programa que usa esta estrutura de dados é outra. Dividindo o programa Java nestas duas classes, nós clarificamos a funcionalidade do programa, tornando ele fácil de desenhar e entender( e em programas reais, alterar e acrescentar).

No programa de arrays do artigo anterior, usamos um array como uma estrutura de armazenamento de dados, mas nós tratamos ele como um simples elemento da linguagem Java. Agora encapsularemos o array numa classe chamada MeuArray. Também criaremos métodos pelos quais objectos de outras classes Java(MinhaApp neste caso) poderão acessar o array. Estes métodos permitirão a comunicação entre a classe MeuArray e MinhaApp.

A nossa implementação de MeuArray não será completa, mas ela irá demonstrar a necessidade de uma melhor organização. Abaixo está uma implementação da classe MeuArray:

public class MeuArray {
    private double[] a; // referência para o array a
    public MeuArray(int tamanho){ // Construtor
        a = new double[tamanho];
    }

    // Colocando o elemento no array 
    public void setElem(int indice, double valor) {
        a[indice] = valor;
    }

    // Retorna o elemento do array 
    public double getElem(int indice){
        return a[indice];
    }
} // Fim da classe MeuArray

E a seguir a classe MinhaApp, que usará os métodos de MeuArray

public class MinhaApp {
    public static void main(String[] args) {
        MeuArray arr; // referência 
        arr = new MeuArray(100); // Criando um objecto java da classe MeuArray 
        int nElems = 0; // Número de itens atualmente no array. 
        int j; // Variável de controlo
        arr.setElem(0, 77); // Inserindo 10 elementos 
        arr.setElem(1, 99); 
        arr.setElem(2, 44); 
        arr.setElem(3, 55); 
        arr.setElem(4, 22); 
        arr.setElem(5, 88); 
        arr.setElem(6, 11); 
        arr.setElem(7, 00); 
        arr.setElem(8, 66); 
        arr.setElem(9, 33); 

        nElems = 10; // Agora temos 10 itens no array 

        //-------------------------------------------------------------
        for(j=0; j<nElems;j++){ 
            System.out.print(arr.getElem(j) + " "); 
            System.out.println("");
        }

        //-------------------------------------------------------------
        int chave = 26; 

        // Procurando por um item 
        for(j=0; j<nElems;j++){ 
            if(arr.getElem(j) == chave) // Encontrou? 
                break; //Então pare!
            if(j == nElems) // não!!! 
                System.out.println("Não foi possivel encontrar " + chave); 
            else // Sim!!! 
                System.out.println("Encontrado " + chave); 

        //-------------------------------------------------------------
        // Removendo o valor 55 
        for(j=0; j<nElems;j++){ 
            if(arr.getElem(j) == 55) 
                break;
            for(int k=j; k<nElems;K++){ 
                arr.setElem(k, arr.getElem(k+1) );
                nElems--; // Decrementando o tamanho 
            }
        }

        //-------------------------------------------------------------
        for(j=0; j<nElems;j++){
            System.out.print( arr.getElem(j) + " "); 
            System.out.println(""); 
        } 
    // Fim do método main() 
    } 
// Fim da classe MinhaApp
}

A saida deste programa é similar á do programa criado no artigo sobre Arrays em Java, com a diferença no facto de aqui procurarmos primeiro por um item não existente, o 26 antes de removermos o 55:


77 99 44 55 22 88 11 0 66 33

Não encontrado 26

77 99 44 22 88 11 0 66 33

Classes MeuArray e MinhaApp

No arquivo MeuArray.java, nós simplesmente introduzimos um array normal do Java na classe MeuArray. O array está isolado do resto do “mundo” Java, pois é privado e só pode ser acessado por métodos da classe MeuArray. Há três métodos na classe MeuArray: setElem() e getElem(), que insere e retorna dados do array, respectivamente, e um construtor, que cria um array vazio com o tamanho especificado.

Outra classe, MinhaApp, cria um objecto da classe MeuArray e usa este objecto para armazenar e manipular os dados. Pense na classe MeuArray como uma ferramenta e MinhaApp como um utilizador da ferramenta. Assim dividimos o programa de arrays criado num artigo anterior em duas classes com tarefas bem definidas. Este é um dos primeiros passos para a programação orientada á objectos.

A classe usada para armazenar os dados, como a classe MeuArray recém-criada, é muitas vezes chamado de container class. Tipicamente, uma container class não só armazena os dados, mas possui métodos para acessar os dados, e talvez, ordenar e efectuar outras acções complexas.

(Visited 29 times, 1 visits today)

Elisio Leonardo

Elisio Leonardo is an experienced Web Developer, Solutions Architect, Digital Marketing Expert, and content producer with a passion for technology, artificial intelligence, web development, and entertainment. With nearly 15 years of writing engaging content on technology and entertainment, particularly Comic Book Movies, Elisio has become a trusted source of information in the digital landscape.