1 / 17

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

CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~ tacla UTFPR/Campus Curitiba. Antes de apresentar o DAO, veremos o padrão FACTORY frequentemente utilizado em conjunto com DAO.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO Prof. Cesar AugustoTacla http://www.dainf.ct.utfpr.edu.br/~tacla UTFPR/Campus Curitiba

  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

  3. SIMPLE FACTORY /** * exemplo extraido do livro HeadFirst: Design Patterns * * Este exemplo eh para mostrar a motivacao de uso do padraoFactory. * 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. • Exemplo motivador • Baixar o código Factory/ExemploFactory • Compilar e rodar • Observar os comentários na classe Pizzaria aqui reproduzidos:

  4. SIMPLE FACTORY 2 if (tipo.equalsIgnoreCase("MARGUERITA")) { p = newPizzaMarguerita(); } elseif (tipo.equalsIgnoreCase("PORTUGUESA")) { p = newPizzaPortuguesa(); } • 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

  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. 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 criarPizzadas Fábricas está atrelado às mesmas pizzas. SistemasDistribuídos/UTFPR Prof. Cesr Augusto Tacla

  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. 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. 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. Padrão dao

  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. 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. PARTICIPANTES DAO UmaclasseDAO factory (fábrica simples) Interface DAO (produtoabstrato) Classequeimplementa a interface DAO (produtoconcreto) Data transfer objects (tambémchamados de value objects)

  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. DIAGRAMA DE CLASSES

  16. EXEMPLO INICIAL CRIAR BASE DE DADOS ====================== 1. Clique na tabserviç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... 7. 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 DAO/ExemploDAO (no Repositório Java) Para executar:

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

More Related