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