Porquê PADRÕES? - Exemplo



Documentos relacionados
" ##$#$!% # & #$#$ !!!!"!

Padrões de Desenho (Design Patterns)

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos.

5838 Maquinação Introdução ao CNC

Análise e Projeto Orientados por Objetos

Padrões de Projeto de Software

Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.

O Processo de Projecto de Aeronaves

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Definindo um padrão para arquitetura Web

Structural Patterns - Bridge

DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA

Módulo III Padrões GOF

Composite. Padrões de Projeto. Composite. Prof. MSc Manfrine Santos. Anderson Fernandes Esteves. Manaus, Outubro de / 19

INF011 Padrões de Projeto. 04 Builder

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

CRIAÇÃO DE ANIMAÇÕES. 5.1 Tipos de animação. Frame-by-frame

Java para Desktop. Programação Orientada à Objetos 2 JSE

Mas o que é mesmo Padrão de Projeto?

Análise e Projeto Orientados por Objetos

O Processo de Projecto de Aeronaves

Módulo III Padrões GOF: Bridge

Padrões de Projeto de Software Orientado a Objetos

III.2 Modelos Mentais e Conceptuais II

Criar um recurso para QIM com ActivInspire - Studio

Desenho de Software. Sumário

Escola Profissional Agrícola de Lamego Ano Lectivo 2008 / 2009

Entender a concepção de alfabetização na perspectiva do letramento(sistema de notação e não a aquisição de um código) Analisar as contribuições da

Quick Installation Guide. Central Management Software

Tutorial 3ds Max Modelar e texturizar maçãs

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Fundamentos de Programação

Programação Orientada a Objetos. Padrões Estruturais

O Processo de Projeto de Aeronaves

Programação Orientada a Objetos

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo

Ferramentas Web, Web 2.0 e Software Livre em EVT

Classes e Objetos POO

Programação Orientada a Objetos. Padrões de Criação

SEO sem Limites - 3 Passos Básicos de SEO

Nome: Número: Segunda Parte (3 valores) Primeira Parte (7 valores)

2.7.2 Fichas de instrução 2.8 Dossier de fabricação para a maquinagem de peças mecânicas 2.9 Determinação do método de fabricação

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA DEPARTAMENTO DE ENGENHARIA MECÂNICA CRIANDO BLOCOS. Professor: João Carmo

Sumário. Prefácio 12. Capítulo 1 - Técnicas Simples Para um Código Limpo 23

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04

Vítor E. Silva Souza

RHINOCEROS 4.0 RHINOCEROS 4.0

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Observer. Edeyson Andrade Gomes

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto

Engenharia de Software

Introdução à Programação. Encapsulamento e Herança

Padrões de Projeto. B r i dge. B r i d ge. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Classificação: Intenção:

Acções de Formação AGEPOR

Análise da Base Nacional Comum Curricular de Matemática. Revisado por Phil Daro, USA Common Core Standards

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

ALUNO: RONI FABIO BANASZEWSKI

TECNOLOGIAS APLICADAS

Guia do C.a.R. para Alunos do Terceiro Ciclo

Documento Auxiliar do Conhecimento de Transporte Eletrônico

Especificação Formal de Software

Padrões de Projeto de Software

Boletins Informativos

1º Exame IPM 2013 / 2014

Funções Compostas. Fundamentos de Algoritmos. Projeto de programas complexos. Roteiro. Um programa é composto por definições de funções e variáveis

GABARITO AULA 01. a-4; b-1; c-2; d-3; e-5.

Padrões contexto problema solução

Engenharia de Software

Definição de circuitos melhores: São circuitos menores, mais rápidos, consomem menos energia.

Biblioteca de auxílio ao uso de elementos gráficos

Experiência 04: Comandos para testes e identificação do computador na rede.

OpenOffice.org. tutorial apresentação

1 - Ambiente de desenvolvimento

O micromundo Mathsticks: uma forma dinâmica para interagir algebricamente

PLANIFICAÇÃO MODULAR Ano Lectivo 2016/2017

BASE DE DADOS DE PUBLICAÇÕES NO SISTEMA FENIX

TUTORIAL DE MODELAGEM NO RHINOCEROS NESPRESSO. Micaela Benezra Maia Computação Gráfica I Prof. Eduardo Cardoso 2014/1

Quadrados de Palito 6º ao 8º ano

Figura Uso de coordenadas polares

Comandos básicos do AutoCAD

Aprendizagem de Máquina

MagicCylinder. Sistemas automáticos de pintura a pó. Your global partner for high quality powder coating

Observer. Problema. Objetivo

Illustrator CS6 Plano de Aula - 24 Aulas (Aulas de 1 Hora).

Um sistema de numeração posicional utiliza um conjunto de símbolos. O valor que cada

Colocar em prática. Colocar em prática. Tópicos para aprender

Introdução ao SolidWorks

CAPÍTULO 3 PORTAS LÓGICAS E ÁLGEBRA BOOLEANA

Conteúdo programático

POO Programação Orientada a Objetos

CONCEITOS BÁSICOS E MODELO DE PROJETO

Engenharia de Software

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Structural Patterns - Adapter

Análise e Projeto. Padrões de Análise, Arquitetura e Projeto

Transcrição:

Porquê PADRÕES? - Exemplo Problema: extrair informação de um sistema CAD/CAM para um sistema pericial Sistema pericial controla a produção de uma peça Sistema pericial tem vida mais longa do que CAD/CAM Escrever a ferramenta de extracção de informação de modo a poder ser facilmente adaptada a novas versões do CAD/CAM Especificação da peça de metal (Geometria): Dimensões exteriores e Características (features): Slot Hole Cutout Special Irregular Fonte: Shalloway, Trott 2005 31 Exemplo Desenhar um programa que permita que o sistema pericial leia o modelo descrevendo a geometria de uma peça Seguidamente o sistema pericial gera os comandos para que uma máquina de controlo numérico (NC) construa a peça de metal Sistema a desenvolver: Analisar peças de folha de metal Ver como elas devem ser fabricadas, com base nas características Gerar um conjunto de instruções que sejam lidas pelo equipamento de produção (conjunto NC) Dar as instruções ao equipamento de produção quando se pretende fazer a peça Tipo de comandos a usar e a sua ordem depende das características e da sua relação com outras características regras no sistema pericial 32 1

Exemplo Permitir que o sistema pericial trabalhe com novas versões do CAD/CAM Isolar uma parte do sistema, protegendo-a de outra que tem grande probabilidade de mudar 33 Dados 2 sistemas CAD/CAM como construir um extractor de informação que pareça o mesmo para um cliente independentemente de qual é usado? 34 2

Exemplo: Primeira solução 35 Exemplo: Primeira solução Desvantagens desta solução: Redundância entre métodos Forte acoplamento características ligadas uma às outras indirectamente Fraca coesão métodos que executam funções principais estão divididos pelas classes mas principal problema é prever futuro se aparece uma 3ª versão do CAD/CAM? Que se passa com as classes? Excesso de confiança na herança implica custos de manutenção maiores do que os desejávies 36 3

Objectos Visão tradicional de objectos: dados com métodos Olhar para os objectos apenas por uma perspectiva de implementação Nova visão: entidade com responsabilidades perspectiva conceptual Responsabilidades definem o comportamento do objecto Foco no que o objecto faz ajuda a não entrar nos detalhes de implementação muito cedo Só é necessário atender à interface pública do objecto 37 Encapsulamento Visão tradicional do encapsulamento: ocultar dados Nova visão: encapsulamento ocultar qualquer coisa Dados, Implementações, classes derivadas, detalhes de desenho Encapsular dados: dados em Point, Line, Square e Circle estão escondidos de tudo o resto Encapsular métodos: Set Location em Circle Encapsular outros objectos: só Circle tem conhecimento de XXCircle Encapsular tipos: Clientes de Shape não vêem Points, Lines, Squares e Circles 38 4

Encapsulamento e padrões GoF: Considerar o que pode ser variável no desenho Aproximação oposta à de focar na causa do redesenho Em vez de considerar o que pode forçar uma alteração no desenho, considerar o que se pode querer alterar sem redesenho Encapsular o conceito que varia Padrões de desenho Muitos padrões de desenho usam encapsulamento para criar níveis entre objectos podem-se alterar um lado sem afectar o outro lado 39 Análise de comunalidade e variabilidade (James Coplien) Identificar onde as coisas variam e depois identificar como variam Análise de comunalidade: procurar elementos comuns que ajudam a perceber como os elementos de uma família são idênticos O processo de encontrar as coisas comuns define a família Análise de variabilidade: ver como os membros da família diferem Caneta de quadro, lápis, lapiseira instrumentos de escrita (família) usam-se em diferentes materiais, têm forma diferente, Usar análise de comunalidade e variabilidade para encontrar classes 40 5

Relação entre análise de comunalidade e variabilidade, perspectivas e classes abstractas 41 Pensar com Padrões 1. Identificar os padrões 2. Analisar e aplicar os padrões, repetir os passos para cada padrão que ainda não foi incluído no desenho conceptual: 1. Ordenar os padrões pela forma como criam o contexto para cada um dos outros padrões 2. Seleccionar o padrão e expandir o desenho: usando a ordenação feita, seleccionar o próximo padrão e usá-lo para criar um desenho conceptual de alto nível 3. Identificar padrões adicionais 3. Adicionar pormenores: expandir a definição de classes e métodos 42 6

Solução CAD/CAM com Padrões 1. Identificar padrões Abstract Factory: cria conjuntos de objectos relacionados (famílias) Adapter: adapta uma classe existente A à interface necessária para a classe B usar Bridge: Permite que diferentes implementações sejam usadas por um conjunto de objectos relacionados Facade: simplifica um sistema existente A, para uso por uma classe B 2. a) Ordenar os padrões pela forma como criam o contexto para cada um dos outros padrões Contexto = condições interrelacionadas nas quais algo ocorre 43 Solução CAD/CAM com Padrões Ordenar os padrões pela forma como criam o contexto para cada um dos outros padrões Factory o seu contexto é definido pela organização dos objectos que cria Um padrão define a forma como outro se comporta? Dois padrões influenciam-se mutuamente? Adapter Bridge Adapter modificar a interface de uma classe noutra interface que o cliente espera a interface que precisa de adaptação é OOGFeature Bridge separar vários exemplos concretos de uma abstracção da sua implementação a abstracção é Feature e a implementação são os sistemas V1 e V2 Bridge necessita do Adapter para modificar a interface OOGFeature o Bridge usa o Adapter Bridge cria o contexto para Adapter 44 7

Solução CAD/CAM com Padrões Falta Bridge - Facade e Facade Adapter Bridge Facade Facade usado para simplificar interface do sistema V1 Quem usa a nova interface criada é o Bridge: Bridge cria o contexto para Facade Bridge é o padrão que estabelece o contexto para os outros 45 Solução CAD/CAM com Padrões 2. b) Seleccionar o padrão e expandir o desenho padrão BRIDGE abstracção Implementações Diferentes Features com diferentes implementações - > Bridge 46 8

Forma canónica do padrão Bridge Aplicação do padrão Bridge 47 Solução CAD/CAM com Padrões Passos 2.a) e 2.b) com Facade, Adapter Verificar se Facade e Adapter criam contexto um para o outro Relacionados com diferentes partes do desenho independentes Usar ordem arbitrária Aplicar Facade - para simplificar interface do sistema V1 48 9

Solução CAD/CAM com Padrões Passos 2.a) e 2.b) com Adapter Aplicar Adapter para modificar a interface OOGFeature 49 Solução CAD/CAM com Padrões Passos 2.a) e 2.b) com Abstract Factory Aplicar Abstract Factory para garantir que todos os objectos de implementação eram do tipo V1 se tinha um sistema V1 e do tipo V2 se tinha um sistema V2 Desnecessário porque a classe Model sabe-o encapsula a regra de criação 50 10

Comparando soluções Solução Inicial Solução com padrões 51 AJAX Patterns http://ajaxpatterns.org/ 52 11