1 1 Uma Noção Intuitiva dos Padrões de Desenho de Software Prof. Dr. Italo S. Vega [email protected] 5 de dezembro de 2001 São Paulo, SP Copyright © 2001, ISVega Dezembro de 2001 2 Agenda Motivação (5 min.) Padrões (20 min.) Exemplo (10 min.) Conclusões (5 min.) 40 min. Copyright © 2001, ISVega Copyright © 2001, ISVega Dezembro de 2001 Dezembro de 2001 2 3 Motivação 5 min. Copyright © 2001, ISVega Dezembro de 2001 4 Inspiração “Padrões do mundo real são repetitivos -- sob certas circunstâncias -- pois sempre existirão formas de relacionamentos ajustadas às forças existentes naquelas circunstâncias.” Christopher Alexander Def. Padrão é uma solução genérica para um determinado sistema de forças no mundo. Copyright © 2001, ISVega Copyright © 2001, ISVega Dezembro de 2001 Dezembro de 2001 3 5 Padrões em Sistemas de SW Em software OO, objetos do mundo real são transformados em software e hardware, produzindo resultados reais. Obs 1. Objetos do mundo real se adaptaram para lidar com certas forças presentes no contexto onde eles se encontram. Obs 2. Os relacionamentos entre tais objetos podem ser observados tanto no mundo real, quanto nos objetos de software. Copyright © 2001, ISVega Dezembro de 2001 6 Padrões Builder Adapter Decorator Façade Proxy Interpreter Iterator 20 min. Copyright © 2001, ISVega Copyright © 2001, ISVega Dezembro de 2001 Dezembro de 2001 4 7 Padrão: Builder Descrição. Separa a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações. Exemplo: montagem de um lanche pelo caixa (builder). Pedido típico: lanche principal, acompanhamento, bebida e um brinde. Padrão: o processo de construção do lanche é sempre o mesmo, ocorrendo variação em alguns ingredientes. pedido cliente caixa ajudante incluir incluir incluir incluir pedido Copyright © 2001, ISVega Dezembro de 2001 8 Padrão: Adapter Descrição. Adapta duas classes incompatíveis de modo que possam atuar em conjunto. Exemplo: adaptador de rosca de torneira. Padrão: um adaptador de rosca de torneira permite que encanamentos com diâmetros distintos possam ser conectados. Copyright © 2001, ISVega Copyright © 2001, ISVega Dezembro de 2001 Dezembro de 2001 5 9 Padrão: Decorator Descrição. Acrescenta, dinamicamente, novas propriedades a um objeto. Exemplo: ornamentos natalinos (decorators). Ornamentos: lâmpadas, bolas, velas, estrelas, cartões, acrescentados a uma pinheiro. Padrão: os ornamentos não alteram o pinheiro propriamente dito, mas ele passa a ser conhecido por “árvore de Natal”. Copyright © 2001, ISVega Dezembro de 2001 10 Padrão: Façade Descrição. Define uma interface unificada e de alto nível para um subsistema, facilitando o seu uso. Exemplo: atendente (façade). Compra por telefone: o cliente seleciona o produto de um catálogo e fala com um atendente. Padrão: o atendente atua como uma interface para o departamento de vendas, o departamento de cobrança e o departamento de entrega. Copyright © 2001, ISVega Copyright © 2001, ISVega cliente atendente compra (calça, cartão, endereço) vendas calça cobrança cartão entrega endereço Dezembro de 2001 Dezembro de 2001 6 11 Padrão: Proxy Descrição. Atua como um substituto ou procurador de um objeto. Exemplo: cheque bancário (proxy). Padrão: um cheque pode ser usado no lugar do dinheiro disponível na conta-corrente de um cliente. substituído n Copyright © 2001, ISVega Dezembro de 2001 12 Padrão: Interpreter Descrição. Define uma representação gramatical de uma linguagem e um interpretador para interpretar a gramática. Exemplo: músico (interpreter). Padrão: notação musical define o tom e duração de uma nota (linguagem musical); o músico interpreta a notação e toca o instrumento, reproduzindo a música. Copyright © 2001, ISVega Copyright © 2001, ISVega Dezembro de 2001 Dezembro de 2001 7 14 Exemplo 10 min. Copyright © 2001, ISVega Dezembro de 2001 15 Evolução A empresa XYZ pretende substituir um módulo de negócio que recebe dados via uma rede de comunicação que utiliza o protocolo X25. O novo módulo de negócio utiliza o protocolo TCP/IP, e reutiliza a mesma base de dados do módulo em substituição. O sistema, como um todo, deve reaproveitar as telas originais, sendo que várias têm acesso à base de dados, e algumas devem interagir com o novo módulo de negócio. Copyright © 2001, ISVega Copyright © 2001, ISVega «remote» Servidor «system» XYZ X25 Tela 1 Módulo de Negócio Antigo Tela 2 Base de Dados Dezembro de 2001 Dezembro de 2001 8 17 Agenda Motivação (5 min.) Padrões (20 min.) Exemplo (10 min.) Conclusões (5 min.) 5 min. Copyright © 2001, ISVega Dezembro de 2001 18 Conclusões Exemplos são úteis para aumentar o poder expressivo dos padrões. Exemplos ajudam na aprendizagem do processo de elaboração de modelos. Exemplos ajudam a explorar conhecimento anterior para entender novos conceitos. Copyright © 2001, ISVega Copyright © 2001, ISVega Dezembro de 2001 Dezembro de 2001 9 19 Referências Alexander, C. The Timeless Way of Building. Oxford University Press, Nwe York, NY, 1979. Duell, M. Non-Software Examples of Software Design Patterns. Object Magazine, July 1997, pp. 52-57. Gamma, E. R., et al. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA, 1995. Copyright © 2001, ISVega Copyright © 2001, ISVega Dezembro de 2001 Dezembro de 2001