UML 

Diagramas Estáticos / Estruturais (OCCIPE) 
Diagrama de Classes 
  Os diagramas de classes descrevem os tipos de objetos presentes no sistema e os  vários tipos de relacionamentos estáticos existentes entre eles. Mostram também as  propriedades e operações (atributos e métodos) de uma classe e as restrições que se aplicam à  maneira como os objetos estão conectados.    As propriedades representam as características estruturais de uma classe, são  correspondentes aos campos de uma classe. Elas aparecem em duas notações distintas:  atributos e associações    Os atributos são as “variáveis” da sua classe e a notação completa é:    Visibilidade nome: tipo [multiplicidade] = valor_por_omissão {lista de propriedades}    • Visibilidade: ‐ privado, + público, ~ pacote, # protegido.  • Nome corresponde ao nome de sua “variável”.  • Tipo: restrição sobre o tipo de objeto que pode ser colocado no atributo  • Multiplicidade:  indicação de quantos objetos podem preencher a propriedade,  exatamente como em banco de dados. [mínima..máxima]  • Valor_por_omissão: valor do novo objeto caso o atributo não seja especificado  durante a criação.  • Lista de propriedades: permite que você indique propriedades adicionais para  o atributo. {readOnly}, {ordered}, {nonUnique}, etc.    As associações podem mostrar as mesmas informações que um atributo. Uma  associação é uma linha cheia entre duas classes, direcionada da classe de origem para a classe  de destino. O nome da propriedade fica no destino final da associação junto com sua  multiplicidade.  As associações podem ser unidirecionais ou bidirecionais. Podemos dizer que  uma pessoa é proprietária de zero ou vários carros e que um carro é de somente uma pessoa.  As figuras a seguir mostram as mesmas informações representadas nas duas notações  diferentes, atributos e associações e uma associação bidirecional: 
Pedido + datadeRecebimento : Date[0..1] + éPréPago : boolean[1] + itensdeLinha : LinhadePedido[*] {ordered} Pessoa Proprietário 0..1 * Carro

Associação bidirecional Date 0..1 * Pedido. 1 +éPréPago 1..1 * Linha de Pedido Boolean

+datadeRecebimento +itensdeLinha {ordered}

Mesmas informações com notações diferentes

 
1

 Na generalização. A dependência é identificada por uma seta pontilhada que aponta do cliente para o  fornecedor. Por padrão será IN. A forma mais básica de dependência (não‐ estereotipada) não é transitiva. ou seja. ou seja. A  figura abaixo exibe a herança e a herança múltipla:  Pai Pai 1 Pai 2 Filho 1 Filho 2 Filho Bastardo Generalização                                             Herança Múltipla    Uma dependência entre dois elementos existe se mudanças na definição de um  elemento (o independente) podem causar mudanças no outro (o dependente). Ela é indicada por  uma seta cheia que sai da classe específica para a classe geral.    Operações são as ações que uma classe sabe realizar.  o Exemplo: + saldoEm (in data: Date = 22/12/1981): Dinheiro  • Tipo‐de‐retorno é o tipo do valor de retorno. ou seja.  • Lista‐de‐parâmetros são os parâmetros da operação. A figura abaixo exemplifica a dependência normal e estereotipada:  Entrada de Dados de Funcionáio Entrada de Dados de Benefício Plano de Benefícios <<call>> Funcionário   Dependência & Dependência Estereotipada  2 . saída (out) ou ambos  (inout). É importante  observar que mudanças na classe dependente não causam nenhum impacto na classe  independente.  Funcionário . utilizamos um estereótipo para  identificar tais tipos (dependência estereotipada). se A depende de B e B depende de C. se houver algum.nome : String + SetNome () : void Uma classe com um atributo e uma operação   A Generalização é a herança em Linguagens Orientadas a Objetos. das classes filhas para a  classe pai.  • Lista‐de‐propriedades indica os valores de propriedade que se aplicam à  operação. A NÃO depende  de C. A UML tem vários tipos de dependências. são os métodos da  classe. Possuem a sintaxe:  o Direção nome: tipo = valor‐por‐omissão  o A direção indica se o parâmetro é de entrada (in). # protegido. a classe filha herda todos os atributos e operações da classe pai. + público.  • Nome é uma seqüência de caracteres. ~ pacote. A sintaxe completa da UML para operações é:    Visibilidade nome (lista‐de‐parâmetros): tipo‐de‐retorno {lista‐de‐propriedades}    • Visibilidade: ‐ privado.

 Neste relacionamento. A agregação é representada graficamente como uma seta com um diamante  vazio na ponta da classe agregadora. sem  nenhum corpo de método.  A agregação é o relacionamento “parte de”..  A UML permite que sejam adicionadas regras de restrição descritas em notas ligadas a  classe por uma linha pontilhada. no caso  do soquete. as partes existem  isoladamente. Ela é mostrada  usando‐se a palavra chave <<interface>>. A  notação de interfaces em UML pode ser do tipo bola e soquete ou do tipo “pirulito”.. “variável global”) em UML sublinhando o nome da propriedade. o que corresponde às interfaces da linguagem Java. Na composição as partes não existem isoladamente. uma controla o tempo de vida da outra.  deletando o todo. as partes também são deletadas. Existem várias outras palavras chave em UML.):  Banco Cliente I2 Menus * 1 Janela 1 * Botões       3 . a classe que fornece a interface é a bola e a classe que utiliza a interface é o  soquete:   Controle do BD Pedido l Controle do BD 2 Pedido 2     Podemos nos referir a atributos e operações estáticas (que se aplicam a uma classe e  não a uma instância dela. A  composição é representada graficamente por uma seta com um diamante cheio na ponta da  classe compositora (a que junta tudo. a regra deve estar obrigatoriamente entre chaves {}:  Funcionário + salário : int + quebrado : boolean {Se salário for menor que "mínimo" então quebrado = true}   Uma interface da UML é uma classe que possui apenas operações públicas.

 As duas partes do nome são opcionais. pode mostrar as interfaces entre os pacotes e também  generalizações. Seria como peças que se  encaixam formando um sistema de software. deve obrigatoriamente usar os dois pontos. Um pacote pode conter subpacotes e classes.  Aplicação Gateway do BD Gateway do Oracle Gateway do MySQL       4 . subsistema ou mesmo os  componentes ou classes internas de um componente individual. João. :Pessoa e nomePessoa são válidos. Observe que se usar somente o nome da  classe. A notação do diagrama de componentes da UML  2.0 é  a seguinte:  Conecta ao Banco GUI I Negócios   Diagrama de Pacotes    Um pacote é uma construção de agrupamento (em tempo de compilação) que permite  a você pegar qualquer construção na UML e agrupar seus elementos em unidades de nível  mais alto.    No diagrama de objetos não devem ser representadas as multiplicidades dos  relacionamentos  12345 João:Cliente :Pedido   Um objeto de Cliente e dois de Pedido  Diagrama de Componentes    Identifica os componentes que fazem parte de um sistema.  Diagrama de Objetos    O Diagrama de objetos representa uma fotografia do sistema em um dado momento.  portanto. porém com o nome do objeto sublinhado e  seguindo a sintaxe nome‐do‐objeto: nome‐da‐classe. Um diagrama de pacotes mostra os  pacotes e suas dependências.  São parecidos com os diagramas de classes.

 para atingir um objetivo. interfaces. um hardware. e representa também como elas  estão conectadas pelas interfaces. Os casos  de uso são utilizados no levantamento dos requisitos funcionais do sistema. Podemos rotular nós ou artefatos  com valores para indicar informações a respeito deles. revelando quais  partes do software são executadas em quais partes do hardware. Um ator é um papel  que um usuário desempenha com relação ao sistema. que são os arquivos. em outras palavras. pode ser uma pessoa. Os atores realizam os casos de uso.    Diagramas Dinâmicos/ Comportamentais / de Interação  (MCASCIT)  Diagrama de Casos de Uso    O modelo de casos de uso é uma representação das funcionalidades externamente  observáveis do sistema e dos elementos externos ao sistema que interagem com ele.Diagrama de Implantação / Instalação    Os diagramas de instalação mostram o layout físico de um sistema. Um  nó será um dispositivo (hardware) ou um ambiente de execução (software que contém  software).exe   Diagrama de Estrutura Composta    Um diagrama de estrutura composta contém classes. Os nós contêm artefatos. um cenário é a descrição de  uma da maneiras pelas quais um caso de uso pode ser realizado. em tempo de execução.  Um ator é qualquer coisa externa ao sistema que interaja com ele.     O exemplo a seguir representa a estrutura interna das classes TitleSql (que contém  duas classes internas) e TitleImp (que contém duas partes).  5 . O diagrama mostra a estrutura interna de uma classe.  Servidor WEB Servidor de Aplicação {SO = Windows} {Apache} ___________ herculesWEB.    Os principais itens do diagrama são nós conectados por caminhos de comunicação. sem considerar o  comportamento interno do sistema. etc.  outro sistema. eles não  especificam os requisitos não funcionais do sistema!    Um caso de uso representa quem faz o que com o sistema. um conjunto de elementos  internamente conectados que colaboram. pacotes os  relacionamentos entre esses itens e provê uma visão lógica do todo ou de parte de um sistema  de software.jar Java/RMI Aplicação. Um cenário é uma seqüência de passos que descreve uma  interação entre um usuário e um sistema.

  matricular em disciplina Aluno     • Inclusão <<include>>  o Existe somente entre casos de uso!  o Um caso de uso inclui o outro.  identificado como base da seta pontilhada e com o estereótipo  <<include>>. A seta aponta para o caso incluído!  o Sempre que ocorrer a execução do caso de uso base. SEMPRE!  Obter Extrato Bancário <<include>> Validar correntista Caso de uso base Caso de uso incluído       6 . indica que um caso de uso terá seu  procedimento copiado num local especificado em outro caso de uso. os casos de uso e os  relacionamentos entre eles: quais atores realizam quais casos de uso. etc.  Os diagramas de casos de uso mostram os atores. quais casos de uso  incluem outros casos de uso.  Relacionamentos:  • Comunicação (associação)  o Representa a informação de quais atores estão relacionados a quais  casos de uso. ocorrerá a  execução do caso de uso incluído. Os casos de uso ficam contidos num retângulo (fronteira).

• Extensão <<extend>>  o Existe somente entre casos de uso!  o Utilizado para modelar situações em que diferentes seqüências de  interações podem ser inseridas em um caso de uso.  <<extend>> fazer pedido cadastrar usuário <<include>> Extend = seta aponta para classe principal Include = seta aponta para classe incluída validar login do usuário     • Generalização (herança)  o Existe entre casos de uso e atores!  o Permite que um caso de uso (ou ator) herde características de um caso  de uso (ou ator) mais genérico.  normalmente em casos de exceção.  o A execução do caso de uso extend não é obrigatória.  Realizar pagamento Pessoa Pagar com Cartão Pagar com Cheque Cadastrar produtos Funcionário     7     . só ocorre dentro  de certas circunstâncias.  são os pontos de extensão (extension points): Um ponto de extensão  identifica um ponto no comportamento de um caso de uso  (estendedor) onde aquele comportamento do caso de uso estendido  será executado.  o O caso de uso pode ter especificado o local onde a extensão ocorrerá. cada seqüência  representa um comportamento que só ocorre sob certas condições.  o A seta do <<extend>> aponta para o caso de uso “estendedor” e não  para o caso de uso “estendido”. chamado de caso de uso base (ator  base).

 UMA AÇÃO NÃO PODE  SER INTERROMPIDA!  Atividades = uma atividade está sempre associada a um estado e pode ser  interrompida.  o O estado inicial indica o estado de um objeto quando ele é criado.  • • • Realizar depósito(quantia)/ depositar(quantia) Estado inicial <<conta criada>> disponível <<conta fechada>> Realizar Saque($$$) [quantia=$$$]/ Sacar($$$) Aqui ficam as atividades relacionadas ao estado Bloqueada Após(30 dias)/ aplicarJuros() 8   .  Uma transição tem um evento associado. podemos  prever todas as possíveis operações realizadas. Uma  transição é representada graficamente como uma seta de um estado para o  outro. É representado por um círculo cheio. o estado é determinado pelos atributos do objeto. Só  pode haver um estado inicial. operações.  associações da classe ou dos parâmetros do evento. É um estado opcional e pode haver mais de um.  A notação da transição é esta mostrada abaixo:  o Evento(lista‐parêmetros) [condição] / ação  Ações = ao passar de um estado para outro.  Uma ação é uma expressão definida em termo dos atributos. Um evento é algo que  acontece em algum ponto no tempo e pode modificar o estado de um objeto. Através da análise das transições entre estados dos objetos do sistema.  Transições = os estados são associados a outros pelas transições. Um objeto muda de estado quando acontece algum evento interno ou externo ao  sistema. um objeto pode realizar ações.Diagrama de Máquinas de Estados / de Transição de Estados    Os diagramas de Estados são utilizados para descrever o comportamento de um  sistema.    A notação dos diagramas de estado possui:  • Estados = situação na vida de um objeto que ele satisfaz a alguma condição ou  realiza alguma atividade. em função dos eventos que possam ocorrer.  o O estado final é representado como um círculo cheio dentro de um  círculo vazio menor.

 ela é opcional.    Na UML 1 os nomes dos objetos aparecem com seus nomes sublinhados. que percorre  verticalmente a página. nela colocamos o foco de  controle (barra de ativação) do objeto. Ele mostra  os objetos (ou uma classe estática) e as mensagens passadas entre eles. Ele  exibe as mensagens ordenadas no tempo e é um diagrama mais utilizado durante a fase de  projeto (solucionar o problema). As primeiras não esperam a resposta enquanto que as  segundas esperam a resposta antes de continuar o processamento. exibindo cada participante com uma linha de vida. um X é colocado no fim da sua linha de vida para denotar que este foi  excluído.  SÃO EQUIVALENTES AOS DIAGRAMAS DE COMUNICAÇÃO!  Diagrama de Seqüência Um tratador Actor_1 consultando BD criação um Comando de Consulta criação uma instrução de BD executar comando resultados Extrair resultados fechar resultados     9 . e a ordem das mensagens.    É possível mostrar nos diagramas os laços de repetição e comportamentos  condicionais usando quadros de interação (não vou tratar disso aqui pq estou com preguiça). conforme o  diagrama de objetos. Os diagramas  mostram a interação.    No diagrama podemos mostrar a troca de mensagens assíncronas (seta normal) e as  mensagens síncronas (seta cheia).Diagrama de Seqüência    Um diagrama de seqüência captura o comportamento de um único cenário. basta um já existente enviar uma mensagem  diretamente para a caixa do novo.     Para criar um novo participante. Um participante pode se auto‐excluir ou ser excluído por  outro participante. O resultado (resposta a  uma mensagem) é uma seta pontilhada que retorna para o objeto que enviou a mensagem  original. lendo a página de cima para baixo.    A linha de vida do objeto é uma linha pontilhada na vertical. mas na UML 2 os nomes dos objetos não aparecem mais sublinhados. que é de onde “saem e chegam” as mensagens.

 É uma forma especial de diagrama de seqüência.   SÃO EQUIVALENTES AOS DIAGRAMAS DE SEQÜÊNCIA!  1: calcularPreço Fazedor de pedidos 5: calcularPreço 6: calcularDesconto 7: obterValorDesconto um Pedido um Cliente 2: obterQTDE 3: obterProduto 4: obterDetalhesdoPreço uma Linha do Pedido um Produto   Diagrama de Temporização     Os Diagramas de Temporização são usados para mostrar o comportamento dos  objetos através de um período de tempo. Permite o livre posicionamento dos participantes. mas não tem programa pra fazer esse diagrama. O esquema de numeração utilizado é a numeração decimal  aninhada. A figura ta horrível. o tempo é contado no eixo vertical e não no  horizontal. A  diferença é que os eixos são invertidos. permite  desenhar vínculos para mostrar como eles se conectam e usa numeração para mostrar a  seqüência das mensagens. 10   .Diagrama de Comunicação (Colaboração)    Os diagramas de comunicação enfatizam os vínculos de dados entre os vários  participantes na interação. ou seja.

 Os diagramas permitem que mostremos quem faz o que. processo de negócio e  fluxo de trabalho.Diagrama de Atividades    Os diagramas de atividades descrevem lógica de procedimento. ou seja. podemos  dizer qual classe é responsável por cada ação no diagrama com o uso de raias (swimlanes):  Receber Pedido bifurcação Enviar Fatura Preencher Pedido ramificação segue apenas um dos caminhos Entrega Rápida Entrega Normal Receber Pagamento ponto de união junção Fechar Pedido Execução Serviço de Atendimento ao Cliente Departamento Financeiro Receber Pedido Preencher Pedido Enviar Fatura Entregar Pedido Receber Pagamentos Fechar Pedido   Diagrama de atividades com raias  11   .

Os diagramas podem mostrar atividades que recebem ou enviam sinais e que esperam  por um determinado período de tempo:    Diagrama de Interação Geral    É uma mistura entre diagramas de atividade e diagramas de seqüência.    12 . com a notação do  diagrama de  atividades para mostrar o fluxo de controle. As atividades  são substituídas por pequenos diagramas de seqüência.