Requisitos de Software
Por: Cleyton Lessa • 6/8/2018 • Trabalho acadêmico • 1.242 Palavras (5 Páginas) • 178 Visualizações
FUNDAÇÃO DE APOIO A ESCOLA TÉCNICA
IST RIO
CURSO DE GRADUAÇÃO EM ANÁLISE DE SISTEMAS
Requisitos de Software
Cleyton Lessa de Souza
Rio de Janeiro
06/2013
Padrão de Projeto
Padrão de projeto é uma solução para um problema existente e que já foi amplamente implementada e testada até ser catalogada como uma solução eficiente para tal problema.
O padrão não é a implementação em si, mas a ideia a ser implementada. Essa ideia pode ser adaptada e implementada de diferentes formas de acordo com o contexto e a necessidade de cada desenvolvedor.
Cada padrão possui quatro elementos principais:
- Nome: identifica o padrão;
- Problema: descreve quando o padrão deve ser utilizado;
- Solução: descreve os elementos, classes, objetos, relacionamentos e funções;
- Consequências: o resultado esperado com a aplicação do padrão.
Existem diversos catálogos de padrões, sendo os mais conhecidos:
- Padrões GoF
- Padrões JEE
- Padrões Microsoft
- Padrões Corporativos
- Padrões de Integração
- Padrões SOA
GoF (Gang of Four)
Em 1995, Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, quatro amigos e cientistas da computação, publicaram um catálogo fruto do seu estudo sobre padrões de projeto, o livro Design Patterns: Elements of Reusable Object-Oriented Software. Esses quatro amigos ficaram conhecidos como Gang of Four (GoF), assim como o seu catálogo, o mais conhecido até hoje.
O GoF organiza 23 padrões em 3 grupos:
- Criacionais - relacionados à criação de objetos;
- Estruturais - tratam as associações entre classes e objetos;
- Comportamentais - tratam das interações e divisões de responsabilidades entre as classes ou objetos.
A divisão fica da seguinte forma:
- Criacionais:
- Abstract Factory
- Builder
- Factory Method;
- Prototype
- Singleton
- Estruturais:
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Comportamentais:
- Chain of Responsability
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
Decorator
Padrão estrutural também conhecido como wrapper, permite adicionar um comportamento a um objeto dinamicamente em tempo de execução.
Intenção
Adicionar responsabilidade ao objeto sem a necessidade da criação de sub-classes.
Motivação
Objeto possui as funcionalidades básicas da classe, mas deve possuir mais alguma funcionalidade.
Instâncias individuais devem possuir certa funcionalidade.
Consequências
Oferece mais flexibilidade do que herança pois a adição ou remoção da funcionalidade ocorre em tempo de execução.
Evita o excesso de funcionalidades nas classes.
Comparações entre objetos se tornam mais complexas.
Diagrama de Classes
[pic 1]
Exemplo em Java
O código a seguir exemplifica uma situação na qual temos uma classe abstrata Texto e uma classe concreta TextoSimples que possui um método para exibir um texto. Implementa-se então a classe abstrata Decorator que extende Texto, da qual irão se extender todos os decoradores concretos, classes DecoradorBorda e DecoradorCabecalho.
public abstract class Texto {
protected String texto = "TEXTO";
public abstract void desenha();
}
class TextoSimples extends Texto {
public void desenha() {
System.out.print(texto);
}
}
abstract class Decorator extends Texto {
protected Texto textoDecorado;
public Decorator(Texto textoDecorado) {
this.textoDecorado = textoDecorado;
}
}
class DecoradorBorda extends Decorator {
public DecoradorBorda(Texto textoDecorado) {
super(textoDecorado);
}
public void desenha() {
...