CURSO DE ESPECIALIZAÇÃO
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

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


  • 44 Views
  • Uploaded on
  • Presentation posted in: General

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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 AugustoTacla

http://www.dainf.ct.utfpr.edu.br/~tacla

UTFPR/Campus Curitiba


Curso de especializa o em tecnologia java design patterns parte 4 padr es factory e dao

  • 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


Simple factory

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:


Simple factory 2

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


Abstract factory

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


Abstract factory1

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


    Abstract factory2

    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


    Abstract factory resumo

    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


    Abstract factory resumo1

    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


    Padr o dao

    Padrão dao


    Padr o dao1

    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


    Padr o dao2

    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


    Participantes dao

    PARTICIPANTES DAO

    UmaclasseDAO factory (fábrica simples)

    Interface DAO (produtoabstrato)

    Classequeimplementa a interface DAO (produtoconcreto)

    Data transfer objects (tambémchamados de value objects)


    Exemplo inicial

    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).


    Diagrama de classes

    DIAGRAMA DE CLASSES


    Exemplo inicial1

    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:


    Exerc cios

    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.


  • Login