16 - Diagrama Sequencia - Anotacoes
16 - Diagrama Sequencia - Anotacoes
16 - Diagrama Sequencia - Anotacoes
Notação UML
Primeiro temos o elemento “Diagram” no TOPO do diagrama, ligados a outros dois
elementos: “Structure Diagram” e “Behaviour Diagram”, essa ligação é a de herença,
onde “Diagram” é o elemento genérico.
O Elemento “Structue Diagram” está ligado aos elementos: “ Profle Diagram”, “Class
Diagram”, “composite Structure Diagram”, “Component Diagram”, “Deployment
Diagram”, “Object Diagram” e “Package Diagram”, também a ligação indica o
relacionamento de herança, onde “Structue Diagram” é o elemento genérico.
O elemento “Behaviour Diagram” está ligado aos elementos “Activity Diagram”,
”Use case Diagram”, ”State Machine Diagram”, ”Interaction Diagram” , também a
ligação indica o relacionamento de herança, onde “Behaviour Diagram” é o
elemento genérico.
O elemento ”Interaction Diagram” está ligado aos elementos: “Sequence Diagram”,
”Communication Diagram”, ”Interaction Oberview Diagram”, ”Timing Diagram” ,
também a ligação indica o relacionamento de herança, onde “Interaction Diagram”
é o elemento genérico.
#PraCegoVer
O diagrama de casos de uso apresenta 6 casos de uso: UC-395 Analisar
Interferência, UC-392 Consultar Interferências, UC-341 Identificar anomalias
relacionada a uma programação, UC-342 Identificar eventos relacionados a uma
programação, UC- 343 Identificar outras programações relacionadas a uma
intervenção, UC-410 Identificar ocorrências relacionadas a uma intervenção
Também tem 5 atores Usuário da intervenção, Anolalia de alta, Anomalia de baixa,
Eventos, Atende PI
e 1 pacote: Manter documento
u1 -i-> u3
u1 -i-> u4
u1 -i-> u5
u1 -i-> u6
u2 -i-> u3
u2 -i-> u4
u2 -i-> u5
u2 -i-> u6
a1 -- u2
a2 -- u3
a3 -- u3
a4 -- u4
a5 -- u5
note "Manter documento" top of u1
}
4
#PraCegoVer
1. Casos de uso
Essa seção contém os casos de uso para gestão do histórico de programações do Sistema
de Intervenções Operativas que serão implementados no Atende MI.
O diagrama a seguir mostra os casos de uso do sistema Atende MI que serão
implementados em virtude do Sistema de Intervenções Operativas.
A figura contêm dois casos de uso:
Sistema Atende Mi
Em dotUML:
UseCaseDiagram [frame=true
framecolor=steelblue label="Usecase
Diagram"] {
attribute usecase [fillcolor=paleturquoise]
actor a1 as "Usuário de \n Pós-operação"
system s as "Sistema Atende Mi" {
usecase u340 as "UC - 340 - \n [MI]
Consultar histórico"
usecase u275 as "UC-275 – \n [MI]
Corrigir dados da Intervenção"
}
a1 -- u340
a1 -- u275
}
1. Atores
Usuário de Pós-operação
5
4.1 O usuário seleciona uma intervenção da lista de intervenções.
Caso no passo 4 do fluxo básico [B1] o usuário deseje consultar a relação a lista de
trechos interrompidos.
Caso no passo 4.3 do fluxo alternativo [A1] o usuário desejar imprimir o documento
Caso no passo 4 do fluxo básico [B1] o usuário desejar fazer o download de um arquivo
especifico.
1. Fluxo de Exceção
Caso no passo 4.3 do fluxo alternativo [A2] o sistema não conseguir gravar o arquivo na
máquina local do usuário.
5
download do arquivo.
(Validação)
1. Os filtros para consulta das intervenções no histórico são descritos no item 1.1 do
documento “ATECH 611.01.00018 – Especificação de campos das telas”.
(Relatório)
1. A consulta de histórico é limitada a um período máximo de 1 mês.
1. Requisitos Realizado
RQ-176-Terminal de histórico
(Restrição de Design)
1. Devem ser incorporados ao terminal do Atende MI as funcionalidades de consulta de
histórico das intervenções da distribuição (PropTec. 5.3).
RQ-205-Consulta de histórico
(Funcional)
1.1 A consulta poderá ser efetuada a partir de filtros por campos discretos (PropTec.
5.7)
5
#PraCegoVer
1. Casos de uso
Essa seção contém os casos de uso para gestão do histórico de programações do Sistema
de Intervenções Operativas que serão implementados no Atende MI.
O diagrama a seguir mostra os casos de uso do sistema Atende MI que serão
implementados em virtude do Sistema de Intervenções Operativas.
A figura contêm dois casos de uso:
Sistema Atende Mi
1. UC-340 – [MI] Consultar histórico
1. Atores
Usuário de Pós-operação
1. Fluxo Básico
1. Fluxo Alternativo
6
[A1] Consulta dos detalhes de documento
Caso no passo 4 do fluxo básico [B1] o usuário desejar fazer o download de um arquivo
especifico.
1. Fluxo de Exceção
4.3.1 O sistema apresenta uma a mensagem informando que não foi possível executar o
download do arquivo.
4.3.2 Encerra o caso de uso.
1. Requisitos específicos
(Validação)
1. Os filtros para consulta das intervenções no histórico são descritos no item 1.1 do
documento “ATECH 611.01.00018 – Especificação de campos das telas”.
1. Requisitos Realizado
RQ-176-Terminal de histórico
(Restrição de Design)
6
histórico das intervenções da distribuição (PropTec. 5.3).
RQ-205-Consulta de histórico
(Funcional)
1.1 A consulta poderá ser efetuada a partir de filtros por campos discretos (PropTec.
5.7)
6
#PraCegoVer
O diagrama cd Modelo Conceitual contêm 4 classes: Logradouros, Ordem de
Serviço, gestão de Turmas e Controle de acesso.
A classe logradouros contém os atributos: bairro, Localidade comercial, localidade
técnica, logradouro, Munícipio, segmento logradouro, sub-bairro, tipo logradouro,
Título logradouro.
A Classe Ordem de Serviço contém os atributos: Deslocamento, Endereço, inspeção
de Fraude, Natureza de serviço, Ocorrência de Emergência, Ocorrência de IP, Ordem
de Serviço, OS comercial, Reclamação, Reclamação de Emerhência, Reclamação de
IP , Tipo de Serviço.
A classe gestão de Turmas contém os seguintes atributos: Ativação, atividade,
atividade da turma, eletricista, habilidade, habilidade de eletricista, tipo de veiculo,
turma, veiculo.
A classe de Controle de acesso contém os seguintes atributos:. Funcionalidade,
Perfil, Sistema, Usuário Operação.
Em dotUML:
ClassDiagram [frame=true framecolor=steelblue label="Class
Diagram"] {
class Logradouros {
bairro
Localidade_comercial
localidade_tecnica
logradouro
Municipio
segmento_logradouro
sub_bairro
tipo_logradouro
Titulo_logradouro.
}
class Ordem_de_Servico {
Deslocamento
Endereco
inspecao_de_Fraude
Natureza_de_servico
Ocorrencia_de_Emergencia
Ocorrencia_de_IP
Ordem_de_Servico
OS_comercial
Reclamacao
Reclamacao_de_Emergencia
Reclamacao_de_IP
Tipo_de_Servico
}
class Gestao_de_Turmas {
Ativacao
atividade
atividade_da_turma
eletricista
habilidade
habilidade_de_eletricista
tipo_de_veiculo
turma
veiculo
}
class Controle_de_Acesso {
Funcionalidade
Perfil
Sistema
Usuario
Operação
}
7
9
10
#PraCegoVer
Há 4 objetos: “: Computador”, “:Servidor de Impressão”, “: Fila” , “ : Impressoa”
Entre :Computador e : Servidor de Impressão tem uma mensagem: 1: Imprimir(arq),
a mesagem é direcionada do :computador para : Servidor de Impressão.
Entre : Servidor de Impressão e :Fila tem uma mensagem: 1.2: Armazenar (Arq), a
mesagem é direcionada do :Servidor de Impressão para : Fila. E Tem um texto de
guarda na mensagem: [Impressora Ocupada]
Entre : Servidor de Impressão e :Impressora tem uma mensagem: 1.1: Imprimir
(Arq), a mesagem é direcionada do :Servidor de Impressão para : Impressora. E
Tem um texto de guarda na mensagem: [Impressora Livre]
Como o dotUML não tem suporte para o diagrama de colaboração, então irei usar o
mais próximo que é o de sequencia, o qual será visto após a explicação do diagrama
e colaboração.
Em dotUML:
SequenceDiagram [frame=true framecolor=steelblue
label="Colaboração Diagram"] {
// Usaremos o mesmo código do diagrama de sequencia
15
#PraCegoVer
O Diagrama apresenta 4 objetos: “: inicio”, “: objeto1:Classe”, ““: objeto2:Classe””,
“: objeto3:Classe”.
Entre os objetos “: inicio” e “: objeto1:Classe” tem a mesagem 1: StartMessage(), e a
mesagem é direcionada do “: inicio” para “: objeto1:Classe”.
Entre os objetos “: objeto1:Classe” e “: objeto2:Classe” tem a mesagem 2:
[Condition] response:= Message(arg.) e a é caracterizado como <<new>>, e a
mesagem é direcionada do “: objeto1:Classe” para “: objeto2:Classe”.
Entre os objetos “: objeto1:Classe” e “: objeto3:Classe” tem a mesagem 3:
Message(arguments), e a mesagem é direcionada do “: objeto1:Classe” para “:
objeto3:Classe”.
Em dotUML:
SequenceDiagram [frame=true framecolor=steelblue
label="Colaboração Diagram"] {
// Usaremos o mesmo código do diagrama de sequencia
lifeline "Inicio" as i
lifeline "objeto1: Classe" as o1
lifeline "objeto2: Classe" as o2
lifeline "objeto3: Classe" as o3
i --> o1 "1: StartMessage()"
o1 -c-> o2 "2: [Condition] response:=message(arg.)"
note left of o2 "<<new>>"
o1 --> o3 "3: message(arguments)"
17
#PraCegoVer
O diagrama tem 6 objetos: “: Gestor de compras”, “:Tela de Mercadorias”,
“:Controlador de Mercadorias”, “:Pedido De Compra”, “: Mercadoria”, “:
Fornecedor”
Sendo que o objeto “: Gestor de compras” representa o usuário pelo símbolo de
ator.
O objeto “: Gestor de compras” manda a mensagem “1: Excluir() “ para o objeto
“:Tela de Mercadorias”.
O objeto “:Tela de Mercadorias” manda a mensagem “2: Excluir(Mercadoria) “ para
o objeto “:Controlador de Mercadorias”.
O objeto “:Controlador de Mercadorias” manda a mensagem “3: Verifica
Mercadorias(Mercadoria) “ para o objeto “:Pedido De Compra”.
O objeto “:Controlador de Mercadorias” manda a mensagem “4: Excluir() “ para o
objeto “:Mercadoria”.
O objeto “:Mercadoria “manda a mensagem 5: Excluir Vinculo(Mercadoria) “ para o
objeto “:Fornecedor”.
O objeto “:Fornecedor “manda a mensagem de retorno da operação para o objeto
“:Controlador de Mercadorias”.
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Colaboração Diagram"] {
// Usaremos o mesmo código do diagrama de sequencia
18
#PraCegoVer
O diagrama tem 5 objetos: Início, ArticleReservation, Order, ArticleStock,
OrderPosition
O objeto Início envia a mensagem 1:reserve(obj) para o objeto ArticleReservation
O objeto ArticleReservation envia a mensagem 2:*(i:=1..*)opôs:=giveOrderPosition()
para o objeto Order
O objeto ArticleReservation envia a mensagem 3:number:=giveNumber() para o
objeto OrderPosition
O objeto ArticleReservation envia a mensagem 4:article:=giveArticle() para o objeto
OrderPosition
O objeto ArticleReservation envia a mensagem 5: reserve(article, number) para o
objeto ArticleStock
Em dotUML:
SequenceDiagram [frame=true framecolor=steelblue
label="Colaboração Diagram"] {
// Usaremos o mesmo código do diagrama de sequencia
lifeline "Inicio" as i
lifeline "articleReservation" as a
lifeline "Order" as o
lifeline "articleStock" as s
lifeline "OrderPosition" as op
i --> a "1: reserve(obj)"
a --> o "2: *(i:= 1..*) opos :=giveOrderPosition()"
a --> op "3: number :=giveNumber()"
a --> op "4: article :=giveArticle()"
a --> s "5: reserve(article, number)"
}
20
#PraCegoVer
O diagrama de sequencia tem a mesma finalidade do diagrama de colaboração, a
diferença é no visual, onde os objetos são dispostos um do lado do outro e cada
mensagem entre os objetos fica abaixo uma das outras a primeira mensagem fica no
topo de modo que cada nova mensagem fica abaixo, ou seja, a sequencia é vista
visualmente de cima para baixo, desse modo não há a necessidade de numerar as
mensagens, como no diagrama de colaboração.
No exemplo do diagrama aparece dois objetos da mesma classe: “:Classe” e “:
Classe”
Uma linha com uma seta sai de um objeto para outro, essa linha indica que é uma
mensagem síncrona,
Essa linha está com um texto: msg(), indicando que a mensagem enviada é msg()
Isso significa que o objeto que recebe a mensagem tem esse método implementado.
De cada objeto sai uma linha tracejada de cima para baixo, chamada de linha de
vida. Onde a mensagem toca a linha, essa linha então muda para uma barra,
chamada de barra de ativação, que seria o processamento da mensagem.
Quando a mensagem finaliza o processamento, pode-se indicar isso com uma linha
tracejada com uma flexa na ponta do objeto que recebeu a mensagem anterior
(neste caso msg()) para o objeto que enviou a mensagem anterior.
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline ": Classe" as c1 autoactivate
lifeline ": Classe" as c2 autoactivate
c1 --> c2 "msg()"
note left "mensagem \n síncrona"
note right of c2 "Barra de \n ativação"
c2 -r-> c1
23
24
25
26
#PraCegoVer
Exemplo de um objeto com linha de vida
Neste exemplo o objeto é fisica1: Física
A Figura mostra um retângulo com uma linha tracejada saindo na parte de baixo.
Dentro do retângulo é descrito o nome do objeto fisica1: Física
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "fisica1: Fisica" as f1 autoactivate
27
#PraCegoVer
Exemplo de um objeto com linha de vida
Neste exemplo o objeto é fisica1: Física
A Figura mostra um retângulo com uma linha tracejada saindo na parte
de baixo.
Dentro do retângulo é descrito o nome do objeto fisica1: Física
No Fim da linha tracejada (na parte de baixo) tem um X indicando o fim
da linha de vida do objeto.
Em dotUML
SequenceDiagram [frame=true
framecolor=steelblue
label="Sequence Diagram"] {
lifeline "fisica1: Fisica" as f1
autoactivate
}
28
29
#PraCegoVer
Há dois objetos: fisica1: Fisica, fisica2:Fisica
O objeto fisica1: Fisica envia uma mensagem 1: menssage0() para o objeto fisica2:
Fisica, onde a mensagem inicia a barra de vida é ativada.
O objeto fisica2: Fisica envia uma mensagem 2: menssage1() para o objeto fisica1:
Fisica, onde a mensagem inicia a barra de vida é ativada.
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "fisica1: Fisica" as f1 autoactivate
lifeline "fisica2: Fisica" as f2 autoactivate
30
31
#PraCegoVer
Tem dois objetos: conta1: ContaComum, fisica1: Fisica
O objeto conta1: ContaComum envia uma mensagem 1: Atualizar Cliente: Gravar()
para o objeto fisica1: Fisica, onde a mensagem inicia a barra de vida é ativada.
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "conta1: ContaComum" as c autoactivate
lifeline "fisica1: Fisica" as f autoactivate
32
#PraCegoVer
Tem dois objetos: conta1: ContaComum, hist1: Histórico
O objeto conta1: ContaComum envia uma mensagem 1: <<create>> Registrar
histórico : Gravar () para o objeto hist1: Histórico, onde o objeto irá aparecer e
iniciar com a barra de vida é ativada.
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "conta1: ContaComum" as c autoactivate
lifeline "hist1: Historico" as h autoactivate
33
#PraCegoVer
Tem dois objetos: objeto9, objeto10
O objeto objeto9envia uma mensagem 1: message6() para o objeto objeto10, onde
a mensagem inicia a barra de vida é ativada..
O objeto objeto9envia uma mensagem 2: <<destroy>>para o objeto objeto10, onde
a mensagem inicia a barra de vida é ativada e logo em seguida tem um X indicando o
fim do objeto10.
Em dotUML:
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "Objeto9" as o9 autoactivate
lifeline "Objeto10" as o10 autoactivate
34
#PraCegoVer
Tem dois objetos: objeto11, objeto12
O objeto objeto11envia uma mensagem 1: Atualiza Cliente: Gravar() para o objeto
objeto12, onde a mensagem inicia a barra de vida é ativada.
Em seguida o objeto12 envia um retorno indicado por uma linha tracejada,
informando que Cliente Atualizado com sucesso para o objeto11,
Nesse momento é desativada a barra de vida, voltando a ser uma linha tracejada no
objeto12.
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "Objeto11" as o11 autoactivate
lifeline "Objeto12" as o12 autoactivate
35
#PraCegoVer
Tem dois objetos: objeto1: Classe1, objeto2: Classe2
O objeto objeto1: Classe1 envia uma mensagem 1: [Se necessário] Atualiza Cliente()
para o objeto objeto2: Classe2, onde a mensagem inicia a barra de vida é ativada.
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "Objeto1: Classe1" as o1 autoactivate
lifeline "Objeto2: Classe2" as o2 autoactivate
36
#PraCegoVer
Tem três objetos: Funcionario, pedido1: Pedido, itemPedido: Pedido
O objeto pedido1: Pedido envia uma mensagem 1: <<create>> *[ para cada item]:
Gravar() para o objeto itempedido: Pedido, onde o objeto itempedido: Pedido é
inciado.
O objeto Funcionario envia uma mensagem 2: confirmar pedido: Gravar() para o
objeto pedido1: Pedido, onde a mensagem inicia a barra de vida é ativada.
Em dotUML:
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "Funcionario" as f autoactivate
lifeline "pedido1: Pedido" as p1 autoactivate
lifeline "itemPedido: Pedido" as i autoactivate
p1 -c-> i "1. <<create>> *[Para cada item]: Gravar()"
activate f
f --> p1 "2. Confirmar pedido: Gravar()"
}
37
#PraCegoVer
Tem quatro objetos: Cliente, Banco, fisica1: Fisica, conta: ContaComum
O objeto cliente envia uma mensagem 1: Solicita abertura conta() para o objeto
banco, onde a mensagem inicia a barra de vida é ativada.
O objeto banco envia uma mensagem 2: consulta cliente() para o objeto fisica1:
Fisica, onde a mensagem inicia a barra de vida é ativada.
Em seguida o fisica1: Fisica envia um retorno indicado por uma linha tracejada,
informando que [Se existir] Dados cliente para o objeto banco,
Nesse momento é desativada a barra de vida, voltando a ser uma linha tracejada no
objeto fisica1: Fisica.
O objeto banco envia uma mensagem 3: [Se necessário]Atualizar: Gravar() para o
objeto fisica1: Fisica, onde a mensagem inicia a barra de vida é ativada.
Em seguida o fisica1: Fisica envia um retorno indicado por uma linha tracejada,
informando que Cliente Atualizado para o objeto banco,
Nesse momento é desativada a barra de vida, voltando a ser uma linha tracejada no
objeto fisica1: Fisica.
O objeto banco envia uma mensagem 4: pedido aprovado() para o objeto cliente,
onde a mensagem inicia a barra de vida é ativada.
O objeto cliente envia uma mensagem 5: Fornecer senha e valor() para o objeto
banco, onde a mensagem inicia a barra de vida é ativada.
O objeto banco envia uma mensagem 5.1: Abrir conta: abertura() para o conta:
ContaComun, onde a mensagem inicia a barra de vida é ativada.
Em seguida o conta: ContaComun envia um retorno indicado por uma linha
38
tracejada, informando que Número de conta gerado para o objeto banco,
Nesse momento é desativada a barra de vida, voltando a ser uma linha tracejada no
objeto conta: ContaComun.
O objeto banco envia uma mensagem 5.2: Abertura concluída() para o objeto
cliente, onde a mensagem inicia a barra de vida é ativada.
Em dotUML:
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
lifeline "Cliente" as c autoactivate
lifeline "Banco" as b autoactivate
lifeline "fisica: Fisica" as fisica autoactivate
lifeline "conta: ContaComum" as conta autoactivate
38
#PraCegoVer
São apresentadas duas figuras, a primeira para mostrar os estereótipos das classes
(Objetos): Actor (Ator), boundary (limite), Control (Controle), Entity (entidade).
Onde o boneco palito representa os atores do sistema (actor)
A boundary é representado circulo com um traço lateral (ou seja, por uma linha na
vertical ligada a um circulo) , representando o limite do sistema, ou seja a interface
que o usuário vai interagir.
O controle (Control) é representado por um circulo com uma flexa, é onde o
processamento do sistema vai ser realizado, por exemplo, onde tem o método main
no Java.
As entidades (entity) é representado por um circulo com um traço embaixo, é o
objeto que representa as classes que irão armazenar dados, como por exemplo os
dados dos alunos.
39
seg --> seg "Validate"
seg -r-> login "[Result]"
login -r-> customer
deactivate customer
}
39
#PraCegoVer
É mostrado parte de um diagrama de sequencia para ilustras a inserção de
fragmentos (alternatives, options, and loops)
Apresenta três objetos: bank: Bank, theCheck: Check, account : CheckingAccount
O objeto bank: Bank envia uma mensagem getAmount() para o objeto theCheck:
Check, onde a mensagem inicia a barra de vida é ativada.
Em seguida o objeto theCheck: Check envia um retorno indicado por uma linha
tracejada, informando que amount para o objeto bank: Bank ,
Nesse momento é desativada a barra de vida, voltando a ser uma linha tracejada no
objeto theCheck: Check.
O objeto bank: Bank envia uma mensagem getBalance() para o objeto account :
CheckingAccount, onde a mensagem inicia a barra de vida é ativada.
Em seguida o objeto Users envia um retorno indicado por uma linha tracejada,
informando que balance para o objeto account : CheckingAccount ,
Nesse momento é desativada a barra de vida, voltando a ser uma linha tracejada no
objeto account : CheckingAccount .
Fim da parte 1
Inicio da Parte 2 do Fragmento alt:
[Else]
O objeto bank: Bank envia uma mensagem addInsuffientFundFee() para o objeto
account : CheckingAccount , onde a mensagem inicia a barra de vida é ativada.
O objeto bank: Bank envia uma mensagem noteReturnedCheck(the Check) para o
objeto account : CheckingAccount , onde a mensagem inicia a barra de vida é
ativada.
O objeto bank: Bank envia uma mensagem returnedCheck(the Check) para o objeto
Bank (isso mesmo, uma mensagem para si mesmo), onde a mensagem inicia a barra
de vida é ativada, neste caso uma barra sobre a outra.
Fim fragmento alt
Em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
40
#PraCegoVer
O diagrama apresenta 8 classes: Pessoa, Endereco, Aluno, Professor, Turma,
Disciplina, Titulacao, avaliacao
As classes Pessoa e Endereco estão relacionados por meio de composição, onde o
endereco é parte do cadastro do Pessoa.
O lado do losango fica do lado da classe Pessoa, sendo 1 a cardinalidade do lado da
classe Pessoa e cardinalidade 1..* do lado do endereco.
As classes Pessoa e Aluno estão relacionados por meio de herença, Pessoa é a
superclasse e o Aluno é a subclasse
As classes Pessoa e Professor estão relacionados por meio de herença, Pessoa é a
superclasse e o Professor é a subclasse.
As classes Turma e Aluno estão relacionados por meio de associação, sendo 0..* a
cardinalidade do lado da classe Aluno e cardinalidade 0..* do lado do Turma.
As classes Avaliacao e Aluno estão relacionados por meio de agregacao, onde o
Avaliacao é parte do cadastro de Aluno.
O lado do losango fica do lado da classe Aluno,sendo 0..* a cardinalidade do lado da
classe Avaliacao e cardinalidade 1 do lado do Aluno.
As classes Turma e Professor estão relacionados por meio de associação, sendo 1 a
cardinalidade do lado da classe Professor e cardinalidade 0..* do lado do Turma.
As classes Turma e Disciplina estão relacionados por meio de associação, sendo 1 a
cardinalidade do lado da classe Disciplina e cardinalidade 0..* do lado do Turma.
As classes Professor e Titulacao estão relacionados por meio de associação, sendo
0..* a cardinalidade do lado da classe Professor e cardinalidade 1 do lado da
Titulacao.
42
Gabarito em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
actor Professor
boundary ":TelaNotas" as tela autoactivate //Se não
quiser especificar o limite trocar boundary para lifeline
control ":ControladorTurma" as controle autoactivate
//Se não quiser especificar o controle trocar boundary
para lifeline
entity ": Turma" as turma autoactivate //Se não quiser
especificar como entidade trocar entity para lifeline
Professor --> tela "SelecionaTurma()"
tela --> controle "getTurma()"
controle -r-> tela "Turma"
fragment alt "Loop" {
Professor --> tela "DigitaNota"
}
tela --> controle "salvar()"
controle --> turma "AtualizaTurma()"
turma -r-> controle "[Atualizado]"
controle -r-> tela "[Sucesso]"
deactivate tela
}
43
Gabarito em dotUML
SequenceDiagram [frame=true framecolor=steelblue
label="Sequence Diagram"] {
actor Professor
boundary ":TelaNotas" as tela autoactivate //Se não
quiser especificar o limite trocar boundary para lifeline
control ":ControladorTurma" as controle autoactivate
//Se não quiser especificar o controle trocar boundary
para lifeline
entity ": Turma" as turma autoactivate //Se não quiser
especificar como entidade trocar entity para lifeline
Professor --> tela "SelecionaTurma()"
tela --> controle "getTurma()"
controle -r-> tela "Turma"
fragment alt "Loop" {
Professor --> tela "DigitaNota"
}
tela --> controle "salvar()"
controle --> turma "AtualizaTurma()"
turma -r-> controle "[Atualizado]"
controle -r-> tela "[Sucesso]"
deactivate tela
}
44