Programação I
Aula 11
(Arrays de Objetos)
Prof. Gilberto Irajá Müller
Última atualização 27/5/2009
Arrays de Objetos
• Um array pode conter referências a um conjunto de
objetos.
Ex.:
Funcionario f[] = new Funcionario[3];
• Será criado um novo objeto array de nome f, cujos
elementos são variáveis objeto, ou seja, referências para
objetos do tipo Funcionario
Arrays de Objetos
• Para termos realmente algum funcionário apontado por
algum elemento do array, teremos de criar um objeto
funcionário e vinculá-lo a uma das variáveis objeto do
array.
Ex:
f[0] = new Funcionario(“Ruy Cabeção”, 4320.00, 1);
f[1] = new Funcionario(“Tcheco”, 5000.00, 2);
f[2] = new Funcionario (“Jonas", 1234.00, 0);
Arrays de Objetos
• O que teremos em memória?
Funcionario
nome: Ruy Cabeção
salario: 4320.0
numeroDeDependentes: 1
Funcionario
Funcionario
nome: Jonas
salario: 1234.0
numeroDeDependentes: 0
nome: Tcheco
salario: 5000.0
numeroDeDependentes: 2
Arrays de Objetos
• Array de objetos e herança – aplicação do
polimorfismo
Podemos utilizar arrays para armazenar objetos, tanto
da superclasse como da subclasse
Arrays de Objetos
• Array de objetos e herança – aplicação do
polimorfismo
A a[] = new A[3];
a[0] = new A();
a[1] = new B();
a[2] = new C();
a[0].m1(); ____________________________________
a[1].m1(); ____________________________________
a[2].m2(); ____________________________________
if(a[2] instanceof C){C c=(C) a[2]); c.m2();} ______________________
Arrays de Objetos
• Exercício 11.1. Utilizando o exercício de cálculo do volume do
Cilindro e do Cubo, crie uma classe teste que guarde 10 objetos em
um array. Para cada objeto, sorteie um número e verifique se este é
par ou ímpar. Caso o número seja par, instancie um objeto do tipo
Cubo, caso contrário, instancie um objeto do tipo Cilindro. Ao final,
exiba o volume dos 10 objetos colocando qual foi o objeto
instanciado: Cubo ou um Cilindro.
• VolumeCilindro
• public int getVolume();
• Cubo
• public Cubo(int a);
• Cilindro
• public Cilindro(int r, int h);
a
Cubo
a
h
Cilindro
r
a
Cálculo do volume: a3
Cálculo do volume: .r2.h
Hot Topic
• Tamanho Físico e Tamanho Lógico de um Array
Um objeto array tem um tamanho físico que é atribuído
no momento da sua criação. Pode ser obtido através da
variável length.
Ex.: int[] a = new int[3];
System.out.println(a.length); // retornará 3
Contudo, ao não utilizarmos todos os índices do array,
precisaremos saber quais quantos “espaços” temos
ocupado. Para isso, utilizamos uma variável do tipo
inteiro que é incrementada a cada inclusão de um
elemento no array!
Hot Topic
Ex.:
public class Aluno{
private double nota[]; //atributo do tipo array, de nome nota
private int quantidadeDeNotas; //este é o tamanho lógico
public Aluno (int maxNotas){
nota = new double[maxNotas];
quantidadeDeNotas = 0;
}
public void insereNota(double n){
if (quantidadeDeNotas < nota.length)
nota[quantidadeDeNotas++] = n;
}
public void exibeNotas(){
for (int i = 0; i < quantidadeDeNotas; i++)
System.out.println(nota[i]);
}
}
Métodos
• Referências bibliográficas
• http://inf.unisinos.br/~anibal
Download

Nota de Aula