🚀 Capítulo 12: Prática de Diagrama de Sequência (Tema: Sonic)

NOTE

Este capítulo utiliza a temática de Sonic para praticar diagramas de sequência. Sonic precisa ser rápido, e as mensagens entre os objetos do jogo também!


1. 🎯 Objetivo da Aula

Praticar a criação de Diagramas de Sequência em cenários com tomada de decisão (condicionais) usando o Draw.io.

2. 🏢 O Cenário Prático (Seu Desafio)

Você está programando a colisão do Sonic com um Badnik (robô do Dr. Robotnik). O fluxo é o seguinte:

  1. O Jogador aperta o botão de pulo.
  2. O objeto Sonic executa a ação pular().
  3. O objeto Sonic envia uma mensagem para o Badnik perguntando verificarColisao().
  4. Se houver colisão por cima: O Badnik responde destruido().
  5. Se houver colisão lateral: O Sonic executa a ação perderAneis().

Seu desafio é modelar esse fluxo no Draw.io usando os blocos de decisão!

3. 🧠 Fundamentos: A Teoria Traduzida

Para representar condições (como o nosso Se do cenário), a UML usa Fragmentos Combinados. No Draw.io, usamos um retângulo maior que envolve as mensagens com o rótulo:

  • ALT (Alternative): Equivale ao if / else. Mostra caminhos que se excluem mutuamente.
  • OPT (Optional): Equivale ao if sem else. Algo que pode ou não acontecer.

4. 📖 Exemplo Guiado: Usando o ALT no Draw.io

  1. Desenhe as linhas de vida: Jogador, Sonic e Badnik.
  2. Trace as mensagens de pulo e colisão.
  3. Arraste o elemento de Frame (ou retângulo) da categoria UML chamado alt.
  4. Divida o retângulo ao meio com uma linha tracejada (duas condições).
  5. Na parte de cima, escreva a condição [Colisão por cima] e coloque a mensagem de destruição.
  6. Na parte de baixo, escreva [Colisão lateral] e coloque a mensagem de perder anéis.

5. 🛠️ Prática Obrigatória 1: Sonic vs Badnik

Siga as instruções do cenário prático e crie o diagrama de sequência completo no Draw.io.

  • Use o fragmento ALT para as duas situações de colisão.
  • Exporte o diagrama como imagem.

6. 🛠️ Prática Obrigatória 2: Mensagens de Resposta

Por que as mensagens de resposta (como o Badnik dizendo que foi destruído) devem ser desenhadas com linhas tracejadas e não linhas contínuas?


7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 12 UML) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

extra_guia_de_modelagem_uml/
├── capitulos/
│   ├── capitulo_12_pratica_seq.md
│   └── codigos/
│       └── cap12/
│           └── sequencia_sonic.png

9. 💡 Checkpoint de Lógica

Se o Sonic coletar uma esmeralda do caos e ficar invencível, esse “estado” de invencibilidade mudaria a forma como o diagrama de sequência reage à colisão lateral? Como poderíamos representar isso?

10. 🔥 Desafio de Fixação

Pesquise o que significa o fragmento LOOP no Diagrama de Sequência e dê um exemplo baseado no jogo do Sonic.

11. 🔑 Gabarito de Código/Fórmulas

Resposta da Prática 2: As linhas tracejadas servem para diferenciar visualmente uma resposta (retorno de informação) de uma nova chamada de método (linha contínua). Isso evita confusão sobre quem está iniciando a ação.


Capitulo Anterior | Proximo Capitulo