DIAGRAMAS
COMPORTAMENTAIS:
DIAGRAMA DE ESTADOS
MÁQUINAS DE ESTADO
É um comportamento que especifica as
seqüências de estados de um objeto em resposta aos eventos.
Estado Transição Evento
ESTADO
É uma condição ou situação durante a vida de
um objeto, durante a qual ele satisfaz alguma condição, executa alguma atividade, ou espera por algum evento.
Exemplos: Ocioso
Recebendo Pagamento Entregando item
MÁQUINA DE VENDAS (ATM)
Ociosa Recebendo R$ Oferecendo serviços Entregando Troco Despachando Item entrada de moedas(quant.)cancelar / devolver moedas
[ item vazio ]selecionar(item) [ troco < 0 ]
[ troco > 0 ] [ troco = 0 ]
ESTADO INICIAL
É um estado especial que, explicitamente,
mostra o início da máquina de estado.
Pode existir exatamente um estado inicial em
cada diagrama de estado.
O ícone de estado inicial é um círculo compacto
ESTADO FINAL
Você pode usar um estado final para
explicitamente mostrar o final, se necessário.
O estado de parada é um círculo englobando
um círculo compacto com uma flecha.
Normalmente, você pode assumir que a
máquina de estado associada com uma
classe sairá de sua existência quando seu
objeto encapsulado é destruído.
ESTADOS
Ocioso Executando
teclaPressionada
término Estado
Inicial EstadoFinal
Estado
PARTES DE UM ESTADO
Nome
Ações de entrada (entry):
Quando entrar no estado, a ação será executada Ações da saída (exit):
Quando sair do estado, a ação será executada. Atividades (do):
Enquanto no estado, o objeto faz algo que
continuará a ser executado até ser interrompido por um evento
PARTES DE UM ESTADO: EXEMPLO
Nome-do-estado
entry: ação-de-entrada
exit: ação-de-saída
do: atividade
TRANSIÇÃO
É um relacionamento entre dois estados
O objeto no primeiro estado irá executar certas
ações.
Quando o evento especificado ocorrer e as condições
especificadas forem satisfeitas vai entrar no segundo estado.
Uma transição de estado é uma mudança de
estado causada por um evento.
Utiliza-se transições de estado para conectar dois
estados em um diagrama de estado ou mostrar transições de um estado para ele mesmo.
TRANSIÇÃO
Você pode mostrar uma ou mais transições de
estado de um estado desde que cada transição seja única.
O símbolo para uma transição de estado é uma
linha com uma ponta de flecha apontando para o próximo estado.
PARTES DA TRANSIÇÃO
Estado fonte Evento de disparo Condição de guarda Ação Estado alvoEVENTO DE DISPARO
Ocorrência de um estímulo que pode disparar
uma transição de estado
Ex: Apertar o botão do mouse; Discar um dígito
(número)
É possível haver uma transição sem um evento
CONDIÇÃO DE GUARDA
Expressão booleana entre [ ], colocada após o
evento de disparo.
A condição de guarda é avaliada apenas após a
encerrado o tempo Norte/Sul seguir em frente Norte/Sul virar à esquerda Leste/Oeste seguir em frente Leste/Oeste virar à esquerda
encerrado o tempo [carros na via N/S esq.]
encerrado o tempo [carros na via L/O esq.]
encerrado o tempo encerrado o tempo (sem carros na via N/S esq.)
encerrado o tempo [sem carros na via L/O esq.]
AÇÃO E ATIVIDADE
Ação: uma resposta instantânea a uma transição Usualmente associada a uma transição, embora
possa ser associada a um estado
Atividade (do): Uma operação que tem uma certa
PROBLEMAS COM MAQ. DE ESTADOS
Máquinas de estados não estruturados não
possuem bom poder de expressão e tornam-se impraticáveis para problemas grandes
As formas de estruturação: Subestados seqüenciais
Ocioso Manutenção fazerManutenção Validando Selecionando Processando Imprimindo H entry / lerCartão exit / ejetarCartão cartãoInserido cancelar Ativo
Diagramas de Estado especificam uma
seqüência permitida de mudanças nas classes do Diagrama de Classes
Constrói-se um Diagrama de Estado para cada
classe com comportamento temporal significativo
Objetos se comunicam pelo envio e resposta a
eventos
RELAÇÃO ENTRE DIAGRAMAS DE
Eventos, ações e atividades podem ser
representados como operações das Classes
Diferenças temporárias são apropriadamente
modeladas através de estados diferentes de uma mesma classe
RELAÇÃO ENTRE DIAGRAMAS DE
Digramas de Casos de Uso e Interação ajudam
o início do processo de construção de Diagramas de Estados
Somente construa Diagramas de Estados para
classes de objetos com um comportamento dinâmico significativo.
Nem todas as classes de objeto necessitam de
um Diagrama de Estado
Somente considere os atributos relevantes
quando da definição de um estado. Nem todos os atributos mostrados nas classes precisam ser
usados na Diagrama de Estados
Verifique a conseqüência nos vários Diagrama de
Estados quando da existência de eventos compartilhados
DIAGRAMAS DE ATIVIDADES
DIAGRAMA DE ATIVIDADES
São um dos 5 diagramas da UML para a
modelagem de aspectos dinâmicos;
Os Diagramas de Atividades mostram o
fluxo entre atividades (ações
não-atômicas);
São um caso especial dos Diagramas
de Estados, com a maioria das
transições, resultantes do término das
atividades;
São
semelhantes
aos
antigos
fluxogramas;
São muito usados para modelar
atividades concorrentes.
TRANSIÇÕES E CONDIÇÕES
Transições sem condições
são disparadas assim que as atividades
correspondentes terminam;
Transições com condições
só disparam quando a atividade termina e as
CONCORRÊNCIA, FORKS E JOINS
Barras de sincronização são usadas
para especificar forks e joins:
um fork representa um único fluxo de
controle em vários fluxos de controle concorrentes;
um join representa a sincronização de dois
CONCORRÊNCIA, FORKS E JOINS
Atividades depois de um fork podem ser
realizadas em qualquer ordem, ou ao
mesmo tempo;
Para que as atividades depois de um join
possam ser realizadas, todas as atividades
Procurar bebida
[achou café]
H
Pessoa
H [sem café] [sem Coca]
[achou Coca] Pegar lata de Coca Beber Adicionar água à máquina Colocar café no filtro Colocar filtro na máquina Ligar máquina Filtrar café Pegar xícara Colocar café na xícara
SWIMLANES (RAIAS)
Swimlanes (raias) são usadas para
definir quais são as classes (ou conjuntos
de classes) responsáveis pela realização
de cada atividade;
Swimlanes são especialmente úteis para a
modelagem de processos empresariais;
Em muitos casos, os swimlanes implicam
concorrência,
ou
pelo
menos
H S o l i c i t a r p r o d u t o P r o c e s s a r p e d i d o C o l e t a r m a t e r i a i s E n v i a r p e d i d o R e c e b e r p e d i d o P a g a r c o n t a E n c e r r a r p e d i d o H C o b r a r d o c l i e n t e C l i e n t e V e n d a s E s t o q u e
USO DO DIAGRAMA DE ATIVIDADES
Fazer a modelagem de um fluxo de
trabalho (workflow);
As atividades são focadas, conforme
visualizadas pelos atores que colaboram com o sistema;
Considere que nenhum sistema complexo de
software existe isoladamente, por exemplo:
numa empresa de venda a varejo, haverá alguns
sistemas automatizados, assim como sistemas humanos. Com o diagrama de atividade podemos fazer a modelagem dos processos de negócios em relação às formas como os vários sistemas automatizados e humanos colaboram.
USO DO DIAGRAMA DE ATIVIDADES
Fazer a modelagem de uma operação;
Detalhes de uma computação são modelados; Representa o fluxograma das ações de uma
MODELANDO WORKFLOW
Estabeleça o foco do workflow.
Para sistemas não-triviais, é impossível
mostrar todos os workflows interessantes em um diagrama;
Selecione os objetos de negócio que têm
as responsabilidades de mais alto nível
(swimlanes);
MODELANDO WORKFLOW
A partir de estado inicial, especifique as
atividades e ações que ocorrem com o
passar do tempo (estados de atividades
ou ações);
No caso de ações complicadas, ou
conjuntos de ações que acontecem várias
vezes, junte-as em estados de atividades
e forneça diagramas de atividades
separados em que cada caso é expandido
separadamente.
MODELANDO WORKFLOW
Represente as transições entre estados de
atividades. Iniciando por:
1. fluxo seqüencial;
2. ramificação (Branching);
3. bifurcação e união (Fork e Join);
Se
existem
objetos
envolvidos
no
workflow, inclua-os no diagrama de
atividade. Indique as mudanças de valores
e estados, se necessário.
Cliente Televendas Contabilidade Estoque Solicitar devolução Receber número de devolução Enviar item I : Item [devolvido] Creditar conta Receber item I : Item [disponível] Incluir item novamente no estoque
MODELANDO UMA OPERAÇÃO
Identifique todas as abstrações que estão
envolvidas com a operação (parâmetros e
tipos de retorno se houver; os atributos da
classe que a contém; etc.);
Identifique as pré-condições no estado
inicial da operação e as pós-condições no
estado final da operação;
Identifique os invariantes da classe que a
contém e que devem ser mantidos
durante a execução da operação.
MODELANDO UMA OPERAÇÃO
Começando no estado inicial da operação,
especifique
as
atividades
e
ações
realizadas
ao
longo
do
tempo,
representando-as como estados;
Use bifurcações para identificar caminhos
condicionais e iteração;
Somente se a operação pertencer a uma
classe ativa, use fork e join para modelar
fluxos de controle paralelos.
MODELANDO UMA OPERAÇÃO
Exemplo:
no contexto da classe Linha, é apresentado o
diagrama de atividades que especifica o algoritmo da operação interseção;
a assinatura da operação inclui um único
parâmetro (l) e um único valor de retorno (da classe Ponto);
a classe Linha tem dois atributos e interesse:
slope (que armazena a inclinação da linha); e
delta (que armazena o deslocamento da linha em
MODELANDO UMA OPERAÇÃO
Exemplo:
no algoritmo da operação existe uma proteção
que testa se a inclinação da linha atual é a mesma que a inclinação do parâmetro l;
se for a mesma, não haverá interseção das
linhas; retornando um ponto em (0,0)
caso contrário, a operação primeiro calcula um
valor x para o ponto de interseção e depois um valor y; x e y são objetos locais à operação;
y = (slope*x) + delta;
return Point(x,y)
x = (l.delta - delta) / (slope - I.slope); else
return Point(0,0) [slope = I.slope]