1 Aula 10 UML (cont.). 2003/2004 Programação Orientada para Objectos 2 UML: Unified Modelling...

Preview:

Citation preview

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

Recommended