Array de objectos Array de objectos Criação Exemplo:

Documentos relacionados
AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação

AULA TEÓRICA 4. Tema 5. Ficheiros. Ficheiro do tipo texto. Ficheiros de Objectos. Ø Classe File Ø Criação. Manipulação. Ø Classe StringTokenizer

Programação Orientada aos Objectos I

Aula teórica 11. Tema 11. Repetição. Ciclo while Ciclo do-while Ciclo for

Tema 7. Colecções AULA TEÓRICA 6. Listas: ArrayList, LinkedList, Vector Ø Criação Ø Manipulação

Aula teórica 14. Tema 12. Subprogramas (cont)

Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.)

Instituto Superior de Ciências e Tecnologia de Moçambique

AULA TEÓRICA 3. Tema 4. Excepções Ø Tratamento de excepções

AULA TEÓRICA 9. Tema 8. Herança (continuação) Ø Sobreposição de métodos. Ø Variáveis e métodos estáticos. Ø Hierarquia de classes.

Aula teórica 10 Tema 10. Selecção Instruções de selecção:

AULA TEÓRICA 5 Tema 3. Instruções básicas de entrada e saída (continuação)

AULA TEÓRICA 4. Tema 2. Introdução a programação em Java (Continuação) Tema 3. Instruções básicas de entrada e saída

Instituto Superior de Ciências e Tecnologia de Moçambique

AULA TEÓRICA 1 Tema 6. Algoritmos e Fluxogramas

Aula teórica 13. Tema 12. Subprogramas. Subprogramas em Java Chamada de métodos. Área de domínio das variáveis. Preparado por eng.

AULA TEÓRICA 2. Tema 1. Desenho de Algoritmos (continuação)

InputStream e OutputStream para ler/ escrever bytes e das classes abstractas Reader e Writer para ler /escrever caracteres (texto).

AULA TEÓRICA 3. Tema 2. Introdução a programação em Java (Continuação)

Introdução à Programação LP JAVA

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

PROGRAMAÇÃO JAVA. Parte 3

Aula Teórica 8. Preparado por eng.tatiana Kovalenko

Programação Orientada a Objetos

Reader e Writer para streams de caracteres (texto).

Como pôde verificar, a criação de um objecto do tipo File não cria o ficheiro em disco.

Reader e Writer para streams de caracteres (texto).

Vetores Unimensionais

Streams e Ficheiros I/O

Aula 11 POO 1 Coleções e Arquivos. Profa. Elaine Faria UFU

Programação e Algoritmos I 1 o semestre

AULA TEÓRICA 10 Tema 9. Introdução à programação. Desenho de Algoritmos

Entrada e Saída Exercício. Linguagem Java. Adenilso da Silva Simão 01/09/05

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:

double [] precoa = new double [1000]; // Preço com desconto para compras Avista

Notas de POO: interfaces, excepções e input/output

Vetores Unimensionais

modelagem do negócio (processos e objetos do negócio) modelagem de requisitos alocados ao software modelagem da solução de software

insfcanceof new public switch transient while byte continue extends for int null

Variáveis Compostas. Vanessa Braganholo

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Motivação. Java First-Tier: Aplicações. Entrada & Saída. Stream de Entrada. Stream de Saída. Pacote java.io. Leitura e Escrita de Streams

Orientação a Objetos e Java

Linguagem de Programação II Implementação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Strings e Arrays POO

Tratamento de Exceções

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior.

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Vetores Unimensionais

Introdução à Programação

Objetivo do programa: Implementação de um analisador de Logs do Servidor Web com base nos requisitos da unidade curricular de Estatística.

Linguagem de Programação II Implementação

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

No final deste curso, saberás criar programas através da linguagem de programação Java.

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

AULA 6 - ARRAYS. Array de 10 elementos

Transcrição:

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 Exemplo: Elabore um programa em Java composto, no mínimo, por 3 classes que permita gerir a informação sobre venda de revistas. A informação sobre: nome de revista, quantidade e preço unitário encontra-se num ficheiro do tipo texto Ler e visualizar para ecrã informação gravada. Pretende-se: ler informação do ficheiro e armazenar num array de objectos; calcular total global das vendas realizadas; visualizar os dados armazenados no array de objectos com totais calculados para cada revista. Aplicar a formatação em Mt onde é necessário; gravar informação sobre os nomes das revistas e respectivos totais num outro ficheiro do tipo texto; gravar informação armazenada no array de objectos num ficheiro de objectos. 1

import java.text.decimalformat; import java.io.*; public class Revista implements Serializable { private String nome; private int quant; private float preco; private float total; private DecimalFormat moeda; public Revista(String no, int qu, float pr) { nome = no; quant = qu; preco = pr; total = calctotal(); moeda = new DecimalFormat ("###,###.00 Mt"); private float calctotal(){ return quant*preco; public float gettotal() { return total; public String getnome() { return nome; public String tostring(){ return nome+"\t"+quant+" de preco "+ moeda.format(preco)+ "\ttotal="+ moeda.format(total); 2

import java.util.stringtokenizer; import java.io.*; public class ArrayRevistas { private Revista[] lista;private int cont; public ArrayRevistas() { lista = new Revista[100];cont=0; public void LerFichCriarArray() { StringTokenizer umacadeia; String umalinha="", nom, nomefich = "revistas.txt ;int qde; float pr; try { FileReader fr = new FileReader(nomeFich); BufferedReader fichin = new BufferedReader(fr); umalinha = fichin.readline(); while (umalinha!= null) { umacadeia = new StringTokenizer(umaLinha,";"); nom = umacadeia.nexttoken(); qde = Integer.parseInt(umaCadeia.nextToken()); pr = Float.parseFloat(umaCadeia.nextToken()); lista[cont] = new Revista(nom,qde,pr); cont++; umalinha = fichin.readline(); fichin.close(); catch (FileNotFoundException fn){ System.out.println(" Ficheiro nao encontrado!"); catch (NumberFormatException nn){ System.out.println(nn.getMessage()); 3 catch (IOException ex){ System.out.println(ex.getMessage());

public float calctotglobal() { float som = 0; for (int j = 0; j < cont; j++) som += lista[j].gettotal(); return som; public void gravarfichtxt(string nf) { try { FileWriter fw = new FileWriter(nf); BufferedWriter fichout = new BufferedWriter(fw); for (int k = 0; k < cont; k++) { fichout.write(lista[k].getnome()+ ; +lista[k].gettotal()); fichout.newline(); fichout.close(); catch (IOException xx) { System.out.println(xx.getMessage()); public void gravarfichobj(string nfobj) { try { FileOutputStream ff = new FileOutputStream (nfobj); ObjectOutputStream ss = new ObjectOutputStream(ff); ss.writeobject(lista); ss.close(); catch (IOException xx) { System.out.println(xx.getMessage()); 4

public void lerdadosdofichobj(string nomefobj) { try { FileInputStream ii = new FileInputStream (nomefobj); ObjectInputStream tt = new ObjectInputStream (ii); lista = (Revista[])tt.readObject(); tt.close(); catch (FileNotFoundException ff){ System.out.println("Ficheiro de obj "+nomefobj+" nao encontrado!"); catch (ClassNotFoundException cc){ System.out.println("Verifique a existencia da classe Revista!!!"); catch (IOException pp){ System.out.println("Problemas no leitura do ficheiro!"); public String tostring() { String x = ""; for (int a = 0; a < cont; a++) x += lista[a] + "\n"; //.tostring() opcional return x; 5

import java.text.decimalformat; import java.io.*; public class GerirRevistas { public static void main (String args[]) { ArrayRevistas arev= new ArrayRevistas(); DecimalFormat m = new DecimalFormat ("###,###.00 Mt"); arev.lerfichcriararray(); System.out.println("Dados do fich txt e armazenados no array: "); System.out.println(arev); System.out.println("Total =" + m.format(arev.calctotglobal())); arev.gravarfichtxt("out.txt"); arev.gravarfichobj("dadosobj.dat"); arev.lerdadosdofichobj("dadosobj.dat"); System.out.println("Dados do ficheiro do objectos: "); System.out.println(arev); Conteúdo do ficheiro do tipo texto "revistas.txt": Golo;20;200 Tempo;30;150.... 6

Ordenação de um array de objectos Exemplo: desenvolver um programa que leia os dados de um conjunto de estudantes (nome, e um conjunto de notas), calcule a sua média e ordene os estudantes por ordem decrescente das médias. public class Estudante { //Atributos private Validacoes vv; private String nome; private byte notas[]; private byte media; //Construtor da classe, promove a inicialização dos atributos public Estudante() { vv = new Validacoes(); nome = vv.validarstring((byte)5,(byte)25," nome: "); byte numnotas = vv.validarbyte((byte)0,(byte)5,"quantas notas? "); notas = introdnotas(numnotas); media = calcmedia(); 7

//Cria array Notas e preenche com notas do aluno private byte[] introdnotas(byte numn) { notas = new byte[numn]; for (int i = 0; i < numn; i++) { notas[i] = vv.validarbyte((byte)0,(byte)20, (i+1)+"-a nota: "); return notas; //devolve uma String composta pelas notas private String devolvenotas() { String visual=""; //de um estudante for (byte k = 0; k < notas.length; k++) visual += notas[k]+" "; return visual; //Método para cálculo da média de um estudante private byte calcmedia() { byte soma = 0; for (int z=0; z<notas.length; z++) soma += notas[z]; return (byte) Math.round(soma / notas.length); 8

public byte getmedia() { return media; public String tostring() { return nome+",notas: "+devolvenotas()+", Meida="+media+"\n"; =========================================== import java.io.*; public class Validacoes {...... =========================================== import java.io.*; public class Turma { Validacoes val; private Estudante[] lista; byte numest; public Turma() { val = new Validacoes(); numest = val.validarbyte((byte)3,(byte)60, qde de estud.:"); lista = new Estudante[numEst]; 9

public void criararrayest() { for (byte i = 0; i < numest; i++) { System.out.println("Dados do "+(i+1)+"-o estudante:"); lista[i] = new Estudante(); //criação de objecto e armazen. //no array de objectos public String tostring() { String v=""; for (byte k=0; k < lista.length; k++) v += lista[k] + "\n"; //ou lista[k].tostring() return v; public void ordenaturma() { Estudante aux; byte i_maior; for (byte i=0; i < lista.length-1;i++) { i_maior = localizamaior(i); aux = lista[i]; lista[i] = lista[i_maior]; lista[i_maior] = aux; 10

private byte localizamaior(byte inicio) { byte ind_maior = inicio; for (byte k = (byte)(inicio+1); k < lista.length ; k++) if (lista[k].getmedia() > lista[ind_maior].getmedia()) ind_maior = k; return ind_maior; =================================== import java.io.*; public class GereTurma { public static void main(string[] args) { Turma t = new Turma(); //cria um objecto da classe Turma t.criararrayest(); System.out.println("Lista de estudantes: "); System.out.println(t); //equivale a (t.tostring()); t.ordenaturma(); System.out.println("\nLista ordenada por media: "); System.out.println(t); 11

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. F. Mário Martins; Programação Orientada aos objectos em Java 2, FCA, 2000, John Lewis, William Loftus; Java Software Solutions: foundation of program design, 2nd edition, Addision-Wesley 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 12