es i aula06n [modo de...

85
FCT-UNESP 04/07/2017 Prof. Dr. Rogério E. Garcia 1 Bacharelado em Ciência da Computação 04/07/2017 Engenharia de Software I Rogério Eduardo Garcia ([email protected]) Aula 06 In a calm sea every man is a pilot. BCC 04/07/2017 04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 2 Engenharia de Software I – Aula 6 Revisão Revisão Geral Introdução ao Método Larman Planejar e Elaborar Construir Analisar Projeto

Upload: others

Post on 04-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 1

Bacharelado emCiência da

Computação04/07/2017

Engenharia de Software I

Rogério Eduardo Garcia([email protected])

Aula 06

In a calm sea every man is a pilot.

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 2

Engenharia de Software I –Aula 6

Revisão Revisão Geral

Introdução ao Método Larman Planejar e Elaborar

Construir Analisar

Projeto

Page 2: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 2

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 3

Problema Solução

Abstrato

Concreto

Problema X Solução

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 4

Desenvolvimento Iterativo

Um ciclo de vida iterativo (CVI) envolve a repetição dos ciclos deplanejamento, elaboração, construção e instalação

O sistema cresce pela adição de novas funções (e refinamentodas existentes) em cada ciclo iterativo

Cada ciclo ataca um pequeno conjunto de requisitos

planejar

elaborarconstruir

instalar

Page 3: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 3

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 5

Desenvolvimento Iterativo

Planejar eelaborar

Construir Instalar

Ciclo de Desenvolvimento 1

Ciclo de Desenvolvimento 2

RefinarPlano

SincronizarArtefatos

Analisar Projetar Construir Testar

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 6

Analisar: Atividades

Definir/Refinar os casos de uso essenciais (se aindanão foi feito)

Definir/Refinar os diagramas de casos de uso

Definir/Refinar o modelo conceitual

Definir/Refinar o glossário

Definir/Refinar os diagramas de seqüência dosistema

Definir/Refinar os contratos de operação

Definir/Refinar os diagramas de estado

Page 4: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 4

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 7

Projetar: Atividades

Definir casos de uso reais

Definir Relatórios, Interface e Storyboards,…

Refinar a arquitetura do sistema

Definir diagramas de interação

Definir diagramas de classe do projeto

Definir esquema da base de dados

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 8

Construir: Atividades

Implementar definições de classes einterfaces

Implementar métodos

Implementar interfaces com usuário

Implementar relatórios

Implementar esquema da base de dados(SQL)

Escrever casos de teste

Page 5: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 5

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 9

Diagrama de Seqüência

Um Diagrama de Seqüência mostrainterações de objetos ordenados numaseqüência de tempo

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 10

Diagrama de Seqüência -Exemplo

: Aluno

1: preenche

2: envia

3: curso(gabriel,matemática)

4: está aberto?5: está aberto?

6: incui(gabriel)7: incui (gabriel)

Formulário deMatrúcula

Responsável porMatrículas

MatemáticaBásica

MatemáticaÁlgebra

Como chegar aqui?

Page 6: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 6

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 11

Desenvolvimento Iterativo

Planejar eelaborar

Construir Instalar

Ciclo de Desenvolvimento 1

Ciclo de Desenvolvimento 2

RefinarPlano

SincronizarArtefatos

Analisar Projetar Construir Testar

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 12

RefinarPlano

Sincronizarartefatos

Analisar Projetar Construir Testar

1. Definir Casos deUso Reais

2. Definir Relatórios, IU e “Storyboards”

3. Refinar a arquitetura do sistema

4. Definir Diagramasde Interação

5. Definir Diagramas deClasses de Projeto

6. Definir o EsquemaDo Banco de Dados

Atividades da Fase Projetar

Page 7: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 7

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 13

Início da fase Projetar

Nesta fase é desenvolvida uma solução lógicabaseada no paradigma de orientação a objetos –objetos, mensagens, classes, métodos, …. “Fazer Certo a Coisa” – projetar de maneira competente

uma solução que satisfaça os requisitos

Os dois artefatos principais a serem desenvolvidossão: Diagramas de Interação

Diagramas de Classe de Projeto

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 14

Diagramas de Interação

Diagramas de Interação – apresentam como osobjetos interagem, por meio de mensagens, pararesponder a um determinado evento são importantes para o desenvolvimento de um bom

projeto exigem criatividade

A UML fornece dois tipos de diagramas de interaçãoque permitem representar interação (colaboração)entre classes (ou objetos): diagramas de colaboração – formato de grafo diagramas de seqüência – formato de cerca

Page 8: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 8

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 15

Diagrama de Colaboração

Diagrama de Colaboração foca tanto ainteração quanto os links entre um conjuntode objetos que “colaboram” entre si;

O Diagrama de seqüência e o deColaboração mostram as interações, mas ode seqüência foca o tempo e o decolaboração foca o espaço.

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 16

mensagem1():Instância da

Classe A:Instância da

Classe B

1:mensagem2()2:mensagem3()

Diagrama de Colaboração

•Os diagramas de colaboração têm melhor capacidade deexpressar informações contextuais e podem ser maiseconômicos em termos de espaço

Page 9: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 9

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 17

mensagem1()1:mensagem2()

2:mensagem3()

:instância de Classe A

:instância de Classe B

:instância de Classe C

3:mensagem4()

Diagrama de Seqüência

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 18

Diagramas de Colaboração

Diagrama de Colaboração - um dos artefatosmais importantes criados no projeto OO o tempo gasto na sua criação deveria absorver

um percentual de tempo significativo do tempogasto no projeto

Elaborar diagramas de colaboração exigeconhecimento de: princípios de atribuição de responsabilidades

padrões de projeto

Page 10: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 10

BCC07/07/2015

BCC07/07/2015

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 19

Classes e Instâncias

Venda

Classe

:Venda

Instância

venda1:Venda

Instância nomeada

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 20

Mensagens

Sintaxe UML:

retorno := mensagem ( parâmetro : tipoParâmetro ) : tipoRetorno

O retorno pode não existir

Os tipos podem ser omitidos ser forem óbvios ou não forem importantes

Exemplo:

especificacao := obterEspecificacaoProduto(id)

especificacao := obterEspecificacaoProduto(id:IdItem)

especificacao := obterEspecificacaoProduto(id:IdItem) : EspecificacaoProduto

Page 11: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 11

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 21

Mensagens

No paradigma de orientação a objetos: Mensagem é o mecanismo de comunicação entre objetos

invoca as operações desejadas

“O processo de invocar um método é chamado de enviode uma mensagem ao objeto”

Ex: quando uma mensagem façaAlgo() é enviada auma objeto obj, o método façaAlgo() definido naclasse de obj é executado:

obj.façaAlgo()

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 22

Ligações

• Ligação: conexão em dois objeto que indica a possibilidade de alguma forma de navegação ou de visibilidade entre eles

• permite que mensagens fluam de um objeto para outro

total:=totalizarVenda():float:Venda:TPV

------:Venda.totalizarVenda()------

Page 12: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 12

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 23

Mensagens Múltiplas

Várias mensagens, em ambos os sentidos, podem fluir ao longode uma mesma ligação usar seta para indicar direção da mensagem

usar números de seqüência para indicar ordem de execução dasmensagens

1:mensagem1() 2:mensagem2() 3:mensagem3() :Instância

Classe A:Instância Classe B4:mensagem4()

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 24

Exemplo

acionar():BotãoElevador

:ControladorElevador

1:atualizar( )

2:iluminar( )

Page 13: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 13

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 25

Primeira Mensagem

A primeira mensagem é aquela enviada ao objeto que inicia otratamento a um determinado evento

O emissor da primeira mensagem não é identificado

1:mensagem1() 2:mensagem2() 3:mensagem3() :Instância

Classe B4:mensagem4()

primeiraMsg()

:Instância Classe A

------:InstÂnciaClasseA.primeiraMsg()------

em a

lgum

luga

r no

sis

tem

a…

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 26

Exemplo

1:ok :=posicionarAngulo(angulo):Booleano:Flape

Aterrissar()

:Aeronave

Page 14: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 14

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 27

Número de Seqüência da Mensagem

Primeira mensagem não é numerada

Numeração formal e agregada indica a ordem e o aninhamentodas mensagens

:ClasseA :ClasseB

:ClasseC

msg1()1:msg2()

1.1:msg3()

aninhamento de mensagens

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 28

Aninhamento de Mensagens

:ClasseA :ClasseB

:ClasseC

msg1()1:msg2()

1.1:msg3()

msg1()------:ClasseB.msg2()------

msg2()------:ClasseC.msg3()------

Page 15: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 15

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 29

Aninhamento de Mensagens –Exemplo

:ClasseA :ClasseB

:ClasseC

:ClasseD

msg1()1:msg2()

1.1:msg3()

2.1:msg5()2:msg4()

2.2:msg6()

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 30

Aninhamento de Mensagens –Exemplo (cont.)

msg1()------:ClasseB.msg2()------:ClasseC.msg4()------

msg2()------:ClasseC.msg3()------

msg4()------:ClasseB.msg5()------:ClasseD.msg6()------

em algum lugar no sistema… :ClasseA.msg1()

Page 16: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 16

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 31

Auto-Mensagem (this)

:TPV

1: iniciar()

:ClasseA

1: msg2()msg1()

iniciarSistema()

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 32

Iteração

msg1()

1*:[i:=1..10]msg2()

2*:[i:=1..10]msg3()

:ClasseA :ClasseB

:ClasseC

------for i=1 to 10 {

:ClasseB.msg2():ClasseC.msg3()

}------

msg1()

Page 17: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 17

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 33

Iteração

:TPV :Venda1 * : linha:=proxLinhaItem():LinhaItemVenda

Cláusula de Iteração([i:=1..10]) é opcional

msg1()

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 34

Criação de Instância

:TPV :Venda1:criar(caixa)

iniciarVenda()

• Uma mensagem pode ser usada para criar uma instância

nomear mensagem como criar()mensagem criar(), com parâmetros opcionais,

normalmente é interpretada, na implementação, como chamada a um construtor da classe de

software

Page 18: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 18

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 35

Mensagens Condicionais

:ClasseA :ClasseB1: [condição] msg2()

msg1()

• Uma mensagem condicional só será enviada se a cláusula entre [ ] tiver valor true

------if (condicao = true) {:ClasseB.msg2()

}------

msg1()

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 36

Mensagens Condicionais

:TPV :Venda1: [nova venda] criar()

msg1()

Page 19: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 19

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 37

:ClasseB

:ClasseC

msg1()1a: [condição] msg2()

1b:[not condição] msg3()

• Apenas uma ou outra mensagem é enviada dependendo da condição ser verdadeira ou falsa

------if (condicao = true) :ClasseB.msg2()

else :ClasseC.msg3()------

msg1()

Caminhos Condicionais Mutuamente Exclusivos

:ClasseA

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 38

1a.1:msg3()

:ClasseA :ClasseB

:ClasseC

msg1() 1a: [condição] msg2()

1b:[not condição] msg4()

:ClasseD

:ClasseE

1b.1:msg5()

2:msg6()

Caminhos Condicionais Mutuamente Exclusivos

Page 20: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 20

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 39

Multiobjetos

Um multiobjeto é uma coleção de instâncias,representada por um único ícone

Uma mensagem pode ser enviada aomultiobjeto ou a cada membro da coleção

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 40

1: qt:=obterQuantidade( ) : Int

Mensagens para Multiobjetos

:Venda

msg1()

ItemLinhaVenda

mensagem enviada à coleção

*:Venda1*: id:=obterID( )

msg1()

ItemLinhaVenda

mensagem enviada a cada membro da

coleção

Page 21: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 21

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 41

:Sistema

:Caixa

Comprar Itens

entrarItem(CUP, quantidade)

terminarVenda()

fazerPagamento(quantia)

troco, recibo

descrição item, total

iniciarNovaVenda( )

*[mais itens]

Exemplo TPV - DSS

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 42

Exemplo TPV – Modelo Conceitual

1..1

Pagamento

quantia

1..1

1..1

TPVVendadatahora

Paga-por

1..1 Capturada-em

Page 22: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 22

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 43

Exemplo TPV – Diagrama de Colaboração

1:fazerPagamento(quantia):Venda:TPV

:Pagamento

1.1:criar(quantia)

fazerPagamento(quantia)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 44

Responsabilidade

Responsabilidade um contrato ou obrigação de um tipo ou classe serviços fornecidos por um elemento (classe ou subsistema) incorpora os objetivos de um elemento

Dois tipos de responsabilidades básicas: Fazer

fazer algo (criar um objeto, executar uma operação,…) iniciar ações em outros objetos coordenar e controlar atividades em outros objetos

Saber conhecer dados privados encapsulados conhecer objetos relacionados conhecer coisas que podem ser derivadas ou calculadas

Page 23: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 23

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 45

Responsabilidade

Exemplos: “uma Venda é responsável por criar ItemLinhaVenda ” –

FAZER

“uma Venda é responsável por conhecer o seu total”-SABER

OBS: responsabilidades do tipo saberfreqüentemente podem ser deduzidas do modeloconceitual (atributos e associações)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 46

Responsabilidades e Diagramas de Colaboração

Diagramas de colaboração mostram escolhas deatribuição de responsabilidade a objetos

Exemplo: atribuir aos objetos do tipo Venda aresponsabilidade de imprimirem a si próprios.

:Vendaimprimir()

Responsabilidade de imprimir a si própria

Page 24: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 24

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 47

Responsabilidade

A “tradução” de responsabilidade em classes e métodos éinfluenciada pela granularidade da responsabilidade. Ex: “Fornecer acesso a bancos de dados relacionais” – pode

envolver muitas classes e métodos “Imprimir uma venda” – pode envolver apenas um ou alguns

poucos métodos

Os métodos são implementados para satisfazer umaresponsabilidade

Um objeto pode colaborar com outros objetos para atender auma responsabilidade

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 48

Exemplo

fazerPagamento(quantia):Venda

:Pagamento

1:criar(quantia)

Responsabilidade “Fazer Pagamento” atribuída ao objeto Venda colaboração entre Venda e Pagamento

Page 25: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 25

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 49

Visibilidade entre Objetos

Visibilidade: capacidade de um objeto ver ou fazerreferência a outro

Para que um objeto A envie uma mensagem para oobjeto B, é necessário que B seja visível para A

Tipos de visibilidade por atributo: B é um atributo de A

por parâmetro: B é um parâmetro de um método de A

localmente declarada: B é declarado como um objeto localem um método de A

global: B é, de alguma forma, globalmente visível.

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 50

Visibilidade por atributo

Persiste por muito tempo

É a forma mais comum

Geralmente se deve às associaçõesexistentes no modelo conceitual

Ex: TPV tem um atributo para poder enviarmensagens ao Catálogo de Produtos.

Page 26: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 26

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 51

Exemplo

:TPV

entrarItem(itemId,qtd)

:CatálogoProduto

1:espec:=obterEspec(itemId)

class TPV {

…private CatalogoProduto catalogo;…public void entrarItem(…);…

}

public void entrarItem(ID itemId, int qtd) {

EspecificacaoProduto espec;…espec = catalogo.obterEspecificacao(itemId);…

}

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 52

Visibilidade por parâmetro

É relativamente temporária, persiste enquantopersistir o método.

:TPV

entrarItem(itemId,qtd)

:Venda2:criarItemLinha(espec,qtd)

:CatálogoProduto

1:espec:=obterEspec(itemId)

il:ItemLinhaVenda

2.1:criar(espec,qtd)

Page 27: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 27

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 53

Exemplo

:TPV

entrarItem(itemId,qtd)

:Venda2:criarItemLinha(espec,qtd)

:CatálogoProduto

1:espec:=obterEspec(itemId)

il:ItemLinhaVenda

public void criarItemLinha(EspecificaçãoProduto espec, int qtd) {…li = new ItemLinhaVenda(espec,qtd);…}

espec é passada como parâmetro para que Venda tenha visibilidade de EspecificaçãoProduto.

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 54

Visibilidade localmente declarada

Visibilidade relativamente temporária

Duas formas: criar uma nova instância local e atribuí-la a uma

variável local

atribuir o objeto retornado pela invocação de ummétodo a uma variável local.

Page 28: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 28

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 55

Exemplo

public void criarItemLinha(EspecificaçãoProduto espec, int qtd) {

…ItemLinhaVenda li = new ItemLinhaVenda(espec,qtd);…

}

criação de instância local

public void entrarItem(ID itemId, int qtd) {

EspecificacaoProduto espec;…espec = catalogo.obterEspecificacao(itemId);…

}

atribuição de objeto a variável local

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 56

Visibilidade Global

Menos comum

Relativamente permanente (persisteenquanto A ou B existirem)

Forma óbvia e menos desejável: atribuir umainstância de objeto a uma variável global.

Page 29: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 29

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 57

Notação de Visibilidade em UML

:msg()A B<<associação>>

:msg()A B<<global>>

:msg()A B<<local>>

:msg()A B<<parâmetro>>

<<associação>> é usada para visibilidade de atributo

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 58

Criando Diagramas de Colaboração

Atribuir responsabilidades e criar osdiagramas de colaboração são asatividades mais criativas da fase de projeto.

Não há soluções mágicas ou nãojustificadas. Elas devem ser baseadas emraciocínio lógico.

Page 30: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 30

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 59

Criando Diagramas de Colaboração

O caso de uso sugere eventos do sistema diagramas de seqüência do sistema

Os eventos de sistema representam mensagensque iniciam diagramas de colaboração

Os diagramas de colaboração ilustram como osobjetos interagem para realizar tarefas interação por mensagens de objetos de software, cujos

nomes podem ser inspirados pelos nomes dos conceitos(objetos) do Modelo Conceitual

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 60

Criando Diagramas de Colaboração

Crie um diagrama separado para cada operação do sistema para cada evento do sistema, crie um diagrama com o evento

como a primeira mensagem Se o diagrama se tornar complexo, separe-o em diagramas

menores Use os padrões GRASP para apoiar as decisões sobre atribuição

de responsabilidades Use o modelo conceitual como apoio

conceitos podem inspirar criação de classes de software comorganização similar

Comece escolhendo a classe controladora do evento Exemplo sistema TPV…

Page 31: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 31

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 61

Diagrama de Casos de UsoTPV

ComprarItens

Abrir

ReembolsarItens

Caixa Cliente

Administrador Do Sistema

Gerente

Adicionarnovos

usuários

Iniciar

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 62

Diagrama de Seqüência do Caso de Uso “Comprar Itens”

:Sistema

:Caixa

Comprar Itens

entrarItem(id,qtd)

fazerPagamento(quantia)

troco, recibo

descrição item, total

terminarVenda()

iniciarNovaVenda( )

*[mais itens]

Page 32: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 32

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 63

Modelo Conceitual

1..1

1..1

Caixa

1..1

Gerente

1..*

1..*

*

1..1

1..1

Pagamento

quantia

1..1

1..1

Cliente

1..1

1..1TPV

1..1

Registra-Vendas-do

Iniciado por

*1..1

Loja

endereçonome

1..1

Possui

1..*1..1

CatálogoProdutos

*

1..1Usado-por

*

1..1

Venda

datahora

1..1

1..1Paga-por

1..1

1..1

Iniciada-por

1..1

*

Registra-Dados-da

1..1

1..1Capturada-em

1..*

Item

*

Estoca

0..1

1..1

EspecificaçãoProduto

descriçãopreçoUPC

1..*1..1

Contém

*

Descreve

*

ItemLinhaVenda

/quantidade

1..1

1..*

Contido-em

1..*

0..1

Registra-venda-de

1..1

*

Descritos-por

1..1

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 64

Diagrama de Seqüência do Caso de Uso “Comprar Itens”

:Sistema

:Caixa

Comprar Itens

entrarItem(id,qtd)

fazerPagamento(quantia)

troco, recibo

descrição item, total

terminarVenda()

iniciarNovaVenda( )

*[mais itens]

Page 33: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 33

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 65

Diagrama de Colaboração –iniciarNovaVenda

Quem é a classe controladora?

Opções: representando todo o sistema, um dispositivo ou um

subsistema TPV, SistemaTPV

representando um tratador de todos os eventos de umcenário de caso de uso ControladorDeComprarItens

TratadorDeComprarItens

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 66

Diagrama de Colaboração –iniciarNovaVenda

Classe controladora (de acordo com padrãoControlador): TPV

Observação: na fase de projeto, o TPV é um objeto no “mundo do

software”, e não o registrador físico (como no ModeloConceitual) mesmo nome foi escolhido para diminuir gap semântico

:TPViniciarNovaVenda( )

Page 34: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 34

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 67

Diagrama de Colaboração –iniciarNovaVenda

Criar objeto Venda padrão Criador sugere atribuir a responsabilidade à classe que

agrega, registra ou contém o objeto a ser criado pelo Modelo Conceitual: TPV registra Venda

TPV é bom candidato para criar Venda

Pelo Modelo Conceitual: Venda possui váriosItemLinhaVenda. Então, quando uma Venda é criada, umacoleção vazia de ItemLinhaVenda deve ser criada paraarmazenar futuras instâncias pelo padrão Criador, Venda é um bom candidato para criar a

coleção

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 68

Diagrama de Colaboração –iniciarNovaVenda

iniciarNovaVenda( )

:TPV :Venda1:criar ( )

:ItemLinhaVenda1.1:criar ( )

padrão Criador

padrão Controlador

Page 35: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 35

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 69

Diagrama de Seqüência do Caso de Uso “Comprar Itens”

:Sistema

:Caixa

Comprar Itens

entrarItem(id, qtd)

fazerPagamento(quantia)

troco, recibo

descrição item, total

terminarVenda()

iniciarNovaVenda( )

*[mais itens]

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 70

Diagrama de Colaboração –entrarItem

Classe controladora (de acordo com padrãoControlador): TPV

A cada tipo de item vendido está associado umItemLinhaVenda na Venda padrão Criador: Venda é candidata para criar

ItemLinhaVenda cada linha de venda criada será inserida na coleção de

ItemLinhaVenda associada à Venda

:TPVentrarItem(id, qtd )

Page 36: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 36

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 71

Diagrama de Colaboração –entrarItem

Pelo Modelo Conceitual: ItemLinhaVenda tem quantidade eestá associado a EspecificaçãoProduto como obter a informação de especificação de produto por meio do

ID do item?

quem é o especialista nesta informação??

Modelo Conceitual: o CatálogoProdutos contém todas asespecificações pelo padrão Especialista, o CatálogoProduto ébom candidato para a responsabilidade de obter a especificação

quem vai enviar a mensagem obterEspecificação para o objetoCatálogoProduto??? é razoável assumir conexão permanente entre CatálogoProduto e

TPV ?

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 72

Diagrama de Colaboração – entrarItem

:TPV

entrarItem(id,qtd)

:Venda2:criarItemLinha(espec,qtd)

:CatálogoProduto

1:espec:=obterEspec(id)

il:ItemLinhaVenda

2.1:criar(espec,qtd)

:EspecificaçãoProduto

1.1:espec:=buscar(id)

padrão Especialista

padrão Criador

:ItemLinhaVenda

2.2:adicionar(il)

Page 37: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 37

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 73

Diagrama de Colaboração –entrarItem

E quanto às informações descrição e preço do itemque, segundo o diagrama de sequência do sistema,devem ser exibidas? não são responsabilidade dos objetos do domínio as

tarefas relacionadas a operações de saída do sistema isso deverá ser feito pela camada de apresentação tudo o que é necessário com relação às responsabilidades

de exibição de informação é que esta seja conhecida eesteja disponível nos objetos do domínio

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 74

Diagrama de Seqüência do Caso de Uso “Comprar Itens”

:Sistema

:Caixa

Comprar Itens

entrarItem(id,qtd)

fazerPagamento(quantia)

troco, recibo

descrição item, total

terminarVenda()

iniciarNovaVenda( )

*[mais itens]

Page 38: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 38

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 75

Diagrama de Colaboração –terminarVenda

Classe controladora (de acordo com padrão Controlador):TPV

Quem deve ser responsável por indicar que a venda estáterminada? razoável considerar que Venda tem um atributo booleano

(estaCompleta) que é verdadeiro quando a venda é finalizada

padrão Especialista: a própria Venda é uma candidataapropriada para atribuir o valor Verdadeiro ao atributoestaCompleta, já que é dona da informação (mantém o atributo)

:TPVterminarVenda ( )

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 76

:TPV

terminarVenda()

:Venda1:tornarseCompleta()

padrão Especialistapublic void tornarseCompleta( ) {

estaCompleta = True;}

Diagrama de Colaboração –terminarVenda

Page 39: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 39

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 77

Diagrama de Colaboração –obterTotal

Terminada a venda, o sistema deve apresentar ototal (de acordo com a sequência típica de eventosdo caso de uso Comprar Itens)

Análise Lógica:1. definir a responsabilidade: quem deve ser responsável

por saber o total da venda?2. resumir informações requeridas

total da venda é a soma dos subtotais de todos os itensde linha de venda

o subtotal de cada item de linha de venda é dado por:quantidade de itens X preço item

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 78

Diagrama de Colaboração –obterTotal

Análise Lógica (cont.):3. listar classes que conhecem as informações

necessárias

Informação requerida Especialista

preço do produto EspecificaçãoProduto

quantidade de itens ItemLinhaVenda

todos os ItemLinhasVendas daVenda

Venda

Page 40: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 40

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 79

Diagrama de Colaboração –obterTotal

Quem deve ser responsável por calcular o total da Venda?

pelo padrão Especialista: Venda (conhece todos osItemLinhaVenda)

O cálculo do total requer cálculo do subtotal de cadaItemLinhaVenda. Quem deve ser responsável por calcularesse subtotal? pelo padrão Especialista: ItemLinhaVenda (conhece quantidade

e EspecificaçãoProduto)

O cálculo do subtotal requer o preço do produto. Quem deveser responsável por fornecer o preço? pelo padrão Especialista: EspecificaçãoProduto (conhece preço)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 80

Diagrama de Colaboração –obterTotal

1.1: p:=obterPreço( )

t:=obterTotal( ):Venda

:EspecificaçãoProduto

:ItemLinhaVenda

*

1*: st:=obterSubtotal( )padrão Especialista

public float obterTotal( ) {

float tot = 0;for each il = ItemLinhaVenda

tot = tot + il.obterSubtotal();return tot;

}

public float obterSubtotal( ) {float subtot = quantidade*

:EspecificaoProduto.obterPreco();return subtot;

}

Page 41: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 41

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 81

Diagrama de Seqüência do Caso de Uso “Comprar Itens”

:Sistema

:Caixa

Comprar Itens

entrarItem(id,qtd)

fazerPagamento(quantia)

troco, recibo

descrição item, total

terminarVenda()

iniciarNovaVenda( )

*[mais itens]

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 82

Diagrama de Colaboração –fazerPagamento

Classe controladora (de acordo com padrãoControlador): TPV

Quem deve ser responsável pela criação dePagamento? Opções: padrão Criador

TPV – registra Pagamento e tem o valor inicial (quantia)para criação da instância

Venda – usa, de maneira bem próxima, Pagamento

:TPVfazerPagamento(quantia)

Page 42: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 42

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 83

Diagrama de Colaboração –fazerPagamento

Avaliando as opções – considerar Coesão e Acoplamento escolha de Venda :

pelo Modelo Conceitual - já existe uma associação entre Venda ePagamento

trabalho de TPV fica mais leve aumenta coesão

TPV não toma conhecimento da existência de Pagamento favorece baixo acoplamento

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 84

Diagrama de Colaboração –fazerPagamento

fazerPagamento(quantia)

1: fazer Pagamento(quantia)

:Pagamento

:Venda:TPV

1.1: criar( )

padrão Controladorpadrões Criador eAcoplamento Fraco

Page 43: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 43

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 85

Diagrama de Colaboração –fazerPagamento

A venda completada deve ser registrada, por exemplo, numarquivo histórico da loja (ver Modelo Conceitual)

Quem deve ser responsável por conhecer todas as vendasregistradas e por registrá-las? padrão Especialista: a Loja conhece e registra todas as vendas

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 86

Diagrama de Colaboração –fazerPagamento

fazerPagamento(quantia)

1: fazer Pagamento(quantia)

:Pagamento

v:Venda:TPV

1.1: criar( )

padrão Especialista

:Loja

vendascompletadas:Venda

2:adicionarVenda(v)

2.1:adicionar(v)

Page 44: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 44

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 87

Diagrama de Colaboração –calcularTroco

Caso de Uso Comprar Itens requer que sejadevolvido o troco e apresentado o recibo a forma de exibição do troco e impressão do recibo não

cabe aqui, mas a informação tem que ser conhecida porobjetos do domínio

Quem deve ser responsável por saber/calcular otroco? padrão Especialista: Venda (conhece total da compra) e

Pagamento (conhece quantia paga) são especialistasparciais

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 88

Diagrama de Colaboração –calcularTroco

Avaliando as opções: Pagamento : possui quantia paga, mas precisa pedir total

da compra para Venda Pagamento precisará ter visibilidade de Venda (o que ainda

não tem) aumento no acoplamento

Venda : possui total da compra, mas precisa solicitarquantia paga a Pagamento Venda já tem visibilidade de Pagamento (pois é seu

criador) não causa aumento no acoplamento, e portantoé a solução mais desejável

Page 45: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 45

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 89

Diagrama de Colaboração –calcularTroco

:Venda

trc:=calcularTroco( )

pg:Pagamento1: qtia:=obterQuantia( )

2: t:=obterTotal( )

public float calcularTroco( ) {

float troco = pg.obterQuantia - this.obterTotal();return troco;

}

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 90

Diagrama de Casos de UsoTPVComprar

Itens

Abrir

ReembolsarItens

Caixa Cliente

Administrador Do Sistema

Gerente

Adicionarnovos

usuários

Iniciar

Page 46: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 46

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 91

Diagrama de Colaboração -iniciar

Deixe o diagrama de inicialização do sistema porúltimo garante que todas as informações que interessam às

atividades iniciais (que apóiam os demais eventos) tenhamsido avaliadas

Objetivo: criar o objeto inicial do domínio esse objeto cria os demais objetos necessários

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 92

Diagrama de Colaboração -iniciar

Objeto inicial pode ou não assumir o controle do processo em geral, objeto inicial não assume o controle do processo

quando existe uma interface de usuário gráfica

Então, para operação iniciar: crie um diagrama de colaboração com primeira mensagem

criar() para o objeto inicial do domínio

(opcional) se o objeto inicial está assumindo o controle doprocesso, crie um outro diagrama de colaboração e envie umamensagem executar() ao objeto inicial

Page 47: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 47

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 93

Diagrama de Colaboração -iniciar

No TPV: iniciar ocorre quando Gerente liga o sistema

objeto inicial não assume controle do processo – apenasum diagrama para iniciar

Quem deve ser o objeto inicial do domínio? escolha um objeto que intuitivamente (e conceitualmente)

contenha todos os (ou a maioria dos) objetos do domínio

Ex: Loja

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 94

Diagrama de Colaboração -iniciar

A partir dos diagramas anteriores, pode-seidentificar as tarefas iniciais: criar Loja, TPV, CatálogoProdutos, EspecificaçãoProduto

associar CatálogoProduto a EspecificaçãoProduto

associar Loja a CatálogoProduto

associar Loja a TPV

associar TPV a CatálogoProduto

Page 48: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 48

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 95

Diagrama de Colaboração -iniciar

:Loja

criar()

:TPV

:EspecificacãoProduto

ep:EspecificaçãoProduto

2 : criar (cp)

1:criar ( )

cp:CatálogoProdutos

1.1:criar ( )

1.2.2* : adicionar (ep)

1.2.1* : criar(id,preço,descrição)

1.2 : carregarEspecProduto( )

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 96

Comentários

Multiplicidade : observe que a loja só cria um objetoTPV a multiplicidade no Modelo Conceitual e no projeto de

objetos pode não ser a mesma

Persistência: num sistema real,EspecificaçãoProduto residirá num meio dearmazenamento permanente (arquivo em disco oubase de dados). portanto, a criação de objetos dessa classe é temporária e

não será refletida na implementação

Page 49: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 49

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 97

Atividades da Fase ProjetarRefinarPlano

Sincronizarartefatos

Analisar Projetar Construir Testar

1. Definir Casos deUso Reais

2. Definir Relatórios, IU e “Storyboards”

3. Refinar a arquitetura do sistema

4. Definir Diagramasde Interação

5. Definir Diagramas deClasses de Projeto

6. Definir o EsquemaDo Banco de Dados

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 98

Definição

O Diagrama de Classes de Projeto apresentaespecificações para classes de software einterfaces (ex: interfaces Java) de uma aplicação

Informação típica: classes, associações e atributos

interfaces, com operações e constantes

métodos

tipos dos atributos

navegabilidade

dependências

Page 50: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 50

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 99

Definição (cont.)

Modelo Conceitual abstrações de conceitos, ouobjetos, do mundo real conceitos são também chamados de classes conceituais

Diagrama de Classes de Projeto definição declasses como componentes de software classes de software

Na prática, o Diagrama de classes pode serconstruído à medida que a fase de projeto avança,a partir dos diagramas de colaboração

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 100

Criando Diagramas de Classes

Identificar classes a partir dos diagramas de colaboração eilustrá-las

Acrescentar os atributos identificados no Modelo Conceitual Acrescentar os métodos provenientes dos diagramas de

colaboração Acrescentar tipos de atributos, parâmetros e retornos de

métodos Acrescentar as associações e navegabilidade (visibilidade por

atributo) Indicar relacionamentos de dependência (visibilidade não

implementada por atributo)

Page 51: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 51

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 101

Criando Diagramas de Classes

Identificar classes a partir dos diagramas de colaboração eilustrá-las

Acrescentar os atributos identificados no Modelo Conceitual Acrescentar os métodos provenientes dos diagramas de

colaboração Acrescentar tipos de atributos, parâmetros e retornos de

métodos Acrescentar as associações e navegabilidade (visibilidade por

atributo) Indicar relacionamentos de dependência (visibilidade não

implementada por atributo)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 102

Identificando Classes… Diagramas de colaboração:

:TPV

entrarItem(id,qtd)

:Venda2:criarItemLinha(espec,qtd)

:CatálogoProduto

1:espec:=obterEspec(id)

il:ItemLinhaVenda

2.1:criar(espec,qtd)

:EspecificaçãoProduto

1.1:espec:=buscar(id)

:ItemLinhaVenda

2.2:adicionar(il)

Classes:TPVCatalogoProdutoEspecificacaoProdutoItemLinhaVendaVenda

Page 52: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 52

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 103

Identificando Classes…

Classes:TPVCatalogoProdutoEspecificacaoProdutoItemLinhaVendaVenda

fazerPagamento(quantia)

1: fazer Pagamento(quantia)

:Pagamento

v:Venda:TPV

1.1: criar( )

:Loja

vendascompletadas:Venda

2:adicionarVenda(v)

2.1:adicionar(v)

LojaPagamento

Diagramas de colaboração:

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 104

Criando Diagramas de Classes

Identificar classes a partir dos diagramas de colaboração eilustrá-las

Acrescentar os atributos identificados no Modelo Conceitual Acrescentar os métodos provenientes dos diagramas de

colaboração Acrescentar tipos de atributos, parâmetros e retornos de

métodos Acrescentar as associações e navegabilidade (visibilidade por

atributo) Indicar relacionamentos de dependência (visibilidade não

implementada por atributo)

Page 53: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 53

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 105

Exemplo

TPV CatálogoProdutosEspecificaçãoProduto

descriçãopreçoCUP

Loja

TPV CatálogoProdutosEspecificaçãoProduto

Loja

Conceitos (Modelo Conceitual)

endereço nome

descriçãopreçoCUP

endereço nome

Classes de software (Diagrama de Classes de Projeto)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 106

Vendadatahora

Exemplo

TPV CatálogoProdutosEspecificaçãoProduto

descriçãopreçoCUP

Loja

TPV CatálogoProdutosEspecificaçãoProduto

Conceitos (Modelo Conceitual)

Classes de software (Diagrama de Classes de Projeto)

endereço nome

descriçãopreçoCUPestaCompleta

identificado durante a criação dos diagramas de colaboração

Page 54: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 54

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 107

Criando Diagramas de Classes

Identificar classes a partir dos diagramas de colaboração eilustrá-las

Acrescentar os atributos identificados no Modelo Conceitual Acrescentar os métodos provenientes dos diagramas de

colaboração Acrescentar tipos de atributos, parâmetros e retornos de

métodos Acrescentar as associações e navegabilidade (visibilidade por

atributo) Indicar relacionamentos de dependência (visibilidade não

implementada por atributo)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 108

Acrescentando métodos…

VendadataestáCompletahora

:TPV

entrarItem(id,qtd)

:Venda2:criarItemLinha(espec,qtd)

:TPV

terminarVenda()

:Venda1:tornarseCompleta()

criarItemLinha(…)tornarseCompleta( )

Page 55: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 55

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 109

Acrescentando métodos…

VendadataestáCompletahora

criarItemLinha(…)tornarseCompleta( )obterTotal( )fazerPagamento(…)calcularTroco( )

t:=obterTotal( ):Venda

fazerPagamento(quantia)

1: fazer Pagamento(quantia) v:Venda:TPV

:Venda

trc:=calcularTroco( )

pg:Pagamento1: qtia:=obterQuantia( )

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 110

Cuidados com a inserção de métodos

Linguagens de programação distintas podem tersintaxes distintas para métodos recomendável: usar sintaxe básica UML

nomeMétodo(Par1, Par2, … Parn)

Interpretação do método criar(): dependente dalinguagem de programação

Não incluir métodos de acesso a atritutos Ex: setData( ), getHora( ), …

Page 56: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 56

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 111

Cuidados com a inserção de métodos (cont.)

Mensagens para multiobjetos: não incluir métodoscorrespondentes a mensagens enviadas a classe coleção tratamento da mensagem depende da implementação - a

coleção pode ser representada, por exemplo, por um set emC++

:CatálogoProduto

:EspecificaçãoProduto

1:espec:=obterEspec(id)

1.1:espec:=buscar(id)

A mensagem buscar é para a coleção e não para EspecificaçãoProduto

A classe coleção não é representada

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 112

Criando Diagramas de Classes

Identificar classes a partir dos diagramas de colaboração eilustrá-las

Acrescentar os atributos identificados no Modelo Conceitual Acrescentar os métodos provenientes dos diagramas de

colaboração Acrescentar tipos de atributos, parâmetros e retornos de

métodos Acrescentar as associações e navegabilidade (visibilidade por

atributo) Indicar relacionamentos de dependência (visibilidade não

implementada por atributo)

Page 57: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 57

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 113

Acrescentando tipos…

Os tipos dos atributos e métodos podem,opcionalmente, ser acrescentados aos diagramasde classes de projeto se uma ferramenta CASE for utilizada para geração

automática de código, os tipos detalhados são necessários

se o diagrama for usado exclusivamente pordesenvolvedores de software, o excesso de informaçãopode “poluir” o diagrama e dificultar seu entendimento incluir informação de tipo quando relevante/necessária

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 114

Vendadata: DataestáCompleta: Booleanohora: Hora

criarItemLinha(espec:EspecificacaoProduto, qtd: Inteiro)tornarseCompleta( )obterTotal( ): MoedafazerPagamento(quantia:Moeda)calcularTroco( ): Moeda

Exemplo

Page 58: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 58

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 115

Criando Diagramas de Classes

Identificar classes a partir dos diagramas de colaboração eilustrá-las

Acrescentar os atributos identificados no Modelo Conceitual Acrescentar os métodos provenientes dos diagramas de

colaboração Acrescentar tipos de atributos, parâmetros e retornos de

métodos Acrescentar as associações e navegabilidade (visibilidade por

atributo) Indicar relacionamentos de dependência (visibilidade não

implementada por atributo)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 116

Associações e Navegabilidade

Associações e navegabilidade entre classe sãoindicadas pelos diagramas de colaboração Navegabilidade indica possibilidade de navegação

unidirecional por meio de uma associação entre classes geralmente implica visibilidade por atributos

A multiplicidade e os nomes das associações sãoretirados do Modelo Conceitual

Notação: seta contínua

Page 59: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 59

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 117

Associações e Navegabilidade

Indícios de associação e com presença denavegabilidade: A envia mensagem para B

A cria B

A precisa manter uma conexão com B

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 118

Exemplo

iniciarNovaVenda( )

:TPV :Venda1:criar ( ):ItemLinhaVenda1.1:criar ( )

VendadataestáCompletahora

criarItemLinha(…)tornarseCompleta( )obterTotal( )fazerPagamento(…)calcularTroco( )

TPV

terminarVenda( )entrarItem( )iniciarNovaVenda( )

Captura

1

vendaAtual: Venda

•TPV tem como atributo um objeto (ou uma referência para um objeto) do tipo Venda •Atributo pode ser omitido, pois está implícito na associação navegável

1

Page 60: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 60

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 119

Exemplo

VendadataestáCompletahora

criarItemLinha(…)tornarseCompleta( )obterTotal( )fazerPagamento(…)calcularTroco( )

ItemLinhaVendaquantidade

obterSubTotal( )

Contém

1 *

• Venda tem como atributo (omitido) uma coleçãode objetos do tipo ItemLinhaVenda (multiplicidade *, do Modelo Conceitual)

:TPVentrarItem(id,qtd)

:Venda2:criarItemLinha(espec,qtd)

il:ItemLinhaVenda

2.1:criar(espec,qtd)

:ItemLinhaVenda

2.2:adicionar(il)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 120

Modelo Conceitual

1..1

1..1

Caixa

1..1

Gerente

1..*

1..*

*

1..1

1..1

Pagamento

quantia

1..1

1..1

Cliente

1..1

1..1TPV

1..1

Registra-Vendas-do

Iniciado por

*1..1

Loja

endereçonome

1..1

Possui

1..*1..1

Catálogo de Produtos

*

1..1Usado-por

*

1..1

Venda

datahora

1..1

1..1

Paga-por

1..1

1..1

Iniciada-por

1..1

*

Registra-Dados-da

1..1

1..1Capturada-em

1..*

Item

*

Estoca

0..1

1..1

Especificação de Produto

descriçãopreçoUPC

1..*1..1

Contém

*

Descreve

*

ItemLinhaVenda

/quantidade

1..1

1..*

Contido-em

1..*

0..1

Registra-venda-de

1..1

*

Descritos-por

1..1

Page 61: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 61

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 121

Diagrama de Colaboração -iniciar

:Loja

criar()

:TPV

:EspecificacãoProduto

ep:EspecificaçãoProduto

2 : criar (cp)

1:criar ( )

cp:CatálogoProdutos

1.1:criar ( )

1.2.2* : adicionar (ep)

1.2.1* : criar(id,preço,descrição)

1.2 : carregarEspecProduto( )

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 122

Exemplo:Loja

criar()

1:criar ( )

cp:CatálogoProdutos

1.2 : carregarEspecProduto( )

Loja……

CatálogoProdutos

……

Usa 11..*

Page 62: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 62

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 123

Contém

Exemplo:Loja

criar()

:EspecificacãoProduto

ep:EspecificaçãoProduto

1:criar ( )

cp:CatálogoProdutos

1.1:criar ( )

1.2.2* : adicionar (ep)

1.2.1* : criar(id,preço,descrição)

1.2 : carregarEspecProduto( )

Loja……

CatálogoProdutos

……

EspecificaçãoProduto

……

Usa 11..*

1..*1

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 124

Exemplo:Loja

criar():TPV2 : criar (cp)

Loja……

TPV……

Possui

1

1..*

CatálogoProdutos

……

1..*

Recupera

• Note que esta associação não existe no Modelo Conceitual• A conexão entre TPV e CatálogoProduto foi identificada durante a criação de Diagramas de Colaboração• A mensagem criar(cp) enviada por Loja a TPV tem como parâmetro de construtor um objeto do tipo CatálogoProdutos, que será um atributo de TPV

1

Page 63: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 63

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 125

Exemplo

Loja……

TPV……

CatalogoProduto

…… Especificação

Produto……

Possui

Usa

Contém

1..*

1

11..*

1..*1

1

CatalogoProduto

……

1..*

Recupera

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 126

Criando Diagramas de Classes

Identificar classes a partir dos diagramas de colaboração eilustrá-las

Acrescentar os atributos identificados no Modelo Conceitual Acrescentar os métodos provenientes dos diagramas de

colaboração Acrescentar tipos de atributos, parâmetros e retornos de

métodos Acrescentar as associações e navegabilidade (visibilidade por

atributo) Indicar relacionamentos de dependência (visibilidade não

implementada por atributo)

Page 64: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 64

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 127

Relacionamentos de Dependência

No Diagrama de Classes, o relacionamento dedependência representa a visibilidade entre classesque não é implementada por atributo visibilidade por parâmetro

visibilidade local ou global

Um objeto de uma classe A tem conhecimento(enxerga) um objeto da classe B

Notação: seta tracejada

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 128

Exemplo

:TPV

entrarItem(id,qtd)

:Venda2:criarItemLinha(espec,qtd)

:CatálogoProduto

1:espec:=obterEspec(id)

il:ItemLinhaVenda

2.1:criar(espec,qtd)

:EspecificaçãoProduto

1.1:espec:=buscar(id)

:ItemLinhaVenda

2.2:adicionar(il)

visibilidade por parâmetro

visi

bilid

ade

loca

l

Page 65: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 65

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 129

Exemplo VendadataestáCompletahora

criarItemLinha(…)tornarseCompleta( )obterTotal( )fazerPagamento(…)calcularTroco( )

TPV

terminarVenda( )entrarItem( )iniciarNovaVenda( )

Captura

1 1

EspecificaçãoProduto

descriçãopreçoCUP

Dependência

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 130

Diagrama de Classes

1

Pagamento

quantia : Moeda

1

1 1..*

*

1

*

ItemLinhaVenda

quantidade : Inteiro

obterSubTotal( )

*

1..1

1..*

Especificação de Produto

descrição : Textopreço : QuantidadeCUP : CUP

^Descreve

1

1..*

1

Loja

endereço : Endereçonome : Texto

adicionarVenda(…)

1..1 1..1

Venda

data : Datahora : HoraestáCompleta : Booleano

tornarseCompleta( )criarItemLinha(…)fazerPagamento(...)obterTotal( )calcularTroco()

Paga-por

Contém

1

*

Registra-Dados-da >

Catálogo de Produtos

obterEspecificacao(…)

Usa

Contém

1..*

TPV

terminarVenda( )entrarItem(…)fazerPagamento(…)iniciarNovaVenda(…)

Possui

1..1 1..1

Captura

1.

Recupera

Page 66: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 66

Bacharelado emCiência da

Computação04/07/2017

Padrões de Projeto

Uma breve introdução e GRASP

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 132

Padrões

Desenvolvedores de software experientescriaram um repertório de princípios gerais eboas soluções para guiar a construção desoftwares

Essas soluções foram descritas em umformato padronizado (nome, problema,solução) e podem ser usadas em outroscontextos

Page 67: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 67

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 133

Padrões

Padrões usualmente não contêm novasidéias organizam conhecimentos e princípios existentes,

testados e consagrados

Padrão é uma descrição nomeada de umproblema e uma solução, que pode seraplicado em novos contextos

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 134

Padrões GRASP

GRASP = General Responsibility AssignmentSoftware Patterns

Descrevem princípios fundamentais de atribuiçãode responsabilidade a objetos

Alguns padrões GRASP principais: Especialista (Expert) Criador (Creator) Coesão alta (High Cohesion) Acoplamento fraco (Low Coupling) Controlador (Controller)

Page 68: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 68

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 135

Controlador

Problema: Quem deve ser responsável por tratarum evento do sistema ?

Solução: A responsabilidade de receber ou tratar asmensagens de eventos (operações) do sistemapode ser atribuída uma classe que: represente todo o sistema, um dispositivo ou um

subsistema – chamado de controlador fachada - OU represente um cenário de um caso de uso dentro do qual

ocorra o evento TratadorDe<NomeDoCasoDeUso>,

ControladorDe<NomeDoCasoDeUso>

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 136

Controlador

Exemplo: quem vai tratar os eventos do sistema TPV?

:Caixa

:SistemaComprar Itens

terminarVenda()

fazerPagamento(quantia)

troco, recibo

entrarItem(CUP, quantidade)

descrição item, total

iniciarNovaVenda( )

*[mais itens]

Page 69: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 69

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 137

Exemplo ID Item

Quantidade

Entrar Item

:Caixa

:CWindow

:????

Camada de Interface

Camada do Domínio

entrarItem(itemId, quantidade)

açãoExecutada(eventoDaAção)

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 138

Exemplo: Opções de Controlador

todo o sistema(controlador fachada):TPV

:TPVentrarItem(…)

:ControladorDeComprarItem

entrarItem(…)

• um tratador artificial do caso de uso: ControladorDeComprarItem

Page 70: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 70

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 139

Discussão: Controladores Fachada

Um controlador fachada deve ser um objeto (do domínio) quesugira uma cobertura sobre outras camadas e que seja oponto principal para as chamadas provenientes da interfacecom o usuário ou de outros sistemas pode ser uma abstração de uma entidade física – ex: TPV pode ser um conceito que represente o sistema – ex:

sistemaTPV

São adequados quando não há uma quantidade muito grandede eventos de sistema

Não é possível redirecionar mensagens do sistema paracontroladores alternativos (ex: outros subsistemas )

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 140

Discussão :Controladores de Casos de Uso

Deve existir um controlador diferente para cada caso de uso

Não é um objeto do domínio, e sim uma construção artificialpara dar suporte ao sistema. Ex: ControladorDeComprarItem,ControladorDeDevolução

Pode ser uma alternativa se a escolha de controladoresfachada deixar a classe controladora com alto acoplamentoe/ou baixa coesão (controlador inchado por excesso deresponsabilidade)

É uma boa alternativa quando existem muitos eventosenvolvendo diferentes processos.

Page 71: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 71

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 141

Controladores inchados

Classe controladora mal projetada - inchada coesão baixa – falta de foco e tratamentos de muitas

responsabilidades

Sinais de inchaço: uma única classe controladora tratando todos os eventos, que

são muitos. Comum com controladores fachada

o próprio controlador executa as tarefas necessárias paraatender o evento, sem delegar para outras classes (coesão alta,não especialista)

controlador tem muitos atributos e mantém informaçãosignificativa sobre o domínio, ou duplica informações existentesem outros lugares

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 142

Controlador

Curas para controladores inchados acrescentar mais controladores – misturar controladores

fachada e de casos de uso

delegar responsabilidades

Corolário: objetos de interface (como objetos“janela”) e da camada de apresentação não devemter a responsabilidade de tratar eventos do sistema

Page 72: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 72

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 143

Controlador

Benefícios: aumento das possibilidades de reutilização de

classes e do uso de interfaces “plugáveis”.

conhecimento do estado do caso de uso –controlador pode armazenar estado do caso deuso, garantindo a seqüência correta de execuçãode operações

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 144

ExemploID Item

Quantidade

Entrar Item

:Caixa

:CWindow

:TPV

Camada de Interface

Camada do Domínio

entrarItem(itemId, quantidade)

açãoExecutada(eventoDaAção)

:Venda

criarItemLinhaVenda (itemId, quantidade)

Page 73: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 73

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 145

Especialista

Problema: qual é o princípio mais básico deatribuição de responsabilidades a objetos ?

Solução: Atribuir responsabilidade aoespecialista da informação.

Exemplo: no sistema TPV, alguma classeprecisa conhecer o total geral de uma venda

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 146

Exemplo

Venda conhece o total da venda

ItemLinhaVenda conhece o subtotal dalinha

EspecificaçãoProduto conhece o preço doproduto.

Page 74: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 74

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 147

1.1: p:=obterPreço( )

t:=obterTotal( ):Venda

:EspecificaçãodeProduto

:LinhadeItemdeVenda

*

1*: st:=obterSubtotal( )

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 148

Discussão É o padrão mais utilizado

“Fazê-lo eu mesmo” objetos fazem coisas relacionadas à informação que

têm

Lembrar que existem especialistas parciais quecolaboram numa tarefa informação espalhada comunicação via mensagens

Tem uma analogia no mundo real

Especialista

Page 75: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 75

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 149

Benefícios: Mantém encapsulamento favorece o acoplamento

fraco

O comportamento fica distribuído entre as classes quetêm a informação necessária (classes “leves”) favorece alta coesão

Contra-indicações contra indicado quando aumenta acoplamento e reduz

coesão

Ex: quem é responsável por salvar uma Venda nobanco de dados?

Especialista

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 150

Criador

Problema: Quem deveria ser responsável pela criação deuma nova instância de alguma classe ?

Solução: atribua à classe B a responsabilidade de criar umanova instância da classe A se uma das seguintes condiçõesfor verdadeira: B agrega objetos de A

B contém objetos de A

B registra objetos de A

B usa objetos de A

B tem os valores iniciais que serão passados para objetos deA, quando de sua criação

Page 76: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 76

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 151

Criador

Exemplo: No sistema TPV, quem é responsável pela criaçãode uma instância de ItemLinhaVenda ?

1:criar(quantidade)

:VendacriarItemLinha (quantidade)

:ItemLinhaVenda

Venda contém vários itens de linha de venda

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 152

Discussão objetivo do padrão: definir como criador o objeto que

precise ser conectado ao objeto criado em algumevento escolha adequada favorece acoplamento fraco

objetos agregados, contêineres e registradores sãobons candidatos à responsabilidade de criar outrosobjetos

algumas vezes o candidato a criador é o objeto queconhece os dados iniciais do objeto a ser criado Ex: Venda e Pagamento

Criador

Page 77: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 77

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 153

Exemplo

fazerPagamento(quantia):Venda

:Pagamento

1:criar(quantia)

Venda possui dados iniciais do pagamento

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 154

Criador

Benefícios favorece o acoplamento fraco

provavelmente o acoplamento não é aumentadoporque o objeto criado provavelmente já é visível parao objeto criador, devido às associações existentesque motivaram sua escolha como criador

Page 78: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 78

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 155

Acoplamento

Acoplamento: dependência entre elementos(classes, subsistemas,…), normalmente resultantede colaboração para atender a umaresponsabilidade

O acoplamento mede o quanto um objeto estáconectado a, tem conhecimento de ou depende deoutros objetos acoplamento fraco (ou baixo) – um objeto não depende de

muitos outros acoplamento forte (ou alto) – um objeto depende de muitos

outros

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 156

Acoplamento

Problemas do acoplamento alto: mudanças em classes interdependentes forçam mudanças

locais

dificulta a compreensão do objetivo de cada classe

dificulta reutilização

Page 79: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 79

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 157

Acoplamento Fraco

Problema: como favorecer a baixa dependência eaumentar a reutilização ?

Solução: Atribuir responsabilidade de maneira que oacoplamento permaneça baixo.

Exemplo: No sistema TPV, suponha que queremoscriar uma instância de pagamento e associá-la àvenda. Qual classe deve ser responsável por essatarefa?

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 158

Qual?

fazerPagamento( )1: criar( )

2 : adicionarPagamento(p)

p:Pagamento

:Venda

:TPV

Projeto 1: segundo padrão Criador, responsabilidade atribuída ao TPV

fazerPagamento( )

1: fazer Pagamento( )

:Pagamento

:Venda:TPV

Projeto 2: alternativa – responsabilidade atribuída à Venda

1.1: criar( )

Page 80: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 80

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 159

Qual projeto é melhor?

Qual dos projetos anteriores favorece oacoplamento fraco? em ambos os casos, Venda será acoplada a (terá

conhecimento de) Pagamento

projeto 1 – acoplamento entre Pagamento e TPV

projeto 2 – não aumenta acoplamento

PREFERÍVEL

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 160

Formas de Acoplamento

Um objeto tem um atributo que referencia umobjeto de outra classe

Um objeto tem um método que referencia umobjeto de outra classe parâmetro, variável local ou retorno

Um objeto invoca os serviços de um objeto de outraclasse

Uma classe é subclasse de outra, direta ouindiretamente

Page 81: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 81

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 161

Discussão: Acoplamento fraco classes mais independentes

reduz impacto de mudanças

favorece reuso de classes

Considerado em conjunto com outros padrões

Extremo de acoplamento fraco não é desejável fere princípios da tecnologia de objetos – comunicação

por mensagens

projeto pobre: objetos inchados e complexos,responsáveis por muito trabalho baixa coesão

Acoplamento Fraco

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 162

Discussão: dica: concentre-se em reduzir o acoplamento em

pontos de evolução ou de alta instabilidade do sistema ex: cálculo de impostos terceirizados no sistema TPV

Benefícios: classe são pouco afetadas por mudanças em outras

partes

classes são simples de entender isoladamente

conveniente para reutilização

Acoplamento Fraco

Page 82: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 82

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 163

Coesão

Coesão mede o quanto as responsabilidades de umelemento (classe, objeto, subsistema,…) são fortementefocalizadas e relacionadas

Objeto com Coesão Alta objeto cujas responsabilidadessão altamente relacionadas e que não executa um volumemuito grande de trabalho

Objeto com Coesão Baixa objeto que faz muitas coisasnão relacionadas ou executa muitas tarefas difícil de compreender, reutilizar e manter

constantemente afetadas por mudanças

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 164

Coesão Alta

Problema: Como manter a complexidade sobcontrole?

Solução: Atribuir responsabilidade de tal forma quea coesão permaneça alta.

Exemplo (o mesmo para o acoplamento fraco): Nosistema TPV, suponha que queremos criar umainstância de pagamento e associá-la à venda. Qualclasse deve ser responsável por essa tarefa?

Page 83: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 83

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 165

Exemplo

fazerPagamento( )

1: criar( )

2 : adicionarPagamento(p)

p:Pagamento

:Venda

:TPV

Projeto 1: segundo padrão Criador, responsabilidade atribuída ao TPV

O TPV toma parte na responsabilidade de fazer pagamento. Neste exemplo, isso seria aceitável, mas o que aconteceria se houvessem 50 mensagens recebidas por TPV?

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 166

ExemploProjeto 2: alternativa – responsabilidade atribuída à Venda

Esta solução favorece uma coesão mais alta em TPV e também um acoplamento mais fraco. Portanto, projeto 2 é preferível.

fazerPagamento( )

1: fazer Pagamento( )

:Pagamento

:Venda:TPV

1.1: criar( )

Page 84: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 84

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 167

Coesão Alta

Discussão: Coesão alta, assim como Acoplamento Fraco, são princípios que

devem ser considerados no projeto de objetos má coesão traz acoplamento ruim e vice-versa

regra prática: classe com coesão alta tem um númerorelativamente pequeno de métodos, com funcionalidadesrelacionadas, e não executa muito trabalho

analogia com mundo real ex: pessoas que assume muitas responsabilidades não

associadas podem tornar-se (e normalmente tornam-se)ineficientes

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 168

Coesão Alta

Benefícios mais clareza e facilidade de compreensão no projeto

simplificação de manutenção e acréscimo defuncionalidade/melhorias

favorecimento do acoplamento fraco

aumento no potencial de reutilização classe altamente coesa pode ser usada para uma

finalidade bastante específica

Page 85: ES I Aula06n [Modo de Compatibilidade]docs.fct.unesp.br/docentes/dmec/rogerio/ES_I/ES_I_Aula06.pdf · z)&7 81(63 z z3uri 'u 5rjpulr ( *dufldz %dfkduhodgr hp &lrqfld gd &rpsxwdomr

FCT-UNESP 04/07/2017

Prof. Dr. Rogério E. Garcia 85

Bacharelado emCiência da

Computação04/07/2017

Próximos Passos...

BCC04/07/2017

04/07/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 170

Contextualizando…ISO 12207: Estrutura

Processos Fundamentais Processos de Apoio

Processos Organizacionais

Aquisição

Fornecimento

Desenvolvimento

Operação

Manutenção

Documentação

Garantia de Qualidade

Verificação

Validação

Revisão Conjunta

Auditoria

Resolução de Problemas

Gerência

Melhoria

Infra-estrutura

Treinamento

Ada

pta

ção