Buscar

Oswaldo Borges Peres PADRÕES DE PROJETO Aula 09

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

PADRÕES DE PROJETO DE SOFTWARE
Aula 9 – Padrões GRASP 
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
O que veremos nesta oitava aula
Continuar o estudo da família de padrões GRASP;
Conhecer os padrões GRASP: Coesão Alta, Controlador e Polimorfismo;
Aprender as principais aplicações e funcionalidades destes padrões;
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Polymorphism (Polimorfismo)
Problema:
Como tratar alternativas em função do tipo da classe?
O uso de ifs aninhados ou switch-case para selecionar comportamento em função do tipo de classe espalha-se por todo o código, dificultando a Manutenção
Solução:
Seleção do comportamento desejado através do mecanismo de polimorfismo
Utilização de polimorfismo aplicado ao conceito de interfaces para permitir a substituição de componentes
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
If(tipo_pagamento == CARTAO_CREDITO)
 autorizar_credito()
Else
 If(tipo_pagamento == CARTAO_DEBITO)
 autorizar_debito()
 Else
 If(tipo_pagamento == CHEQUE)
 autorizar_cheque()
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
 High Cohesion (Coesão alta)
Problema:
Como manter a complexidade sob controle?
As classes são difíceis de compreender
As classes são difíceis de reutilizar
As classes são difíceis de manter
As classes são frágeis, sendo afetadas por praticamente todas as modificações
Solução:
Atribuir responsabilidade de forma que as classes não fiquem sobrecarregadas, e que as suas atribuições sejam relacionadas
O padrão High Cohesion também deve ser visto como um padrão de avaliação de padrões
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
 High Cohesion (Coesão alta)
Tipos:
Funcional: ocorre quando um módulo executa um e somente um cálculo, e então retorna o resultado;
Em camada: ocorre quando uma camada de mais alto nível tem acesso a serviços de camadas mais baixas, mas camadas mais baixas, não tem acesso a camadas mais altas.
Comunicacional: todas as operações que tem acesso aos mesmos dados são definidas dentro de uma classe. 
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Controller(Controlador)
Problema: 
Quem deveria ser responsável por tratar um evento do sistema? 
Solução: atribuir a responsabilidade do tratamento de um evento do sistema a uma classe que representa uma das seguintes escolhas: 
Representa o “sistema” todo (controlador fachada) 
Representa um tratador oficial de todos os eventos de sistema de um caso de uso (controlador de caso de uso) 
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Exemplo
PADRÕES GRASP – AULA 9
PADRÕES DE PROJETO DE SOFTWARE
Bibliografia
Utilizando UML e Padrões: uma introdução à análise e ao projeto orientados a objetos - 3ª Edição
Autor: Larman, Craig
Padrões de Projeto: soluções reutilizáveis de software orientado a objetos
Autor: Gamma, Erich ... [et al]
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando