Präsentationstitel

Download Report

Transcript Präsentationstitel

Java na Prática – Java e OO
Célio Silva
Aula 8
Java na Prática – Requisitos
 Implementar ordenação na lista de clientes na tela de consulta:
 Por sobrenome / NomeFantasia (Clientes Físicos devem estar separados de
clientes Jurídicos).
 Por código
 Por nome
GFT Group
3 November 2015
Page 2/XX
Java na Prática – Interfaces – Compable e Comparator
 Interfaces
 Significa um contrato entre o desenvolvedor do código e o consumidor
 Contém todos os métodos que deverão ser disponibilizados pelo cliente concreto
 Pode conter variáveis, mas por padrão serão constantes static final
 Uma interface explica o que uma classe pode fazer, mas não como deve ser feito
 Ex: APIs: JDBC, JP; Especificações JEE: Servlets, JSP, etc.
 java.lang.Comparable
 Define métodos para comparação e permite que uma collection seja ordenada
pela ordem natural dos elementos
 java.util.Comparator
 Define métodos para comparar um elemento ao outro e permite que uma
collection seja ordenada de diversas formas
 Exercício
 Implementar Comparable<Cliente> em Cliente e ordenar pelo nome
 Implementar duas classes utilitárias com Comparator<Cliente>, ordenando por
código e por sobrenome/Nome Fantasia
GFT Group
3 November 2015
Page 3/XX
Java na Prática – Interfaces – Desenvolvimento
 Interfaces VS classes abstratas
 Substantivos indicam classes
 Adjetivos e substantivos abstratos indicam interfaces
 Quando dois tipos distintos compartilharem uma característica semelhante uma
interface deverá ser utilizada para mapear esta característica.
 Implemente classes abstratas somente quando tiver absoluta certeza que o código
será reutilizado e que a subclasse sempre será 100% do tipo da super-classe.
Caso contrário prefira interfaces.
 Interfaces são declaradas com modificador interface e se aplicam a todas as
regras de visibilidade de uma classe
 Não possuem construtores
 Não contém implementações, todos os métodos são implicitamente abstract
 Não contém dados variáveis, todos os campos são implicitamente static final
 Exercício
 Implementar interface Mensagem em Sucesso e Exception.
GFT Group
3 November 2015
Page 4/XX
Java na Prática – Herança e Implementação de Interfaces
 Uma simples classe pode implementar muitas interfaces
 Interfaces podem ser implementadas por qualquer classe de acordo com qualquer
árvore de herança
 Não pode declarar nenhuma nova exceção checada para os métodos implementados
 Não pode declarar nenhuma exceção que seja mais genérica do que as exceções
declaradas no método da interface
 Pode declarar qualquer exceção RunTime em qualquer implementação do método
independente da declaração da interface
 Deve manter a assinatura exata, com permissão somente para retornos covariantes,
mas não precisa declarar as exceções da interface
 A classe implementadora e a interface podem ser ambas abstratas
 Uma classe abstrata que implementa uma interface não precisa implementar todos os
métodos da interface, mas a primeira classe concreta deve faze-lo.
 Uma classe pode herdar somente de uma classe, mas pode implementar múltiplas
interfaces
 Interfaces podem herdar de uma ou mais interfaces
 Interfaces não podem herdar uma classe, nem implementar uma classe ou interface
GFT Group
3 November 2015
Page 5/XX
Java na Prática – Requisitos
 Implementar validação de usuário com permissões de acesso para as funções
desenvolvidas
 Cada função deve ter sua permissão
 O usuário ativo no sistema poderá acessar somente às funções que possui
permissão
 Exercício
 Implementar enum com todas as funções do sistema
 Implementar bean Usuario com conjunto de permissões
 Implementar singleton para controle do usuário ativo e funções do sistema
GFT Group
3 November 2015
Page 6/XX
Java na Prática – Collections – Set
 Conjunto de objetos que não permite duplicidade
 Não permite acesso direto como listas
 Não possui mapeamento como Maps
 Acesso aos objetos no conjunto devem ser feitos através do Iterator<E>
 Duplicidade testada através do hashcode() e equals(Object o)
 Especializações
 java.util.HashSet: Acesso rápido, sem duplicidade sem ordenação
 java.util.LinkedHashSet: Sem duplicidade: iteração por ordem de inserção
 java.util.TreeSet: Sem duplicacidade: iteração em ordem de classificação
 Exercício
 Implementar Set<Permissao> permissoes em Usuario.
GFT Group
3 November 2015
Page 7/XX
Java na Prática – Padrão Strategy
 Uma interface mapeia uma operação necessário ao serviço
 O serviço aceitará somente aqueles que implementarem as regras do contrato
 O serviço não se relaciona com as implementações diretamente
 Qualquer objeto pode utilizar o serviço desde que obedeça o contrato
GFT Group
3 November 2015
Page 8/XX
Java na Prática – Segurança de Acesso
 Exercício
 Criar interface AcessoValidavel com método para retornar a permissão necessária
 Implementar a interface aos controllers Cliente
 Implementar a exception AcessoNegadoException
 Implementar Sessao.validarAcesso(AcessoValidavel v) throws
AcessoNegadoException e utilizá-lo no construtor dos controllers
GFT Group
3 November 2015
Page 9/XX
Java na Prática – Inner class – Classes Internas
 Uma classe interna é tratada como Membro de Instância
 Uma classe interna pode ser instanciada fora e dentro da classe, de acordo com
escopo.
 Uma classe interna anônima pode herdar de uma classe ou implementar uma interface
 Pode ser utilizado para encapsular código que não seja pertinente ao contexto
 Múltiplas classes em um único arquivo fonte não é Inner class
 Especializações
 Classes internas
 Classes internas em métodos locais
 Classes internas e anônimas
 Classes internas, anônimas, definidas em argumentos
 Classes aninhadas e estáticas
 Exercício
 Implementar validação de acesso em AgenciaView para todas as funções
utilizando as especializações de Inner Class.
 Map.Entry<K,V>
 Implementar padrão Enum Pattern em Conversor utilizando inner class e generics
GFT Group
3 November 2015
Page 10/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: [email protected]
Obrigado!
GFT Group
3 November 2015
Page 11/XX
GFT Technologies AG
Av. São Francisco, 98 - STA Rosália, CEP 18095-450.
[email protected]
T +55 15 3332-0762
Célio Batista da Silva
[email protected]
© Copyright Célio Batista da Silva, 2010
GFT Group
3 November 2015
Page 12/XX