Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

📐 CAPÍTULO 12: DIAGRAMA DE CLASSES (CONCEITOS)

Chegamos ao núcleo da Engenharia de Sistemas modernos. Se os "Casos de Uso" explicavam o que o usuário vê, o Diagrama de Classes explica como o software organiza a Memória RAM e o Banco de Dados. 🛡️🧩


🎯 Objetivo do Capítulo

Dominar a estrutura de classes, atributos e métodos, aplicando os modificadores de visibilidade e as associações fundamentais para criar um modelo de dados escalável.


🏢 O Cenário Corporativo (TecProExpress)

Na TecProExpress, o time de Backend está migrando do modelo de "Scripts de Banco" para a Orientação a Objetos em Java. Os desenvolvedores precisam saber: O que é um objeto vivo na memória? Como protegemos o saldo de uma conta de ser alterado por qualquer um?

"Seu desafio como Arquiteto de Dados é desenhar o molde das classes. Você deve definir quais informações são privadas (escondidas no cofre) e quais ações são públicas para os outros objetos."


🧠 Classes vs. Objetos (Instâncias)

  • Classe: É o "Molde" ou a "Planta". Não tem dados reais ainda. (Ex: A classe Motorista).
  • Objeto (Instância): É a "Vida" na memória RAM. Tem dados reais. (Ex: O motorista João, CPF 123.456...).

🔍 Anatomia de uma Classe UML

Uma classe é representada por um retângulo dividido em três partes:

  1. Nome: Substantivo no singular (Ex: Produto).
  2. Atributos (Dados): O que ele guarda. (Ex: - preco: Double).
  3. Métodos (Ações): O que ele faz. (Ex: + calcularDesconto()).

🛡️ Visibilidade (Encapsulamento)

Controlamos o acesso aos dados usando símbolos universais:

  • + (Public): Qualquer um pode acessar.
  • - (Private): Somente a própria classe pode mexer. (O "Cofre").
  • # (Protected): A classe e suas filhas (herança) podem acessar.

📊 Exemplo de Classe Protegida

classDiagram
    class ContaBancaria {
        -Double saldoOculto
        #String titular
        +efetuarSaque(Double valor)
        +consultarSaldo() Double
    }

[!TIP] Regra de Ouro (Java Sênior): Atributos devem ser SEMPRE Privados (-). O acesso a eles deve ser feito exclusivamente por métodos Públicos (+). Isso garante que ninguém mude um saldo para negativo por erro de lógica externa. 🚀


🖇️ Relacionamentos (Associações)

As classes não vivem isoladas. Elas se conectam para realizar tarefas complexas.

1. Multiplicidade (Cardinalidade)

Indica quantos objetos podem se conectar:

  • 1: Exatamente um (Obrigatório).
  • 0..*: Zero ou Muitos (Opcional).
  • 1..*: Pelo menos um (Obrigatório).
classDiagram
    class Cliente {
        -String nome
    }
    class Pedido {
        -Date data
    }
    Cliente "1" -- "0..*" Pedido : Realiza

💡 Checkpoint de Lógica

[!IMPORTANT] Reflexão Profissional: Por que uma tabela de Banco de Dados não é exatamente a mesma coisa que uma Classe UML? (Resposta: Porque tabelas guardam apenas dados mortos; Classes guardam dados e também Comportamentos/Métodos que rodam na memória). 🧠🛡️