🛠️ Atividades

🏛️ Atividade 07: Diagrama de Classes (UML)

Bem-vindo a mais uma etapa da sua jornada no curso de Gestão de TI / Desenvolvimento de Sistemas. Hoje vamos mergulhar em conceitos que conectam a teoria técnica diretamente com o padrão de excelência da arquitetura de software, criando o guia mestre para a implementação do código. 🛡️🧩

🎯 Objetivo da Aula

Ao final desta atividade, você será capaz de:

  • Definir Atributos (o que o objeto guarda) e Métodos (o que o objeto faz).
  • Aplicar modificadores de Visibilidade (Público +, Privado -, Protegido #) baseados no princípio do Encapsulamento.
  • Modelar Associações e multiplicidade (1:1, 1:N, N:N).
  • Identificar oportunidades de Herança para otimização de código.

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

Na TecProExpress, os protótipos (Atividade 06) foram aprovados! Agora, o time de desenvolvimento backend (Java/C#/Python) precisa saber: "Como os dados serão organizados no código? Quais são as classes e como elas se conectam?".

Se você apenas disser "Cria uma tabela de motorista", o programador pode esquecer de validar se o motorista tem uma CNH válida ou se ele pode ter vários veículos associados a ele.

"Seu desafio é atuar como Arquiteto de Software. Você deve desenhar o Diagrama de Classes, que é o mapa estrutural que diz ao programador exatamente quais variáveis e funções ele deve criar para que o sistema suporte toda a lógica de logística da TecProExpress."


🧠 Fundamentos: A Teoria Traduzida

O Diagrama de Classes mostra a "foto" parada do sistema. Se o software fosse um prédio, o Diagrama de Classes seria a planta estrutural das paredes e colunas.

Anatomia da Classe

  1. Nome: Sempre substantivo e no singular (Ex: Motorista).
  2. Atributos (Dados): O que ele sabe? (Ex: - cnh: String).
  3. Métodos (Ações): O que ele faz? (Ex: + validarDocumento()).

📊 Visualizando a Lógica

Dica:Visibilidade: Por padrão, atributos são sempre Privados (-). Isso protege os dados contra alterações acidentais externas. Somente métodos de acesso (Getters/Setters) ou ações explícitas devem ser Públicos (+).

📖 Exemplo Guiado

Abaixo, veja como mapear as entidades da TecProExpress para classes UML.

PassoPergunta do ArquitetoTradução UML
01O que um 'Pacote' tem?Atributos: -id, -peso, -status.
02O que o 'Pacote' faz?Métodos: +calcularFrete(), +atualizarStatus().
03Como ele se conecta?Um Motorista leva Muitos Pacotes (1:N).

📊 Graus de Acoplamento e Relacionamentos entre Classes

🛠️ Estrutura de Atributo e Método

  • Atributo: - salario: Double = 1412.00
    • -: Privado.
    • salario: Nome.
    • Double: Tipo do dado.
    • = 1412.00: Valor padrão.
  • Método: + calcularIdade(dataNasc: Date): Int
    • +: Público.
    • dataNasc: Date: Parâmetro de entrada.
    • : Int: O que o método devolve (Tipo de retorno).

🔍 Detalhamento do Processo:

  • Note que no Diagrama de Classes não colocamos "clicar no botão". Colocamos a lógica do objeto. Se o botão na tela chama uma função de salvar, o método salvar() deve estar na Classe.

🛠️ Prática Obrigatória 1: O Diagrama de Classes

Cenário: O projeto semestral da sua equipe.

  1. Identifique as 5 principais entidades do seu sistema (ex: Usuário, Produto, Pedido, Categoria, Endereço).
  2. Utilizando uma ferramenta UML (Astah, Lucidchart ou Draw.io), desenhe o diagrama.
  3. Cada classe deve conter pelo menos 3 atributos e 2 métodos.
  4. Defina as multiplicidades corretamente (ex: Um cliente tem 0 ou N pedidos).

🏁 Resultado Esperado (Para sua Referência)

Uma imagem (PNG/JPG) do diagrama contendo as 5 classes conectadas, com tipos de dados e visibilidade (+ e -) aplicados.


🛠️ Prática Obrigatória 2: Justificativa de Visibilidade

Cenário: Proteção de dados (Encapsulamento).

  1. Escolha uma classe do seu diagrama.
  2. Explique por que você definiu um determinado atributo como Privado (-) e como o sistema fará para ler ou alterar esse dado com segurança.

🏁 Resultado Esperado (Para sua Referência)

Um pequeno texto em Markdown justificando a escolha técnica do encapsulamento na sua modelagem.


📤 Instruções de Entrega (Microsoft Teams)

Após validar suas documentações técnicas:

  1. Salve o arquivo de documentação com o nome Atividade_07.md e a imagem do seu diagrama de classes com o nome Atividade_07.png na pasta es-atv-07-classes/ do seu repositório GitHub.
  2. Certifique-se de fazer o commit e push para o repositório público.
  3. Submeta o link do seu repositório no Microsoft Teams para avaliação do professor.

💡 Checkpoint de Lógica

Importante:Reflexão Profissional: Se você tem uma classe Funcionario e uma classe Gerente, e percebe que ambas têm os atributos nome, cpf e telefone, qual conceito de Orientação a Objetos você aplicaria para não precisar repetir esse código duas vezes? (Resposta: Herança. Você criaria uma classe pai 'Pessoa' e as outras herdariam dela). 🧠🛡️

📊 Rubrica Formativa de Avaliação

Critério de Avaliação Insuficiente (0% - 40%) Regular (41% - 70%) Excelente (71% - 100%)
Diagrama de Classes (UML) Menos de 5 classes ou sem tipos de dados nos atributos. Mapeia 5 classes mas sem multiplicidades ou sem visibilidade. Diagrama de classes impecável com 5 entidades, atributos com visibilidade (+/-), métodos e multiplicidades corretas.
Justificativa de Encapsulamento Deixa todos os atributos como públicos sem justificativa. Justifica superficialmente sem explicar o papel dos getters/setters. Justificativa técnica sólida de encapsulamento protegendo a integridade dos dados da classe.
Entrega no GitHub Entrega fora da pasta `es-atv-07-classes/`. Entrega apenas o texto sem o arquivo `.png` da modelagem. Submete `Atividade_07.md` e `Atividade_07.png` no repositório com formatação validada.
Copyright © 2026