Java na Prática Célio Silva Aula 3
Java na Prática Collections List List são listas de coisa ordenadas/não ordenadas, com duplicações permitidas e com um índice Servem para encapsular código de tratamento de dados e alocação dinâmica Disponibiliza os métodos funcionais. add(object); addall(object); clear(); contains(); remove(object);... Especializações de List Exercício java.util.vector - ArrayList mais lento, possui métodos sincronizados java.util.arraylist - Rápida iteração e acesso aleatório java.util.linkedlist Controla ordem elementos adicionados java.util.priorityqueue Ordena os itens de acordo com prioridades Substituir array de agências por lista de agências Lista não genérica GFT Group 8 April 2010 Page 2/XX
Java na Prática Requisitos Requisito Projeto Desenvolver funções para Consultar, Ativar e Desativar Agências. Exercícios Implementar método consultaragencia(int codigoagencia); for(int i = 0; i < agencias.size(); i++){ Agencia aux = agencias.get(i); //algum código aqui } Utilizar método mostrarbeanagencia(agencia agencia); If (agencia == null) return; //evitar NullPointerException Utilizar For com índice numérico Implementar método reativaragencia(agencia agencia); Implementar método desativaragencia(agencia agencia); GFT Group 8 April 2010 Page 3/XX
Java na Prática Requisitos Requisito Projeto Desenvolver funções para Consultar, Ativar e Desativar Agências. Exercícios Implementar método consultaragencia(int codigoagencia); Implementar método reativaragencia(agencia agencia); for(iterator i = agencias.iterator(); i.hasnext();){ Agencia aux = (Agencia) i.next(); //algum código de tratamento aqui } Equals() Instanceof Cast Utilizar String.format para formatar a mensagem Implementar método desativaragencia(agencia agencia); GFT Group 8 April 2010 Page 4/XX
Java na Prática Requisitos Requisito Projeto Desenvolver funções para Consultar, Ativar e Desativar Agências. Exercícios Implementar método consultaragencia(int codigoagencia); Implementar método reativaragencia(agencia agencia); Implementar método desativaragencia(agencia agencia); for (Agencia a: agencias){ //algum código aqui } For com enhanced-for-loop Uma sentença for enhanced [a partir do Java 5], tem duas partes, a declaração e a expressão. Isto é usado na maioria das vezes para iterar entre arrays e collections Com um enhanced for, a expressão é o array ou collection através do qual você pode iterar GFT Group 8 April 2010 Page 5/XX
Java na Prática For índice, For iterador, Enhanced For Loop for(int i = 0; i < agencias.size(); i++){ Agencia aux = agencias.get(i); //algum código aqui } for(iterator i = agencias.iterator(); i.hasnext();){ Agencia aux = (Agencia) i.next(); //algum código de tratamento aqui } for (Agencia a: agencias){ } //algum código aqui for (;;){ } //algum código aqui GFT Group 8 April 2010 Page 6/XX
Java na Prática Requisitos Desenvolver Cadastro de Clientes Salvar Consultar Bloquear Reativar Cancelar GFT Group 8 April 2010 Page 7/XX
Java na Prática Requisitos Desenvolver Cadastro de Clientes Salvar Consultar Bloquear Reativar Cancelar GFT Group 8 April 2010 Page 8/XX
Java na Prática JavaBean Cliente Modelo de Dados Integer codigo String nome String sobrenome {NomeCompleto} Endereco String logradouro String cidade? unidade Federativa String telefone String email? estadocliente String CPF ou CNPJ? Cliente - codigo: Integer - nome: String - sobrenome: String - logradouro: String - cidade: String - unidadefederativa:? - telefone: String - email: String - estadocliente:? //getters e setters GFT Group 8 April 2010 Page 9/XX
Java na Prática Estruturas Condicionais Switch Sintaxe switch(valor){ } case CONSTANTE_1: //fazer alguma coisa; break; case CONSTANTE_2: //fazer outra coisa; break; default: //fazer alguma outra coisa; Lembretes: beak; Cafeteira + PEQUENO: int [1] + MEDIO: int [2] + GRANDE: int [3] + fazercafe(int tamanho): void Os valores dentro de case devem ser sempre constantes, literais ou não Se não houver break o codigo continuará executando até sair do switch ou encontrar um break; GFT Group 8 April 2010 Page 10/XX
Java na Prática Tipos de Classe Enum Enums são classes Possuem constantes Contém variáveis Contém método construtor Contém métodos GFT Group 8 April 2010 Page 11/XX
Java na Prática Tipos de Classe Enum Comparado com ==, pode ser utilizado no switch Especifica uma lista de constantes que podem ser atribuídas à um tipo particular Enum não é String nem um int; o tipo da constante de um Enum é o tipo da Enum; Enum pode ser declarada fora ou dentro de uma classe, mas nunca em um método. Enums podem conter construtores, métodos, variáveis e constantes no corpo da classe Construtores enum podem ter argumentos, e podem ser sobrecarregados Construtores enum nunca podem ser invocados diretamente no código. Eles são sempre chamados automaticamente quando uma enum é inicializada. O ponto e virgula no final da declaração de uma enum é opcional. Ambos são permitidos: Exercício enum Teste { TESTE1, TESTE2, TESTE3} enum Teste { TESTE1, TESTE2, TESTE3}; Implementar enums EstadoCliente [ATIVO, BLOQUEADO, CANCELADO] com descrição UnidadeFederativa [SP, RJ, MG, PR] com descrição por extenso GFT Group 8 April 2010 Page 12/XX
Java na Prática Herança e Classes Abstratas Herança É-um refere-se a herança É expressado através da palavra chave extends Herdar de outra classe significa receber todas as informações e operações desta Sub-Classe e Super-Classe Generalização e especialização Sobrecarga e Sobreposição/sobrescrita Classes Abstratas abstract class e métodos abstratos Classe não pode ser instanciada Método não pode ser ignorado Exercício Criar ClienteFisico ClienteJuridico herdando de Cliente Tornar Cliente uma classe abstrata Implementar método abstrato public abstract String getnomecompleto(); Especializar Clientes com cpf e cnpj; GFT Group 8 April 2010 Page 13/XX
Java na Prática Herança e Polimorfismo instanceof Polimorfismo significa muitas formas Uma variável de referência é sempre de um único tipo, imutável, mas que pode se referir à um subtipo Um simples objeto pode ser referenciado por variáveis de referência de muitos tipos [diferentes] desde que elas sejam do mesmo tipo ou supertipo do objeto O tipo da variável de referência [não o tipo do objeto], determina quais métodos podem ser chamados. Invocações de métodos por polimorfismo se aplicam somente para métodos de instância sobrescritos Exercício Utilizar instanceof em hierarquia ClienteFisico Cliente Object Criar ClienteBusiness public void cadastrarcliente(cliente cliente) public Cliente consultarclienteporcodigo(integer codcliente) Criar em SistemaView private void mostrarview(component c); GFT Group 8 April 2010 Page 14/XX
Java na Prática Herança e Modificadores de Classe Abstract VS final Um membro protected herdado por classe em outro pacote é acessível somente para esta classe e suas subclasses Classes também podem ser marcadas com os modificadores final ou abstract Uma classe não pode ser final e abstract ao mesmo tempo Uma classe final não pode ser herdada [extends] Uma classe abstrata não pode ser instanciada Uma classe abstrata pode conter ambos os métodos abstratos e não abstratos A primeira classe concreta que herdar de uma classe abstrata deve implementar todos os seus métodos abstratos. Exercício Implementar modificador final em ClienteFisico e ClienteJuridico GFT Group 8 April 2010 Page 15/XX
Referências Bibliográficas: Certificação Sun para programador Java 5: guia de estudo (exame 310-055) / Kathy Sierra, Bert Bates Effective Java: Second Edition/First Edition / Joshua Bloch Sugestões, dicas ou reclamações: celio@celiosilva.com Obrigado! GFT Group 8 April 2010 Page 16/XX
GFT Technologies AG Av. São Francisco, 98 - STA Rosália, CEP 18095-450. celio.da-silva@gft.com T +55 15 3332-0762 Célio Batista da Silva celio@celiosilva.com Copyright Célio Batista da Silva, 2010 GFT Group 8 April 2010 Page 17/XX