1 aula 10 uml (cont.). 2003/2004 programação orientada para objectos 2 uml: unified modelling...
TRANSCRIPT
1
Aula 10
UML (cont.)
2003/2004 Programação Orientada para
Objectos2
UML: Unified Modelling Language
Linguagem gráfica de modelação Grady Booch Ivar Jacobson James Rumbaugh
Diagramas representam modelo simplificado
Ferramenta importante de comunicação
2003/2004 Programação Orientada para
Objectos3
Diagramas em UML
Estáticos: De classes De objectos
Casos de Utilização Sequência Colaboração Estado Actividade Implementação
2003/2004 Programação Orientada para
Objectos4
Diagramas de sequência
Diagramas onde se anotam as interacções entre objectos dispostas como uma sequência temporal 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
Objectos5
Tipos de mensagens
Simples Síncrona Assíncrona Retorno
2003/2004 Programação Orientada para
Objectos6
Acções
Associadas às mensagens trocadas entre objectos Call
Invoca operação do objecto receptor Pode ser enviada ao próprio objecto
Return Retorna ao objecto emissor
Send Envia sinal ao objecto
Create Cria um objecto
Destroy Destrói um objecto
Mensagens síncronas.
Mensagens de retorno.
Mensagens assíncronas.
Explicitamente ilustradas nos diagramas.
2003/2004 Programação Orientada para
Objectos7
Diagramas de sequência
Dimensão vertical denota o tempo 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
Objectos8
Notação
Objecto1 Objecto2
mensagem()
respostaLinhade vida.
Controlo ou activação.
2003/2004 Programação Orientada para
Objectos9
Notação
Objecto1
Objecto2
mensagem()
«create»
resposta
«destroy»
Editor
void edita()
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)
Acção
boolean está_feita
«query»boolean estáFeita()«update»void faz()void desfaz()boolean éFazível()
«friend»
Desloca InsereGlifo RemoveGlifo
documento
acções
Parágrafo
Glifo0..1
**
parágrafos
glifos
glifo_removido
{um glifo ou está num parágrafo, ou numa acção, nunca nos dois.}
documento *
última_acção_desfeita
cursor
cursor
Caractere Sorriso Moldura
: Editor : Documento
: Acção
nova_acção = new Remove(documento)
faz(nova_acção)
é_fazível = éFazível()
podeRemoverGlifo()
[é_fazível] faz()
removeGlifo()
glifo_removido = glifoRemovido()
guardaAcçãoFeita(nova_acção)
actualiza()
Indica a alguémque o documento foi alterado, pelo que precisa de ser visualizado de novo.
2003/2004 Programação Orientada para
Objectos12
Diagramas de actividade
Diagramas que descrevem sequências de processamento do sistema Nível conceptual
Casos de utilização
Nível de implementação Classes Operações
Mostram evolução temporal Melhoria sobre o fluxograma tradicional
2003/2004 Programação Orientada para
Objectos13
Usos comuns
Nível conceptual 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 Nível de implementação
Descrição rigorosa de processamento paralelo Estabelecimento de responsabilidades sobre classes e
actividades
2003/2004 Programação Orientada para
Objectos14
Usos indevidos
Representar colaboração entre objectos Solução: diagramas de sequência ou colaboração
Comportamento de objecto no tempo Solução: diagramas de estado
2003/2004 Programação Orientada para
Objectos15
Elementos
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
Objectos16
Actividade
Passo numa sequência de processamento 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
Objectos17
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 …
2003/2004 Programação Orientada para
Objectos18
Notação: transição
Início da actividade
Fim da actividade
Transição
2003/2004 Programação Orientada para
Objectos19
Notação: actividade
passo
Início da actividade
Fim da actividade
Actividade
Transição
2003/2004 Programação Orientada para
Objectos20
Notação:divisórias de domínio de responsabilidade
passo
Início da actividade
Fim da actividade
Actividade
Transição
Divisória dedomínio deresponsabilidade.
Divisórias dedomínio deresponsabilidade.
2003/2004 Programação Orientada para
Objectos21
Notação: controlo
passo
[G]
[¬G]
Início da actividade
Fim da actividade
Actividade
Transição
Entroncamento
Condição(guarda)
Condição(guarda)
Divisória dedomínio deresponsabilidade. Ramificação
2003/2004 Programação Orientada para
Objectos22
Exemplo
++i;
[i ≠ n]
[i = n]
int i = 0;double potência = 1.0;
potência *= x;
{PC: 0 ≤ n}
{0 ≤ n i = 0 potência = 1}
{0 ≤ n 0 ≤ i < n potência = xi}
{0 ≤ n 0 < i ≤ n potência = xi}
{0 ≤ n i = n potência = xn}
2003/2004 Programação Orientada para
Objectos23
Notação: actividade composta
[G]
Actividade A Actividade B
[¬ G]
Nome daactividade
2003/2004 Programação Orientada para
Objectos24
Exemplo: actividade composta
[Entrega Urgente]
Entrega 24 horas Entrega Normal
[¬ Entrega Urgente]
Entrega Encomenda
Diagrama de actividades parcial da actividade composta Entrega Encomenda.
2003/2004 Programação Orientada para
Objectos25
Notação: paralelismoActividade A
Actividade B1 Actividade B2
Actividade C
Subdivisão ou ponto de divergência (fork).
Junção ou ponto de convergência (join).
2003/2004 Programação Orientada para
Objectos26
Exemplo: paralelismo
Receber Encomenda
Preencher Encomenda Envio Factura
Fecho Encomenda
Recepção PagamentoEntrega Encomenda
Diagrama de actividade contendo actividade composta Entrega Encomenda.
Receber Encomenda
Preencher EncomendaEnvio Factura
Fecho Encomenda
Recepção Pagamento
Entrega Encomenda
Serviços Fornecimento Serviço Clientes Serviço Financeiro
2003/2004 Programação Orientada para
Objectos28
Desenvolvimento de um modelo
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
Objectos29
Identificação de classes
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
Objectos30
Identificação de relações
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
Objectos31
Identificação de operações
Verbos Modificadores: verbos que denotam acções Predicados: verbos que denotam estados
(temporários ou permanentes)
2003/2004 Programação Orientada para
Objectos32
Identificação de propriedades
Inspectores Não correspondem forçosamente a atributos Exemplo:
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
Objectos33
Identificação de atributos
Adjectivos Reflectem o estado do conceito Valor de uma dada propriedade
Propriedade permanente: atributo constante Propriedade transitória: atributo variável, ou
propriedade calculável
2003/2004 Programação Orientada para
Objectos34
Aula 10: Sumário
UML (continuação da aula 9) Diagramas de sequência Diagramas de actividade
Desenvolvimento de um modelo Identificação de classes ou conceitos Identificação de relações Identificação de operações Identificação de propriedades Identificação de atributos