You are on page 1of 21

Modelagem Temporal

UML com UML
Linguagem de Modelagem Unificada

Aula 5
2004

1 2

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Vários diagramas da UML podem ser „ Objetivos da Modelagem Temporal
usados para expressar os aspectos – Descrever detalhadamente as funções a serem
desempenhadas em um sistema OO
temporais „ Fluxo de mensagens entre objetos
– Diagrama de Atividades „ Métodos necessários para cada classe
Métodos de classe
– Diagrama de Transição de Estados „

„ Métodos de objetos
– Diagramas de Interação – “O que o sistema deve realizar?”
„ Diagrama de Seqüência – “Quando cada função será realizada?”
„ Diagrama de Colaboração

3 4
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Modelagem Funcional e Temporal „ Modelagem Funcional e Temporal
– Tipos de métodos
– Definição de Métodos „ Serviços algoritmicamente simples (90%)
– Criar
– Conectar
– Acessar
Pedido – Liberar
Data recebimento „ Serviços algoritmicamente complexos
é_préPago – Calcular
Número „ Calcula um resultado a partir dos valores de
Preço atributos do objeto
Serviços fornecidos pela – Monitorar
classe para outros objetos
?
„ Monitora um sistema ou dispositivo externo
„ Lida com E/S externas ao sistema

5 6

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Diagrama de Transição de Estados „ Diagrama de Transição de Estados
– Notação proposta por David Harel-1987 – Estado
– Máquina com número finito de estados „ Situação na vida de um objeto
„ Estado é determinado pelo conjunto de
– A máquina pode receber eventos, e cada
valores armazenados em um objeto
evento pode gerar uma transição de
„ Estados Especiais
estado
– Inicial: somente um em um DTE
– Final
Conta criada
disponível

7 8
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Diagrama de Transição de Estados „ Diagrama de Transição de Estados
– Transições – Eventos
„ Um estado é associado a outro (ou a si „ Uma transição é associada a um evento
mesmo) pelas transições „ Evento: “algo que acontece em algum ponto
„ Formato: no tempo e que pode modificar o estado de
– evento(lista
evento(lista--parâmetros)
parâmetros) [guarda] / ação um objeto” [Bezerra, 2002]
Eventos em Software Eventos do Domínio do
Realizar depósito(quantia) Problema
/ depositar(quantia)
Mouse pressionado Pedido realizado
disponível Impressora sem papel Fatura paga
Cheque devolvido
9 10

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Diagrama de Transição de Estados „ Diagrama de Transição de Estados
Eleitor
– Eventos: tipos
– Exemplo Apresentando „ Evento de chamada: recebimento de uma mensagem
Urna documentos
de outro objeto (síncrono)
Habilita voto

Fecha urna
„ Evento de sinal: recebimento de um sinal (assíncrono)
Esperando Votando
em prefeito
„ Evento temporal: passagem de intervalo de tempo pré-
pré-
Habilita voto definido (cláusula after)
Voto prefeito
– Exemplo: after(30
after(30 segundos)
Votando
em prefeito Votando „ Evento de mudança: condição que se torna verdadeira
em vereador
Voto prefeito (cláusula when)
Voto vereador
– Exemplos:
Votando
em vereador Aguardando „ when(saldo
when(saldo > 0)
comprovante
Voto vereador „ when (horário = 00:00 h)
Comprovante recebido
11 12
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Diagrama de Transição de Estados „ Diagrama de Transição de Estados
– Guardas – Ações
„ Condição lógica que precisa ser satisfeita para „ “Ao transitar de um estado para outro, um
habilitar a transição objeto pode realizar uma ou mais ações”
„ Diferença entre guardas e evento de „ Representação:
mudança – /ação
Se ocorre evento e
Evento [quantia=saldo]
quantia = saldo a b
a transição é disparada

Quando quantia = saldo when(quantia=saldo)
a transição é disparada a b
13 14

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Diagrama de Transição de Estados „ Diagrama de Transição de Estados
– Ponto de Junção – Conta Bancária
E2 Realizar depósito(quantia)
/ depositar(quantia)
evento2 [guarda2]/ação2
E0
evento0 [guarda0]/ação0 Conta criada Conta fechada
disponível
E3
Realizar saque (quantia) Realizar saque(quantia)
[quantia > saldo] / sacar(quantia) when (saldo > 0)
/ sacar(quantia)
E4
Realizar depósito (quantia)
evento1 [guarda1]/ação1 [else]/ação5 Realizar saque (quantia) bloqueada / depositar(quantia)
E1
E5
after(30 dias)/aplicarJuros() [Bezerra, 2002]
15 16
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Diagrama de Transição de Estados „ Diagrama de Transição de Estados
– Despertador – Despertador
Armar alarme(horario) Despertador
/ horarioDefinido := horario, n
n := 0 horarioDefinido

when(n > 3)

Ação ocorre quando a
esperando ação entry de
Desarmar alarme
desarmado tocandoAlarme é
encerrada
entry / n := n + 1

/ horarioDefinido :=
when(horarioDefinido = agora())
horarioDefinido + 5 minutos

Desarmado Esperando Tocando tocando alarme
Desarmar alarme
entry / tocarAlarme(10)
17 18

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
funcionabilidade
H
tampa fechada pausa „ Estado de Histórico BackingUp
tampa levantada
parada
Command H Collecting

Nodo (H) registra o histórico do último estado pause
enchimento

Copying
End-of-backup
lavagem Estado Aninhado

...
Page-Jones, M. Fundamentos do Desenho CleaningUp
Orientado a Objeto com UML. Makron Books, 2001.
19 20
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Estados concorrentes „ Engenharia de Produção com DTE (1)
put(c) [c==‘;‘] / return true
Idle
put(c) [c==‘<‘]
Waiting
maintain put(c) [c==‘>‘]
GettingToken
put(c) [c/=‘<‘] / return false

Maintenance GettingBody
Testing put(c) [c/=‘>‘] / return false
Testing Self
devices Diagnosis put(c) [c/=‘;‘]
/ body.append(c); return false
Commanding

Waiting Command

21 22

Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE
„ Engenharia de Produção com DTE (2)
class MessageParser {
Public boolean put(char c) {
switch(state) {
case Waiting:
if (c == ‘<‘) {
state = GettingToken;
token = new StringBuffer();
body = new StringBuffer();
}
break;
case GettingToken:
if (c == ‘>’) state = GettingBody
else token.append(c);
break;
case GettingBody:
if (c == ‘;’) {
state = Waiting;
return true; }
else body.append(c);
}
return false;
... 23 Obtido em http://www.dvo.ru/bbc/pdpta/vol5/p522.pdf 24
Modelagem Temporal

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Processo e Heurísticas com UML - DTE
para Construção de „ Quantidade de Estados
diagramas de transições – Em sistemas bastante simples, a definição
dos estados de todos os objetos não é
de estados tão trabalhosa.
– No entanto, o crescimento dos estados
de um sistema cresce exponencialmente
Slides a seguir extraídos de com o número de objetos
Bezerra, 2002 – Torna impraticável a construção de um
único diagrama para todo o sistema
25
26

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Um DTE por classe „ Identificação de Transições
– Para resolver o problema da explosão – Nem todas as classes de um sistema
exponencial de estados, os diagramas de precisam de um DTE.
estados são desenhados por classe. „ Somente classes que exibem um
„ Desvantagem: dificuldade na visualização do comportamento dinâmico relevante.
estado do sistema como um todo. „ Objetos cujo histórico precisa ser rastreado
„ Essa desvantagem é parcialmente pelo sistema são típicos para se construir um
compensada pelos diagramas de interação. diagrama de estados.

27 28
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Processo de construção de DTEs (1) „ Processo de construção de DTEs (2)
– Identifique os estados relevantes para a classe. – Para cada transição, verifique se há fatores
– Identifique os eventos relevantes. Para cada que influenciam no seu disparo. (definição de
evento, identifique qual a transição que ele condições de guarda e ações).
ocasiona. – Para cada condição de guarda e para cada
– Para cada estado: identifique as transições ação, identifique os atributos e ligações que
possíveis quando um evento ocorre. estão envolvidos.
– Para cada estado, identifique os eventos – Defina o estado inicial e os eventuais estados
internos e ações correspondentes. finais.
– Desenhe o DTE.
29 30

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML - DTE com UML - DTE
„ Informações para o modelo de classes „ Uso do DTE no processo de
– A construção de um DTE freqüentemente desenvolvimento
leva à descoberta de novos atributos para – Os diagramas de estados podem ser
uma classe construídos com base nos diagramas de
interação e nos diagramas de classes.
„ principalmenteatributos para servirem de
abstrações para estados. – Durante a construção do diagrama de
estados para uma classe, novos atributos
– Além disso, este processo de construção
e novas operações podem surgir. Essas
permite identificar novas operações na novas propriedades devem ser
classe adicionadas ao modelo de classes.
„ pois
os objetos precisam reagir aos eventos
que eles recebem.
31 32
Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

com UML - DTE
Uso do DTE no processo de
Modelagem Temporal
„
desenvolvimento (continuação)
– O comportamento de um objeto varia em função
do estado no qual ele se encontra. com UML
– Pode ser necessária a atualização de uma ou
mais operações de uma classe para refletir o
comportamento do objetos em cada estado. Diagrama de Atividades
– Por exemplo, o comportamento da operação
sacar() da classe ContaBancária varia em
função do estado no qual esta classe se
encontra
„ saques não podem ser realizados em uma conta que
esteja no estado bloqueada.
bloqueada.
34
33

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Diagrama de Atividades „ Diagrama de Atividades
– Um diagrama de atividade exibe os passos de
– “Tipo especial de diagrama de estados, uma computação.
computação.
onde são representados os estados de „ Cada estado é um passo da computação, onde o
sistema está realizando algo.
uma atividade, ao invés dos estados de „ É orientado a fluxos de controle (ao contrário dos
DTEs que são orientados a eventos).
um objeto.”
– Fluxogramas estendidos...
„ Além de possuir toda a semântica existente em um
fluxograma, permite representar ações concorrentes e
sua sincronização.
– Elementos podem ser divididos em dois grupos:
controle seqüencial e controle paralelo.
paralelo.

35 36
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Diagrama de Atividades „ Diagrama de Atividades: Fluxo de Controle
Paralelos
– Fluxos de controle paralelos: dois ou mais fluxos sendo
executados simultaneamente.
– Uma barra de bifurcação recebe uma transição de
entrada, e cria dois ou mais fluxos de controle paralelos.
„ cada fluxo é executado independentemente e em paralelo com
os demais.
– Uma barra de junção recebe duas ou mais transições de
entrada e une os fluxos de controle em um único fluxo.
„ Objetivo: sincronizar fluxos paralelos.
„ A transição de saída da barra de junção somente é disparada
quando todas as transições de entrada tiverem sido disparadas.

37 38

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
Diagrama de Atividades: Swimlanes
Estado inicial
Selecionar local
„
Contratar arquiteto
Concorrência
Estado de ação
(bifurcação)
Diagrama de Atividades

Desenvolver plano

Estado da atividade
Orçar plano com
[rejeitado] submáquina

[aceito] Fluxo de
Objetos

Fazer trabalho no Fazer trabalho em
local outros setores() Objeto

:CertificadoDeHabitação
Concluir construção
[concluído]

Fluxo: Construção de uma Casa
Estado 39 40
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Diagrama de Atividades Diagrama de Atividades

„ Geração de código: exemplo (1) „ Geração de código: exemplo (2)
– Classe Linha: método interseção
„ Um parâmetro de entrada (l: Linha) e um de
retorno Duas linhas com mesma inclinação são
paralelas e não se cruzam

Linha
slope Point Line::
Line:: intersection (l: Line)
Line) {
delta if (slope
(slope == l.slope) return Point(0
Point(0,
int x = (l.delta - delta) / (slope
(slope - l.s
l.s
Slope: inclinação da linha
Delta: deslocamento em relação à origem Cálculo do ponto de int y = (slope
(slope * x) + delta;
interseção
return Point(x,y);
Point(x,y);
}
41 42

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Diagrama de Atividades: Uso
– O diagrama de atividades é pouco
utilizado na prática para modelagem de
aspectos temporais de software
– É fortemente utilizado na modelagem de
fluxos de trabalho de processos negócio
„A própria descrição do Processo Unificado é
fortemente baseada em diagramas de
atividades

43 44
Modelagem Temporal

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML
Modelagem Temporal „ Diagramas de Interação
– Interações entre objetos
com UML „ Sequência de trocas de mensagem entre um
conjunto de objetos para realizar um caso de
uso.
Diagramas de Interação:
-Diagrama de Seqüência Objeto Objeto
Evento Mensagem Evento
-Diagrama de Colaboração de de
Ator entrada saída Ator
(estímulo) (resposta)
Caso de Uso
45 Tempo
46

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Diagrama de Interação
– Identifica os estados de um objeto em
um caso de uso específico
– Aspectos temporais
„ Decisões
„ Ordem dos eventos
– Dois tipos
„ Diagrama de Sequência
„ Diagrama de Colaboração

47 48
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Diagrama de Sequência „ Diagrama de Seqüencia
– Há preocupação com ordem das ações – Principal objetivo: identificar quais mensagens
– Na Análise, erros e situações de tratamento de devem ser implementadas pelas classes
exceção não são considerados „ Classe/Objeto Emissor da mensagem é um Cliente
– Geralmente envolve a interação do sistema com „ Classe/Objeto Receptor da mensagem é um Servidor
os usários
Emissor Receptor
– Cada mensagem é rotulada com
„ nome mensagem(parâmetros)

„ argumentos
„ informações de controle
– Condições de guarda Mensagem deve ser implementado na
Classe do objeto receptor!

49 50

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Diagrama de Seqüência „ Diagrama de Seqüência
– Tipos de Interação

Simples
Somente fazem sentido
Síncrona se a linguagem de
programação permitir
Assíncrona estas alternativas
Retorno

51 52
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
Objeto
„ Diagrama de Seqüência anônimos
(formas
janela de
alternativas) u1: Usuário : Telefone u2: Usuário
um item : item de
entrada de um pedido
de pedido estoque
pedido
a retira fone do gancho
{b - a < 1 seg.}
1. preparar()
1.1 *[i=0 to card(item de pedido)] Autodelegação b tom de discagem
objeto preparar() {c - b < 10 seg.}
1.1.1verificar(): verificação
c * disca dígito numérico
chamada sendo roteada
[verificação = d
mensagem “verdadeiro”]
pela rede
Criação {d’ - d < 5 seg.}
Condição remover() d’ chamando chamando
Remover item() de objeto atende chamada
de guarda
Item excluído Som da campainha pára som da campainha pára

[verificação = Telefones interligados telefones interligados
“verdadeiro”] Criar(u1,u2,data,hora)
Mensagem d c:
criar() uma entrega conversação
não é instantânea
de item ...
53 54

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
Reserve(o: Order)
{
„ Sistema de Ponto de Vendas
OrderPosition opos;
Article article;
int number;
for (int i=1; i < o.number(); i++) { Comprar Itens
opos = o.giveOrderPosition(i);
article = opos.giveArticle(); <<includes>>
number = opos.giveNumber(); Caixa Cliente
articleStock.reserve(article, number); Registrar Pagto.
}
}

Pagar com dinheiro
Administradora
de Cartão de Pagar com cartão Pagar com cheque Contas a
Crédito Receber

55 56
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
Início comum Pagamento com Cartão
Comprar Itens

PDV Administradora
PDV Contas a de Cartão de
Caixa Cliente Receber Crédito
{repetir até que não entrarItem(id, quantidade) registrarPagamento(númeroCC, dataValidade)
haja mais itens}

terminarVenda() solicitarAprovação(idPDV, númeroCC, dataValidade, Valor)

resposta

[aprovado] acrescentarAprovação(resposta)

[aprovado] emitirComprovanteCartão()

57 58

Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
Pagamento com cheque „ Diagrama de Colaboração
– Apresenta a mesma informação do diagrama de
sequência (não representa o tempo como uma
Serviço de dimensão separada)
PDV Autorização
Cliente Caixa de Cheque – Utilização: visão geral da interação de objetos
registrarPagamento(rg, cpf,númCheque, númBanco) „ Sem detalhamento da ordem
„ Condensa em um único diagrama toda a troca de
solicitarAprovação(idPDV, rg, cpf, númCheque, númBanco, valor)
mensagens entre um grupo de classes
resposta „ Normalmente é gerado automaticamente pelas
[aprovado] solicitarImpressãoCheque ferramentas CASE a partir dos diagramas de seqüência
[aprovado] impressãoCheque

[aprovado] emitirComprovanteVenda()
59 60
Modelagem Temporal Modelagem Temporal
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
com UML com UML
„ Diagrama de Colaboração „ Integração dos modelos apresentados
– Notação
3: operação(lista de parâmetros)
1: evento
Objeto 1: nome 2: operação
Objeto 2
da classe
Nome do ator:
classe do ator
4: operação(lista de parâmetros)

: nome
5: operação(lista de parâmetros) :da
nome
classe
Objeto 3: nome :da
nome
classe
da classe da classe
fluxo de objeto

61 62

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Diagrama de Implantação

Diagrama de
Implantação

63
64
Projeto Orientado a Projeto Orientado a
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Objetos Objetos
„ Mapeamento de Modelos UML para „ Problemas enfrentados
– Linguagens de programação – A linguagem alvo não é OO
– Bancos de Dados „ Solução: mapeamento de classes para tipos
de dados
Pedido Cliente
Programa em
?
Data recebimento
é_préPago * 1 Nome
Número Endereço COBOL
Preço Limite de crédito
Entregar
Cancelar

Cliente Corporativo Cliente Pessoa
* Programa em
Item de Pedido
Pessoa_Contato No. cartão de crédito Pascal
Nome
Quantidade
Preço

65 66

Projeto Orientado a Projeto Orientado a
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Objetos Objetos
„ Problemas a serem enfrentados „ Problemas a serem enfrentados
– A linguagem alvo é baseada em (cont.)
objetos – Linguagem alvo permite herança simples
„ Solução: eliminação da herança e Pessoa
Pessoa *
polimorfismo Pessoa Função
Cliente
Programa em
Cliente Nome
Ada83
?
Endereço
Nome Limite de crédito
Endereço
Pessoa Pessoa Pessoa Pessoa
Limite de crédito
Cliente Corporativo * Propriedade Proprietário Funcionário
Funcionário Proprietário
Nome
Sem herança Endereço *
Limite de c’redito
Cliente Corporativo Cliente Pessoa Pessoa_Contato Propriedade
Cliente Pessoa
Pessoa_Contato No. cartão de crédito Nome
Proprietário
{Pessoa.PessoaFunção = Pessoa Proprietário}
Endereço Funcionário
Limite de crédito 67 68
No. cartão de crédito
Projeto Orientado a Projeto Orientado a
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Objetos Objetos
„ Problemas a serem enfrentados „ Persistência de objetos
(cont.) Objetos em
execução
– Linguagem alvo é orientada a objetos (RAM)

com herança simples (cont.)
Veículo
Mecanismo mensagem
de persistência associação

Veículo
Terrestre
Veículo
Aquático
?
Objetos
persistentes
em disco
Veículo
Anfíbio 69 70

Projeto Orientado a Projeto Orientado a
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Objetos Objetos
„ Persistência de Objetos „ Persistência de Objetos
– Em SGBDOOs – Em SGBDOOs (exemplo) Storable <<interface>>
Serializable
insert()

„ Normalmente é simples, pois o SGBD possui remove() ...
getObject()
select()
os mesmos conceitos implementados na getObjectId()
...
linguagem de programação Trabalha_para
Bilbioteca 1, N
„ Mapeamento entre classes transientes e Item
{persistente}

persistentes
1, N Data_Aquisição: Date 0, N
Núm_Tombo: Int
0, N
– uso de classes especiais (fornecidas como ersistente}
Livro
Pessoa
Nome: Str
1, N

bibliotecas)
1 Endereço: { Funcionário
1, N Título: Str autoria
Logradouro: Str,
ISBN: Int 0, N 1, N Bairro: Str, Cargo: Str
Editora: Str Cidade: Str. } CPF: Str
Telefones: array of Str;
{persistente} 1, N
{persistente}
Usuários
71 72
{persistente}
Projeto Orientado a Projeto Orientado a
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Objetos Objetos
„ Persistência de Objetos „ Persistência de Objetos
– Em SGBD-
SGBD-Relacional (processo geral) – Em SGBD-
SGBD-Relacional
„ Definir as tabelas na 3FN a partir das classes „ Tabelas
– Listar cada Classe e seus atributos – Nome, Identificadores, Colunas, Linhas, Restrições
– Levar esta lista para a 3FN, resultando em tabelas – Cada coluna possui um valor atômico
– Definir uma tabela de bd para cada tabela listada. – Cada linha representa um conjunto de valores dentro da
– Representar as tabelas como classes no modelo de tabela
objetos „ Operações Funcionário
„ Projetar consultas – Seleção CPF Nome Cargo

– Obs: Não é detalhado aqui – Projeção
„ Definir esquema de acesso – Junção

73 74

Projeto Orientado a
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Projeto Orientado a Objetos
Objetos Influências de SGBDs
Influências de SGBDs
„ Persistência de Objetos „ Persistência de Objetos
– Em SGBD-
SGBD-Relacional (cont.) – Em SGBD-Relacional (cont.)
„ Para classe do domínio do problema persistente Cliente
CPF
nome: String
– Gerar (pelo menos) uma tabela na 3FN telefone: String
logradouro: String número: String
dataNascimento: Data dígitoVerificador: String
Pessoa Endereço_Pessoa /idade: int
Código Nome CódPessoaLogradouro Bairro Cidade cep: String
Pessoa Funcionário ... ... ... ... ... ...
Nome: Str
Endereço: {
Logradouro: Str, Cargo: Str Cliente(id
Cliente(id,
, CPF, nome,
nome, telefone,
telefone, logradouro,
logradouro,
CPF: Str Telefones_Pessoa
Bairro: Str,
Cidade: Str. } Funcionário dataNascimento, idCEP)
dataNascimento, idCEP)
CódPessoa Número
Telefones: array of Str;
CódPes CPF Cargo CEP(id, número,
CEP(id, número, sufixo)
sufixo)
... ...

Cliente(id
Cliente(id,
, nome,
nome, telefone,
telefone, logradouro,
logradouro,
dataNascimento,
dataNascimento, CPF, CEP)
75 76
[Bezerra, 2002]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org Projeto Orientado a

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Projeto Orientado a Objetos
Influências de SGBDs Objetos
Influências de SGBDs
„ Persistência de Objetos „ Persistência de Objetos Classe para
– Em SGBD-Relacional (cont.) – Em SGBD-Relacional (cont.) acesso a bases de
dados Relacionais
„ Para cada classe persistente
mora
– Conectar classes que acessam as tabelas
*
TTable {abstrata}
Pessoa {subconjunto} Condomínio

síndico
Pessoa Funcionário
TabPessoa TabFunc
Nome: Str
Pessoa(id
Pessoa(id,
, dadosPessoa) ...
Endereço: {
Cargo: Str ...
Logradouro: Str,
Condomínio(id
Condomínio(id,, dadosCondomínio) Bairro: Str,
Cidade: Str. }
CPF: Str

Síndico(idCondomínio
Síndico(idCondomínio,, idPessoa)
idPessoa) Telefones: array of Str;

77 Classes do Domínio do Problema 78
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Projeto Orientado a Objetos Projeto Orientado a Objetos
Influências de SGBDs Influências de SGBDs

„ Símbolos „ Exemplo
Table
Departamento

View ADMDEPTO: CHARACTER(3)
NOMEDEPTO: VARCHAR(29)
PK NUMDEPTO: CHARACTER(3)
LOCALIZA: CHARACTER(16)
Chave Primária PK FK NUMGERENTE: CHARACTER(6)
NUMPROJETO: CHARACTER(10)
P
K NUMEMPREG: CHARACTER(6)
Chave Estrangeira FK F

PK
Chave Primária/Estrangeira F

Relacionamento 0..1 1

0..1 1
79 80
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org
Projeto Orientado a Objetos Projeto Orientado a Objetos
Influências de SGBDs Influências de SGBDs

„ Exemplo Cliente „ Exemplos
é efetuado por
PK NUMCLIENTE: SMALLINT Pedido Cliente
é efetuado por PRIMNOME: VARCHAR(12) 1..*
Pedido ULTNOME: VARCHAR(15)
1..* PK NUMCLIENTE: SMALLINT
ENDERECO: VARCHAR(25) PK NUMPEDIDO: SMALLINT
DESCRICAO: VARCHAR(255) PRIMNOME: VARCHAR(12)
PK NUMPEDIDO: SMALLINT TELEFONE: CHARACTER(10)
DATA: TIMESTAMP ULTNOME: VARCHAR(15)
DESCRICAO: VARCHAR(255) EMAIL: VARCHAR(25) P
FK NUMFUNCIONARIO: CHARACTER(6) K NUMCLIENTE: SMALLINT ENDERECO: VARCHAR(25)
DATA: TIMESTAMP F
P TELEFONE: CHARACTER(10)
K NUMCLIENTE: SMALLINT
F 0..* EMAIL: VARCHAR(25)
FK NUMFUNCIONARIO: CHARACTER(6)
PEDIDO

Funcionario CLIENTE
<<Derive>> <<Derive>>
DATANASC: DATE Pedido_Cliente
PK NUMFUNCIONARIO: CHARACTER(6)
PRIMNOME: VARCHAR(12)
vende para PK NUMPEDIDO: SMALLINT
DATAADMISSAO: DATE
CARGO: CHARACTER(8) 0..* DESCRICAO: VARCHAR(255)
ULTNOME: VARCHAR(15) DATA: TIMESTAMP
P
K NUMCLIENTE: SMALLINT
TELEFONE: CHARACTER(10) F
SEXO: CHARACTER(1) 81 PRIMNOME: VARCHAR(12) 82
ULTNOME: VARCHAR(15)
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - quites@computer.org

83