36
1 MC 426 IC Unicamp – M. Cecilia C. Baranauskas De Requisitos para Design/Projeto Notações para design da interação entre objetos

De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

1MC 426 IC Unicamp – M. Cecilia C. Baranauskas

De Requisitos para

Design/Projeto

Notações para design dainteração entre objetos

Page 2: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

2MC 426 IC Unicamp – M. Cecilia C. Baranauskas

A transição para

atividades de design

• Aprendendo a fazer a coisa certa– Requisitos e Análise OO

• Aprendendo a fazer certo a coisa– Trabalho de design

– Projetando habilidosamente uma soluçãopara satisfazer os requisitos para estainteração

Page 3: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

3MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Design Orientado a Objeto

• Uma solução lógica baseada no paradigmaOO é desenvolvida

• No núcleo dessa solução estão osDiagramas de Interação

– Como objetos colaboram para satisfazerrequisitos

• Em paralelo Diagramas de Classe sãodesenhados

• Estes artefatos são parte do Modelo deDesign

Page 4: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

4MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Diagrama de Interação

• Linguagem usada para apoio ao trabalho de design/projeto

• Diagramas de Interação

– Ilustram como objetos interagem via mensagens– Generalização de 2 tipos de diagramas UML mais

especializados :• Diagramas de Colaboração• Diagramas de Seqüência

Page 5: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

5MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Diagramas de Colaboração

:ClassAInstance

:ClassBInstance

1: message2()

2: message3()

message1()

Ilustram interações entre objetos em formato de grafo ou rede [objetos podem ser colocados em qqrlugar no diagrama ]

Based on C. Larman, 2002

Page 6: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

6MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Diagramas de Seqüência

:ClassAInstance :ClassBInstance

message2()

message1()

message3()

Ilustram interações nas quais cada objeto éadicionado `a direita [formato de cerca]

Based on C. Larman, 2002

Page 7: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

7MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Ex. de Diagrama de

Colaboração: makePayment

1: makePayment(cashTendered)

1.1: create(cashTendered)

: Register :Sale

:Payment

makePayment(cashTendered)

creation indicated with a"create" message

direction of message

first message

instance

first internal message

link line

parameter

Based on C. Larman, 2002

Page 8: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

8MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Lendo o Diagrama de

Colaboração: makePayment

• 1. A mensagem makePayment éenviada para uma instância de Register. O sender não é identificado

• 2. A instância Register envia a mensagem makePayment para umainstancia de Sale

• 3. A instância Sale cria uma instânciade um Payment

Page 9: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

9MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Ex. de Diagrama de

Seqüência: makePayment

: Register : Sale

makePayment(cashTendered)

makePayment(cashTendered)

: Paymentcreate(cashTendered)

an activation box showingthe focus of control

Based on C. Larman, 2002

Page 10: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

10MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Pontos Fortes e Fracos

• Diagrama de Seqüência:

– Mostra claramente a seqüência e ordem das mensagens no tempo. Notação simples

– Consome espaço horizontal

• Diagrama de Colaboração:

– Flexível para adicionar novos objetos. Econômicono espaço. Melhor para ilustrar ramificaçõescomplexas, iteração e comportamento concorrente

– Difícil ver a seqüência de mensagens. Notaçãomais complexa

Page 11: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

11MC 426 IC Unicamp – M. Cecilia C. Baranauskas

I. Diagrama de Interação:

Notação

Sale :Sale s1: Sale

class instance named instance

Based on C. Larman, 2002

Page 12: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

12MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Sintaxe para a expressão

de Mensagens

spec := getProductSpec( id )

spec := getProductSpec( id : ItemID )

spec := getProductSpec( id : ItemID ) : ProductSpecification

return := message(parameter : parameterType) : returnType

Based on C. Larman, 2002

Page 13: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

13MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Um Link

1: makePayment(cashTendered)2: foo()

2.1: bar(): Register :Sale

link line

É um caminho de conexão entre dois objetos: indica alguma forma de navegação e visibilidade entre os objetos

Um link é uma instância de uma associação

Múltiplas mensagens em ambasas direções podem fluir no mesmo link

Based on C. Larman, 2002

Page 14: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

14MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens

1: msg2()2: msg3()3: msg4()

3.1: msg5(): Register :Sale

all messages flow on the same link

msg1()

São representadas por uma expressão e uma pequenaseta indicando a direção. Um número de seqüência éadicionado

Based on C. Larman, 2002

Page 15: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

15MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens para “self” or

“this”

: Register

msg1()

1: clear()

Based on C. Larman, 2002

Page 16: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

16MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Criação de Instâncias

1: create(cashier)

: Register :Sale {new}

create message, with optional initializing parameters. This willnormally be interpreted as a constructor call.

«create»1: make(cashier)

: Register :Sale {new}

if an unobvious creation message name is used, themessage may be stereotyped for clarity

Based on C. Larman, 2002

Page 17: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

17MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Sequenciamento de

Mensagens

:ClassAmsg1() :ClassB1: msg2()

:ClassC

1.1: msg3()not numbered

legal numbering

A primeira mensagem não é numerada. Aninhamentoé permitido

Based on C. Larman, 2002

Page 18: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

18MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Numeração de seqüência

complexa

;ClassAmsg1() :ClassB1: msg2()

:ClassC

1.1: msg3()

2.1: msg5()

2: msg4()

:ClassD

2.2: msg6()

first second

fourth

sixth

fifth

third

Based on C. Larman, 2002

Page 19: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

19MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens Condicionais

1 [ color = red ] : calculate(): Foo : Bar

message1()

conditional message, with test

A mensagem só é enviada se a cláusula resultar true

Based on C. Larman, 2002

Page 20: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

20MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Caminhos condicionais

mutuamente exclusivos

1a [test1] : msg2()

:ClassA :ClassB

:ClassC

1a.1: msg3()

msg1()

:ClassD

1b [not test1] : msg4()

1b.1: msg5()

:ClassE

2: msg6()

unconditional aftereither msg2 or msg4 1a and 1b are mutually

exclusive conditional paths

Note o caminho condicional letras a e b

Based on C. Larman, 2002

Page 21: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

21MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Iteração ou Looping

1 * [i:=1..N]: num := nextInt(): SimulatorrunSimulation() : Random

iteration is indicated with a * and an optionaliteration clause following the sequence number

Based on C. Larman, 2002

Page 22: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

22MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Iteração sobre uma

coleção

1 *: st := getSubtotal(): Salet := getTotal()

double box indicates a multiobject (collection)

for example, a List object containing manySalesLineItem objects

*:SalesLineItem

:SalesLineItem

these two * symbols used together implyiteration over the multiobject and sending thegetSubtotal message to each member

Ex. Enviando mensagem a cada elementode uma lista

Based on C. Larman, 2002

Page 23: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

23MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens para uma

classe de objetos

list := synchronizedList( aList ): InstanceOfFoo java.util.Collections

msg1()

not underlined,therefore a class

message to class, or astatic method call

Em vez de para instância de objeto

Based on C. Larman, 2002

Page 24: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

24MC 426 IC Unicamp – M. Cecilia C. Baranauskas

II. Diagramas de Seqüência

: Register : Sale

msg2()

msg3()

msg1()

msg4()

msg5()

Mensagens e foco no controle

Based on C. Larman, 2002

Page 25: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

25MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Ilustrando retornos

: Register : Sale

msg2()

msg3()

msg1()

msg4()

msg5()

Linhas pontilhadas no final de uma caixa de ativação

Based on C. Larman, 2002

Page 26: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

26MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens para “self” or

“this”

: Register

msg1()

clear()

Based on C. Larman, 2002

Page 27: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

27MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Criação de Instâncias

: Register : Sale

makePayment(cashTendered)

: Paymentcreate(cashTendered)

authorize()

note that newly createdobjects are placed at theircreation "height"

an object lifeline shows the extent ofthe life of the object in the diagram

Based on C. Larman, 2002

Page 28: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

28MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Destruição de Objeto

: Sale

: Paymentcreate(cashTendered)

...the «destroy» stereotypedmessage, with the largeX and short lifelineindicates explicit objectdestruction

«destroy» X

Linhas pontilhadas na vertical abaixo de objetos mostrama vida do objeto. Mostrar a destruição é importanteespecialmente quando a linguagem não faz garbage collection [ex. C++]

Based on C. Larman, 2002

Page 29: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

29MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens condicionais

: Bar: Foo

[ color = red ] calculate()message1()

Based on C. Larman, 2002

Page 30: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

30MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens condicionais

mutuamente exclusivas

: B: A

[ x < 10 ] calculate()message1()

: C

[ x > 15 ] calculate()

Based on C. Larman, 2002

Page 31: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

31MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Iteração para uma única

mensagem

: Simulator : Random

* [i:=1..N]: num := nextInt()

runSimulation()

Based on C. Larman, 2002

Page 32: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

32MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Iteração para uma série de

Mensagens

: Simulator : Random

hours := nextInt()

runSimulation()

: Programmer

work( hours )

* [i:=1..N]

eat()

Based on C. Larman, 2002

Page 33: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

33MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Iteração sobre uma

Coleção

: Sale

* : st := getSubtotal()

t := getTotal()

:SalesLineItem:SalesLineItem

Based on C. Larman, 2002

Page 34: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

34MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Mensagens a Classe de

Objetos

: Foo

list := synchronizedList( aList )message1()

java.util.Collections

not underlined,therefore a class

message to class, or astatic method call

Based on C. Larman, 2002

Page 35: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

35MC 426 IC Unicamp – M. Cecilia C. Baranauskas

A seguir…

• Como pensar em e projetar comobjetos

• Fundamental design de objetos requerconhecimento de:– Princípios de atribuição de

responsabilidade– design patterns

Page 36: De Requisitospara Design/Projetoariadne/mc436/1s2017/Lar1415... · 2017-05-09 · Diagramade Interação • Linguagem usada para apoio ao trabalho de design/projeto • Diagramas

36MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Referências

• Larman, C. (2002) Applying UML and

Patterns – An Introduction to Object

Oriented Analysis and Design and the

Unified Process, Prentice-Hall Inc.

• Muller, P.A. (1997) Instant UML,Wrox

Press Ltd.