A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrões - introdução O que é um padrão?

Apresentações semelhantes


Apresentação em tema: "Padrões - introdução O que é um padrão?"— Transcrição da apresentação:

1 Padrões - introdução O que é um padrão?
“Each pattern describing a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, withough ever doing the same way twice” (Christopher Alexander- “A pattern language”).

2 Padrão - 4 elementos essenciais
Nome Problema (descrição) Solução (Descrição abstrata) elementos relações colaborações responsabilidades Conseqüências resultados, vantagens, desvantagens (questões de linguagem, tempo, impacto na flexibilidade, extensibilidade, portabilidade)

3 Descrevendo um padrão- 1
Nome e classificação bom nome é essencial "criacional", estrutural (composição de objetos), comportamental (responsabilidades, interação) Propósito o que faz? qual o propósito? qual o problema que é resolvido? Outros Nomes Motivação um exemplo que ilustra o problema e como ele é resolvido pelo padrão

4 Descrevendo um padrão - 2
Aplicabilidade quando podemos aplicar? que exemplos de má arquitetura ele resolve? Estrutura representação gráfica das classes envolvidas Participantes classes e objetos envolvidos e suas responsabilidades Colaborações

5 Descrevendo um padrão - 3
Conseqüências como o padrão resolve o problema? quais são as vantagens e desvantagens? Implementação quais os cuidados? dicas? existem questões específicas para algumas linguagens? Exemplo de código Usos conhecidos Padrões relacionados quais padrões são semelhantes? quais as diferenças importantes? quais outros padrões devem ser utilizados conjuntamente?

6 Desenho de Aplicações Orientadas a Objeto (como padrões podem ajudar?)
Encontrar os objetos apropriados Objeto: dados + operações nomes + verbos colaborações e responsabilidades modelar mundo real (Ruim - nem todos os objetos tem similar) Padrões ajudam a encontrar abstrações não triviais Determinar granularidade (como decidir?) (e.g.. “Factory”)

7 Desenho OO - especificação de interfaces
Interface: conjunto de assinaturas Tipo ~ Interface (supertipo, subtipo) Interface != Implementação Padrões identificam elementos chaves das interfaces tipos de dados enviados pelas interfaces o que não colocar em uma interface (e.g. 2 interfaces, cópia e guardar estado) restrições a interfaces (classes que devem ter interfaces semelhantes)

8 Desenho OO - reutilização - herança vs. composição
caixa branca vs. caixa preta mais funcionalidade por código vs. por composição estático vs. dinâmico facilidade de modificação vs. modularidade e encapsulamento menos objetos vs. menos classes Favorecemos Composição

9 Desenho OO -reutilização - delegação
composição tão poderosa como herança análogo a subclasse deixar requisição para ser tratada por superclasse ex. janela delega cálculo de área para retângulo Cuidados necessário passar objeto original como parâmetro "software" altamente parametrizado difícil de escrever utilizar apenas quando simplifica desenho deve fazer parte de desenho altamente abstrato

10 Desenho OO - reutilização - tipos parametrizados
templates (C++), generics (Ada, Eiffel) define tipo sem especificar todos os tipos que ele utiliza versões específicas são criadas para cada parâmetro

11 Desenho OO - reutilização - exemplo
Algoritmo de ordenação, comparação implementada por subclasses (herança) responsabilidade do objeto a ser ordenado (delegação) argumento de uma “template” (parametrização)

12 Desenho OO - reutilização - diferenças
Composição de Objetos menos eficiente, mais dinâmico Herança e Parametrização mais eficientes, estáticas Parametrização inexiste em linguagens sem tipos estáticos (não é necessária)

13 Desenho OO - prevendo mudanças
Padrões podem ajudar a desenvolver sistemas mais tolerantes a mudanças eles podem ajudar de varias maneiras Padrões para criação indireta de objetos, impedem associação a uma classe específica (Abstract Factory, Factory Method, Prototype) Evitar associar satisfação de tarefa a implementação específica (Chain of Responsability, Command) Evitar dependências com plataformas (Abstract Factory, Bridge)

14 Desenho OO - prevendo mudanças - 2
Evitar dependências com implementações ou representações específicas de objetos (Abstract Factory, Bridge, Memento, Proxy) Evitar dependências em relação a algoritmos específicos (Builder, Iterator, Strategy, Template Method, Visitor) Evitar “tight-coupling” (classes com interdependência forte, onde uma não pode ser entendida sem saber o funcionamento da outra) (Abstract Factory, Bridge, Chain of Responsability, Command, Façade, Mediator, Observer) Extensão de funcionalidade por composição e não por sub-classeamento (Bridge, Chain of Responsibility, Composite, Decorator, Observer, Strategy) Moficar classes “difíceis” (e.g. não temos o código fonte) (Adapter, Decorator, Visitor)

15 Padrões não são caixas de ferramentas (toolkits)
caixas de ferramentas são bibliotecas de aplicativos que podem ser utilizados dentro de uma aplicação caixas de ferramentas são conjuntos de aplicativos com função genérica generalidade como em padrões, mas implementação específica e maior escopo

16 Padrões não são “frameworks”
função inversa a das caixas de ferramentas: conjunto de classes cooperantes para o qual o usuário escreve os aplicativos auxiliares todas as aplicações geradas têm a mesma estrutura, como em padrões diferentemente de padrões especificação de padrões é mais abstrata padrões são unidades menores padrões são menos especializados

17 Selecionando um padrão
importante conhecer conjunto de padrões e sua inter-relação isolar variabilidade no problema tratado selecionar padrões com a motivação correta (intent) entender padrões com função semelhante tentar evitar causas de reengenharia utilizando padrões que as combatem

18 Utilizando um padrão estudar padrão em detalhe para compreender responsabilidades e colaborações escolher nomes adequados para os participantes que reflitam sua utilização no domínio escolhido (nomes ruins indicam classes mal definidas) definir as classes definir nomes para operações que sejam adequados ao domínio do problema implementar as operações

19 Exemplo de aplicabilidade - Model View Controller
Em Smalltalk aplicações que utilizam interfaces visuais utilizam o modelo MVC Modelo representa os dados View representa a(s) aparência(s) visual(is) Controler represnta como o aplicativo reage a ações do usuário MVS separa estes elementos para criar um modelo padrão de interface e para possibilitar uma maior modularidade nos projetos de interface Models e Views podem ser independentes porque se comunicam por uma interface padrão de “notificação” e “assinatura”

20 MVC um exemplo: diagrama

21 MVC e padrões apesar de MVC se destinar especificamente à criaçao de interfaces, este desenho que separa o modelo de sua representação externa reflete um princípio mais geral onde a modificação de um objeto (modelo) pode refletir em vários outros (as representações). Este princípio é descrito pelo padrão “Observer”

22 MVC e padrões - 2 em MVC as representações (“View”) podem ser encaixadas. Por exemplo um painel de controle pode ser visto como uma representação composta de sub-representações (botões, graficos). Este tipo de desenho é descrito pelo padrão “Composite”.

23 MVC e padrões - 3 finalmente, em MVC podemos mudar a maneira pela qual um aplicativo responte à entrada do usuário mantendo seu modelo e sua represntação mas mudando o componente controlador. Este tipo de relação é descrita pelo padrão “Strategy”.


Carregar ppt "Padrões - introdução O que é um padrão?"

Apresentações semelhantes


Anúncios Google