Tipo[]
Precisamente, esta notação denota a classe cujos objetos
são arrays, de qualquer tamanho, contendo elementos do tipo
Tipo. As operações de uma classe array são
pré-definidas, não sendo possível a inclusão de novas
operações.Como exemplo, considere a definição da classe Banco contendo o atributo contas, o qual é associado a uma classe de arrays de contas bancárias:
class Banco {
private int indice = 0;
private Conta[] contas;
}
Como nesta classe nenhum inicializador foi especificado, um
inicializador default é automaticamente introduzido por Java.
Para uma classe Classe, este inicializador é
implicitamente declarado como
Classe ();
e quando invocado inicializa os atributos de um objeto da classe com
valores default pré-definidos, ou com valores especificados na
definição do atributo (como na definição do
atributo indice da classe Banco),
se existirem. Em particular, atributos do tipo int são
inicializados por default com 0, enquanto atributos de tipo
classe são inicializados por default com a constante null.
Esta constante corresponde a referência nula; isto é, uma
referência que não aponta para nenhum objeto.Note que os elementos de um tipo Tipo[] podem ter qualquer tamanho, mas na hora de criação de um elemento específico temos que especificar o tamanho do mesmo. De uma forma geral, a criação de um array com capacidade para armazenar n elementos de um tipo Tipo é especificada pela seguinte expressão:
new Tipo[n]
Por exemplo, um array de contas pode ser criado como descrito no
inicializador a seguir:
Banco (byte tamanho) {
contas = new Conta[tamanho];
indice = 0;
}
onde o número de elementos que podem ser armazenados no array
é dado como argumento para o construtor de bancos.
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;
Conta result;
while ((! achou) & (i < indice)) {
if (contas[i].numConta() == num)
achou = true;
else
i = i + 1;
}
if (achou)
result = contas[i];
else
result = null;
return result;
}
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].numConta()
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 e variáveis locais 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) |