Dinâmica dos Objetos
Dinâmica dos objetos Necessário desenvolver estudo sobre comportamento interno das classes Permitir a especificação da dinâmica i.e. a forma como os objetos de cada classe se comportam A especificação da dinâmica do sistema deve ser feita através de diagramas de estado
Notação de Harel Um diagrama de estados é um grafo dirigido cujos nós representam os estados e cujos arcos representam as transições entre os estados Estado de um objeto é um momento na vida de um objeto. Um objeto pode passar por diferentes estados: o momento em que foi criado, momento que fez uma inicialização, momento que fez uma solicitação, momento de seu desaparecimento, etc Muitas vezes o nome de um estado é um verbo no gerúndio ou no particípio Um mesmo estado pode ser repetido em um diagrama de estados i.e. se houver dois estados com o mesmo nome trata-se, na verdade, do mesmo estado
Estados de um objeto
Transição de estado Um objeto não fica permanentemente em um estado Os objetos tendem a avançar de um estado para outro O avanço de uma situação (estado) para outra denomina-se transição de estado Sintaxe: Evento: indica o nome de um sinal, mensagem ou notificação recebida pelo objeto e que torna a transição habilitada Argumentos: são valores recebidos junto com o evento [Condição]: expressão lógica que é avaliada quando o evento ocorrer /Ação: indica uma ação que é executada durante a transição de um estado a outro
Exemplo de diagrama de estados (com 5 estados e 4 transições)
Construções típicas Sequências: fluxos de estados representados por encadeamentos de um estado e uma transição (figura anterior) Bifurcações e junções bifurcação: duas ou mais transições partindo de um mesmo estado junção: duas ou mais transições conduzindo a um mesmo estado
Conflitos Um conflito ocorre em uma bifurcação quando duas ou mais transições partindo de um mesmo estado estão habilitadas
Construções típicas Repetições (laços): encadeamento cíclico de estados e transições contendo um controle sobre a repetição dos ciclos
Cláusula de envio ação de envio de uma mensagem, do objeto que se está modelando, para algum outro objeto. Notação: acento circunflexo seguido do nome do objeto e do nome da mensagem separados por ponto
Transições reflexivas Transição que parte de um estado e alcança o mesmo estado Produz ação sem afetar o estado no qual o objeto se encontra Indica que o objeto recebe certas mensagens (ou percebe certos eventos) sem alterar seu estado comportamental
Ações nos estados Sempre que o estado for alcançado, as ações serão realizadas dois compartimentos: identificação: contém o nome do estado das ações: listas das ações realizadas no interior do estado Categorias de ações Entrada: realizada exatamente no momento em que se alcança o estado (antes de qualquer outra ação) Saída: realizadas exatamente no momento de abandono de um estado
Ações nos estados
Ações nos estados Categorias de ações Saída: realizadas exatamente no momento de abandono de um estado
Estados compostos Estado constituído de um conjunto de subestados permite que se façam construções hierarquizadas com estados maiores no níveis iniciais maior nível de abstração estados mais específicos nos níveis seguintes menor abstração maior detalhamento
Concorrência Representam dois ou mais encadeamentos de estados e transições que são percorridos simultaneamente A concorrência dentro de um objeto significa que ele possui mais de um fluxo de de controle (threads, processos) Representação divisão de um estado composto em regiões separadas por linhas tracejadas Pontos de sincronismo explícito: entrada e saída do estado composto
Concorrência
Concorrência Sincronismo entre os estados intermediários de duas ou mais concorrências
Ex. de diagramas de estados
Ex. de diagramas de estados
Ex. de diagramas de estados
Diagramas de atividades É um diagrama de estado no qual a maioria dos estados representa a execução de ações ou atividades Primitivas adicionais: estados de bifurcação e convergência
Diagramas de atividades Primitivas adicionais Sincronismo de concorrências
Exercício 5) Para a especificação apresentada em aula, a partir dos diagramas de sequência criados no exercício 3, desenhe as máquinas de estado que implementem tais sequências.
Bibliografia [1] STADZISZ, Paulo Cézar. Projeto de software usando a UML. Versão 2002. CEFET-PR