Modelagem Temporal com UML
UML
Linguagem de Modelagem Unificada Aula 5 2004
2
Modelagem Temporal com UML
Vários diagramas da UML podem ser usados para expressar os aspectos temporais – Diagrama de Atividades – Diagrama de Transição de Estados – Diagramas de Interação Diagrama
de Seqüência Diagrama de Colaboração 3
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
1
Modelagem Temporal com UML
Objetivos da Modelagem Temporal – Descrever detalhadamente as funções a serem desempenhadas em um sistema OO
Fluxo de mensagens entre objetos Métodos necessários para cada classe Métodos de classe Métodos de objetos
– “O que o sistema deve realizar?” – “Quando cada função será realizada?”
4
Modelagem Funcional e Temporal – Definição de Métodos Pedido Data recebimento é_préPago Número Preço Serviços fornecidos pela classe para outros objetos
?
5
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Notação proposta por David Harel-1987 – Máquina com número finito de estados – A máquina pode receber eventos, e cada evento pode gerar uma transição de estado
7
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML
Modelagem Temporal com UML
Modelagem Funcional e Temporal – Tipos de métodos
Serviços algoritmicamente simples (90%) – – – –
Criar Conectar Acessar Liberar
Serviços algoritmicamente complexos
– Calcular Calcula um resultado a partir dos valores de atributos do objeto – Monitorar Monitora um sistema ou dispositivo externo Lida com E/S externas ao sistema 6
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Estado Situação
na vida de um objeto Estado é determinado pelo conjunto de valores armazenados em um objeto Estados Especiais – Inicial: somente um em um DTE – Final Conta criada
disponível 8
Diagrama de Transição de Estados – Transições Um
estado é associado a outro (ou a si mesmo) pelas transições Formato: – evento(lista evento(lista--parâmetros) parâmetros) [guarda] / ação Realizar depósito(quantia) / depositar(quantia)
disponível 9
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados Eleitor – Exemplo
Apresentando documentos
Urna
Habilita voto
Esperando
Fecha urna
Habilita voto
Votando em prefeito
Votando em prefeito Voto prefeito
Votando em vereador
Voto prefeito Voto vereador
Votando em vereador Voto vereador
Aguardando comprovante Comprovante recebido 11
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML - DTE
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Eventos Uma
transição é associada a um evento Evento: “algo que acontece em algum ponto no tempo e que pode modificar o estado de um objeto” [Bezerra, 2002] Eventos em Software
Eventos do Domínio do Problema
Mouse pressionado
Pedido realizado
Impressora sem papel
Fatura paga Cheque devolvido
10
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Eventos: tipos
Evento de chamada: recebimento de uma mensagem de outro objeto (síncrono) Evento de sinal: recebimento de um sinal (assíncrono) Evento temporal: passagem de intervalo de tempo préprédefinido (cláusula after) – Exemplo: after(30 after(30 segundos)
Evento de mudança: condição que se torna verdadeira (cláusula when) – Exemplos: when(saldo when(saldo > 0) when (horário = 00:00 h) 12
Diagrama de Transição de Estados – Guardas Condição
lógica que precisa ser satisfeita para habilitar a transição Diferença entre guardas e evento de mudança Se ocorre evento e quantia = saldo a transição é disparada
a
Quando quantia = saldo a transição é disparada
a
Evento [quantia=saldo]
when(quantia=saldo)
b
b 13
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Ponto de Junção E2 evento2 [guarda2]/ação2
E0 evento0 [guarda0]/ação0
E3
E4 evento1 [guarda1]/ação1
[else]/ação5
E1 E5 15
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML - DTE
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Ações “Ao
transitar de um estado para outro, um objeto pode realizar uma ou mais ações” Representação: – /ação
14
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Conta Bancária Conta criada
Realizar depósito(quantia) / depositar(quantia)
disponível
Conta fechada
Realizar saque (quantia) Realizar saque(quantia) when (saldo > 0) [quantia > saldo] / sacar(quantia) / sacar(quantia) Realizar saque (quantia)
bloqueada after(30 dias)/aplicarJuros()
Realizar depósito (quantia) / depositar(quantia)
[Bezerra, 2002]
16
Diagrama de Transição de Estados – Despertador
Desarmado
Esperando
Tocando 17
Modelagem Temporal com UML - DTE funcionabilidade H
tampa fechada
pausa
tampa levantada
parada
enchimento
lavagem
Nodo (H) registra o histórico do último estado
Estado Aninhado
... Page-Jones, M. Fundamentos do Desenho Orientado a Objeto com UML. Makron Books, 2001. 19
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML - DTE
Modelagem Temporal com UML - DTE
Diagrama de Transição de Estados – Despertador Armar alarme(horario)
Despertador n horarioDefinido
/ horarioDefinido := horario, n := 0 when(n > 3)
Desarmar alarme
desarmado
esperando entry / n := n + 1
when(horarioDefinido = agora())
Ação ocorre quando a ação entry de tocandoAlarme é encerrada
/ horarioDefinido := horarioDefinido + 5 minutos
tocando alarme
Desarmar alarme
entry / tocarAlarme(10)
18
Modelagem Temporal com UML - DTE
Estado de Histórico Command
BackingUp H
Collecting
pause
End-of-backup
Copying
CleaningUp 20
21
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
23
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML - DTE Estados concorrentes Idle
maintain
Maintenance Testing
Testing devices
Self Diagnosis
Waiting
Command
Commanding
Modelagem Temporal 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;
Modelagem Temporal com UML - DTE
Engenharia de Produção com DTE (1) put(c) [c==‘;‘] / return true
Waiting put(c) [c/=‘<‘] / return false
put(c) [c==‘<‘]
GettingToken
put(c) [c==‘>‘]
GettingBody put(c) [c/=‘>‘] / return false put(c) [c/=‘;‘] / body.append(c); return false
22
Obtido em http://www.dvo.ru/bbc/pdpta/vol5/p522.pdf
24
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Slides a seguir extraídos de
Bezerra, 2002
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
25
Modelagem Temporal com UML - DTE
Um DTE por classe – Para resolver o problema da explosão exponencial de estados, os diagramas de estados são desenhados por classe. Desvantagem:
dificuldade na visualização do estado do sistema como um todo. Essa desvantagem é parcialmente compensada pelos diagramas de interação.
27
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Processo e Heurísticas para Construção de diagramas de transições de estados
Modelagem Temporal com UML - DTE
Quantidade de Estados – Em sistemas bastante simples, a definição dos estados de todos os objetos não é tão trabalhosa. – No entanto, o crescimento dos estados de um sistema cresce exponencialmente com o número de objetos – Torna impraticável a construção de um único diagrama para todo o sistema 26
Modelagem Temporal com UML - DTE
Identificação de Transições – Nem todas as classes de um sistema precisam de um DTE. Somente
classes que exibem um comportamento dinâmico relevante. Objetos cujo histórico precisa ser rastreado pelo sistema são típicos para se construir um diagrama de estados.
28
Processo de construção de DTEs (1) – –
– –
Identifique os estados relevantes para a classe. Identifique os eventos relevantes. Para cada evento, identifique qual a transição que ele ocasiona. Para cada estado: identifique as transições possíveis quando um evento ocorre. Para cada estado, identifique os eventos internos e ações correspondentes. 29
Modelagem Temporal com UML - DTE
Informações para o modelo de classes – A construção de um DTE freqüentemente leva à descoberta de novos atributos para uma classe principalmente
atributos para servirem de abstrações para estados.
– Além disso, este processo de construção permite identificar novas operações na classe pois
os objetos precisam reagir aos eventos que eles recebem.
31
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML - DTE
Modelagem Temporal com UML - DTE
Processo de construção de DTEs (2) –
–
– –
Para cada transição, verifique se há fatores que influenciam no seu disparo. (definição de condições de guarda e ações). Para cada condição de guarda e para cada ação, identifique os atributos e ligações que estão envolvidos. Defina o estado inicial e os eventuais estados finais. Desenhe o DTE. 30
Modelagem Temporal com UML - DTE
Uso do DTE no processo de desenvolvimento – Os diagramas de estados podem ser construídos com base nos diagramas de interação e nos diagramas de classes. – Durante a construção do diagrama de estados para uma classe, novos atributos e novas operações podem surgir. Essas novas propriedades devem ser adicionadas ao modelo de classes. 32
Uso do DTE no processo de desenvolvimento (continuação)
Modelagem Temporal com UML
– O comportamento de um objeto varia em função do estado no qual ele se encontra. – 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. – Por exemplo, o comportamento da operação sacar() da classe ContaBancária varia em função do estado no qual esta classe se encontra
Diagrama de Atividades
saques não podem ser realizados em uma conta que esteja no estado bloqueada. bloqueada.
34 33
Modelagem Temporal com UML
Diagrama de Atividades – “Tipo especial de diagrama de estados, onde são representados os estados de uma atividade, ao invés dos estados de um objeto.”
35
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML - DTE
Modelagem Temporal com UML
Diagrama de Atividades
– Um diagrama de atividade exibe os passos de uma computação. computação.
Cada estado é um passo da computação, onde o sistema está realizando algo. É orientado a fluxos de controle (ao contrário dos DTEs que são orientados a eventos).
– 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.
36
37
Modelagem Temporal com UML Estado inicial Selecionar local
Contratar arquiteto
Estado de ação
Concorrência (bifurcação)
Desenvolver plano
Orçar plano
[rejeitado] [aceito]
Fazer trabalho no local
Fazer trabalho em outros setores()
Concluir construção
Fluxo: Construção de uma Casa
Estado da atividade com submáquina Fluxo de Objetos Objeto
:CertificadoDeHabitação [concluído]
Estado
39
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Diagrama de Atividades
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Diagrama de Atividades
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML
Modelagem Temporal com UML
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.
38
Modelagem Temporal com UML
Diagrama de Atividades: Swimlanes
40
Geração de código: exemplo (1) – Classe Linha: método interseção Um
parâmetro de entrada (l: Linha) e um de Duas linhas com mesma inclinação são retorno paralelas e não se cruzam
Linha slope delta Slope: inclinação da linha Delta: deslocamento em relação à origem
Cálculo do ponto de interseção
41
Modelagem Temporal 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
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Diagrama de Atividades
Diagrama de Atividades
Geração de código: exemplo (2)
Point Line:: Line:: intersection (l: Line) Line) { if (slope (slope == l.slope) return Point(0 Point(0, int x = (l.delta - delta) / (slope (slope - l.s l.s int y = (slope (slope * x) + delta; return Point(x,y); Point(x,y); } 42
Modelagem Temporal com UML
44
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Diagramas de Interação: -Diagrama de Seqüência -Diagrama de Colaboração
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
45
Modelagem Temporal 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
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML
Modelagem Temporal com UML
Diagramas de Interação – Interações entre objetos Sequência
de trocas de mensagem entre um conjunto de objetos para realizar um caso de uso.
Ator
Evento de entrada (estímulo)
Objeto
Mensagem
Objeto
Caso de Uso
Evento de Ator saída (resposta)
Tempo
46
Modelagem Temporal com UML
48
Diagrama de Sequência – Há preocupação com ordem das ações – Na Análise, erros e situações de tratamento de exceção não são considerados – Geralmente envolve a interação do sistema com os usários – Cada mensagem é rotulada com
nome argumentos informações de controle – Condições de guarda 49
Modelagem Temporal com UML
Diagrama de Seqüência
51
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML
Modelagem Temporal com UML
Diagrama de Seqüencia – Principal objetivo: identificar quais mensagens devem ser implementadas pelas classes
Classe/Objeto Emissor da mensagem é um Cliente Classe/Objeto Receptor da mensagem é um Servidor Emissor
Receptor
mensagem(parâmetros)
Mensagem deve ser implementado na Classe do objeto receptor! 50
Modelagem Temporal com UML
Diagrama de Seqüência – Tipos de Interação Simples Síncrona Assíncrona
Somente fazem sentido se a linguagem de programação permitir estas alternativas
Retorno
52
Diagrama de Seqüência
janela de entrada de pedido
um pedido
1. preparar()
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
objeto
um item de pedido
: item de estoque
Autodelegação
1.1 *[i=0 to card(item de pedido)] preparar() 1.1.1verificar(): verificação
mensagem Condição de guarda
[verificação = “verdadeiro”] remover()
Remover item()
Criação de objeto
Item excluído [verificação = “verdadeiro”] criar()
uma entrega de item 53
Modelagem Temporal com UML
Reserve(o: Order) { OrderPosition opos; Article article; int number; for (int i=1; i < o.number(); i++) { opos = o.giveOrderPosition(i); article = opos.giveArticle(); number = opos.giveNumber(); articleStock.reserve(article, number); } }
55
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Objeto anônimos (formas alternativas)
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) -
[email protected]
Modelagem Temporal com UML
Modelagem Temporal com UML u1: Usuário
a {b - a < 1 seg.} {c - b < 10 seg.}
{d’ - d < 5 seg.}
: Telefone
u2: Usuário
retira fone do gancho
b
tom de discagem
c
* disca dígito numérico
d
chamada sendo roteada pela rede
d’
chamando
chamando atende chamada som da campainha pára
Som da campainha pára Telefones interligados
telefones interligados Criar(u1,u2,data,hora)
Mensagem d não é instantânea
c: conversação
...
54
Modelagem Temporal com UML
Sistema de Ponto de Vendas Comprar Itens
Caixa
<
>
Cliente
Registrar Pagto.
Administradora de Cartão de Crédito
Pagar com dinheiro Pagar com cartão
Pagar com cheque
Contas a Receber 56
Comprar Itens
PDV
Caixa entrarItem(id, quantidade)
{repetir até que não haja mais itens}
terminarVenda()
57
Modelagem Temporal com UML Pagamento com cheque
Cliente
Serviço de Autorização de Cheque
PDV Caixa
registrarPagamento(rg, cpf,númCheque, númBanco) solicitarAprovação(idPDV, rg, cpf, númCheque, númBanco, valor) resposta [aprovado] solicitarImpressãoCheque [aprovado] impressãoCheque [aprovado] emitirComprovanteVenda() 59
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
Início comum
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
Modelagem Temporal com UML
Modelagem Temporal com UML Pagamento com Cartão
PDV Cliente
Administradora de Cartão de Crédito
Contas a Receber
registrarPagamento(númeroCC, dataValidade) solicitarAprovação(idPDV, númeroCC, dataValidade, Valor) resposta [aprovado] acrescentarAprovação(resposta) [aprovado] emitirComprovanteCartão() 58
Modelagem Temporal com UML
Diagrama de Colaboração – Apresenta a mesma informação do diagrama de sequência (não representa o tempo como uma dimensão separada) – Utilização: visão geral da interação de objetos
Sem detalhamento da ordem Condensa em um único diagrama toda a troca de mensagens entre um grupo de classes Normalmente é gerado automaticamente pelas ferramentas CASE a partir dos diagramas de seqüência
60
Diagrama de Colaboração – Notação 3: operação(lista de parâmetros) 1: evento
Objeto 1: nome da classe
2: operação
Objeto 2
Nome do ator: classe do ator 4: operação(lista de parâmetros)
Objeto 3: nome da classe
5: operação(lista de parâmetros)
: nome :da nome classe :da nome classe da classe
fluxo de objeto 61
Diagrama de Implantação
63
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
Modelagem Temporal com UML
Modelagem Temporal com UML
Integração dos modelos apresentados
62
Diagrama de Implantação
64
Mapeamento de Modelos UML para – Linguagens de programação – Bancos de Dados
65
Projeto Orientado a Objetos
Problemas a serem enfrentados – A linguagem alvo é baseada em objetos Solução:
eliminação da herança e polimorfismo Cliente
Nome Endereço Limite de crédito
?
Programa em Ada83
Sem herança Cliente Corporativo
Cliente Pessoa
Pessoa_Contato
No. cartão de crédito
Cliente Nome Endereço Limite de crédito Cliente Corporativo Nome Endereço Limite de c’redito Pessoa_Contato Cliente Pessoa Nome Endereço Limite de crédito No. cartão de crédito
67
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
Projeto Orientado a Objetos
Projeto Orientado a Objetos
Problemas enfrentados – A linguagem alvo não é OO Solução:
de dados
Pedido Data recebimento é_préPago * Número Preço Entregar Cancelar
mapeamento de classes para tipos Cliente 1
* Item de Pedido
Nome Endereço Limite de crédito
Programa em COBOL
?
Cliente Corporativo
Cliente Pessoa
Pessoa_Contato
No. cartão de crédito
Programa em Pascal
Nome Quantidade Preço
66
Projeto Orientado a Objetos
Problemas a serem enfrentados (cont.) – Linguagem alvo permite herança simples Pessoa
Pessoa
Pessoa Funcionário
Pessoa Proprietário
*
Pessoa Função
Pessoa Proprietário
* Propriedade
Pessoa Funcionário
* Propriedade Proprietário Funcionário
{Pessoa.PessoaFunção = Pessoa Proprietário} 68
Problemas a serem enfrentados (cont.) – Linguagem alvo é orientada a objetos com herança simples (cont.) Veículo
Veículo Terrestre
Veículo Aquático
?
Veículo Anfíbio
69
Projeto Orientado a Objetos
Persistência de Objetos – Em SGBDOOs Normalmente
é simples, pois o SGBD possui os mesmos conceitos implementados na linguagem de programação Mapeamento entre classes transientes e persistentes
Projeto Orientado a Objetos
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
Projeto Orientado a Objetos
Persistência de objetos Objetos em execução (RAM)
Objetos persistentes em disco 70
Projeto Orientado a Objetos
Persistência de Objetos – Em SGBDOOs (exemplo)
ersistente}
71
Storable insert() remove() getObject() select() getObjectId() ...
<> Serializable ...
Trabalha_para
Bilbioteca
– uso de classes especiais (fornecidas como bibliotecas)
mensagem associação
Mecanismo de persistência
1, N
Item 1, N
Data_Aquisição: Date Núm_Tombo: Int
{persistente} 0, N
0, N Livro 1, N
Título: Str ISBN: Int Editora: Str
{persistente}
1 0, N
autoria 1, N
{persistente}
Pessoa Nome: Str Endereço: {
1, N Funcionário
Logradouro: Str, Bairro: Str, Cidade: Str. }
Cargo: Str CPF: Str
Telefones: array of Str; 1, N
Usuários 72 {persistente}
73
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
75
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
Projeto Orientado a Objetos Persistência de Objetos – Em SGBDSGBD-Relacional (processo geral)
Definir as tabelas na 3FN a partir das classes – – – –
Listar cada Classe e seus atributos Levar esta lista para a 3FN, resultando em tabelas Definir uma tabela de bd para cada tabela listada. Representar as tabelas como classes no modelo de objetos
Projetar consultas
Definir esquema de acesso
– Obs: Não é detalhado aqui
Projeto Orientado a Objetos
Influências de SGBDs
Persistência de Objetos – Em SGBDSGBD-Relacional (cont.)
Para classe do domínio do problema persistente – Gerar (pelo menos) uma tabela na 3FN Pessoa
Endereço_Pessoa
Código Nome Pessoa Nome: Str Endereço: { Logradouro: Str, Bairro: Str, Cidade: Str. }
Telefones: array of Str;
Funcionário Cargo: Str CPF: Str
...
...
CódPessoaLogradouro ...
Bairro
Cidade
...
...
...
...
...
Funcionário CódPes
CPF
Persistência de Objetos – Em SGBDSGBD-Relacional
Tabelas – – –
Nome, Identificadores, Colunas, Linhas, Restrições Cada coluna possui um valor atômico Cada linha representa um conjunto de valores dentro da tabela
Operações
Cargo
Funcionário
– Seleção – Projeção – Junção
CPF
Nome
Cargo
74
Projeto Orientado a Objetos Influências de SGBDs
Persistência de Objetos – Em SGBD-Relacional (cont.) Cliente nome: String telefone: String logradouro: String dataNascimento: Data /idade: int cep: String
Cliente(id , CPF, nome, Cliente(id, nome, dataNascimento, dataNascimento, idCEP) idCEP) , número, CEP(id número, sufixo) sufixo) CEP(id,
Telefones_Pessoa CódPessoa Número
Projeto Orientado a Objetos
CPF número: String dígitoVerificador: String
telefone, telefone,
Cliente(id , nome, telefone, Cliente(id, nome, telefone, dataNascimento, dataNascimento, CPF, CEP)
logradouro, logradouro,
logradouro, logradouro, [Bezerra, 2002]
76
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
79
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
77
Projeto Orientado a Objetos Influências de SGBDs
Persistência de Objetos – Em SGBD-Relacional (cont.) mora * Pessoa
{subconjunto}
Condomínio
síndico
Pessoa(id , dadosPessoa) Pessoa(id, , dadosCondomínio) Condomínio(id Condomínio(id, , idPessoa) Síndico(idCondomínio idPessoa) Síndico(idCondomínio,
Influências de SGBDs Símbolos Table
View Chave Primária
PK
Chave Estrangeira
FK
Chave Primária/Estrangeira
PK F
Relacionamento
0..1 0..1
Influências de SGBDs
Persistência de Objetos – Em SGBD-Relacional (cont.) Para
cada classe persistente
1 1
Classe para acesso a bases de dados Relacionais
– Conectar classes que acessam as tabelas TTable
TabPessoa
...
Projeto Orientado a Objetos
Projeto Orientado a Objetos
Pessoa
Funcionário
Nome: Str Endereço: { Logradouro: Str, Bairro: Str, Cidade: Str. }
{abstrata}
TabFunc
Cargo: Str CPF: Str
...
Telefones: array of Str;
Classes do Domínio do Problema
78
Projeto Orientado a Objetos Influências de SGBDs
Exemplo Departamento ADMDEPTO: CHARACTER(3) NOMEDEPTO: VARCHAR(29) PK NUMDEPTO: CHARACTER(3) LOCALIZA: CHARACTER(16) FK NUMGERENTE: CHARACTER(6) NUMPROJETO: CHARACTER(10) P K NUMEMPREG: CHARACTER(6) F
80
Influências de SGBDs
Exemplo
Cliente é efetuado por
Pedido
1..*
PK NUMPEDIDO: SMALLINT DESCRICAO: VARCHAR(255) DATA: TIMESTAMP P K NUMCLIENTE: SMALLINT F
PK NUMCLIENTE: SMALLINT PRIMNOME: VARCHAR(12) ULTNOME: VARCHAR(15) ENDERECO: VARCHAR(25) TELEFONE: CHARACTER(10) EMAIL: VARCHAR(25) FK NUMFUNCIONARIO: CHARACTER(6) 0..*
Funcionario DATANASC: DATE PK NUMFUNCIONARIO: CHARACTER(6) PRIMNOME: VARCHAR(12) vende para DATAADMISSAO: DATE 0..* CARGO: CHARACTER(8) ULTNOME: VARCHAR(15) TELEFONE: CHARACTER(10) SEXO: CHARACTER(1)
81
83
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected] UFPA-2004 -UML (Linguagem de Modelagem Unificada) - [email protected]
Projeto Orientado a Objetos
Projeto Orientado a Objetos Influências de SGBDs
Exemplos Pedido
é efetuado por
Cliente
1..* PK NUMCLIENTE: SMALLINT PRIMNOME: VARCHAR(12) ULTNOME: VARCHAR(15) ENDERECO: VARCHAR(25) TELEFONE: CHARACTER(10) EMAIL: VARCHAR(25) FK NUMFUNCIONARIO: CHARACTER(6)
PK NUMPEDIDO: SMALLINT DESCRICAO: VARCHAR(255) DATA: TIMESTAMP P K NUMCLIENTE: SMALLINT F
PEDIDO
CLIENTE
<>
<>
Pedido_Cliente PK NUMPEDIDO: SMALLINT DESCRICAO: VARCHAR(255) DATA: TIMESTAMP P K NUMCLIENTE: SMALLINT F PRIMNOME: VARCHAR(12) ULTNOME: VARCHAR(15)
82