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