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.




:max_bytes(150000):strip_icc()/device-manager-code-39-error-cannot-load-the-device-driver-59a045040d327a001007b10c.png)



Comentários Recentes