• Nenhum resultado encontrado

17-Padroes

N/A
N/A
Protected

Academic year: 2021

Share "17-Padroes"

Copied!
29
0
0

Texto

(1)

Engenharia de Software Orientada a

objetos

Prof. Rogério Celestino dos Santos

(2)
(3)

Introdução

Os princípios de projeto fornecem os fundamentos

necessários para o entendimento de o que é um bom

projeto

Entretanto, não é retratado claramente como se pode

obter um bom projeto

Para facilitar o entendimento de como fazer um bom

projeto, esse conhecimento foi codificado na forma de

padrões

(4)

Introdução

Padrões descrevem, em um formato estruturado, um

problema e uma possível solução para este problema

Padrões não são criados, são descobertos!

 A solução descrita foi aplicada com sucesso por especialistas da área inúmeras vezes, podendo ser considerada uma boa solução

As principais utilidades de um padrão estão

relacionadas com

 Formalização e propagação do conhecimento

 Uniformização do vocabulário

(5)

Introdução

Uma linguagem de padrões agrega um conjunto de

padrões relacionados para um contexto em particular

No contexto de projeto orientado a objetos foi criada

uma linguagem de padrões conhecida como GRASP

(Larman, G.; 2007)

 GRASP – General Responsability Assignment Software Patterns

 Os padrões GRASP descrevem os princípios

fundamentais para a atribuição de responsabilidades em projetos OO

(6)

Padrões

Padrões Básicos

 Especialista (“Expert”)

 Criador (“Creator”)

 Alta coesão (“High Cohesion”)

 Baixo acoplamento (“Low Coupling”)

 Controlador (“Controler”)

(7)

Padrão Especialista

FUNÇÃO : atribuir responsabilidade ao especialista

da informação - a classe que tem a informação

necessária para satisfazer uma responsabilidade.

Baseado na idéia de WIRFS-BROOKS -

classes-responsabilidades-colaboração (CRC)

Auxilia na determinação de métodos das classes e na

(8)

Padrão Especialista

1-Definir objetos de domínio do problema dentro do

use case

2-A partir dos eventos do use case, fazer a pergunta

“de quem é a responsabilidade por realizar isto?”. Em

primeira instância, seria da classe que tem as

informações necessárias para tal.

3-Definir agora que COLABORAÇÕES são

necessárias (informações necessárias) de outros

objetos para realizar a RESPONSABILIDADE do

objeto considerado.

‘4-Para cada objeto responsável pelas colaborações

(que têm a responsabilidade de realizá-las), repetir o

ítem 3.

(9)

Padrão Especialista

Ex:

 Q: No use case Compra Itens, de quem é a

responsabilidade por calcular o total de vendas?

 R: Quem tem as informações necessárias para tal é a classe VENDA.

 Q: Que informação (colaboração) é necessária para determinar este total?

 R: Precisamos conhecer instâncias de Item de Venda e a soma de seus subtotais. Assim, a

responsabilidade por calcular os subtotais é deste subtotal é da classe Item de Venda. Temos então uma mensagem indo de Venda para Item de Venda.

(10)

Padrão Especialista

Q: Para calcular o subtotal, o que precisa Item de

Venda conhecer?

R: O preço do produto. Quem tem esta informação é

o objeto Produto. Logo, cria-se uma mensagem de

Item de Venda para Produto (retornarPreço)

(11)

Padrão Especialista

2: c alc ul arS ubtota l V enda It em de

V enda

P roduto 1: c alc ularTotal

(12)

Padrão Especialista

Benefícios:

 Leva a projetos onde o objeto de software faz o que o objeto real faria

 Mantém o encapsulamento e não aumenta o acoplamento, pois utiliza informações próprias

 Distribui o comportamento uniformemente entre as classes do sistema, aumentando a coesão das

mesmas

Também conhecido como

 “Quem sabe, faz”

 “Faço eu mesmo”

(13)

Padrão Criador

FUNÇÃO: Atribuir à classe B a responsabilidade de

criar uma instância da classe A se:

 B contém objetos A (todo-parte);

 B usa objetos A;

 B possui dados de inicialização que serão passados para A quando for criado.

(14)

Padrão Criador

Ex:(Compra Itens)

 A responsabilidade de criação de Itens de Venda deve ser de classe que contenha instâncias dos mesmos. Então a responsabilidade de criação da mesma deve ser da classe Venda.

(15)

Padrão Criador

V enda Item de V enda 2: c riar(quantidade) 1: c riarItem deV enda(quantidade)

(16)

Padrão Criador

Benefício:

 Não aumenta o acoplamento, pois a visibilidade entre as classes envolvidas já existia

(17)

Padrão Baixo Acoplamento

FUNÇÃO: Atribuir uma responsabilidade de forma a

conseguir acomplamento fraco entre classes.

Atribuir a responsabilidade de modo que o

acoplamento (dependência entre classes) permaneça

baixo

O padrão Acoplamento Fraco deve ser utilizado como

(18)

Padrão Baixo Acoplamento

Controle de V enda

V enda

2: regis trarP agam ento() 1: regis trarP agam ento()

P agam e nto 3: Cri ar

(19)

Padrão Baixo Acoplamento

P aga me n to Controle de

V enda V enda

2: re gis t ra rP agam ento() 3: c riar 1: regis trarP agam ento()

(20)

Padrão Baixo Acoplamento

Benefícios

 Responsabilidade não é (ou é pouco) afetada por mudanças em outros componentes

 Responsabilidade é mais simples de entender isoladamente

(21)

Padrão Alta Coesão

FUNÇÃO: Atribuir uma responsabilidade de forma a

manter uma alta coesão.

A coesão mede quão fortemente relacionadas e

(22)

Padrão Alta Coesão

Níveis de coesão

 Muito baixa

 Um classe tem muitas responsabilidades em áreas funcionais bastantes diferentes

 Baixa

 Um classe é responsável por uma tarefa complexa de uma única área funcional

(23)

Padrão Alta Coesão

Níveis de coesão

 Moderada

 Um classe tem moderadas responsabilidades em uma única área funcional e colabora com outras classes para cumprir suas tarefas

 Alta

 Um classe tem responsabilidades leves apenas em algumas áreas que estão logicamente relacionadas com o conceito da classe

(24)

Padrão Alta Coesão

Alta coesão na prática:

 Classes têm usualmente poucos métodos altamente relacionados

 Tarefas mais complexas são delegadas a objetos associados

Analogia ao mundo real:

 Pessoas que não delegam responsabilidades e fazem muitas coisas diferentes ao mesmo tempo tendem a não ser eficientes

(25)

Padrão Alta Coesão

Benefícios:

 Clareza e facilidade de compreensão do projeto

 Simplificação das atividades de manutenção

 Favorecimento indireto do baixo acoplamento

 Facilidade de reutilização, graças à classe ser muito específica

Alguns casos de coesão moderada trazem benefícios,

(26)

Padrão Controlador

Atribuir a responsabilidade de tratar uma mensagem

de evento de sistema a uma classe que trate eventos

de sistema de um use case.

Esta classe é uma classe de controle.

Os eventos de sistemas devem ser tratados por uma

das classes abaixo:

 Representante do sistema como um todo (Facade)

 Representante do negócio ou da organização

 Representante do caso de uso em questão (tratador artificial)

(27)

Padrão Controlador

Benefícios

 Maior chance de reuso

 Melhor controle sobre o estado do caso de uso

 A separação view-controller facilita a reutilização de componentes específicos de negócio e permite o uso dos serviços através de processamento em lote (batch)

 A utilização de uma única classe para todos os eventos de um caso de uso possibilita a manutenção de estado do caso de uso como atributos dessa classe

(28)

Padrão Controlador

Considerações

 Não sobrecarregar controlador com um número

excessivo de eventos, responsabilidades ou atributos

 Adicionar mais controladores e/ou delegar responsabilidades

 Evitar controladores representando papéis humanos

 Risco de baixa coesão; responsabilidades devem ser delegadas para objetos contendo a informação necessária (padrão Especialista)

O controlador deve ser somente o maestro... não

deve tocar nenhum dos instrumentos (mesmo que dê

muita vontade)

(29)

Exercícios

1.

Como a UML pode auxiliar na elaboração de Projetos

Orientados a Objetos?

2.

Conceitue padrões.

3.

O que é GRASP?

4.

Existem 5 Padrões GRASP:

 Criador

 Especialista

 Acoplamento Baixo

 Controlador

 Coesão Alta

 Defina, pelo menos 3, dos padrões GRASP em um parágrafo e como eles podem ser aplicados.

Pesquise algumas aplicações para eles.

Referências

Documentos relacionados

Como o processo de padronização de extratos alergênicos em medicina veterinária ainda não é uma realidade e alérgenos principais para cães podem diferir daqueles

Inscrições na Biblioteca Municipal de Ourém ou através do n.º de tel. Organização: Município de Ourém, OurémViva e grupos de teatro de associações e escolas do

3 - A introdução no território nacional por compra, cedência ou troca direta, tendo em vista a sua reprodução, de cães potencialmente perigosos das raças constantes da

Sendo assim, entendemos com o autor, quando ele diz que a história da figura do mediador “merece alguns parágrafos” (CASTRO ROCHA, 2010, p. 10), já que acreditamos que a

Portanto, conclu´ımos que a dinˆ amica efetiva de campo m´ edio de um sistema quˆ antico fermiˆ onico autointeragente de spin 1/2 descrito pelo MFAO, quando sujeito a quebras

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Cty Cp Đầu Tư Kiến Trúc Xây Dựng Toàn Thịnh Phát kietbsc@gmail.com thienduc_branch@yahoo.com .vn C.Ty Tnhh Công Nghệ Và Thương Mại Phương

Ali diz que, ao voltar, Jesus permanecerá nos ares enquanto somos levados ao Seu encontro: “Porquanto o Senhor mesmo, dada a Sua palavra de ordem, ouvida a voz do arcanjo, e ressoada