Anda di halaman 1dari 7

Aula teórica

TEMA 4. (continuação) Array de Objectos

Criação de um array de objectos


Divisão de classes

Preparado por eng.Tatiana Kovalenko


Array de objectos
Nos exemplos anteriores array armazenava dados de tipos primitivos. Array de
objectos é um array cujos elementos são objectos ou, mais correctamente, referências
para objectos.
Característica importante de array de objectos: criação de array e criação de objectos,
que serão armazenados no array, são duas coisas separadas.

Criação de um array de Objectos


Exemplo:
Elabore um programa em Java composto, no mínimo, por 3 classes que permita gerir a
informação sobre requisição de livros numa biblioteca. A informação sobre: código de
livro, data de levantamento (entre o dia 1 a dia 9 do mês), data de devolução, preço
unitário deve ser lida do teclado.
Pretende-se:
 ler informação sobre cada livro e armazenar num array de objectos;
 Aplica-se a multa de 1% do preço do livro em caso o livro for devolvido depois de 7
dias, 2% - depois de 14 dias e 3%- depois de 21 dia.
 calcular o preço médio de todos os livros processados;
 visualizar os dados armazenados no array de objectos com valores calculados para
cada livro;
2
import javax.swing.JOptionPane;
public class Livro
{ private int code;
private int dataLev,dataDev;
private int pLivro;

public Livro()
{ code = validarInt(111,999,"Introduza o código do livro(111-999): ");
dataLev = validarInt(1,9,"Introduza a data de levantamento do livro(1-
9): ");
dataDev = validarInt(dataLev,31,"Introduza a data de devolucao do
livro("+dataLev+"-31”): ");
pLivro = validarInt(100,3000,"Introduza o preco do livro(500-3000):
");;
}

private int validarInt(int x,int y,String s)


{ int aux;
do
{ aux = Integer.parseInt(JOptionPane.showInputDialog(s));
if (aux < x || aux >y)
JOptionPane.showMessageDialog(null,"Valor invalido! Tente de
novo");
} while (aux < x || aux >y);
return aux;
}
3
public int getDatLev() { return dataLev; }
public int getDatDev() { return dataDev; }
public int getPLivro() { return pLivro; }

public String toString()


{ return code+"\t"+pLivro+"\t"+dataLev+"\t"+dataDev; }
}

import javax.swing.JOptionPane;
public class LivrosArray
{ private Livro[] liv;
private int cont;
private double soma;

public LivrosArray()
{ liv = new Livro [100];
cont=0;
soma=0;
}

4
public void lerDadosArmazenarArray()
{ String resposta;
do
{ JOptionPane.showMessageDialog(null,"Int dados do "+(cont+1)+”livro: ");
liv [cont] = new Livro();
cont++;
resposta = JOptionPane.showInputDialog("Pretende continuar (S/N)? ");
} while (resposta.equalsIgnoreCase("s"));
}

private double calcPenMt(int i)


{ double pen_mt=0;

if(liv[i].getDatDev()-liv[i].getDatLev()>21)
pen_mt=liv[i].getPLivro()*3/100;
else
if (liv[i].getDatDev()-liv[i].getDatLev()>14)
pen_mt=liv[i].getPLivro()*2/100;
else
if (liv[i].getDatDev()-liv[i].getDatLev()>7)
pen_mt=liv[i].getPLivro()*1/100;
else
pen_mt = 0;
return Math.round(pen_mt);
}

5
private double calcPMed()
{ for(int i=0;i<cont;i++)
{ soma+=liv[i].getPLivro(); }
return soma/cont;
}

//Método que prepara uma visualização dos dados calculados


public String toString()
{ String v="";
for(int i=0;i<cont;i++)
{ v+=liv[i].toString()+",dias de uso= "+
(liv[i].getDatDev()-liv[i].getDatLev())+",val de multa= "+
calcPenMt(i)+"Mt"+"\n";
}
v+= "O preço médio dos livros é de "+Math.round(calcPMed())+”MT\n";
return v;
}
}

import javax.swing.JOptionPane;
public class Executavel
{ public static void main(String args[])
{ LivrosArray list = new LivrosArray();
list.lerDadosArmazenarArray();
JOptionPane.showMessageDialog(null,list.toString());
} 6
}
Referência bibliográfica:
António José Mendes; Maria José Marcelino.
“Fundamentos de programação em Java 2”. FCA. 2002.

Elliot Koffman; Ursula Wolz.


“Problem Solving with Java”. 1999.
John R. Hubbard.
“Theory and problems of programming with Java”. Schaum’s Outline series. McGraw-Hill.
H. Deitel; P. Deitel.
“Java, como programar”. 4 edição. 2003. Bookman.
Rui Rossi dos Santos.
“Programando em Java 2– Teoria e aplicações”. Axcel Books. 2004

Anda mungkin juga menyukai