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

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

CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO

Apresentações semelhantes


Apresentação em tema: "CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO"— Transcrição da apresentação:

1 CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO
EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 4: PADRÕES FACTORY E DAO Prof. Cesar Augusto 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 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 Rascunhe um diagrama de classes para o código em questão.
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 Imagine a seguinte situação:
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 criarPizza das Fábricas está atrelado às mesmas pizzas. Sistemas Distribuídos/UTFPR Prof. Cesr Augusto Tacla

7 Acrescentar uma nova Pizzaria que faz uma Pizza exclusiva de Presunto
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 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 DAO/ExemploDAO (no Repositório Java)
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 DAO/ExemploDAO (no Repositório Java) Para executar:
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... 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

17 Implemente a operação inserir(Cliente) na classe TextDAO
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. Construir uma aplicação desktop utilizando o padrão DAO para operações CRUD (Create, Retrieve, Update e Delete) num banco de dados de contatos. Será utilizado o JavaDB embedded na aplicação Isto significa que é possível distribuir a aplicação aos usuários passando unicamente o .jar da aplicação e do banco de dados. Não é necessário instalar/configurar um SGBD na máquina do usuário Este tutorial foi extraído de


Carregar ppt "CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO"

Apresentações semelhantes


Anúncios Google