A ATIVIDADE SUPERVISIONADA 06
Por: pablocavalcante • 12/6/2022 • Trabalho acadêmico • 1.134 Palavras (5 Páginas) • 131 Visualizações
Engenharia de Software
Design de Software
ATIVIDADE SUPERVISIONADA 06
Utilize o livro texto “Software Design”, por David Budgen, cap. 10 – “Design Patterns”, pág. 213 a 230.
- O que são Design Patterns? E quais os elementos básicos e essenciais que os constituem?
São soluções genericamente otimizadas para problemas comuns em projeto de software. Segundo Christopher Alexander, cada padrão descreve um problema no nosso ambiente e o cerne da sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca fazê-lo da mesma maneira.
Em geral, um padrão tem quatro elementos essenciais:
- O nome do padrão - é uma referência que podemos usar para descrever um problema de projeto, suas soluções e consequências em uma ou duas palavras.
- O problema - descreve em que situação aplicar o padrão. Ele explica o problema e seu contexto.
- A solução - descreve os elementos que compõem o padrão de projeto, seus relacionamentos, suas responsabilidades e colaborações.
- As consequências - são os resultados e análises das vantagens e desvantagens (trade-offs) da aplicação do padrão.
- Escreva sobre a adaptação da solução geral no contexto de um problema específico, conforme o livro texto “Software Design”, por David Budgen, cap. 10 – “Design Patterns”.
A adaptação da solução geral para atender a necessidade local específica continua sendo uma tarefa criativa para o designer, da mesma forma que o programador que sabe qual construção de loop é melhor empregada para um problema ainda deve decidir a melhor forma de organizá-la para se ajustar ao contexto específico de seu particular programa e suas estruturas de dados.
- Explique como os padrões de projeto são descritos e o porquê as notações gráficas não são suficientes.
As notações gráficas, embora sejam importantes e úteis, não são suficientes porque eles simplesmente capturam o produto final do processo de projeto como relacionamentos entre classes e objetos.
Os padrões de projeto são descritos usando um formato consistente. Cada padrão é dividido em seções de acordo com o gabarito a seguir. O gabarito fornece uma estrutura uniforme às informações, tornando os padrões de projeto mais fáceis de aprender, comparar e usar.
- Nome e classificação do padrão
- Intenção e objetivo
- Também conhecido como
- Motivação
- Aplicabilidade
- Estrutura
- Participantes
- Colaborações
- Implementação
- Exemplo de código
- Usos conhecidos
- Padrões relacionados
- Um catálogo de padrões de projeto podem ser classificados de várias maneiras. Quais os dois eixos adotados pelo GoF?
Os dois eixos são: de acordo com o propósito, que descreve para que um padrão é usado; e de acordo com o escopo, que descreve se o padrão é principalmente aquele que aborda o uso de classes ou o uso de objetos (onde podemos considerar as classes como sendo os "modelos" a partir dos quais os objetos são instanciados).
- No eixo de propósito, ainda podemos ter três subcategorias de finalidade, as quais os padrões podem ser distribuídos. Quais são elas?
- Padrões de criação ou criacionais: se preocupam com o processo de criação de objetos.
- Padrões de estrutura ou estruturais: se preocupam com a composição de classes ou de objetos.
- Padrões de comportamentos ou comportamentais: se preocupam ou lidam com as maneiras pelas quais classes e objetos interagem e distribuem responsabilidades.
- Quais são, classificadamente, os vinte e três padrões de projeto propostos pelo GoF dentro do escopo de propósito/objetivo?
De criação:
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
De estrutura:
- Adapter
- Bridge
- Composite
- Decorator
- Façade
- Flyweight
- Proxy
De comportamento:
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
- De cada uma classificação da questão anterior, escolha um padrão de projeto mostrando qual é a sua intenção e a sua aplicabilidade
Padrão de criação Builder
- Intenção: separar 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.
- Aplicabilidade:
É usado quando
- o algoritmo para criação de um objeto complexo deve ser independente das partes que compõem o objeto e de como elas são montadas.
- o processo de construção deve permitir diferentes representações para o objeto que é construído.
Padrão de criação Decorator
- Intenção: dinamicamente, agregar responsabilidades adicionais a um objeto. Os Decorators fornecem uma alternativa flexível ao uso de subclasses para extensão de funcionalidades.
- Aplicabilidade:
É usado
- para acrescentar responsabilidades a objetos individuais de forma dinâmica e transparente, ou seja, sem afetar outros objetos.
- para responsabilidades que podem ser removidas.
- quanto a extensão através do uso de subclasses não é prática.
Padrão de comportamento 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.
- Aplicabilidade:
Usado em qualquer uma das seguintes situações:
- quando uma abstração tem dois aspectos, um depende do outro. Encapsulando esses aspectos em objetos separados, permite-se variá-los e reutilizá-los independentemente.
- quando uma mudança em um objeto exige mudanças em outros, e você não sabe quantos objetos necessitam ser mudados.
- quando um objeto deveria ser capaz de notificar outros objetos sem fazer hipóteses, ou usar informações, sobre quem são esses objetos. Em outras palavras, você não quer que esses objetos sejam fortemente acoplados.
- Fale sobre anti-padrões de projeto e a literatura dos antipadrões.
Segundo Long (2001), os anti-padrões de design (projeto) são “soluções óbvias, mas erradas, para problemas recorrentes”. Além disso, a literatura de antipadrões tende a colocar mais ênfase nas razões pelas quais as soluções erradas são adotadas, ao invés das formas das próprias soluções erradas (Brown et al., 1998).
...