universidade católica de angola prática de laboratório fundamentos de programação ii frei...
TRANSCRIPT
![Page 1: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/1.jpg)
Universidade Católica de Angola
Prática de laboratórioFundamentos de Programação II
Frei Joaquim José Hangalo
![Page 2: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/2.jpg)
Exemplo simples de trabalho com array de objectos
O exemplo apresentado foi retirado Do livro de Alcione de Paiva Oliveira e Vinícius Valente Maciel
JAVA NA PRÁTICA, Volume I, UNIVERSIDADE FEDERAL DE VIÇOSA
![Page 3: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/3.jpg)
![Page 4: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/4.jpg)
• Conforme o diagrama os objectos da classe Pessoa armazenarão os dados de uma pessoa. A classe fornece os métodos para acesso a estes dados.
![Page 5: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/5.jpg)
• O objecto da classe PessoaDAO é composto por vários dados de pessoa.
• A classe PessoaDAO possui os métodos necessários para a inserção e recuperação de dados.
• O método inserir(), trata de inserir uma pessoa na lista de pessoas, o método listarPessoas(), retorna uma lista contendo todos os objectos da classe Pessoa e o método buscarPessoaPeloNome() retorna um objecto da classe Pessoa em função do nome especificado.
![Page 6: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/6.jpg)
• A classe Agenda é responsável por fornecer os método que implementam a interface com o utilizador. Ela foi criada por questões de projecto, uma vez que é importante manter separado o código das interfaces do sistema.
![Page 7: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/7.jpg)
Classe Pessoa.java
public class Pessoa { private String nome; private String telefone; private String endereco;
public Pessoa() { }…}
sets e gets omitidos
![Page 8: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/8.jpg)
Classe PessoaDAO.javapublic class PessoaDAO{ Pessoa pessoas[];
public PessoaDAO() { pessoas=null; } // Métodos public void inserir (Pessoa pessoa){ if(pessoas == null) pessoas = new Pessoa[1]; else aumentaCapacidade(); pessoas[pessoas.length-1]=pessoa; }…
![Page 9: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/9.jpg)
// Consultar public Pessoa buscaPessoaPeloNome (String nome){ Pessoa aux = null; for(int i =0; i<pessoas.length; i++) if(pessoas[i].getNome().equals(nome)) aux=pessoas[i]; return aux; }
![Page 10: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/10.jpg)
//listar public Pessoa[] listaPessoas(){ return pessoas; } // aumenta capacidade private void aumentaCapacidade() { Pessoa[] aux = new Pessoa[pessoas.length+1]; for(int i=0; i<pessoas.length; i++) aux[i]= pessoas[i]; pessoas=aux; } }
![Page 11: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/11.jpg)
O método aumentaCapacidade(), cria um novo array maior em uma unidade que o anterior. Esta não é uma solução muito eficiente. O melhor seria incrementar o array em várias unidades, de modo que o redimensionamento seria necessário em intervalos menores. Entretanto, o código seria bem mais complexo.
![Page 12: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/12.jpg)
O método buscaPessoaPeloNome() retorna um objecto com um dado nome igual ao passado ao método. Se não existir tal objecto é retornado null.
Já o método listaPessoas() retorna uma referencia ao array de objectos do tipo Pessoa.
![Page 13: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/13.jpg)
Classe AgenaIntimport java.io.*;
public class Agenda {
PessoaDAO pessoaDAO; BufferedReader in;
public Agenda() {
pessoaDAO = new PessoaDAO(); in = new BufferedReader(new InputStreamReader(System.in)); }…
![Page 14: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/14.jpg)
// Exibir lista public void mostraPessoas() { Pessoa pessoa[] = pessoaDAO.listaPessoas(); for (int i = 0; i < pessoa.length; i++) { System.out.println("\nNome:\t" + pessoa[i].getNome()
+ "\nTelefone:\t" + pessoa[i].getTelefone() + "\nEndereco:\t" + pessoa[i].getEndereco() + "\n");
}
}
![Page 15: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/15.jpg)
// Exibir Pessoa public void mostraDadosDaPessoa() { String nome = null; try {
System.out.println("Escreva o nome da pessoa que procura"); nome = in.readLine(); if (nome.length() < 1) { System.exit(-1); } } catch (IOException e) { System.out.println(e.getMessage()); System.exit(-1); }
Pessoa pessoa = pessoaDAO.buscaPessoaPeloNome(nome); if (pessoa != null) { System.out.println("\nNOme:\t" + pessoa.getNome() + "\nTelefone:\t" + pessoa.getTelefone() + "\
nEndereco:\t" + pessoa.getEndereco());
}
}
![Page 16: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/16.jpg)
//Obter dados da pessoa public void obterDadosDaPessoa() { String nome; String telefone; String endereco;
try { System.out.println("Escreva o nome"); nome = in.readLine(); if (nome.length() < 1) { System.exit(-1); } System.out.println("Escreva o numero do telefone"); telefone = in.readLine();-…
![Page 17: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/17.jpg)
System.out.println("Escreva o endereco"); endereco = in.readLine();
pessoaDAO.inserir(new Pessoa(nome, telefone, endereco));
} catch (IOException e) { System.out.println(e.getMessage()); System.exit(-1);
}
}…
![Page 18: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/18.jpg)
// main public static void main(String args[]) { Agenda ag = new Agenda(); String opcao = ""; for (;;) { System.out.println( "\nAgenda Pessoal\n***********************\n"); System.out.print( "Opcoes:\n(i)nserir\n(c)onsultar\n(l)istar\n(f)im=>"); try { opcao = ag.in.readLine(); } catch (IOException e) { System.out.println(e.getMessage()); System.exit(-1); } switch (opcao.charAt(0)) { case 'f':
![Page 19: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/19.jpg)
System.exit(0); break; case 'i': ag.obterDadosDaPessoa(); break; case 'c': ag.mostraDadosDaPessoa(); break; case 'l': ag.mostraPessoas(); break; } } }}
![Page 20: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/20.jpg)
O método main() da classe Agenda cria um objecto da própria classe, que por sua vez possui um objecto da classe PessoaDAO.
A partir de então o programa entra num laço, que aguarda e atende às solicitações do utilizador.
![Page 21: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/21.jpg)
Todos os métodos da classe recebem e exibem dados por meio dos dispositivos de E/S padrão.
Para ler os dados do dispositivo de entrada padrão, uma linha por vez, foi necessário encapsular o objecto System.in em objectos das classes BufferedReader e InputStreamReader .
a entrada de dados será realizada por meio do método readLine(), que retorna a linha digitada pelo utilizador.
![Page 22: Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo](https://reader035.vdocuments.mx/reader035/viewer/2022081417/552fc174497959413d8ef331/html5/thumbnails/22.jpg)
Trabalho a realizarCriar uma aplicação semelhante mas com interface
gráfica (JOptionPane)O conhecimento e a criatividade serão a base para a
defesa
para estudo e aprofundamento além do livro de Deitel consultar também a apostila da caelum (www.caelum.com.br) intitulada: Algoritmos e estrutura de dados em Java (só a parte que fala de vectores)…