diff --git a/Faculdade/Modelagem-de-Sistemas/Aula 07.md b/Faculdade/Modelagem-de-Sistemas/Aula 07.md new file mode 100644 index 0000000..1dc5325 --- /dev/null +++ b/Faculdade/Modelagem-de-Sistemas/Aula 07.md @@ -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. diff --git a/Faculdade/Modelagem-de-Sistemas/modelagem_sistemas_compilado.md b/Faculdade/Modelagem-de-Sistemas/modelagem_sistemas_compilado.md index a101858..7369a8f 100644 --- a/Faculdade/Modelagem-de-Sistemas/modelagem_sistemas_compilado.md +++ b/Faculdade/Modelagem-de-Sistemas/modelagem_sistemas_compilado.md @@ -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. diff --git a/media/modelagem_de_sistemas/aula07/img/img001.png b/media/modelagem_de_sistemas/aula07/img/img001.png new file mode 100644 index 0000000..3ce4074 Binary files /dev/null and b/media/modelagem_de_sistemas/aula07/img/img001.png differ diff --git a/media/modelagem_de_sistemas/aula07/img/img002.png b/media/modelagem_de_sistemas/aula07/img/img002.png new file mode 100644 index 0000000..df18d70 Binary files /dev/null and b/media/modelagem_de_sistemas/aula07/img/img002.png differ diff --git a/media/modelagem_de_sistemas/aula07/img/img003.png b/media/modelagem_de_sistemas/aula07/img/img003.png new file mode 100644 index 0000000..bfa5708 Binary files /dev/null and b/media/modelagem_de_sistemas/aula07/img/img003.png differ diff --git a/media/modelagem_de_sistemas/aula07/img/img004.png b/media/modelagem_de_sistemas/aula07/img/img004.png new file mode 100644 index 0000000..b29f3cc Binary files /dev/null and b/media/modelagem_de_sistemas/aula07/img/img004.png differ diff --git a/media/modelagem_de_sistemas/aula07/img/img005.png b/media/modelagem_de_sistemas/aula07/img/img005.png new file mode 100644 index 0000000..5c7b583 Binary files /dev/null and b/media/modelagem_de_sistemas/aula07/img/img005.png differ diff --git a/media/modelagem_de_sistemas/aula07/img/img006.png b/media/modelagem_de_sistemas/aula07/img/img006.png new file mode 100644 index 0000000..346794a Binary files /dev/null and b/media/modelagem_de_sistemas/aula07/img/img006.png differ diff --git a/media/modelagem_de_sistemas/aula07/img/img007.png b/media/modelagem_de_sistemas/aula07/img/img007.png new file mode 100644 index 0000000..beeaef8 Binary files /dev/null and b/media/modelagem_de_sistemas/aula07/img/img007.png differ