• Nenhum resultado encontrado

ES1 11 Codificacao Padroes 01

N/A
N/A
Protected

Academic year: 2021

Share "ES1 11 Codificacao Padroes 01"

Copied!
46
0
0

Texto

(1)

Engenharia de Software 1

11 - Codifica¸c˜

ao:

Padr˜

oes de projeto comportamentais

Alexandre de Andrade Barbosa

alexandre.barbosa@arapiraca.ufal.br

(2)

Objetivos

Objetivos

Relembrar o padr˜

ao de projeto Template Method

Apresentar o padr˜

ao de projeto Strategy

Descrever um exemplo ilustrativo da utiliza¸

ao do Strategy

Apresentar o padr˜

ao de projeto Observer

(3)

Padr˜

oes de comportamento

Cat´

alogo de padr˜

oes

Cria¸

ao

Estrutura

Comportamento

Factory Method

Adapter (classe)

Interpreter

Classe

Template Method

Abstract Factory

Adapter (objeto)

Chain of Responsibility

Objeto

Builder

Bridge

Command

Prototype

Composite

Iterator

Singleton

Decorator

Mediator

Fa¸

cade

Memento

Flyweight

Observer

Proxy

State

Strategy

Visitor

(4)

Padr˜

oes de comportamento

Template Method

Template Method

Comportamento / Classe

(5)

Padr˜

oes de comportamento

Template Method

Inten¸c˜

ao e objetivo:

“Definir o esqueleto de um algoritmo em uma opera¸

ao,

postergando alguns passos para subclasses. Permite que

subclasses redefinam certos passos de um algoritmo sem

mudar a estrutura do mesmo.”

(6)

Padr˜

oes de comportamento

Strategy

Strategy

Comportamento / Objeto

(7)

Padr˜

oes de comportamento

Strategy

Inten¸c˜

ao e objetivo:

“Definir uma fam´ılia de algoritmos, encapsular cada uma

delas e torn´

a-las intercambi´

aveis. Strategy permite que o

algoritmo varie independente dos clientes que o utilizam.”

Sinˆ

onimos: Policy

(8)

Padr˜

oes de comportamento

Strategy - Motiva¸

ao

Um problema pode possuir diferentes abordagens para sua

solu¸c˜

ao

Codificar os algoritmos de maneira fixa e r´ıgida nas classes que os

utilizam n˜

ao ´

e adequado

clientes que precisem do algoritmo se tornam mais complexos;

diferentes algoritmos podem ser mais adequados em situa¸

oes

diferentes;

a adi¸

ao de novos algoritmos ´

e complicada se o c´

odigo destes

algoritmos ´

e parte do cliente.

(9)

Padr˜

oes de comportamento

Strategy - Motiva¸

ao

Algoritmos para quebra de linhas em um editor de texto:

SimpleCompositor - quebra uma linha por vez

TeXCompositor - quebra linhas de um par´

agrafo por vez

ArrayCompositor - quebra de linhas para um n´

umero fixo de itens

(10)

Padr˜

oes de comportamento

Strategy - Motiva¸

ao

(11)

Padr˜

oes de comportamento

Strategy - Motiva¸

ao

Analogia ao padr˜ao Strategy

Non-Software Examples of Software Design Patterns by Michael Duell http:

//wwwswt.informatik.uni-rostock.de/deutsch/Lehre/Uebung/Beispiele/PatternExamples/patexamples.htm

(12)

Padr˜

oes de comportamento

Strategy - Aplicabilidade

O padr˜

ao Strategy deve ser utilizado quando:

muitas classes relacionadas diferem somente no seu

comportamento

variantes de um algoritmo s˜

ao necess´

arias

uma classe possui muitos comportamentos, e estes aparecem em

suas opera¸

oes como m´

ultiplos comandos condicionais da

linguagem

(13)

Padr˜

oes de comportamento

Strategy - Estrutura

Estrutura do padr˜ao de projeto Strategy

(14)

Padr˜

oes de comportamento

Strategy - Participantes

Strategy (Compositor)

define uma interface comum para todos os algoritmos suportados

ConcreteStrategy (SimpleComposito, TeXCompositor,

ArrayCompositor)

implementa o algoritmo usando a interface de Strategy

Context (Composition)

´

e configurado com um objeto ConcreteStrategy;

mant´

em uma referˆ

encia para um objeto Strategy;

pode definir uma interface que permite Strategy acessar seus

dados.

(15)

Padr˜

oes de comportamento

Strategy - Colabora¸

oes

Strategy e Context interagem para implementar o algoritmo

escolhido (Context envia dados para execu¸c˜

ao do algoritmo)

Um Context repassa as solicita¸

oes de seu cliente para sua

estrat´

egia

(16)

Padr˜

oes de comportamento

Strategy - Conseq¨

encias

Benef´ıcios:

Fam´ılias de algoritmos - fatorar comportamento comum em

hierarquias de heran¸

ca

Alternativa ao uso de subclasses - o comportamento ´

e a ´

unica

coisa que varia

Possibilidade de escolha de implementa¸

oes - o cliente determina

qual estrat´

egia ser´

a utilizada

(17)

Padr˜

oes de comportamento

Strategy - Consequˆ

encias

Eliminam os grandes condicionais

void Composition::Repair () {

switch (_breakingStrategy) {

case SimpleStrategy:

ComposeWithSimpleCompositor();

break;

case TeXStrategy:

ComposeWithTeXCompositor();

break;

// ...

}

// merge results with existing composition, if necessary

}

void Composition::Repair () {

_compositor->Compose();

// merge results with existing composition, if necessary

}

(18)

Padr˜

oes de comportamento

Strategy - Conseq¨

encias

Desvantagens:

Os clientes devem conhecer diferentes Strategies - para selecionar

o algoritmo apropriado o cliente deve ter conhecimento deste

Aumento do n´

umero de objetos - como diferentes algoritmos

estar˜

ao implementados em classes distintas, o numero de classes

tende a ser maior que em outra solu¸

ao

Custo de comunica¸

ao - os dados s˜

ao fornecidos para todas as

estrat´

egias sem distin¸

ao, algumas estrat´

egias simples podem n˜

ao

necessitar de todos os dados

(19)

Padr˜

oes de comportamento

Strategy - Implementa¸

ao

Definindo interfaces de Strategy e Context

passagem de parˆ

ametros

passagem do pr´

oprio objeto Context

Tornando os objetos Strategy opcionais

comportamento por falta

comportamento espec´ıfico

(20)

Padr˜oes de comportamento

Exerc´ıcios, Resumo e Referˆencias

Template Method Strategy Observer

Padr˜

oes de comportamento

Strategy - Exemplo de c´

odigo

Problema: Os documentos armazenados manipulados pelo

sistema podem ser impressos em formatos distintos (PDF,

HTML, TXT).

Solu¸c˜

ao proposta: Criar uma classe documento com m´

etodos

distintos para cada tipo de impress˜

ao

que ser modificada

O modo de impress˜

ao n˜

ao poderia ser alterado em “runtime”

Outros

(21)

Padr˜

oes de comportamento

Strategy - Exemplo de c´

odigo

Problema: Os documentos armazenados manipulados pelo

sistema podem ser impressos em formatos distintos (PDF,

HTML, TXT).

Solu¸c˜

ao proposta: Criar uma classe documento com m´

etodos

distintos para cada tipo de impress˜

ao

Desvantagens da solu¸

ao proposta:

A cada novo modo de impress˜

ao criado a classe Documento teria

que ser modificada

O modo de impress˜

ao n˜

ao poderia ser alterado em “runtime”

Outros

(22)

Padr˜

oes de comportamento

Strategy - Exemplo de c´

odigo

Solu¸c˜

ao com Strategy: Separar a regra de neg´

ocio “Impress˜

ao”

da representa¸

ao do documento

Vantagens:

Acoplamento fraco

Eliminar comandos condicionais

Caso um novo modo de impress˜

ao seja necess´

ario a classe

documento n˜

ao precisa ser modificada

(23)

Padr˜

oes de comportamento

Strategy - Exemplo de c´

odigo

(24)

Padr˜

oes de comportamento

Strategy - Padr˜

oes relacionados

Flyweight - Usa compartilhamento para suportar grandes

(25)

Padr˜

oes de comportamento

Observer

Observer

Comportamental / Objeto

(Finalidade) / (Escopo)

(26)

Padr˜

oes de comportamento

Observer

Inten¸c˜

ao e objetivo:

“Definir uma dependˆ

encia um-para-muitos entre objetos, de

maneira que quando um objeto muda de estado todos os

seus dependentes s˜

ao notificados e atualizados”

(27)

Padr˜

oes de comportamento

Observer - Motiva¸

ao

Quando se divide o sistema em partes menores ´

e necess´

ario

manter a consistˆ

encia entre uma cole¸

ao de classes cooperantes

ao ´

e desejado manter consistˆ

encia com forte acoplamento

(28)

Padr˜

oes de comportamento

(29)

Padr˜

oes de comportamento

Observer - Motiva¸

ao

Exemplo: Uma aplica¸

ao com gr´

aficos estat´ısticos

Um objeto de planilha e um objeto gr´

afico de barras podem

ilustrar um conjunto de dados

A planilha e o gr´

afico de barras n˜

ao conhecem um ao outro

Quando a informa¸

ao ´

e modificada na planilha o gr´

afico de barras

deve ser atualizado automaticamente

O padr˜

ao Observer descreve como estes relacionamentos podem

ser criados com fraco acoplamento entre as classes

(30)

Padr˜

oes de comportamento

Observer - Aplicabilidade

O padr˜

ao Observer deve ser utilizado quando:

quando uma abstra¸c˜

ao tem dois aspectos, um dependente do

outro. Os aspectos s˜

ao mantidos em objetos separados, o que

permite variar e reutilizar estes

quando uma mudan¸

ca em um objeto exige mudan¸

cas em outros, e

vocˆ

e n˜

ao sabe quantos objetos necessitam ser mudados

quando um objeto deveria ser capaz de notificar outros objetos

sem fazer hip´

oteses, ou usar informa¸

oes, de quem s˜

ao estes

objetos (obter fraco acoplamento)

(31)

Padr˜

oes de comportamento

Observer - Estrutura

(32)

Padr˜

oes de comportamento

Observer - Participantes

Subject

conhece seus observadores

fornece uma interface para gerenciar objetos para adicionar e

remover observers

Observer

define uma interface de atualiza¸

ao para objetos que deveriam ser

notificados sobre mudan¸

cas em um Subject

ConcreteSubject

armazena estados de interesse para objetos ConcreteObserver

notifica seus observadores quando seu estado muda

ConcreteObserver

mant´

em uma referˆ

encia para um objeto ConcreteSubject

(33)

Padr˜

oes de comportamento

Observer - Colabora¸

oes

O ConcreteSubject notifica seus observadores quando ocorre

mudan¸ca que poderia tornar inconsistente os estados dos objetos

Ap´

os ser notificado um ConcreteObserver deve consultar o

ConcreteSubject para obetr informa¸

oes, e atualizar seu estado

de acordo com o estado do ConcreteSubject

(34)

Padr˜

oes de comportamento

Observer - Conseq¨

encias

Benef´ıcios:

Acoplamento abstrato entre subject e observer - subject n˜

ao

conhece as implementa¸

oes concretas de seus observadores

Suporte para comunica¸

oes broadcast - a notifica¸

ao de mudan¸

ca

´

e enviada para todos os observadores que se subscreveram

Desvantagens:

Atualiza¸

oes inesperadas - atualiza¸

oes em cascata podem ser

disparadas devido a modifica¸

oes m´ınimas no subject

(35)

Padr˜

oes de comportamento

Observer - Implementa¸

ao

Observando mais de um subject

´

e necess´

ario estender a interface de update para que o observador

saiba qual subject lhe enviou uma notifica¸

ao

Referˆ

encias para NULL

a remo¸

ao de um subject n˜

ao deve produzir referˆ

encias para null

nos seus observadores

o subject pode notificar seus observadores quando for deletado

(36)

Padr˜

oes de comportamento

Observer - Exemplo

Sistema para visualizar dados do monitoramento de valores

imobili´

arios

Sistema ´

e dividido em trˆ

es componentes:

Fontes (bolsas de mercado)

StockData que captura as informa¸

oes das fontes

Interfaces para visualizar os dados

Sempre que StockData modificar seu estado (coletar novas

informa¸

oes nos mercados) as interfaces devem ser notificadas e

atualizadas

(37)

Padr˜

oes de comportamento

Observer - Exemplo

(38)

Padr˜

oes de comportamento

Observer - Padr˜

oes relacionados

Mediator - Define um objeto que encapsula como um conjunto

de objetos interage

(39)

Exerc´ıcio

Exerc´ıcio

1

Crie um conjunto de classes para simular o controle de acesso a usu´

arios, o controle

de acesso pode ocorrer atrav´

es de: (a) dados textuais (login e senha); (b)

identifica¸

ao biometrica utilizando a digital; (c) identifica¸

ao biometrica utilizando a

´ıris do olho.

Todo controle de acesso deve solicitar dados de entrada;

Comparar dados fornecidos com os dados armazenados.

Possibilitar ou negar acesso.

(40)

Exerc´ıcio

Exerc´ıcio

1

Altere a aplica¸

ao do exerc´ıcio anterior de modo que cada forma de controle de

acesso seja uma estrat´

egia diferente

(41)

Exerc´ıcio

Exerc´ıcio

1

Crie uma aplica¸

ao para vota¸

ao que obtenha dados de entrada e exiba no console e

em JOptionPane o resultado da vota¸

ao, caso os dados de vota¸

ao sejam alterados

um novo resultado deve ser impresso

(42)

Exerc´ıcio

Exerc´ıcio

1

Estude a aplica¸

ao de calculo de IMC e verifique se existe alguma parte da

implementa¸

ao que possa ser melhorada com o uso de algum dos padr˜

oes de projeto

descritos

(43)

Resumo

Resumo

Template method - “Definir o esqueleto de um algoritmo em uma opera¸

ao,

postergando alguns passos para subclasses. Permite que subclasses redefinam certos

passos de um algoritmo sem mudar a estrutura do mesmo.”

Strategy - “Definir uma fam´ılia de algoritmos, encapsular cada uma delas e torn´

a-las

intercambi´

aveis. Strategy permite que o algoritmo varie independente dos clientes

que o utilizam.”

Observer - “Definir uma dependˆ

encia um-para-muitos entre objetos, de maneira que

quando ]um objeto muda de estado todos os seus dependentes s˜

ao notificados e

atualizados”

(44)

Codifica¸c˜

ao:

Padr˜

oes de projeto comportamentais

Leituras recomendadas

Cay Horstmann

Padr˜

oes e Projeto Orientados a Objetos, 2

a

ed., 2007.

Cap´ıtulo 5 - Padr˜

oes e Programa¸

ao de GUI

Se¸c˜

ao 5.3: O padr˜

ao Observer

Se¸c˜

ao 5.4: Gerenciadores de layout e o padr˜

ao Strategy

E. Gamma, R. Helm, R. Johnson e J. Vlissides

Padr˜

oes de projeto - solu¸

oes reutiliz´

aveis de software orientado a

objetos, 1

a

ed., 2000.

Cap´ıtulo 5 - Padr˜

oes comportamentais.

ag. 301 Template Method

(45)

Codifica¸c˜

ao:

Padr˜

oes de projeto comportamentais

Leituras recomendadas

Sourcemaking Team

Sourcemaking - Teaching IT professionals

http://sourcemaking.com/

(46)

Perguntas?

Alexandre de Andrade Barbosa

alexandre.barbosa@arapiraca.ufal.br

Referências

Documentos relacionados

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Nos tempos atuais, ao nos referirmos à profissão docente, ao ser professor, o que pensamos Uma profissão indesejada por muitos, social e economicamente desvalorizada Podemos dizer que

Segundo os Parâmetros Curriculares Nacionais (2000), o processo de ensinoaprendizagem de Língua Portuguesa, no Ensino Médio, deve priorizar a linguagem verbal,

de científica, tecnológica e de inovação nos estados da Amazônia Legal, para promover o desenvolvimento sus- tentável mediante o fortalecimento das instituições esta- duais

Diagnose: fêmeas com escapo preto e flagelo marrom; cabeça aproximadamente tão larga quanto longa, distintamente mais larga na altura dos olhos, olhos situados

Future climate change scenarios for the Cerrado domain have shown the possibility of area loss and geographic distribution reduction considering the economic use of some

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of