Modulo04-padroes

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Modulo04-padroes as PDF for free.

More details

  • Words: 2,104
  • Pages: 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

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

2

Camadas da Aplicação • 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) • É composta pelos objetos responsá responsáveis pela execuç execução dos casos de uso do sistema.

– Camada de Domí Domínio (ou de Dados) • É 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

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

3

Projeto da Camada de Interface • 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 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. – 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.

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

4

Projeto da Camada de Interface • 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.

5

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

Projeto de Interface Abstrato (Diagrama de Gráficos de Estado) Caso de Uso: Efetuar Login [numErros = 3]

[numErros < 3]

Login

Verificar nú número de falhas

Mensagem Lida

Erro

conta e senha informadas

Verificar Conta e Senha [conta ou senha invá inválidas]

[conta e senha válidas]

Menu Principal

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

6

Projeto de Interface Abstrato (Diagrama de Gráficos de Estado)

Caso de Uso: Manter Turmas [Inclusão Ok] Ok]

AlterarTurma

[Exclusão Ok] Ok]

ExibirTurmas

[Alteraç [Alteração Ok] Ok]

Botão Ok

Janela AlterarTurma

Botão Cancelar Botão Cancelar

Janela Turmas

ExcluirTurma

Botão Sair

Botão Incluir

Botão Alterar

ExibirJanelaIncluirTurma

ExibirJanelaAlterarTurma

Botão Cancelar

Botão Ok

Janela ExcluirTurma Botão Excluir

ExibirJanelaExcluirTurma IncluirTurma

Botão Ok e [Voltar Alteraç Alteração]

Botão Ok

[Erro de Inclusão]

[Erro de Alteraç Alteração]

Janela IncluirTurma Botão Ok e [Voltar Inclusão]

Erro

[Erro de Exclusão] Botão Ok e [Voltar Exclusão]

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

7

Projeto da Camada de Interface • 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, é realizada uma transiç transição para outro artefato de interface.

8

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

Projeto da Camada de Interface • 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.

– Para aplicações web: • Para cada tipo de pá página identificada no Projeto, iremos criar uma 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.

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

9

Projeto da Camada de Interface • 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 Aplicaçções Java - Alessandro Cerqueira - 20/8/2007 Padrão para Implementa

10

Projeto da Camada de Controle • 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: – Para cada caso de uso iremos codificar um classe que implementará implementará um controlador para o caso de uso. – 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.

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

11

Projeto da Camada de Controle • Variante para a Regra – Crie uma classe abstrata chamada Comando que contenha um mé método abstrato chamado executar() – 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 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() • O grupamento de classes de aç ação deve ficar em um pacote pró próprio ou como classes internas à classe do controlador.

12

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

Projeto da Camada de Domínio • 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 implementada sob o padrão JavaBeans (mó (módulo 06). 06). • Resumo – Pelo menos ter o construtor com assinatura vazia – 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)

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

13

Projeto da Camada de Domínio • 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

– 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 (armazenado), quem o fará fará será será o DAO – A estraté estratégia de persistência fica encapsulada nas classes DAO.

14

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

Camadas da Aplicação • A comunicação entre as camadas deve seguir a seguinte estratégia: Camada de Interface Mensagens

Retorno Camada de Controle

Mensagens

Retorno Camada de Domínio

15

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

Artefatos do Processo de Desenvolvimento • 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)



Projeto de Interface Abstrato realizado com o Diagrama de Grá Gráficos de Estado – Para identificaç identificação dos elementos de interface



Projeto de BD – Para a geraç geração do mapeamento OO  Relacional

16

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

Padrões de Projeto • 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 ObjectObject-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) – 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.

• “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í específico“ (GoF) GoF)

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

17

Padrões de Projeto • Um padrão de projeto é a descriç descrição de uma estraté estratégia que podepode-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. – 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 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.

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

18

Camadas da Aplicação • Projetando assim uma aplicação, estamos implementando padrão de projeto MVC (ModelViewer-Controller) – Model  Classes do Domí Domínio – Viewer  Classes da Interface – Controller  Classes de Controle

• A grande vantagem desta estruturação é a obtenção da Independência de Diálogo – 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.

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

19

Camadas da Aplicação • 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” – As classes da camada de domínio farão parte do pacote “dominio” – Para cada aplicação iremos criar uma classe chamada Programa que pertencerá a pacote “controle” e que só conterá o método main.