Académique Documents
Professionnel Documents
Culture Documents
CAPTULO 5
Um pouco de arrays
"O homem esquecer antes a morte do pai que a perda da propriedade"
Maquiavel
Ao trmino desse captulo, voc ser capaz de:
declarar e instanciar arrays;
popular e percorrer arrays.
5.1 - O PROBLEMA
Dentro de um bloco, podemos declarar diversas variveis e us-las:
int idade1;
int idade2;
int idade3;
int idade4;
1/12
19/09/13
O que fizemos foi criar uma array de int de 10 posies e atribuir o endereo no
qual ela foi criada. Podemos ainda acessar as posies do array:
idades[5] = 10;
2/12
19/09/13
Uma array de tipos primitivos guarda valores, uma array de objetos guarda
referncias.
www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/#5-1-o-problema
3/12
19/09/13
At onde o fordeve ir? Toda array em Java tem um atributo que se chama
length, e voc pode acess-lo para saber o tamanho do array ao qual voc est se
referenciando naquele momento:
void imprimeArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
4/12
19/09/13
5/12
19/09/13
Voc deve inserir o Funcionarioem uma posio da array que esteja livre. Existem
vrias maneiras para voc fazer isso: guardar um contador para indicar qual a
prxima posio vazia ou procurar por uma posio vazia toda vez. O que seria
mais interessante?
importante reparar que o mtodo adiciona no recebe nome, rg, salrio, etc. Essa
seria uma maneira nem um pouco estruturada, muito menos orientada a objetos de
se trabalhar. Voc antes cria um Funcionarioe j passa a referncia dele, que
dentro do objeto possui rg, salrio, etc.
3. Crie uma classe TestaEmpresaque possuir um mtodo main. Dentro dele crie
algumas instncias de Funcionarioe passe para a empresa pelo mtodo
adiciona. Repare que antes voc vai precisar criar a array, pois inicialmente o
atributo empregadosda classe Empresano referencia lugar nenhum (seu valor
null):
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
// ....
6/12
19/09/13
f2.salario = 1700;
empresa.adiciona(f2);
Voc pode criar esses funcionrios dentro de um loop e dar a cada um deles valores
diferentes de salrios:
for (int i = 0; i < 5; i++) {
Funcionario f = new Funcionario();
f.salario = 1000 + i * 100;
empresa.adiciona(f);
}
Cuidado ao preencher esse mtodo: alguns ndices do seu array podem no conter
referncia para um Funcionarioconstrudo, isto , ainda se referirem para null.
Se preferir, use o fornovo do java 5.0.
A, atravs do seu main, depois de adicionar alguns funcionrios, basta fazer:
empresa.mostraEmpregados();
7/12
19/09/13
Voc vai precisar fazer um forna sua array e verificar se a referncia passada
como argumento se encontra dentro da array. Evite ao mximo usar nmeros
hard-coded, isto , use o .lengthou o atributo livre.
7. (Opcional) Caso a array j esteja cheia no momento de adicionar um outro
funcionrio, criar uma nova maior e copiar os valores. Isto , fazer a realocao j
que java no tem isso: uma array nasce e morre com o mesmo length.
www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/#5-1-o-problema
8/12
19/09/13
Uma array bidimensional no precisa ser retangular, isto , cada linha pode ter
um nmero diferente de colunas. Como? Porque?
E nossa classe:
class Teste {
public static void main (String[] args) {
for(String argumento: args) {
System.out.println(argumento);
}
}
}
www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/#5-1-o-problema
9/12
19/09/13
Isso imprimir:
argumento1
outro
maisoutro
5.7 - DESAFIOS
1. No captulo anterior, voc deve ter reparado que a verso recursiva para o
problema de Fibonacci lenta porque toda hora estamos recalculando valores. Faa
com que a verso recursiva seja to boa quanto a verso iterativa. (Dica: use arrays
para isso)
www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/#5-1-o-problema
10/12
19/09/13
CAPTULO ANTERIOR:
Blog Caelum
Cursos Online
Newsletter
Casa do Cdigo
www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/#5-1-o-problema
11/12
19/09/13
www.caelum.com.br/apostila-java-orientacao-objetos/um-pouco-de-arrays/#5-1-o-problema
12/12