Arquitetura e padrões de software

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

PADRÕES DE PROJETO..
Design Patterns Patrícia Mateus nº3343 Carla Guerreiro nº3157
Modelagem de Software Orientado a Objetos
Design Patterns Builder Pattern
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
Eduardo Bezerra Padrões GoF Eduardo Bezerra
Chain of Responsibility
Padrões - introdução O que é um padrão?
Padrão de Construção Factory Method
Design Patterns Projeto de Sistemas de Software.
Fundamentos da Engenharia de Software
Módulo III Padrões GOF Professores
Projeto de Sistemas de Software
Padrões de Projeto Aplicações empresariais são complexas
Design Patterns e você. Jay Moretti Grupo de desenvolvedores Actionscripts do Brasil
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Padrões de Projeto These slides complement the E-book, Programming in the Large With Design Patterns available on both Kindle and Nook. Additional supporting.
Design Pattern (Padrões de Projeto)
1 Padrões de Software Padrões GoF (Parte 2) Eduardo Bezerra Outubro/2005.
Padrões de Projeto.
AULA 04 - POO. História 02 (usar interface): De acordo com o tipo do cliente implementar um método para dar desconto. Nesse processo está envolvido o.
Introdução Padrões de Projeto
Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema.
Padrões de Projeto.
Design Patterns A adoção dos padrões terá um efeito profundo e duradouro sobre a forma de escrevermos programas Ward Cunningham e Ralph Johnson.
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto Alcides Calsavara
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Padrão Composite Definição
1 - Introdução a Padrões de Projeto
Padrões de Projetos Professora Lucélia. Conceitos É uma solução conhecida para um problema comum São técnicas que nos dão uma boa solução para determinados.
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/65 Padrões de Projeto.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Padrões de Projeto Composite Observer Strategy Factory Method Mediator Façade.
Padrões de Projeto Estruturais
Introdução OO.
Princípios de Análise e Projeto de Sistemas com UML 2ª edição
POO - Introdução Prof. Eduardo Falcão.
Singleton Definição: Quando usar? Tipo de padrão? Como? estrutural.
Projeto de PLP (2006.1) Extensão da Linguagem OO1
Java: Interfaces Alcides Calsavara.
FUNDAMENTOS DE PROGRAMAÇÃO
Singleton e Template Method
Aula 9 – Padrão Decorator
Elisabeth Suescún Leandra Mara da Silva
4 CONCEITOS BÁSICOS EM POO
Análise e Projetos de Sistemas
Padrões de Projeto Comportamentais
Padrões de Projeto Estruturais
Prof. Eduardo Bezerra CEFET/RJ Bacharelado em Ciência da Computação Arquitetura e padrões de software Prof. Eduardo Bezerra
Prof. Eduardo Bezerra CEFET/RJ Bacharelado em Ciência da Computação Arquitetura e padrões de software Prof. Eduardo Bezerra
Arquitetura e padrões de software
Paradigma de Orientação a Objetos
Arquitetura e padrões de software
Padrões de Projeto.
Transcrição da apresentação:

Arquitetura e padrões de software Eduardo Bezerra (CEFET/RJ) ebezerra@cefet-rj.br

Padrões Gang oF four Visão Geral

Referência

Definição ALEXANDER, C. et al. A Pattern Language: Towns, Buildings, Construction. Oxford University Press, New York, NY, 1977.

Catálogo GoF Fonte da figura: GoF Book

Categorização dos padrões GoF Os 23 padrões GoF podem ser categorizados de acordo com dois critérios: escopo e a finalidade. De acordo com o escopo: classe (4); objeto (20) De acordo com a finalidade: estruturais (7); de criação (5); comportamentais (11)

Categorização por escopo Escopo de classe Descrevem relacionamentos entre classes e suas subclasses (herança). Estáticos: relacionamentos são fixos e definidos em tempo de compilação. Escopo de objeto Descrevem relacionamentos entre objetos. Dinâmicos: relacionamentos entre objetos podem ser alterados em tempo de execução.

Categorização por finalidade Estruturais Tratam da composição de classes e objetos para formar estruturas complexas. Associados à maneira como classes e objetos são organizados estruturalmente. Oferecem formas efetivas para usar conceitos OO como herança e composição. São abstrações de aspectos estruturais

Categorização por finalidade De criação Associados ao processo de criação de objetos Tornam um sistema independente de como seus objetos são criados, compostos e representados Comportamentais Têm a ver com a maneira pela qual responsabilidades são distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de aspectos comportamentais

Categorização por finalidade Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Padrões de Criação Padrões Estruturais Padrões de Comportamento

Categorização dos padrões GoF Fonte da figura: Argo Navis, curso J930 - Padrões de Design

Resumo do catálogo

Resumo do padrões GoF (1/7) 1. Adapter: Converter a interface de uma classe em outra interface esperada pelos clientes. 2. Façade: Oferecer uma interface única de nível mais elevado para um conjunto de interfaces de um subsistema. 3. Composite: Permitir o tratamento de objetos individuais e composições hierárquicas desses objetos de maneira uniforme. 4. Bridge: Desacoplar uma abstração de sua implementação, de tal forma que os dois possam variar independentemente.

Resumo do padrões GoF (2/7) 5. Singleton: Garantir que uma classe só tenha uma única instância, e prover um ponto de acesso global a ela. 6. Observer: Definir uma dependência um-para-muitos entre objetos para que, quando um objeto mudar de estado, os seus dependentes sejam notificados e atualizados. 7. Mediator: Definir um objeto que encapsula a forma como um conjunto de objetos interage.

Resumo do padrões GoF (3/7) 8. Proxy: Prover um substituto ou ponto através do qual um objeto possa controlar o acesso a outro. 9. Chain of Responsibility: Compor objetos em cascata para, através dela, delegar uma requisição até que um objeto a sirva. 10. Flyweight: Usar compartilhamento para suportar eficientemente grandes quantidades de objetos complexos.

Resumo do padrões GoF (4/7) 11. Builder: Separar a construção de objeto complexo da representação para criar representações diferentes com mesmo processo. 12. Factory Method: Definir uma interface para criar um objeto mas deixar que subclasses decidam que classe instanciar. 13. Abstract Factory: Prover interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.

Resumo do padrões GoF (5/7) 14. Prototype: Especificar tipos a criar usando uma instância como protótipo e criar novos objetos ao copiar este protótipo. 15. Memento: Externalizar o estado interno de um objeto para que o objeto possa ter esse estado restaurado posteriormente. 16. Template Method: Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses. 17. State: Permitir a um objeto alterar o seu comportamento quando o seu estado interno mudar.

Resumo do padrões GoF (6/7) 18. Strategy: Definir uma família de algoritmos, encapsular cada um, e fazê-los intercambiáveis. 19. Command: Encapsular uma requisição como objeto, para parametrizar clientes com diferentes requisições, filas e dar suporte a ações reversíveis. 20. Interpreter: Dada uma linguagem, definir uma representação para sua gramática junto com um interpretador.

Resumo do padrões GoF (7/7) 21. Decorator: Anexar responsabilidades adicionais a um objeto dinamicamente. 22. Iterator: Prover acesso sequencial a elementos de um objeto agregado, sem expor sua representação interna. 23. Visitor: Representar uma operação a ser realizada sobre os elementos de uma estrutura de objetos.

Princípios de projeto

Princípios de projeto GoF Programar para uma interface, em vez de para uma implementação. “program to an interface, not an implementation (i.e. "separate interface from implementation")” Relacionado ao DIP. Encapsule o que varia “encapsulate the thing that varies (separate the things that change from the things that stay the same [.])” Favorecer a composição de objetos, em vez da herança de classes. “favor object composition over class inheritance” Fonte: GoF Book

Herança vs composição A herança e a composição permitem o reuso de tipos predefinidos na definição de novos tipos. Há vantagens e desvantagens tanto na herança quanto na delegação. Em geral, não é recomendado utilizar herança: Para representar papéis de uma superclasse. Quando a subclasse herda propriedades que não se aplicam a ela. Quando um objeto de uma subclasse pode se transformar em um objeto de outra subclasse. Por exemplo, um objeto Cliente se transforma em um objeto Funcionário.

Herança vs composição Vantagens da composição sobre a herança: um objeto pode reusar o comportamento de outro sem que o primeiro precise ser uma subclasse do segundo. o compartilhamento de comportamento e o reuso podem ser realizados em tempo de execução. Desvantagens da composição sobre a herança: desempenho (implica em enviar uma mensagem). não pode ser utilizada quando uma classe parcialmente abstrata está envolvida.

Herança vs composição A herança é uma forma de criar novos tipo, na qual são criados novos tipos como especializações de tipos pré- existentes. Os subtipos herdam as propriedades do supertipo. A composição é outra forma de criar novos tipos, na qual um objeto incorpora funcionalidades de outro através de delegações aos métodos deste último. Quando um objeto não pode realizar uma operação por si próprio, ele delega uma parte dela para seu(s) objeto(s) componente(s).

Herança vs composição 25

Herança vs composição - exercício Altere o projeto de classes abaixo para usar composição, em vez de herança.