Você está na página 1de 19

Padrão para Implementação de Aplicações Java - Alessandro Cerqueira - 20/8/2007

Módulo IV
Uma Proposta de Projeto para
Aplicações Java

Objetivo
Descrever como implementar
aplicações Java a partir
de produtos do processo
de software
2

Camadas da Aplicação
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Ao iniciarmos o projeto de uma aplicação, devemos


visualizá-la em três camadas fundamentais:
– Camada de Interface (ou de Apresentaç
Apresentação)
• É composta pelos objetos responsá
responsáveis pelo estabelecimento
de uma interface grá
gráfica com o usuá
usuário (GUI – Graphical User
Interface).
– Camada de Controle (ou de Negó
Negócios)
Implementaçção de Aplica

• É composta pelos objetos responsá


responsáveis pela execuç
execução dos
casos de uso do sistema.
– Camada de Domí
Domínio (ou de Dados)
Padrão para Implementa

• É composta pelos objetos pertencentes às classes geradas pelo


processo de modelagem de dados; assim, estes descrevem os
os dados que são manipulados durante a execuç
execução do sistema
3

Projeto da Camada de Interface


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Projeto de Interface
– Deve ser realizado durante o fluxo de trabalho de Projeto.
Projeto.
– Identificar quais elementos de interface que serão necessá
necessários para
dar suporte às diversas ações que podem ser executadas durante os
casos de uso do sistema.
– Dividir o projeto de interface em duas fases:
• Projeto de Interface Abstrato
– Identifica os artefatos de interface que serão gerados, quais são os
eventos aos quais estes são sensí
sensíveis, quais ações devem ser
Implementaçção de Aplica

executadas e quais transiç


transições devem ser efetuadas.
– Este projeto pode ser elaborado a partir de um diagrama de grágráficos
de estado.
estado.
Padrão para Implementa

– Regra: Para cada caso de uso devemos gerar um diagrama de


grá
gráficos de estado.
• Projeto de Interface Concreto
– Design visual dos elementos de interface a serem gerados.
4

Projeto da Camada de Interface


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Projeto de Interface (continuaç


(continuação)

– Em aplicaç
aplicações tradicionais,
tradicionais, realizamos o design das janelas do
sistema.
sistema. Em aplicaç
aplicações web,
web, realizamos o design das pápáginas
HTML com seus formulá
formulários.
– Identificar quais são os eventos aos quais os elementos de
interface são sensí
sensíveis.
– Com isto, estamos preparando o caminho para que a aplicaç
aplicação
adote o estilo de Programaç
Programação Orientada a Eventos.
Eventos.
Implementaçção de Aplica
Padrão para Implementa
5

Projeto de Interface Abstrato


(Diagrama de Gráficos de Estado)
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

Caso de Uso: Efetuar Login


[numErros = 3]
[numErros < 3]
Verificar nú
número de falhas Login

Mensagem Lida conta e senha


informadas
Implementaçção de Aplica

Erro Verificar Conta e Senha


[conta ou senha
invá
inválidas] [conta e senha
Padrão para Implementa

válidas]

Menu
Principal
6

Projeto de Interface Abstrato


(Diagrama de Gráficos de Estado)
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

Caso de Uso: Manter Turmas


[Inclusão Ok]
Ok] [Exclusão Ok]
Ok]
AlterarTurma ExibirTurmas ExcluirTurma
[Alteraç
[Alteração Ok]
Ok]
Botão Ok Botão
Botão Botão Ok
Cancelar
Janela Cancelar Janela Botão
Sair
AlterarTurma Botão
Turmas Janela
Cancelar
ExcluirTurma
Botão Incluir
Botão Alterar
Botão Excluir
ExibirJanelaIncluirTurma
ExibirJanelaAlterarTurma
Implementaçção de Aplica

ExibirJanelaExcluirTurma
Botão Ok Janela
IncluirTurma
IncluirTurma
Padrão para Implementa

Botão Ok e
[Voltar Inclusão]
[Erro de Inclusão] [Erro de Exclusão]
Botão Ok e
[Voltar Alteraç
Alteração]
Erro Botão Ok e [Voltar Exclusão]
[Erro de Alteraç
Alteração]
7

Projeto da Camada de Interface


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Para cada caso de uso gerar um diagrama de gráficos


de estado
– Cada estado representa uma janela ou página a ser
implementada
– Os eventos produzidos pelos usuá
usuários indicam a realizaç
realização
de uma ação do sistema na execuç
execução do caso de uso
– De acordo com as condiç
condições de té
término da aç
ação, é
Implementaçção de Aplica

realizada uma transiç


transição para outro artefato de interface.
Padrão para Implementa
8

Projeto da Camada de Interface


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Regras Básicas para Criação


– Para aplicações convencionais:
• Para cada tipo de janela identificada no Projeto, iremos criar uma
classe em Java.
• Para cada elemento de interface na janela, deve ser adicionado
um atributo desta classe.
• Para cada evento ao qual esta janela é sensí
sensível deve ser um
método desta classe. A missão deste mémétodo é entrar em contato
com o controlador do caso de uso e notificá
notificá-lo da ocorrência do
evento.
Implementaçção de Aplica

– Para aplicações web:


• Para cada tipo de pápágina identificada no Projeto, iremos criar uma
Padrão para Implementa

página JSP.
JSP.
• Cada elemento de interface é inserido na pá página utilizando componentes
visuais de interface (ex. em JSF  Text).
Text).
• Cada evento ao qual esta janela é sensí
sensível deve ter um có
código que
efetue uma requisiç
requisição ao servidor.
servidor.
9

Projeto da Camada de Interface


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Regras Básicas para Criação


– Caso observemos que um conjunto de elementos esteja se
repetindo em vá
várias janelas, podemos criar uma classe para este
conjunto
• Estí
Estímulo ao reuso
– Os mé
métodos da classe de interface não devem implementar nem
fazer referência a conceitos do domí
domínio.
nio. Simplesmente deverão
avisar ao controlador responsá
responsável que tal evento ocorreu.
Implementaçção de Aplica
Padrão para Implementa
10

Projeto da Camada de Controle


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Modelagem de Casos de Uso


– Deve ser realizado durante o fluxo de trabalho de Levantamento de
Requisitos.
Requisitos.

• Um sistema é composto de vá vários casos de uso.


uso. Cada caso de
uso descreve um conjunto de açações que são executadas atéaté
que um bem tangí
tangível seja dado ao usuá
usuário ao final de sua
execuç
execução.
– Um caso de uso indica uma funcionalidade do sistema.
• Regra Geral:
Implementaçção de Aplica

– Para cada caso de uso iremos codificar um classe que


implementará
implementará um controlador para o caso de uso.
Padrão para Implementa

– Cada aç
ação tratada pelo caso de uso (identificada no diagrama de
grá
gráficos de estado) irá
irá se transformar em um mémétodo.
todo.
– A execuç
execução do mémétodo de açação será
será disparada a partir do envio
de uma mensagem de um objeto da camada de interface para o
controlador.
11

Projeto da Camada de Controle


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Variante para a Regra


– Crie uma classe abstrata chamada Comando que contenha
método abstrato chamado executar()
um mé
– Cada aç
ação do caso de uso poderá
poderá se transformar em uma
classe que seja especializaç
especialização da classe Comando (ou seja,
que codifique o mé
método executar())
executar())
• O controlador de casos de uso será
será uma composiç
composição de
Implementaçção de Aplica

Comandos que ficam registrados em um HashMap (tó(tópico futuro)


• A partir da ordem recebida pela interface, recuperar o objeto
Comando e execute o mémétodo executar()
Padrão para Implementa

• O grupamento de classes de açação deve ficar em um pacote


pró
próprio ou como classes internas à classe do controlador.
12

Projeto da Camada de Domínio


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Modelagem de Dados
– Deve ser realizado durante o fluxo de trabalho de Aná
Análise.
lise.

• As classes de domínio são aquelas que identificamos


na modelagem de dados nas atividades de análise.
– Pela UML, documentamos a modelagem de dados atravé
através de um
diagrama de classes

• Regra
– Cada classe identificada na modelagem de dados deverá
deverá ser
Implementaçção de Aplica

implementada sob o padrão JavaBeans (mó


(módulo 06).
06).
• Resumo
– Pelo menos ter o construtor com assinatura vazia
Padrão para Implementa

– Métodos get e set vinculados a cada atributo


– Vinculada a cada classe JavaBean iremos també
também construir
també
também um DAO (Data Access Object)
Object)
13

Projeto da Camada de Domínio


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Data Access Object (DAO)


– São objetos que interagem com os controladores com o
objetivo de fazer a busca, recuperaç
recuperação e armazenamento
dos objetos do domí
domínio.
nio.
– Para cada classe presente no diagrama de classes iremos
criar uma classe DAO
• Ex: Classe Turma  Classe DaoTurma
Classe Aluno  Classe DaoAluno
Implementaçção de Aplica

– Se um controlador precisar recuperar um ou mais objetos


de uma classe de domí
domínio, ele o fará
fará junto ao DAO da
classe necessá
necessária. Se um objeto precisar ser persistido
Padrão para Implementa

(armazenado), quem o fará


fará será
será o DAO
– A estraté
estratégia de persistência fica encapsulada nas classes
DAO.
14

Camadas da Aplicação
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• A comunicação entre as camadas deve


seguir a seguinte estratégia:

Camada de Interface

Mensagens Retorno
Implementaçção de Aplica

Camada de Controle
Padrão para Implementa

Mensagens Retorno

Camada de Domínio
15

Artefatos do Processo de Desenvolvimento


Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Todos os artefatos produzidos no Processo de Software


influenciam direta ou indiretamente a implementaç
implementação; entretanto
destacamos alguns dos mais importantes:
• Diagrama de Casos de Uso
– Para geraç
geração da camada de controle
• Modelagem de Dados (diagrama de classes)
– Para geraç
geração da camada de domí
domínio
– Para geraç
geração de DAOs (Data Access Objects)
Objects)
Implementaçção de Aplica

• Projeto de Interface Abstrato realizado com o Diagrama de


Grá
Gráficos de Estado
Padrão para Implementa

– Para identificaç
identificação dos elementos de interface
• Projeto de BD
– Para a geraç
geração do mapeamento OO  Relacional
16

Padrões de Projeto
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Padrão
– Maneira testada ou documentada de alcanç
alcançar um objetivo qualquer
• Design Patterns ou Padrões de Projeto
– Padrões para alcanç
alcançar objetivos na engenharia de software usando
classes e mé
métodos em linguagens orientadas a objeto

• "Design Patterns:
Patterns: Elements of Reusable Object-
Object-Oriented
Software"
Software"
– Livro de Erich Gamma,
Gamma, John Vlissides,
Vlissides, Ralph Jonhson e Richard Helm
(Conhecidos como "The
"The Gang of Four", ou GoF)
GoF)
Implementaçção de Aplica

– Catá
Catálogo que descreve 23 padrões de projeto úteis.
– Inspirado em “A Pattern Language”
Language” de Christopher Alexander sobre
padrões de arquitetura de cidades, casas e pré
prédios.
Padrão para Implementa

• “Os padrões de projeto são descriç


descrições de objetos que se comunicam e classes que
são customizadas para resolver um problema gené
genérico de design em um contexto
específico“ (GoF)
especí GoF)
17

Padrões de Projeto
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Um padrão de projeto é a descriç


descrição de uma estraté
estratégia que
pode-
pode-se adotar para solucionar um determinado tipo de
problema que pode ocorrer de formas diferentes mas que, na
essência, apresenta a mesma estrutura.
• Paró
Paródia
– Um time de futebol chamado Casco da Grama e que é treinado
pelo té
técnico Regato Maluco está
está perdendo suas partidas há
há 20
jogos. Seu presidente pergunta a seus benemé
beneméritos o que fazer.
Soluç
Solução: demitir o té
técnico Regato Maluco.
Maluco.
Implementaçção de Aplica

– Na realidade esta soluç


solução não se aplica somente ao Casco da
Grama em relaç
relação ao té
técnico Regato Maluco, mas pode ser
generalizada em um Padrão de Projeto.
Padrão para Implementa

• Padrão de Projeto “Detonator”


Detonator”
– Problema gené
genérico: Um time está
está perdendo há
há muitos jogos.
– Soluç
Solução gené
genérica: detonar com seu té
técnico.
18

Camadas da Aplicação
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• Projetando assim uma aplicação, estamos


implementando padrão de projeto MVC (Model-
Viewer-Controller)
– Model  Classes do Domí
Domínio
– Viewer  Classes da Interface
– Controller  Classes de Controle
Implementaçção de Aplica

• A grande vantagem desta estruturação é a obtenção


da Independência de Diálogo
Padrão para Implementa

– A troca no projeto de interface não implica em alteraç


alterações
nos mé
métodos ligados ao controle ou ao domí
domínio.
19

Camadas da Aplicação
Aplicaçções Java - Alessandro Cerqueira - 20/8/2007

• A princípio, vamos estruturar nossa aplicação


da seguinte forma:
– As classes da camada de interface farão parte do
pacote “face”
– As classes da camada de controle farão parte do
pacote “controle”
Implementaçção de Aplica

– As classes da camada de domínio farão parte do


pacote “dominio”
Padrão para Implementa

– Para cada aplicação iremos criar uma classe


chamada Programa que pertencerá a pacote
“controle” e que só conterá o método main.

Você também pode gostar