A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO Prof. Cesar Augusto Tacla

Apresentações semelhantes


Apresentação em tema: "CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO Prof. Cesar Augusto Tacla"— Transcrição da apresentação:

1 CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO Prof. Cesar Augusto Tacla UTFPR/Campus Curitiba

2 2 2 Antes de apresentar o DAO, veremos o padrão FACTORY frequentemente utilizado em conjunto com DAO. Para entender o modelo DAO, faremos um breve introdução ao padrão. Em seguida, implementaremos o modelo num programa simples de cadastro de clientes. Tópicos relacionados: Camada do modelo do padrão MVC, bando de dados relacional Antes de apresentar o DAO, veremos o padrão FACTORY frequentemente utilizado em conjunto com DAO. Para entender o modelo DAO, faremos um breve introdução ao padrão. Em seguida, implementaremos o modelo num programa simples de cadastro de clientes. Tópicos relacionados: Camada do modelo do padrão MVC, bando de dados relacional

3 3 3 SIMPLE FACTORY Exemplo motivador Baixar o código Factory/ExemploFactory Compilar e rodar Observar os comentários na classe Pizzaria aqui reproduzidos: /** * exemplo extraido do livro Head First: Design Patterns * * Este exemplo eh para mostrar a motivacao de uso do padrao Factory. * O que acontece se quisermos suprimir uma pizza do cardapio ou adicionar * novas? Temos que mudar o codigo do metodo comandar. Se forem muitas * pizzas pode ficar desorganizado. O que acontece se houver varios pontos de instanciação * destas pizzas? Os ifs de criação devem ser replicados.

4 4 4 SIMPLE FACTORY 2 Solução: encapsular a criação das Pizzas em um objeto SimpleFactory (ou fábrica simples) que sabe como criar objetos da classe Pizza e de suas derivadas. Baixar código Factory/ExemploFactory2 e observar onde foi parar o código abaixo! Rascunhe um diagrama de classes para o código em questão. Observe que somente a Fábrica conhece as Pizzas concretas if (tipo.equalsIgnoreCase("MARGUERITA")) { p = new PizzaMarguerita(); } else if (tipo.equalsIgnoreCase("PORTUGUESA")) { p = new PizzaPortuguesa(); }

5 5 5 ABSTRACT FACTORY Imagine a seguinte situação: Você tem duas pizzarias, uma no Juvevê e outra no Centro Os cardápios diferem nas pizzas oferecidas e no modo de preparação. Por exemplo: No Juvevê, tem pizza Calabresa No centro, Portuguesa é assada por menos tempo e não leva azeitonas. O sistema de pedido de pizzas é centralizado, então estes diferentes cardápios e modos de preparação devem ser levados em conta. Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla

6 6 6 ABSTRACT FACTORY O simple factory resolve o problema apenas para uma pizzaria, se fossemos utilizá-lo nas duas pizzarias teriamos que fazer duas fábricas: new FabricaJuveve new FabricaCentro E novas Pizzas, PortuguesaJuveve e PortuguesaCentro Mas ainda assim, não poderiamos criar pizzas com receitas diferentes para as duas pizzarias, dado que o método criarPizza das Fábricas está atrelado às mesmas pizzas. Sistemas Distribuídos/UTFPR Prof. Cesr Augusto Tacla

7 7 7 ABSTRACT FACTORY Baixar o código Factory/ExemploFactory3 para ver com resolver os problemas com o padrão AbstractFactory Acrescentar uma nova Pizzaria que faz uma Pizza exclusiva de Presunto Rascunhar o diagrama de classes e comparar com o do SimpleFactory Observar o método criarPizza Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla

8 8 8 ABSTRACT FACTORY: resumo Intenção Prover uma interface para criar famílias de objetos sem especificar suas classes concretas Aplicação Quando o sistema deve ser independente de como os produtos são criados, compostos e representados O sistema deve ser configurado para trabalhar com diversas famílias de produtos Vale a pena utilizá-lo mesmo quando há apenas uma fábrica concreta? Sim, por causa do desacoplamento entre a família de produtos e o seu uso Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla

9 9 9 ABSTRACT FACTORY: resumo Participantes AbstractFactory (Pizzaria) declara uma interface para criar produtos; os produtos são abstratos ConcreteFactory (PizzariaCentro, PizzariaJuveve): implementa as operações para criar os produtos AbstractProduct (Pizza): declara uma interface para os produtos ConcreteProduct (Portuguesa, Marguerita): implementa a interface AbstractProduct e define produtos a serem criados pela fábrica concreta. Sistemas Distribuídos/UTFPR Prof. Cesar Augusto Tacla

10 10 PADRÃO DAO

11 11 PADRÃO DAO DATA ACCESS OBJECT construir uma camada de acesso aos dados de forma a isolar a camada do modelo da camada de persistência. Baixo acoplamento. A idéia é poder mudar o mecanismo de persistência a qualquer momento sem ter que modificar a camada do modelo. Interessante para fazer nova distribuição de um sistema. Dois clientes diferentes de um sistema podem querer utilizar BDs diferentes Outro benefício, é poder utilizar vários mecanismos de persistência (ex. LDAP, BD, XML, arquivos, sistemas legados) de forma organizada, i.e. sem poluir a camada do modelo

12 12 PADRÃO DAO DAO abstrai e encapsula o acesso as fontes de dados. DAO gerencia a conexão com a fonte e sabe como obter os dados. Por exemplo, encapsular conexões com o(s) BD(s) e os statements SQL

13 13 PARTICIPANTES DAO Uma classe DAO factory (fábrica simples) Interface DAO (produto abstrato) Classe que implementa a interface DAO (produto concreto) Data transfer objects (também chamados de value objects)

14 14 EXEMPLO INICIAL DAO/ExemploDAO (no Repositório Java) A aplicação permite cadastrar e excluir registros da tabela CLIENTE. Não há consistência dos campos. A aplicação está preparada para gravar clientes no banco de dados JavaDB ou em arquivos texto (na verdade, esta última opção não está implementada).

15 15 DIAGRAMA DE CLASSES

16 16 EXEMPLO INICIAL DAO/ExemploDAO (no Repositório Java) Para executar: CRIAR BASE DE DADOS ====================== 1. Clique na tab serviços 2. Clique direita em JavaDB > inicializar 3. Clique direita em JavaDB > criar BD 4. Nome do banco de dados: exemplodao_db Nome do usuario: APP Senha: APP Localização: deixar o local default 5. clicar direita na base recém criada > conectar 6. Para criar as tabelas, clicar direita na base recém criada > Executar comando Na tab Comando SQL i, copiar e colar o conteúdo do arquivo sqlcriacaotabela.txt 8. Clicar no ícone RODAR SQL 9. Para visualizar o conteúdo da tabela CLIENTE, clicar na BD para que mostre as TABELAS 10. Na tabela CLIENTE, clique direita > visualizar dados

17 17 EXERCÍCIOS 1.Implementar as operações consultar e alterar na aplicação (sol. DAO/ExemploDAO-ConsAlt) 2.Implemente a operação inserir(Cliente) na classe TextDAO 3.Modifique a GUI de forma que ela mostre uma lista com os nomes dos clientes cadastrados numa lista rolante.


Carregar ppt "CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO Prof. Cesar Augusto Tacla"

Apresentações semelhantes


Anúncios Google