Por serem objetos especiais, as operações associadas a arrays são representadas em Java com a notação usual de arrays em linguagens imperativas. Por exemplo, considere o método que cadastra uma conta em um banco:
void cadastro(Conta c) { contas[indice] = c; indice = indice + 1; }Este método ilustra como o indice-ésimo componente do array pode ser alterado, enquanto o método a seguir ilustra como obter o i-ésimo componente do array:
Conta procura(long num) { // Comentários de uma linha são introduzidos assim... // Variáveis locais ao método. int i = 0; boolean achou = false; while ((! achou) & (i < indice)) { if (contas[i].num_conta() == num) achou = true; else i = i + 1; } if (achou == true) return contas[i]; else return null; }onde a constante null corresponde a referência nula; isto é, uma referência que não aponta para nenhum objeto.
Este método retorna a conta de número num cadastrada no banco responsável pela execução do método. Note que a expressão
contas[i].num_conta()denota o envio de uma mensagem para o i-ésimo componente de contas requisitando a execução do método num_conta(), ou seja, pedindo o número da conta correspondente.
Note também que assim como atributos de tipo classe, componentes de array, argumentos e resultados de tipo classe também denotam referências para objetos, ao invés de objetos propriamente. No entanto, isto é normalmente implícito em Java; só nota-se que trabalhamos com referências quando a constante null é usada explicitamente.
Paulo Borba (phmb@di.ufpe.br) |