1) O documento discute padrões de projetos orientados a objetos, especificamente padrões estruturais e comportamentais. 2) Padrões estruturais como Decorator e Facade tratam de como classes e objetos são compostos para formar estruturas maiores, enquanto padrões comportamentais como Observer e Strategy tratam de algoritmos e responsabilidades entre objetos. 3) Exemplos e diagramas são fornecidos para ilustrar como cada padrão é aplicado na prática.
Este documento fornece instruções sobre como modelar elementos arquitetônicos básicos como paredes, portas, janelas e colunas no Revit 2013. Inclui tópicos sobre como adicionar, modificar e definir propriedades destes elementos, além de melhores práticas e solução de problemas.
1) O documento discute o projeto e implementação de software, incluindo projeto orientado a objetos com UML, padrões de projeto e questões de implementação.
2) É destacado que o projeto e implementação de software envolvem atividades intercaladas, com o projeto identificando componentes e relacionamentos baseados nos requisitos, e a implementação realizando o projeto em um programa.
3) Exemplos de um processo de projeto orientado a objetos são apresentados, cobrindo contexto, casos de uso, arquitetura, classes de objet
O documento discute padrões de projeto de software. Apresenta uma introdução sobre o que são padrões de projeto e sua motivação. Também descreve conceitos básicos como atributos, problemas resolvidos e tipos de padrões.
O documento descreve a história e conceitos dos padrões de projeto orientados a objetos. Christopher Alexander cunhou o termo "padrões de projeto" para descrever soluções comuns a problemas recorrentes. Os padrões GoF tornaram-se populares em 1995 e descrevem padrões criacionais, estruturais e comportamentais.
O documento descreve o padrão de projeto Abstract Factory, que fornece uma interface para criação de objetos delegando instanciações para subclasses. Ele é aplicado em um cenário de serviços bancários de um caixa eletrônico, onde a fábrica abstrata cria produtos como extratos e saldos de forma diferente para cada banco concreto, mantendo a aplicação cliente independente de implementações específicas.
O documento apresenta uma introdução sobre padrões de projeto, definindo-os como estruturas recorrentes no projeto de software orientado a objetos. Descreve brevemente os principais tipos de padrões (criação, estruturais e comportamentais) e alguns exemplos de cada um. Por fim, fornece referências adicionais sobre padrões de projeto.
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Lucas Furtado de Oliveira
1. O documento descreve o modelo MVC (Model-View-Controller) como um padrão de projeto composto que utiliza os padrões Observer, Composite e Strategy.
2. O objetivo é definir as responsabilidades dos participantes do MVC e demonstrar como ocorrem suas relações.
3. Será realizado um estudo das componentes do MVC e uma simulação de um projeto utilizando esta metodologia através de uma linguagem orientada a objetos.
O documento apresenta uma introdução sobre padrões de projeto, definindo o que são padrões e sua estrutura. Também descreve o histórico dos padrões de projeto, desde a arquitetura até o livro "Design Patterns", e apresenta algumas classificações e exemplos de padrões.
Este documento fornece instruções sobre como modelar elementos arquitetônicos básicos como paredes, portas, janelas e colunas no Revit 2013. Inclui tópicos sobre como adicionar, modificar e definir propriedades destes elementos, além de melhores práticas e solução de problemas.
1) O documento discute o projeto e implementação de software, incluindo projeto orientado a objetos com UML, padrões de projeto e questões de implementação.
2) É destacado que o projeto e implementação de software envolvem atividades intercaladas, com o projeto identificando componentes e relacionamentos baseados nos requisitos, e a implementação realizando o projeto em um programa.
3) Exemplos de um processo de projeto orientado a objetos são apresentados, cobrindo contexto, casos de uso, arquitetura, classes de objet
O documento discute padrões de projeto de software. Apresenta uma introdução sobre o que são padrões de projeto e sua motivação. Também descreve conceitos básicos como atributos, problemas resolvidos e tipos de padrões.
O documento descreve a história e conceitos dos padrões de projeto orientados a objetos. Christopher Alexander cunhou o termo "padrões de projeto" para descrever soluções comuns a problemas recorrentes. Os padrões GoF tornaram-se populares em 1995 e descrevem padrões criacionais, estruturais e comportamentais.
O documento descreve o padrão de projeto Abstract Factory, que fornece uma interface para criação de objetos delegando instanciações para subclasses. Ele é aplicado em um cenário de serviços bancários de um caixa eletrônico, onde a fábrica abstrata cria produtos como extratos e saldos de forma diferente para cada banco concreto, mantendo a aplicação cliente independente de implementações específicas.
O documento apresenta uma introdução sobre padrões de projeto, definindo-os como estruturas recorrentes no projeto de software orientado a objetos. Descreve brevemente os principais tipos de padrões (criação, estruturais e comportamentais) e alguns exemplos de cada um. Por fim, fornece referências adicionais sobre padrões de projeto.
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Lucas Furtado de Oliveira
1. O documento descreve o modelo MVC (Model-View-Controller) como um padrão de projeto composto que utiliza os padrões Observer, Composite e Strategy.
2. O objetivo é definir as responsabilidades dos participantes do MVC e demonstrar como ocorrem suas relações.
3. Será realizado um estudo das componentes do MVC e uma simulação de um projeto utilizando esta metodologia através de uma linguagem orientada a objetos.
O documento apresenta uma introdução sobre padrões de projeto, definindo o que são padrões e sua estrutura. Também descreve o histórico dos padrões de projeto, desde a arquitetura até o livro "Design Patterns", e apresenta algumas classificações e exemplos de padrões.
O documento discute frameworks de sistemas de software, definindo-os como soluções para famílias de problemas semelhantes que especificam como objetos colaboram para resolver responsabilidades. O documento classifica frameworks, descreve suas características e propriedades, técnicas de customização, diferenças em relação a outras abordagens, processos de desenvolvimento e documentação, e fornece exemplos de frameworks.
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
Os frameworks fornecem infraestrutura de projeto que reduz o tempo para produção de aplicações, aumentando o reuso de design, código e testes. Frameworks definem a arquitetura e fluxo de execução das aplicações, liberando o desenvolvedor para estender o comportamento do framework.
s O documento descreve a metodologia Objectory para desenvolvimento de software orientado a objetos. s A metodologia inclui fases de análise, construção e teste. s Na fase de análise, os requisitos são modelados em casos de uso, interfaces e domínio de objetos. Objetos são categorizados e agrupados em subsistemas.
O documento resume alguns padrões de projeto creacionais e estruturais, como Abstract Factory, Builder, Factory Method, Prototype, Singleton, Adapter, Bridge, Composite e Decorator. Ele descreve o propósito e aplicações de cada padrão.
O documento apresenta os conceitos de desenvolvimento baseado em componentes, reutilização de software, frameworks e modelagem de domínio. Explora a importância da reutilização e apresenta métodos como Catalysis e UML Components para especificar requisitos e desenvolver software reutilizável de forma orientada a objetos ou baseada em componentes.
O documento apresenta uma visão geral de UML (Linguagem de Modelagem Unificada), incluindo:
1) UML é um padrão da OMG para modelagem visual, especificação, construção e documentação de software orientado a objetos.
2) São apresentados diversos diagramas estruturais e comportamentais de UML como classe, caso de uso, sequência.
3) As vantagens da modelagem com UML incluem comunicação, entendimento, administração de riscos e reutilização.
O documento apresenta uma introdução sobre Design Patterns, descrevendo os desafios da área de software e a necessidade de padrões para resolver problemas comuns. Apresenta os 23 padrões descritos no livro "Design Patterns" divididos em três categorias: Criação, Estrutura e Comportamento. Resume cada categoria listando os padrões e suas finalidades.
Visual C# é uma linguagem de programação para desenvolvimento de aplicações no .NET Framework. O MVC é um modelo arquitetural que separa representação de dados, interação do usuário e regras de negócio, enquanto WCF e SOA permitem a construção de aplicações baseadas em serviços. Classes definem estruturas de dados com métodos, objetos são instâncias de classes, e arrays armazenam listas de elementos do mesmo tipo indexados numericamente.
Nesta apresentação é exibido os principais padrões de projetos para criação de um software baseado em programação orientada a objetos escalável e de forma evolutiva.
UML é uma linguagem padrão para modelagem de sistemas orientados a objetos. Apresenta diagramas para visualizar, especificar, construir e documentar aspectos estruturais e comportamentais de um sistema, incluindo classes, relacionamentos, casos de uso e sequências de eventos.
O documento discute padrões de projeto comumente usados em jogos, incluindo Builder, State, Command, Memento, Mediator e Observer. É explicado o que são padrões de projeto e suas categorias, além de diagramas de classe e sequência e casos de uso para cada um desses padrões.
Este documento apresenta definições e exemplos de vários diagramas usados na análise e projeto de sistemas, incluindo diagramas de fluxo de dados, caso de uso, classe, pacotes, interação e estado. O objetivo é fornecer uma visão geral desses diagramas e como eles podem ser usados para modelar sistemas.
O documento descreve a história e conceitos de padrões de projeto de software. Apresenta os 23 padrões de projeto documentados no livro "Design Patterns" de 1995, divididos nas categorias criacionais, comportamentais e estruturais. Explica brevemente alguns padrões como Singleton, Factory Method, Observer, Composite e MVC.
O documento apresenta uma palestra sobre padrões de projeto, definindo-os como soluções para problemas comuns na programação orientada a objetos. Apresenta as três principais classes de padrões - Criação, Estruturais e Comportamentais - e exemplifica três padrões: Builder para construção flexível de objetos complexos, Decorator para adicionar responsabilidades dinamicamente e Strategy para variar algoritmos de forma independente. A conclusão reforça a importância dos padrões sem seguí-los rigidamente.
O documento apresenta uma introdução à modelagem de software com UML. Discute o histórico das técnicas de modelagem orientadas a objetos e a evolução para a UML. Apresenta os principais elementos da UML como diagramas, visões de um sistema, mecanismos gerais como estereótipos e pacotes. Inclui detalhes sobre diagramas de casos de uso, seus componentes como casos de uso, atores e relacionamentos.
Este documento apresenta conceitos avançados de C# e .NET, incluindo:
1) Design de classes, interfaces, delegates e coleções;
2) Elementos como métodos anônimos, delegates genéricos e interfaces genéricas.
3) O foco é no uso de boas práticas de programação orientada a objetos.
O documento descreve o padrão de projeto Abstract Factory. O padrão fornece uma interface para criação de famílias de objetos relacionados sem especificar suas classes concretas, permitindo que sistemas sejam independentes de como seus produtos são criados e representados. O padrão isola classes concretas dos clientes e facilita a troca de famílias de produtos.
Este documento discute os conceitos de banco de dados orientados a objetos (BDOO), incluindo suas características principais como persistência, objetos complexos, identidade de objetos, encapsulamento, hierarquia de classes e herança. Também aborda tópicos como transações, concorrência, gerenciamento de recuperação, versionamento, consultas e padrões/especificações.
O documento descreve o Modelo OSI, que foi desenvolvido pela ISO para padronizar a comunicação entre sistemas abertos através de uma arquitetura baseada em camadas. O modelo define 7 camadas hierárquicas que especificam funções como transmissão de dados, endereçamento e comunicação entre aplicações. A adoção do modelo permitiu a interoperabilidade entre sistemas de diferentes fabricantes.
O documento apresenta o framework Entities, que fornece suporte para o desenvolvimento de sistemas web com interfaces personalizáveis geradas a partir de mapeamentos entre objetos e interfaces de usuário. O framework implementa o padrão arquitetural Naked Objects e permite a geração automática de interfaces customizadas através da linguagem NOVL e anotações nas classes de domínio. Exemplos demonstram como o framework pode ser usado para desenvolver uma aplicação de aprovação de horas extras com diferentes visões geradas para cada caso de uso.
O documento discute frameworks de sistemas de software, definindo-os como soluções para famílias de problemas semelhantes que especificam como objetos colaboram para resolver responsabilidades. O documento classifica frameworks, descreve suas características e propriedades, técnicas de customização, diferenças em relação a outras abordagens, processos de desenvolvimento e documentação, e fornece exemplos de frameworks.
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
Os frameworks fornecem infraestrutura de projeto que reduz o tempo para produção de aplicações, aumentando o reuso de design, código e testes. Frameworks definem a arquitetura e fluxo de execução das aplicações, liberando o desenvolvedor para estender o comportamento do framework.
s O documento descreve a metodologia Objectory para desenvolvimento de software orientado a objetos. s A metodologia inclui fases de análise, construção e teste. s Na fase de análise, os requisitos são modelados em casos de uso, interfaces e domínio de objetos. Objetos são categorizados e agrupados em subsistemas.
O documento resume alguns padrões de projeto creacionais e estruturais, como Abstract Factory, Builder, Factory Method, Prototype, Singleton, Adapter, Bridge, Composite e Decorator. Ele descreve o propósito e aplicações de cada padrão.
O documento apresenta os conceitos de desenvolvimento baseado em componentes, reutilização de software, frameworks e modelagem de domínio. Explora a importância da reutilização e apresenta métodos como Catalysis e UML Components para especificar requisitos e desenvolver software reutilizável de forma orientada a objetos ou baseada em componentes.
O documento apresenta uma visão geral de UML (Linguagem de Modelagem Unificada), incluindo:
1) UML é um padrão da OMG para modelagem visual, especificação, construção e documentação de software orientado a objetos.
2) São apresentados diversos diagramas estruturais e comportamentais de UML como classe, caso de uso, sequência.
3) As vantagens da modelagem com UML incluem comunicação, entendimento, administração de riscos e reutilização.
O documento apresenta uma introdução sobre Design Patterns, descrevendo os desafios da área de software e a necessidade de padrões para resolver problemas comuns. Apresenta os 23 padrões descritos no livro "Design Patterns" divididos em três categorias: Criação, Estrutura e Comportamento. Resume cada categoria listando os padrões e suas finalidades.
Visual C# é uma linguagem de programação para desenvolvimento de aplicações no .NET Framework. O MVC é um modelo arquitetural que separa representação de dados, interação do usuário e regras de negócio, enquanto WCF e SOA permitem a construção de aplicações baseadas em serviços. Classes definem estruturas de dados com métodos, objetos são instâncias de classes, e arrays armazenam listas de elementos do mesmo tipo indexados numericamente.
Nesta apresentação é exibido os principais padrões de projetos para criação de um software baseado em programação orientada a objetos escalável e de forma evolutiva.
UML é uma linguagem padrão para modelagem de sistemas orientados a objetos. Apresenta diagramas para visualizar, especificar, construir e documentar aspectos estruturais e comportamentais de um sistema, incluindo classes, relacionamentos, casos de uso e sequências de eventos.
O documento discute padrões de projeto comumente usados em jogos, incluindo Builder, State, Command, Memento, Mediator e Observer. É explicado o que são padrões de projeto e suas categorias, além de diagramas de classe e sequência e casos de uso para cada um desses padrões.
Este documento apresenta definições e exemplos de vários diagramas usados na análise e projeto de sistemas, incluindo diagramas de fluxo de dados, caso de uso, classe, pacotes, interação e estado. O objetivo é fornecer uma visão geral desses diagramas e como eles podem ser usados para modelar sistemas.
O documento descreve a história e conceitos de padrões de projeto de software. Apresenta os 23 padrões de projeto documentados no livro "Design Patterns" de 1995, divididos nas categorias criacionais, comportamentais e estruturais. Explica brevemente alguns padrões como Singleton, Factory Method, Observer, Composite e MVC.
O documento apresenta uma palestra sobre padrões de projeto, definindo-os como soluções para problemas comuns na programação orientada a objetos. Apresenta as três principais classes de padrões - Criação, Estruturais e Comportamentais - e exemplifica três padrões: Builder para construção flexível de objetos complexos, Decorator para adicionar responsabilidades dinamicamente e Strategy para variar algoritmos de forma independente. A conclusão reforça a importância dos padrões sem seguí-los rigidamente.
O documento apresenta uma introdução à modelagem de software com UML. Discute o histórico das técnicas de modelagem orientadas a objetos e a evolução para a UML. Apresenta os principais elementos da UML como diagramas, visões de um sistema, mecanismos gerais como estereótipos e pacotes. Inclui detalhes sobre diagramas de casos de uso, seus componentes como casos de uso, atores e relacionamentos.
Este documento apresenta conceitos avançados de C# e .NET, incluindo:
1) Design de classes, interfaces, delegates e coleções;
2) Elementos como métodos anônimos, delegates genéricos e interfaces genéricas.
3) O foco é no uso de boas práticas de programação orientada a objetos.
O documento descreve o padrão de projeto Abstract Factory. O padrão fornece uma interface para criação de famílias de objetos relacionados sem especificar suas classes concretas, permitindo que sistemas sejam independentes de como seus produtos são criados e representados. O padrão isola classes concretas dos clientes e facilita a troca de famílias de produtos.
Este documento discute os conceitos de banco de dados orientados a objetos (BDOO), incluindo suas características principais como persistência, objetos complexos, identidade de objetos, encapsulamento, hierarquia de classes e herança. Também aborda tópicos como transações, concorrência, gerenciamento de recuperação, versionamento, consultas e padrões/especificações.
O documento descreve o Modelo OSI, que foi desenvolvido pela ISO para padronizar a comunicação entre sistemas abertos através de uma arquitetura baseada em camadas. O modelo define 7 camadas hierárquicas que especificam funções como transmissão de dados, endereçamento e comunicação entre aplicações. A adoção do modelo permitiu a interoperabilidade entre sistemas de diferentes fabricantes.
O documento apresenta o framework Entities, que fornece suporte para o desenvolvimento de sistemas web com interfaces personalizáveis geradas a partir de mapeamentos entre objetos e interfaces de usuário. O framework implementa o padrão arquitetural Naked Objects e permite a geração automática de interfaces customizadas através da linguagem NOVL e anotações nas classes de domínio. Exemplos demonstram como o framework pode ser usado para desenvolver uma aplicação de aprovação de horas extras com diferentes visões geradas para cada caso de uso.
1. padrões de projetos orientados à objetos
Padrões de Projetos Estruturais e Comportamentais
Gustavo Carvalho Souza
4 Agosto 2017
Seminário Apresentado à disciplina de Linguagens de Programação
Universidade Federal de Lavras - UFLA
Programa de Pós Graduação em Ciência da Computação
4. visão geral
1. Contexto
• Preocupam-se com a forma como classes e objetos são
compostos para formar estruturas maiores.
• Ao contrário dos padrões de projetos criacionais, que são
principalmente maneiras diferentes de cumprir o mesmo
propósito fundamental, cada padrão estrutural tem um propósito
diferente.
4
5. visão geral
2. Padrões Estruturais de classe
• Os padrões estruturais de classes utilizam a herança para compor
interfaces ou implementações.
5
6. visão geral
3. Padrões Estruturais de Objetos
• Os padrões estruturais de objetos descrevem maneiras de compor
objetos para obter novas funcionalidades, em lugar de compor
interfaces ou implementações.
6
8. decorator
• Intenção: Agregar responsabilidades adicionais a um objeto,
fornecendo uma alternativa flexível ao uso de subclasses para
extensão de funcionalidades.
• Motivação: Necessidade de acrescentar responsabilidades a
objetos individuais, e não a toda classe.
• Cenário: um toolkit para construção de interfaces gráficas de
usuário deveria permitir a adição de propriedades, como
bordas, ou comportamentos, como rolamento, para qualquer
componente da interface do usuário.
• Utilizar Herança é a melhor solução?
• Embutir o componente em outro objeto que acrescente a borda é
uma solução mais flexível?
8
9. decorator
• Quando embutirmos o componente em outro objeto que possui
borda teremos:
• O objeto que envolve o primeiro é chamado de decorator.
• Este decorator segue a interface do componente que o decora.
• O decorator repassa solicitações para o componente, podendo
executar ações adicionais (tais como desenhar uma borda) antes
ou depois do repasse.
• A transparência permite encaixar decoradores recursivamente,
desta forma permitindo um número ilimitado de
responsabilidades adicionais.
• Aplicação: Suponha que tenhamos um objeto TextView que
exibe texto numa janela.
• TextView não tem barras de rolamento nem borda preta espessa
ao redor do objeto porque nem sempre a necessitamos;
9
10. decorator
• Pode-se acrescentar barras de rolamento no TextView utilizando
um ScrollDecorator.
• Pode-se acrescentar bordas pretas no TextView usando um
objeto BorderDecorator.
• Isto é feito compondo os decoradores com TextView.
Figure 1: Composição dos decoradores com o TextView. (Gamma et al.,
2006)
10
11. decorator
• Diagrama de Objetos
Figure 2: Composição de um objeto TextView com objetos
BorderDecorator e ScrollDecorator para produzir uma visão do texto
cercada por bordas e rolável.
11
12. decorator
• Diagrama de Classes
Figure 3: Diagrama de classes para a aplicação de composição de
decoradores com o TextView. (Gamma et al., 2006)
12
13. decorator
• Estrutura e Participantes
Figure 4: Estrutura e participantes da composição de
decorators.(Gamma et al., 2006)
13
14. decorator
• Aplicabilidade
Quando usar Decorator?
• para acrescentar responsabilidades a objetos individuais de
forma dinâmica sem afetar outros objetos;
• para responsabilidades que podem ser removidas;
• quando a extensão através do uso de subclasses não é prática.
• Consequências
Possui pelo menos dois benefícios e duas deficiências.
1. Maior flexibilidade do que a herança estática;
2. Evita classes sobrecarregadas de características na parte superior
da hierarquia;
3. Um decorador e o seu componente não são idênticos;
4. Grande quantidade de pequenos objetos.
14
17. façade
• Intenção: Fornecer uma interface unificada para um conjunto de
interfaces em um subsistema. Façade define uma interface de
nível mais alto que torna o subsistema mais fácil de ser usado.
• Motivação: Estruturar um sistema em subsistemas ajuda a
reduzir a complexidade. Um objeto façade (fachada) fornece
uma interface única e simplificada para os recursos e
facilidades mais gerais de um subsistema.
Figure 5: Apresentação de sistemas sendo estruturados em
subsistemas. (Gamma et al., 2006)
17
18. façade
• Aplicação: Um ambiente de programação que fornece acesso às
aplicações para o seu subsistema compilador.
• Esse subsistema contém classes, tais como Scanner, Parser,
ProgramNode, BytecodeStream e ProgramNodeBuilder, que
implementam o compilador.
• A maioria dos clientes de um compilador apenas querem compilar
seu código.
• Para fornecer uma interface de nível mais alto o subsistema
compilador também inclui uma classe Compiler.
• A classe Compiler funciona como uma fachada: oferece aos
clientes uma interface única e simples para o subsistema
compilador.
18
19. façade
• O compilador Façade torna a vida mais fácil sem ocultar a
funcionalidade de nível mais baixo dos poucos que a
necessitam.
Figure 6: Classes do subsistema compilador. (Gamma et al., 2006) 19
20. façade
• Aplicabilidade
Quando usar o padrão Façade:
• caso deseje fornecer uma interface simples para um subsistema
complexo.
• caso exista muitas dependências entre clientes e classes de
implementação de uma abstração.
• caso deseje estruturar seus subsistemas em camadas.
20
21. façade
• Estruturas e Participantes
• Façade:
• conhece quais as classes do subsistema são responsáveis pelo
atendimento de uma solicitação;
• delega solicitações de clientes a objetos apropriados do
subsistema.
• Classes de Subsistema:
• implementam a funcionalidade do subsistema;
• encarregam-se do trabalho atribuído a elas pelo objeto Façade;
• não têm conhecimento da façade; isto é, não mantêm referências
para a mesma.
Figure 7: Estrutura e participantes do padrão Façade. (Gamma et al., 2006) 21
22. façade
• Consequências
Benefícios ao se utilizar Façade:
• Isola os clientes dos componentes do subsistema, dessa forma
reduzindo o número de objetos com que os clientes têm que lidar
e tornando o subsistema mais fácil de usar;
• Promove um acoplamento fraco entre o subsistema e seus
clientes;
• Não impede as aplicações de utilizarem as classes do subsistema
caso necessitem fazê-lo. Assim, você pode escolher entre a
facilidade de uso e a generalidade.
22
24. observação sobre padrões estruturais
• Dependem do mesmo conjunto de mecanismos de linguagem
para a estruturação do código e de objetos: herança simples e
múltipla para padrões baseados em classes e composição de
objetos para padrões de objetos;
• Apresentam intenções diferentes.
24
26. visão geral
1. Contexto
• Preocupam-se com algoritmos e a atribuição de
responsabilidades entre objetos. Os padrões comportamentais
não descrevem apenas padrões de objetos ou classes, mas
também os padrões de comunicação entre eles.
26
27. visão geral
2. Padrões Comportamentais de Classe
• Os padrões comportamentais de classe utilizam a herança para
distribuir o comportamento entre classes.
27
28. visão geral
3. Padrões Comportamentais de Objetos
• Os padrões comportamentais de objeto utilizam a composição
de objetos em vez da herança.
28
30. observer
• Intenção: Definir uma dependência um-para-muitos entre
objetos, de maneira que quando um objeto muda de estado
todos os seus dependentes são notificados e atualizados
automaticamente.
• Motivação: Necessidade de separar aspectos de apresentação
dos dados da aplicação.
• Cenário: toolkits para construção de interfaces gráficas de
usuário separam os aspectos de apresentação da interface do
usuário dos dados da aplicação subjacente.
• As classes que definem dados da aplicação e da apresentação
podem ser reutilizadas independentemente.
• Estas classes podem também trabalhar em conjunto.
• A planilha e o gráfico de barras não têm conhecimento um do
outro, desta forma permitindo reutilizar somente o objeto de que
você necessita.
• Ao mudar a informação na planilha, o gráfico de barras reflete as
mudanças imediatamente, e vice-versa.
30
31. observer
• Os objetos-chave nesse padrão são subject (assunto) e
observer (observador).
Figure 8: Apresentação do cenário utilizando observer. (Gamma et al., 2006)
• Um subject pode ter um número qualquer de observadores
dependentes.
• Todos os observadores são notificados quando o subject sofre
uma mudança de estado.
• Cada observador inquirirá o subject para sincronizar o seu
estado com o estado do subject. 31
32. observer
• Aplicabilidade
O padrão Observer pode ser usado em situações:
• quando uma abstração tem dois aspectos dependentes entre si,
de maneira que encapsulando estes aspectos em objetos
separados permite-se variá-los e reutilizá-los
independentemente;
• quando uma mudança em um objeto exige mudanças em outros;
• quando um objeto deve ser capaz de notificar outros objetos.
32
33. observer
• Estrutura e Participantes
Figure 9: Estrutura e Participantes utilizados no padrão observer.
(Gamma et al., 2006)
33
37. strategy
• Intenção: Definir uma família de algoritmos, encapsular cada
uma delas e torná-las intercambiáveis. Strategy permite que o
algoritmo varie independentemente dos clientes que o utilizam.
• Motivação: Considere uns algoritmos para quebrar um stream
de texto em linhas. Codificar de maneira fixa e rígida tais
algoritmos nas classes que os utilizam não é desejável.
• Cenário: Criar classes que encapsulam diferentes algoritmos de
quebra de linhas. Este algoritmo encapsulado é chamado de
strategy (estratégia).
• Aplicação: Suponha que uma classe Composition seja
responsável pela manutenção e atualização das quebras de
linhas de texto exibidas num visualizador de texto.
• As estratégias de quebra de linhas não são implementadas pela
classe Composition.
• São implementadas separadamente por subclasses da classe
abstrata Compositor
37
38. strategy
• SimpleCompositor: Implementa uma estratégia com quebras de
linha, uma por vez.
• TeXCompositor: Implementa o algoritmo encontrar quebras de
linhas, otimizando globalmente as quebras de linhas.
• ArrayCompositor: Implementa uma estratégia que seleciona
quebras de maneira que cada linha tenha um número fixo de
itens.
Figure 10: Implementação de quebras de linha usando padrão Strategy.
(Gamma et al., 2006)
38
39. strategy
• Estrutura e Participantes
Figure 11: Estrutura e participantes do padrão Strategy. Gamma et al., 2006
39
40. strategy
• Aplicabilidade
Usar o padrão Strategy quando:
• muitas classes relacionadas diferem somente no seu
comportamento;
• um algoritmo usa dados dos quais os clientes não deveriam ter
conhecimento;
• uma classe define muitos comportamentos, e estes aparecem em
suas operações como múltiplos comandos condicionais da
linguagem.
40
41. strategy
• Consequências
O padrão Strategy tem os seguintes benefícios e desvantagens:
• Famílias de algoritmos relacionados;
• Estratégias eliminam comandos condicionais da linguagem de
programação;
• A possibilidade de escolha de implementações;
• Aumento do número de objetos.
41
43. observação sobre padrões comportamentais
• Com poucas exceções, os padrões comportamentais
complementam e reforçam uns aos outros.
• Os padrões comportamentais também funcionam bem com
outros padrões.
43
44. conclusão
• Padrões de projetos estruturais preocupam-se em como
relacionar classes e objetos para gerar estruturas de projetos
maiores, diferenciando-se entre si pelas suas intenções;
• Padrões de projetos comportamentais preocupam-se com os
algoritmos e as responsabilidades entre objetos.
44
45. referência
Gamma, E., Johnson, R., Helm, R., & Vlissides, J. (2006). Padrões de projetos:
soluções reutilizáveis. BOOKMAN COMPANHIA ED. Retrieved from
https://books.google.com.br/books?id=V0Ey1KF3zwcC
45