Baixe o app para aproveitar ainda mais
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] * * * * * * * * * * * * * * * *
Compartilhar