🚀 Capítulo 06: Classes e Atributos (Tema: Pokémon)

NOTE

Este capítulo utiliza a temática de Pokémon para explicar os conceitos de classes. O Professor Carvalho precisa de um sistema para catalogar as criaturas na Pokédex!


1. 🎯 Objetivo da Aula

Compreender o conceito de Classe, Atributos, Métodos e Visibilidade (Encapsulamento) no Diagrama de Classes.

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

Você é o assistente do Professor Carvalho. Ele quer que você crie o “molde” (a classe) para cadastrar os monstros na Pokédex. Todos os Pokémon têm características em comum (nome, tipo) e realizam ações em comum (atacar). Seu desafio é modelar a classe Pokemon no Draw.io!

3. 🧠 Fundamentos: A Teoria Traduzida

O Diagrama de Classes é o diagrama estrutural mais importante da UML. Ele descreve os objetos que formam o sistema.

📦 O que é uma Classe?

É um retângulo dividido em 3 partes:

  1. Nome da Classe: No topo (ex: Pokemon).
  2. Atributos: As características ou dados (ex: vida, nivel).
  3. Métodos: As ações ou funções (ex: atacar(), evoluir()).

🔒 Visibilidade (Encapsulamento)

Nem tudo deve ser público. Usamos símbolos para definir quem pode ver o dado:

  • + Público: Qualquer um pode ver/usar (ex: métodos).
  • - Privado: Só a própria classe pode ver/mudar (ex: atributos, para evitar trapaças!).

4. 📖 Exemplo Guiado: Desenhando no Draw.io

  1. Abra o Draw.io e procure pela categoria UML.
  2. Arraste o elemento que parece uma tabela com 3 linhas (Class).
  3. No topo, digite Pokemon.
  4. No meio, digite os atributos com a visibilidade:
    • - nome: String
    • - tipo: String
    • - hp: int
  5. Embaixo, digite os métodos:
    • + atacar()
    • + receberDano(pontos: int)

5. 🛠️ Prática Obrigatória 1: Criando a Classe Treinador

No Draw.io, crie uma nova classe chamada Treinador.

  • Atributos (Privados): nome (String), quantidadeInsignias (int).
  • Métodos (Públicos): capturarPokemon(), desafiarLider().
  • Exporte a imagem da classe.

6. 🛠️ Prática Obrigatória 2: Por que Privado?

Por que deixamos os atributos como hp (vida) e nivel como Privados (-) e não públicos? O que aconteceria se qualquer um pudesse mudar a vida do Pokémon direto?


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

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 06 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_06_classes.md
│   └── codigos/
│       └── cap06/
│           └── classe_treinador.png

9. 💡 Checkpoint de Lógica

Qual é a diferença entre uma Classe e um Objeto? (Dica: Pense no molde de gesso e na estátua pronta).

10. 🔥 Desafio de Fixação

Pesquise o que significa o símbolo # (Protegido / Protected) na visibilidade de atributos da UML.

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

Resposta da Prática 2: Deixamos os atributos privados para garantir a segurança dos dados (Encapsulamento). Se o HP fosse público, um jogador poderia alterá-lo diretamente para 9999 sem passar pelas regras do jogo!


Capitulo Anterior | Proximo Capitulo