Aula 10
UML (cont.)
1
UML: Unified Modelling Language

Linguagem gráfica de modelação



2
Grady Booch
Ivar Jacobson
James Rumbaugh

Diagramas representam modelo simplificado

Ferramenta importante de comunicação
2003/2004
Programação Orientada para
Objectos
Diagramas em UML

Estáticos:








3
De classes
De objectos
Casos de Utilização
Sequência
Colaboração
Estado
Actividade
Implementação
2003/2004
Programação Orientada para
Objectos
Diagramas de sequência

Diagramas onde se anotam as interacções
entre objectos dispostas como uma sequência
temporal



4
Mostram um conjunto de objectos e mensagens
trocadas por esses objectos num dado contexto
Mensagem = transferência de informação
Ênfase na cronologia das mensagens
2003/2004
Programação Orientada para
Objectos
Tipos de mensagens




5
Simples
Síncrona
Assíncrona
Retorno
2003/2004
Programação Orientada para
Objectos
Acções

Associadas às mensagens trocadas entre objectos

Call



Return


Mensagens
síncronas.
Mensagens
de retorno.
Mensagens
assíncronas.
Cria um objecto
Explicitamente
ilustradas nos
diagramas.
Destroy

6
Envia sinal ao objecto
Create


Retorna ao objecto emissor
Send


Invoca operação do objecto receptor
Pode ser enviada ao próprio objecto
Destrói um objecto
2003/2004
Programação Orientada para
Objectos
Diagramas de sequência

Dimensão vertical denota o tempo



7
Tempo avança no sentido descendente
Objecto que envia mensagem tem de estar
activo (possuir o controlo)
Linhas de controlo ou activação podem ser
duplicadas
2003/2004
Programação Orientada para
Objectos
Notação
Objecto1
Objecto2
mensagem()
resposta
Linha
de vida.
Controlo ou
activação.
8
2003/2004
Programação Orientada para
Objectos
Notação
Objecto1
«create»
Objecto2
mensagem()
resposta
«destroy»
9
2003/2004
Programação Orientada para
Objectos
Editor
void edita()
documento
Documento
«query»
+ void desenha(Ecrã ecrã)
- boolean podeRemoverGlifo()
«update»
+ void faz(Acção acção)
- void removeGlifo()
- Glifo glifoRemovido()
- void guardaAcçãoFeita(Acção acção)
«friend»
documento
acções
*
cursor
parágrafos
Parágrafo
{um glifo ou está num
parágrafo, ou numa
acção, nunca nos
dois.}
glifos *
Acção
boolean está_feita
*
0..1
última_acção_desfeita
glifo_removido
cursor
Glifo
«query»
boolean estáFeita()
«update»
void faz()
void desfaz()
boolean éFazível()
Desloca
InsereGlifo
Caractere
RemoveGlifo
Sorriso
Moldura
: Editor
: Documento
nova_acção =
new Remove(documento)
faz(nova_acção)
: Acção
é_fazível = éFazível()
podeRemoverGlifo()
[é_fazível] faz()
removeGlifo()
glifo_removido = glifoRemovido()
guardaAcçãoFeita(nova_acção)
Indica a alguém
que o documento foi
alterado, pelo que
precisa de ser
visualizado de novo.
actualiza()
Diagramas de actividade

Diagramas que descrevem sequências de
processamento do sistema

Nível conceptual


Nível de implementação




12
Casos de utilização
Classes
Operações
Mostram evolução temporal
Melhoria sobre o fluxograma tradicional
2003/2004
Programação Orientada para
Objectos
Usos comuns

Nível conceptual




Nível de implementação


13
Detalhe de casos de utilização
Descrição de fluxos envolvendo vários casos de utilização
Descrição de desenvolvimentos paralelos, com
participação de vários actores
Descrição rigorosa de processamento paralelo
Estabelecimento de responsabilidades sobre classes e
actividades
2003/2004
Programação Orientada para
Objectos
Usos indevidos

Representar colaboração entre objectos


Comportamento de objecto no tempo

14
Solução: diagramas de sequência ou colaboração
Solução: diagramas de estado
2003/2004
Programação Orientada para
Objectos
Elementos







15
Linhas verticais de responsabilidade
Actividades de início e de fim
Actividade operacional
Transição de actividade
Comportamento condicional
Barras de processamento paralelo
Fluxo de objectos
2003/2004
Programação Orientada para
Objectos
Actividade

Passo numa sequência de processamento



16
Estado contendo uma acção e, pelo menos, uma
transição de saída
Actividade pode possuir várias transições de
saída desde que identificadas por condições
É possível identificar objecto responsável por
cada actividade
2003/2004
Programação Orientada para
Objectos
Domínios de responsabilidade

Diagramas de actividade divisíveis em
domínios de responsabilidade (swimlanes)

Para cada domínio de responsabilidade pode-se
indicar pertença
Classe
 Componente
 Estrutura organizacional
 …

17
2003/2004
Programação Orientada para
Objectos
Notação: transição
Início da
actividade
Transição
Fim da
actividade
18
2003/2004
Programação Orientada para
Objectos
Notação: actividade
Início da
actividade
Transição
Actividade
19
passo
2003/2004
Fim da
actividade
Programação Orientada para
Objectos
Notação:divisórias de domínio de
responsabilidade
Início da
actividade
Divisóriasde
Divisória
de
domínio de
responsabilidade.
Transição
passo
Fim da
actividade
Actividade
20
2003/2004
Programação Orientada para
Objectos
Notação: controlo
Início da
actividade
Entroncamento
Divisória de
domínio de
responsabilidade.
Condição(
Condição
(guarda)
guarda)
Ramificação
[¬G]
Transição
[G]
passo
Fim da
actividade
Actividade
21
2003/2004
Programação Orientada para
Objectos
Exemplo
{PC: 0 ≤ n}
int i = 0;
double potência = 1.0;
{0 ≤ n  i = 0 
potência = 1}
[i = n]
{0 ≤ n  0 ≤ i < n 
potência = xi}
[i ≠ n]
potência *= x;
{0 ≤ n  0 < i ≤ n 
potência = xi}
22
{0 ≤ n  i = n 
potência = xn}
++i;
2003/2004
Programação Orientada para
Objectos
Notação: actividade composta
Nome da
actividade
[G]
Actividade A
23
2003/2004
[¬ G]
Actividade B
Programação Orientada para
Objectos
Exemplo: actividade composta
Entrega
Encomenda
[Entrega Urgente]
Entrega 24 horas
24
[¬ Entrega Urgente]
Diagrama de
actividades parcial
da actividade
composta Entrega
Encomenda.
Entrega Normal
2003/2004
Programação Orientada para
Objectos
Notação: paralelismo
Actividade A
Subdivisão
ou ponto de
divergência
(fork).
Actividade B1
Junção ou
ponto de
convergência
(join).
25
Actividade B2
Actividade C
2003/2004
Programação Orientada para
Objectos
Exemplo: paralelismo
Diagrama de actividade
contendo actividade
composta Entrega
Encomenda.
Receber Encomenda
Fecho Encomenda
26
Preencher Encomenda
Envio Factura
Entrega Encomenda
Recepção Pagamento
2003/2004
Programação Orientada para
Objectos
Serviços Fornecimento
Serviço Clientes
Serviço Financeiro
Receber Encomenda
Preencher Encomenda
Envio Factura
Recepção Pagamento
Entrega Encomenda
Fecho Encomenda
Desenvolvimento de um modelo




28
Capacidade de abstracção
Resistir à tentação de introduzir no modelo
pormenores que são irrelevantes para o
problema em causa
Modelo de análise vs. modelo de desenho
Casos de uso
2003/2004
Programação Orientada para
Objectos
Identificação de classes




29
Substantivos ou frases substantivas
Nomes comuns podem ser "papeis" que um
objecto tem relativamente a outro:
correspondem a atributos ou relações (frota,
dono)
Frases substantivas: muitas vezes
correspondem a atributos de classes
Nomes próprios: instâncias
2003/2004
Programação Orientada para
Objectos
Identificação de relações





30
Verificar frases com que unimos os conceitos
Procurar "ser", "ter", "ser constituído por", etc.
Verbos que não denotam acção
Por vezes, verbos que denotam estados
Relação "é parecido com" e "é como" leva a
identificar classes que são, provavelmente, "irmãs",
ou seja, especializações de uma generalização
comum, provavelmente abstracta
2003/2004
Programação Orientada para
Objectos
Identificação de operações



31
Verbos
Modificadores: verbos que denotam acções
Predicados: verbos que denotam estados
(temporários ou permanentes)
2003/2004
Programação Orientada para
Objectos
Identificação de propriedades



Inspectores
Não correspondem forçosamente a atributos
Exemplo:


32
Cor de um veículo (valor guardado por um
atributo)
Preço de uma reserva (calculado a partir do
número de dias da reserva e do valor diário da
reserva)
2003/2004
Programação Orientada para
Objectos
Identificação de atributos



Adjectivos
Reflectem o estado do conceito
Valor de uma dada propriedade


33
Propriedade permanente: atributo constante
Propriedade transitória: atributo variável, ou
propriedade calculável
2003/2004
Programação Orientada para
Objectos
Aula 10: Sumário

UML (continuação da aula 9)



Desenvolvimento de um modelo





34
Diagramas de sequência
Diagramas de actividade
Identificação de classes ou conceitos
Identificação de relações
Identificação de operações
Identificação de propriedades
Identificação de atributos
2003/2004
Programação Orientada para
Objectos
Download

Entrega Encomenda - iscte-iul