Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions Faculdade/Modelagem-de-Sistemas/Aula 07.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Aula 7 - Diagrama de estados

## **Estado de um objeto**

O **estado de um objeto** compreende todas as suas **propriedades** associadas a valores correntes de cada uma delas. Tais propriedades compreendem os **atributos de uma classe**.

**O estado de um objeto é determinado pelos valores de seus atributos, em um determinado momento.**

Para garantir a propriedade do encapsulamento, é salutar que (_é saudável que_) apenas os métodos que denotam o comportamento da classe à qual o objeto pertence alterem os seus respectivos atributos.

Dessa forma, apenas os métodos da própria classe a que o objeto pertença devem alterar o seu estado.

Ciclo de vida é o tempo que um **objeto permanece vivo e ativo**. Ou seja, o tempo que decorre **desde sua criação até sua destruição**. Durante o ciclo de vida, o objeto pode ter finitos estados, caracterizados por determinados valores de alguns de seus atributos.

O objeto muda de estado a medida que eventos (internos ou externos) acontecem. Quando uma mudança de estados ocorre, dizemos que houve uma transição entre estados. Ou seja, **eventos acarretam a transição entre estados de um objeto**.

No momento da transição, o objeto realiza determinadas ações dentro do sistema. As ações, ou operações, estarão mapeadas em métodos da classe a que o objeto pertence.

O diagrama da UML que ajuda na análise das transições entre os estados de um objeto é o **diagrama de transição de estados, ou diagrama de estados**.


## Diagram de Transição de Estados - DTE

Apresenta os possíveis estados de um objeto e demonstra, por meio das transições, os eventos que geram as mudanças de um estado para outro(s), durante todo o ciclo de vida do objeto. Ou seja, **descreve o ciclo de vida de objetos de uma classe, os eventos que causam as transições entre estados e as operações resultantes.**

Diferentemente dos diagramas de interação (que descrevem o comportamento de objetos de diferentes classes, mostrando a interação entre elas), o DTE mostra o comportamento de objetos de uma única classe.

Conjunto de elementos para descrever o DTE:

- **básicos:** estado e transições;
- **conceitos relacionados:** evento, ação e atividade;
- **menos utilizados, mas úteis em momentos específicos:** transições internas, estados aninhados e estados concorrentes.


## Conceitos Básicos: Estado, Evento e Transição

### Estado:

O estado de um objeto é a sua **condição específica**, em algum momento em que ele está sendo usado no sistema.

Segundo a definição de Booch, Rumbauch e Jaconson (2006), estado é uma **condição ou situação na vida de um objeto** durante o qual o objeto satisfaz alguma condição, realiza alguma atividade ou aguarda um evento.

Um objeto permanece em um estado por um **tempo finito**. Cada estado de um objeto é, em geral, determinado pelos valores de seus atributos.

Esta imagem mostra a representação de um estado, segundo a UML — um retângulo com bordas arredondadas:

![Estado - UML](../../media/modelagem_de_sistemas/aula07/img/img001.png)

### Evento:

Um evento é a **ocorrência (interna ou externa)** de um estímulo gerado para o objeto, **capaz de mudar** o seu estado atual.

### Transição:

Uma transição indica um **movimento de um estado para o outro**, pela ocorrência de um **evento**.

A imagem a seguir mostra o evento e a consequente transição de estado, onde a ocorrência do evento faz com que haja a transição (representada pela seta) entre o “estado UML 1” para o “estado UML 2”. A seta indica a direção da transição. Observe:


![Transição](../../media/modelagem_de_sistemas/aula07/img/img002.png)


### Pseudoestados:

- **Estado inicial:** representado pelo círculo preenchido e denota o pseudoestado de um objeto no momento de sua criação, quando ele é instanciado na memória. Só há um estado inicial em um DTE, mostrando o início de sua leitura.

- ![Estado inicial](../../media/modelagem_de_sistemas/aula07/img/img003.png)
- **Estado final:** representado pelo círculo preenchido com outro círculo em volta e denota o pseudoestado do fim do ciclo de vida de um objeto. É um estado opcional, no DTE, e também pode haver mais um.
-
- ![Estado final](../../media/modelagem_de_sistemas/aula07/img/img004.png)


![Exemplo 1](../../media/modelagem_de_sistemas/aula07/img/img005.png)

## Detalhando a transição

- **assinatura do gatilho:** é um único evento que demanda a mudança de estado. basicamente o evento que ocasiona a transição de estado. é raro que esteja ausente, mas pode ocorrer e denota que a transição é feita automaticamente.
- **sentinela:** Quando estiver presente, corresponde a uma condição que deve ser verdadeira para que a transição ocorra. Se ausente, indica que a transição sempre acontece. É representada entre colchetes [..], com a condição dentro.
- **atividade:** É um comportamento executado durante a transição. A ausência de atividade diz que nada é feito durante a transição.

## Ações de Entrada e Saída, Transições internas e Atividades

### Ações de entrada e saída:
São ações realizadas dentro do estado, assim que entra no estado (entrada) e antes de sair dele (saída), independentemente da transição. Veja a descrição:

- A cláusula **Entry** denomina uma ação de entrada no estado, assim como a cláusula **Exit** é usada para ações de saída;
- A cláusula **Entry** pode ser usada para especificar uma ação a ser efetivada no momento em que o objeto entra no respectivo estado;
- A cláusula **Exit** especifica ações a serem realizadas sempre que o objeto sai de determinado estado.

### Transição interna:

Os estados podem reagir a eventos, que não ocasionam transição, usando atividades internas. Ou seja, são eventos que precisam ser tratados, mas que não ocasionam transição de estado.

As atividades internas não disparam ações de entrada e saída, na medida em que não saem e entram do objeto, em decorrência do evento.


### Atividades:

Em geral, o objeto fica ocioso em um estado até que um evento ocorra. Porém, talvez você deseje que um objeto permaneça realizando uma tarefa, até que determinado evento ocorra. Ou seja, executa uma atividade enquanto está nesse estado.

A cláusula **do/** indica que há uma atividade naquele estado.


### Superestados

Um superestado, também chamado de estado composto, ajuda a simplificar a modelagem de comportamentos complexos, sendo composto de vários estados ou subestados.

Todos os estados dentro de um estado composto herdam suas transições.

Um estado composto pode ser sequencial ou concorrente.

Exemplos:

![Exemplo 2](../../media/modelagem_de_sistemas/aula07/img/img006.png)

O primeiro diagrama é o principal e tem um superestado, de nome Ativo. Observe que ele tem um símbolo dentro, que mostra que contém em si outros estados.

O estado Cancelado tem uma transicão do estado Ativo, denotando que pode haver uma transição de qualquer estado do superestado Ativo para o estado Cancelado. Se não fosse assim, haveria uma transição de cada estado para Cancelado, o que não estaria errado, mas tornaria o desenho mais complexo.

![stm Ativo](../../media/modelagem_de_sistemas/aula07/img/img007.png)

A segunda imagem mostra o desdobramento do estado Ativo, composto dos subestados Solicitado, Em produção, Embalando e Entregue.


### Passo a Passo para a Construção do DTE

1. Identifique todos os estados relevantes para a classe
2. Analise os possíveis eventos que ocasionam mudança de estado. Para cada evento, identifique qual transição ele ocasiona.
3. Para cada estado:
1. Identifique as transições possíveis quando um evento ocorre;
2. Identifique os eventos internos e ações correspondentes.
4. Para cada transição verifique se há fatores que influenciam no seu disparo (definição de condições de guarda e ações).
5. Para cada condição de guarda e para cada ação identifique seus atributos e ligações que estão envolvidos.
6. Defina seu estado inicial e os eventuais estados finais.
7. Desenhe o diagrama.

### Contribuições do DTE ao Diagrama de Classes

- O DTE pode ser construído com base nas especificações de casos de uso, nos diagramas de interação e nos diagramas de classes;
- Novas propriedades (atributos e métodos) podem ser descobertos ao elaboramos o DTE e devem ser incorporados ao diagrama de classes;
- Pode ser necessária a atualização de um ou mais métodos de uma classe, para refletir o comportamento do objetos nos respectivos estados. Por exemplo: o comportamento do método sacar() da classe ContaBancária varia em função do estado no qual esta classe se encontra. Saques, por exemplo, não podem ser realizados em uma conta que esteja no estado Bloqueada.
143 changes: 143 additions & 0 deletions Faculdade/Modelagem-de-Sistemas/modelagem_sistemas_compilado.md
Original file line number Diff line number Diff line change
Expand Up @@ -461,3 +461,146 @@ O foco aqui é a sequência da troca de mensagens.
![diagrama sequencia](../../media/modelagem_de_sistemas/aula05/img/img016.png)

[Exemplo de diagrama de sequencia (pdf)](../../media/modelagem_de_sistemas/aula05/pdf/exemplo_sequencia.pdf)


# Aula 7 - Diagrama de estados

## **Estado de um objeto**

O **estado de um objeto** compreende todas as suas **propriedades** associadas a valores correntes de cada uma delas. Tais propriedades compreendem os **atributos de uma classe**.

**O estado de um objeto é determinado pelos valores de seus atributos, em um determinado momento.**

Para garantir a propriedade do encapsulamento, é salutar que (_é saudável que_) apenas os métodos que denotam o comportamento da classe à qual o objeto pertence alterem os seus respectivos atributos.

Dessa forma, apenas os métodos da própria classe a que o objeto pertença devem alterar o seu estado.

Ciclo de vida é o tempo que um **objeto permanece vivo e ativo**. Ou seja, o tempo que decorre **desde sua criação até sua destruição**. Durante o ciclo de vida, o objeto pode ter finitos estados, caracterizados por determinados valores de alguns de seus atributos.

O objeto muda de estado a medida que eventos (internos ou externos) acontecem. Quando uma mudança de estados ocorre, dizemos que houve uma transição entre estados. Ou seja, **eventos acarretam a transição entre estados de um objeto**.

No momento da transição, o objeto realiza determinadas ações dentro do sistema. As ações, ou operações, estarão mapeadas em métodos da classe a que o objeto pertence.

O diagrama da UML que ajuda na análise das transições entre os estados de um objeto é o **diagrama de transição de estados, ou diagrama de estados**.


## Diagram de Transição de Estados - DTE

Apresenta os possíveis estados de um objeto e demonstra, por meio das transições, os eventos que geram as mudanças de um estado para outro(s), durante todo o ciclo de vida do objeto. Ou seja, **descreve o ciclo de vida de objetos de uma classe, os eventos que causam as transições entre estados e as operações resultantes.**

Diferentemente dos diagramas de interação (que descrevem o comportamento de objetos de diferentes classes, mostrando a interação entre elas), o DTE mostra o comportamento de objetos de uma única classe.

Conjunto de elementos para descrever o DTE:

- **básicos:** estado e transições;
- **conceitos relacionados:** evento, ação e atividade;
- **menos utilizados, mas úteis em momentos específicos:** transições internas, estados aninhados e estados concorrentes.


## Conceitos Básicos: Estado, Evento e Transição

### Estado:

O estado de um objeto é a sua **condição específica**, em algum momento em que ele está sendo usado no sistema.

Segundo a definição de Booch, Rumbauch e Jaconson (2006), estado é uma **condição ou situação na vida de um objeto** durante o qual o objeto satisfaz alguma condição, realiza alguma atividade ou aguarda um evento.

Um objeto permanece em um estado por um **tempo finito**. Cada estado de um objeto é, em geral, determinado pelos valores de seus atributos.

Esta imagem mostra a representação de um estado, segundo a UML — um retângulo com bordas arredondadas:

![Estado - UML](../../media/modelagem_de_sistemas/aula07/img/img001.png)

### Evento:

Um evento é a **ocorrência (interna ou externa)** de um estímulo gerado para o objeto, **capaz de mudar** o seu estado atual.

### Transição:

Uma transição indica um **movimento de um estado para o outro**, pela ocorrência de um **evento**.

A imagem a seguir mostra o evento e a consequente transição de estado, onde a ocorrência do evento faz com que haja a transição (representada pela seta) entre o “estado UML 1” para o “estado UML 2”. A seta indica a direção da transição. Observe:


![Transição](../../media/modelagem_de_sistemas/aula07/img/img002.png)


### Pseudoestados:

- **Estado inicial:** representado pelo círculo preenchido e denota o pseudoestado de um objeto no momento de sua criação, quando ele é instanciado na memória. Só há um estado inicial em um DTE, mostrando o início de sua leitura.

- ![Estado inicial](../../media/modelagem_de_sistemas/aula07/img/img003.png)
- **Estado final:** representado pelo círculo preenchido com outro círculo em volta e denota o pseudoestado do fim do ciclo de vida de um objeto. É um estado opcional, no DTE, e também pode haver mais um.
-
- ![Estado final](../../media/modelagem_de_sistemas/aula07/img/img004.png)


![Exemplo 1](../../media/modelagem_de_sistemas/aula07/img/img005.png)

## Detalhando a transição

- **assinatura do gatilho:** é um único evento que demanda a mudança de estado. basicamente o evento que ocasiona a transição de estado. é raro que esteja ausente, mas pode ocorrer e denota que a transição é feita automaticamente.
- **sentinela:** Quando estiver presente, corresponde a uma condição que deve ser verdadeira para que a transição ocorra. Se ausente, indica que a transição sempre acontece. É representada entre colchetes [..], com a condição dentro.
- **atividade:** É um comportamento executado durante a transição. A ausência de atividade diz que nada é feito durante a transição.

## Ações de Entrada e Saída, Transições internas e Atividades

### Ações de entrada e saída:
São ações realizadas dentro do estado, assim que entra no estado (entrada) e antes de sair dele (saída), independentemente da transição. Veja a descrição:

- A cláusula **Entry** denomina uma ação de entrada no estado, assim como a cláusula **Exit** é usada para ações de saída;
- A cláusula **Entry** pode ser usada para especificar uma ação a ser efetivada no momento em que o objeto entra no respectivo estado;
- A cláusula **Exit** especifica ações a serem realizadas sempre que o objeto sai de determinado estado.

### Transição interna:

Os estados podem reagir a eventos, que não ocasionam transição, usando atividades internas. Ou seja, são eventos que precisam ser tratados, mas que não ocasionam transição de estado.

As atividades internas não disparam ações de entrada e saída, na medida em que não saem e entram do objeto, em decorrência do evento.


### Atividades:

Em geral, o objeto fica ocioso em um estado até que um evento ocorra. Porém, talvez você deseje que um objeto permaneça realizando uma tarefa, até que determinado evento ocorra. Ou seja, executa uma atividade enquanto está nesse estado.

A cláusula **do/** indica que há uma atividade naquele estado.


### Superestados

Um superestado, também chamado de estado composto, ajuda a simplificar a modelagem de comportamentos complexos, sendo composto de vários estados ou subestados.

Todos os estados dentro de um estado composto herdam suas transições.

Um estado composto pode ser sequencial ou concorrente.

Exemplos:

![Exemplo 2](../../media/modelagem_de_sistemas/aula07/img/img006.png)

O primeiro diagrama é o principal e tem um superestado, de nome Ativo. Observe que ele tem um símbolo dentro, que mostra que contém em si outros estados.

O estado Cancelado tem uma transicão do estado Ativo, denotando que pode haver uma transição de qualquer estado do superestado Ativo para o estado Cancelado. Se não fosse assim, haveria uma transição de cada estado para Cancelado, o que não estaria errado, mas tornaria o desenho mais complexo.

![stm Ativo](../../media/modelagem_de_sistemas/aula07/img/img007.png)

A segunda imagem mostra o desdobramento do estado Ativo, composto dos subestados Solicitado, Em produção, Embalando e Entregue.


### Passo a Passo para a Construção do DTE

1. Identifique todos os estados relevantes para a classe
2. Analise os possíveis eventos que ocasionam mudança de estado. Para cada evento, identifique qual transição ele ocasiona.
3. Para cada estado:
1. Identifique as transições possíveis quando um evento ocorre;
2. Identifique os eventos internos e ações correspondentes.
4. Para cada transição verifique se há fatores que influenciam no seu disparo (definição de condições de guarda e ações).
5. Para cada condição de guarda e para cada ação identifique seus atributos e ligações que estão envolvidos.
6. Defina seu estado inicial e os eventuais estados finais.
7. Desenhe o diagrama.

### Contribuições do DTE ao Diagrama de Classes

- O DTE pode ser construído com base nas especificações de casos de uso, nos diagramas de interação e nos diagramas de classes;
- Novas propriedades (atributos e métodos) podem ser descobertos ao elaboramos o DTE e devem ser incorporados ao diagrama de classes;
- Pode ser necessária a atualização de um ou mais métodos de uma classe, para refletir o comportamento do objetos nos respectivos estados. Por exemplo: o comportamento do método sacar() da classe ContaBancária varia em função do estado no qual esta classe se encontra. Saques, por exemplo, não podem ser realizados em uma conta que esteja no estado Bloqueada.
Binary file added media/modelagem_de_sistemas/aula07/img/img001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/modelagem_de_sistemas/aula07/img/img002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/modelagem_de_sistemas/aula07/img/img003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/modelagem_de_sistemas/aula07/img/img004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/modelagem_de_sistemas/aula07/img/img006.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added media/modelagem_de_sistemas/aula07/img/img007.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.