Professional Documents
Culture Documents
Dados Resultados
Algoritmos
Objetos e Objetos do
do Mundo Real
Problema Operações do Mundo Real
Mundo Real
Soluções
por Objetos e Dados de
Algoritmos
Computador Operações do
Saída
Abstratas Abstratos
ne essario, desejado
R 2.4
Casos de Uso
Casos de Uso Janelas
estendido Casos de
essencial real Relatórios Teste
Diagramas
de Caso de
Diagramas Métodos
Uso
de Interação
Modelo
Conceitual
Diagramas Definição
Glossário de Classe de Classes
e Interfaces
Diagrama
Sequências
Diagramas
Contratos de Pacotes
Sequ^en
ia de Eventos
A
~ao do Ator Resposta do Sistema
1. Este
aso de uso
ome
a
quando um
liente
hega
ao
aixa
om itens de
ompra
2. O
aixa registra
ada item 3. Determina o pre
o do item
e adi
iona o item a venda.
Se tiver mais de um mesmo item Des
ri
~ao e pre
o do
o Caixa entra a quantidade. item s~ao apresentados
.... .....
Sequ^en
ia de Eventos
A
~oes de Atores Respostas do Sistema
Primeiro M
etodo : baseado em atores
identi ar atores
Segundo M
etodo : baseado em eventos
Comprar itens
Cliente
Caixa Registro
Retornar Itens
Comprados
fluxo de
informação
caso de uso ator
Venda Estoque
1
data endereco
Atributo hora nome
1 1
1 Registra 1..*
Pagamento Posto
Comercial
1
quantia
Posto Loja
Comercial
1 1
Registra Registra
* *
Venda Venda
ou
melhor
Voo Descreve
Descrito por Descrição de vôos para Aeroporto
data Voo
hora * 1 número
* 1 nome
Posto Registra
Comercial 1 Venda
1
nome multiplicidade
5
exatamente 5
T
3,5,8
T exatamente 3 ou 5 ou 8
(1)
Cia
1
Emprega
1..*
Atribuida a Atribuido a
Pessoa * Voo Avião
1 * 1
1 *
Supervisiona
(2)
(3)
Exemplos de Associações
Registradora Posto
Usa Comercial
nome 1 1 número
(1)
(2)
Especificação Estoque
de Produto
upc : UPC endereço: Endereço
1. Diagrama de Sequ^
en
ias do Sistema
Ator
Comprar Itens - Versão 1
: Sistema
Caixa
Tipo X
Operações do tipo
Operação1 ()
Operação2 ()
Caixa
Para todos os itens, o Caixa registra
entrar item(UPC, qtidade)
UPC e quantidade
Para completar a entrada de um item, o
Caixa indica que a venda está completa venda fim()
Caixa
venda fim()
efetuar pagamento(quantia)
Limite do sistema
5. des
reva pos-
ondi
~oes nas seguintes
ategorias:
ria
~ao
e remo
~ao de inst^an
ias, modi
a
~ao de atributos, asso-
ia
~oes estabele
idas e rompidas.
pos-
ondi
~oes s~ao de
lara
~oes do estado do sistema; n~ao
s~ao a
~oes a tomar, devem estar no passado.
Modelo do Projeto
Object Store
UPC Qtidade
Preço Desconto
Total
EntrarItem VendaFim EfetuarPaga/o
1:mensagem2()
mensagem1() Instância 2:mensagem3() Instância
Classe A Classe B
Diagrama de Sequência
Instância Instância
Classe A Classe B
mensagem1()
mensagem2()
mensagem3()
(upc,
Posto
qtidade) Pós-condições
Comercial
1. Se uma nova .....
Diagrama
de Sequências Contratos Diagrama de
do Sistema Colaboração
msg1() 1:efetuarPagato(quantia:Dinheiro)
:PostoComercial :Venda
Tipo de retorno
msg1() 1:tot:=total():Integer
:PostoComercial :Venda
Valor de retorno
retorno :=mensagem(parâmetro:TipoParâmetro):TipoRetorno
msg1() iteração
1*:li:=proximoItem():ItensdeVenda :Venda
:PostoComercial
msg1() msg1()
{
:A 1*:[i:=1..10] msg2() :B for i:=1 to 10
{
B.msg2()
2*:[i:=1..10] msg3() C.msg3()
:C }
}
as cláusulas
são iguais
contêm múltiplas
mensagens
msg1()
:PostoComercial
um objeto envia
msg p/ ele mesmo
1:zerar()
msg1() 1:mensagem1()
2:mensagem2()
3:mensagem3() :Venda
:PostoComercial
msg1() segunda
terceira
:A 1:msg2() :B
1.1:msg3()
2.1:msg5()
2:msg4()
:C
quinta
quarta
2.2:msg6()
sexta
:D
msg1()
1:[novavenda] create() :Venda
:PostoComercial
teste 1.1:create()
:ItensdeVenda
:E incondicional
:D 1b.1:msg5() :C
msg p/ um elemento
msg1()
1:create()
:Venda 4:imprima() sl:ItensdeVenda
2:adicionaEleto(sl)
3:s:=size():int :ItensdeVenda
msg1()
:Venda 1:d1:=today():Date
Data
M
etodos :
umprem as responsabilidades.
Padr~
oes :
ont^em des
ri
o~es de um problema e
uma solu
~ao que pode ser utilizada em diferentes
ontextos.
Codi
am ideias e heursti
as existentes para
atribuir responsabilidades a objetos.
Padr~
oes GRASP b
asi
os : espe
ialista,
riador,
alta
oes~ao, baixo a
oplamento,
ontrole.
Solu
~
ao : Atribua uma responsabilidade a uma
lasse que possui a informa
~ao ne
essaria para
umpr-la.
Problema : Quem deveria ser responsavel por
al
ular o total-geral de uma venda? a
lasse Venda
possui a informa
~ao para isso
Classe Responsabilidade
Venda sabe total geral da venda
Item de Venda sabe sub-total de
ada item
Espe
i
a
~ao do Produto sabe pre
o do produto
:Especificação
do Produto Especificação
do Produto
descrição
Para Calcular o Total de Uma Venda preço
UPC
preço()
Solu
~: Atribua a
lasse B a responsabilidade
ao
1. B agrega objetos de A
2. B
ontem A
3. B armazena inst^an
ias de A
4. B usa objetos de A
5. B possui informa
~ao ne
essaria a
ria
~ao de A (B e um
espe
ialista para
riar A)
novo método
1:create() p:Pagato
:PostoComercial
2:adicionaPagato()
:Venda
efetuaPagato()
1:efetuaPagato() :Venda
:PostoComercial
1.1:create()
:Pagato
Solu
~
ao: Atribua responsabilidades para lidar
om mensagens de eventos do sistema a uma
lasse
que:
Posto Comercial
Sistema ......
fimVenda() fimVenda()
entrarItem() entrarItem()
efetuarPagto() efetuarPagto()
UPC Qtidade
Preço Desconto
Total
Seleciona
EntrarIten VendaFim EfetuarPaga/o
Ícone
íconeEnterItem()
controle
executar()
polimorfismo
msgdeControle(msgReg)
1a[msgReg.tipo=1]: create(msgReg)
:ControledeMsg c:Comando-1
1b[msgReg.tipo=2]: create(msgReg)
2:executar() c:Comando-2
c:Comando
Controlador
Criador
entrarItem(upc,qtidade)
3:criaLinhaItem(spec,qtidade)
1:[novavenda] create() :Venda
:PostoComercial
2:spec:=especificacao(upc) 3.1:create()
Especialista 3.2:addEleto(sl)
1.1:create()
:Cátalogo de
de Produtos sl:ItensdeVenda
2.1:spec:=find(upc) :ItensdeVenda
:Especificação
de Produto
Controlador Especialista
2:st:=subtotal() :ItensdeVenda
Especialista
s1:ItensdeVenda
2.1:p:=preço()
:Especificação
do Produto
efetuaPagato()
1:efetuaPagato() :Venda
:PostoComercial
1.1:create()
Baixo Acoplamento
Alta Coesão
:Pagato
efetuaPagato()
1:efetuaPagato() s:Venda
:PostoComercial
2:adicionarVenda(s)
1.1:create()
Especialista
:Estoque
:Pagato
2.1:adicionar(s)
Venda Completa:Venda
b:=balance() 1:q:=quantia()
s:Venda :Pagato
2:t:=total()
1:create()
1.2.2*:adicionar(ep)
cp:Cátalogo
de Produto 1.1:create()
1.2:carregaEspProd() Especificação de Produto
1.2.1*:create(upc,preço,descrição) ep:Especificação
de Produto
UPC Qtidade
Preço Desconto
Total
EntrarIten VendaFim EfetuarPaga/o
Seleciona
Ícone
íconeEnterItem()
t:=total():Float
Camada de :PostApplet
Apresentação
(Java Applet) entrarItem(upc,qtidade)
Uma vez que PostApplet tem uma conexão com uma instância de posto p
ele pode enviar uma mensagem, por exemplo entrarItem
2:espec:=especificacao(upc) 3.1:create(espec,qtidade)
Class PostoComercial
{ ...
:Especificação
de Produto Por atributo private CatalogodeProdutos cp;
...
}
desenhar o diagrama
opiar os atributos
Posto Venda
Comercial 1 registra 1
data
hora
entrarItem() navegabilidade estaCompleta:boolean
conexão
unidirecional registrarItem()
métodos
informação
ausência de sobre o tipo
navegabilidade
não conexão de
Venda para Posto
Cátalogo de Especificação
ItensdeVenda Produtos do Produto
qtidade:Integer descrição:Text
subtotal():Quantidade especificação() preço:Quantidade
upc:UPC
tipo de retorno para métodos
Estoque
endereço:Endereço
tipo de atributos
nome:Text
adicionarVenda(s:Venda)
tipo de parâmetros
Especificação
Estoque Cátalogo de do Produto
Usa
1 endereço:Endereço Produtos Contém descrição:Text
1 1 preço:Quantidade
nome:Text 1 1..* upc:UPC
adicionarVenda(s:Venda) especificação()
1
1
Filiais de
Venda descreve
1 data *
Posto hora
estaCompleta:boolean ItensdeVenda
Comercial Contém
1 Registra 1
registrarItem() 1 1..* qtidade:Integer
efetuarPagato() subtotal():Quantidade
entrarItem()
VendaFim() tornarCompleta()
efetuarPagato() total()
* 1
Pago por
Registros-completos
1
Pagato
Pagamento
ou
Pagamento
super-classe
existe atributo comum Com Cheque 1
Pagamento
1
Pagamento
cada pagato é quantia: Dinheiro associações adicionais
tratado diferentemente
*
Crédito com Pago com
1 1
Cartão Cheque
Loja Autorização
Autoriza pagatos -via
nome endereço
endereço * 1..* nome
telefone
Contrato de
Serviço Um conceito associativo
atributos relacionados à
id-transação
associação
Tempo de vida dependente
da associação
Mão Dedo
1 0..7
agregação de composição
agregação de compartilhamento
tipo abstrato
Vendas
Exemplo
Domínio
Vendas Produtos
Camadas e Partições
Domínio
Vendas Produtos
Camadas
Verticias Serviços
Partições Horizontais
Conceitos do Domínio
Kernel
Posto Estoque Gerente
Comercial
Vendas
Produtos
Pagamentos
Pagamento Autorização
Cheque
Domínio
serviços
alto-nível
Interface com Interface com Relatórios orientados
Comunicação
B.D. Relacional B.D.O.Objetos a objetos
Frameworks de Aplicações
serviços
Bibliotecas de Suporte
baixo-nível
orientados
notação para um
pacote em UML ou não a objetos
B.D.
Relacional B.D. O
Objetos
Padr~
ao Dom
nio-Apresenta
~
ao Separados
(Modelo-Vis~
ao Separados)
Solu
~
ao : As
lasses da apresenta
~ao n~ao mant^em
dados, apenas realizam E/S, a
oplamento mnimo de
objetos do domnio
om janelas da apresenta
~ao.
UPC Qtidade
Preço Desconto
Total
EntrarIten VendaFim EfetuarPaga/o
Camada de
Apresentação
(Java Applet)
1:enterItem(upc,qtidade) 1:displaymensagem(msg)
:Posto :Posto
Camada do
Comercial Comercial
Domínio
Espera entrarItem
Entrada
Venda Itens
vendaFim
eventos externos
Espera
efetuaPagato Pagato
estados
transições
dentes de Estados
Exemplo - Atributos
Especificação
de Produto
ItensdeVenda Descrito por descrição:Text
preço:Quantidade
qtidade:Integer * 1
upc:UPC
subtotal():Quantidade
Cátalogo de
Looks-in 1 Produtos
especificação()
Venda
1
data
Posto hora
Comercial estaCompleta:boolean
1 Registra 1
registrarItem()
entrarItem() efetuarPagato()
VendaFim() tornarCompleta()
efetuarPagato() total()
Venda
data
hora
estaCompleta:boolean ItensdeVenda
Contém
registrarItem() 1 1..* qtidade:Integer
efetuarPagato() subtotal()
tornarCompleta()
total()
{
...
private Vector itens; visibilidade para todos os itens
}
Especificação 2
Estoque 7 Cátalogo de do Produto
Usa 3
1 endereço:Endereço Produtos Contém descrição:Text
1 1 preço:Quantidade
nome:Text 1 1..* upc:UPC
adicionarVenda(s:Venda) 1 especificação()
1
1
Filiais de Procura-em
Venda 5 descreve
1 1 data *
Posto hora
6 estaCompleta:boolean ItensdeVenda 4
Comercial Contém
1 Registra 1
registrarItem() 1 1..* qtidade:Integer
efetuarPagato() subtotal():Quantidade
entrarItem()
VendaFim() tornarCompleta()
efetuarPagato() total()
* 1
Pago por
Registros-completos
1
Pagato 1
quantia