slide1
Download
Skip this Video
Download Presentation
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO

Loading in 2 Seconds...

play fullscreen
1 / 17

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


  • 86 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO' - esperanza-moreno


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
slide1
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

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

ad