AULA 13
MÓDULO 4
avaliação
⏱ 90 min
Avaliação 1
Avaliação 1: transcrição de código procedural para POO em Java. Checklist de critérios. Revisão integradora de encapsulamento, herança, polimorfismo e coleções.
AV1transcriçãochecklistencapsulamentoherançapolimorfismocoleções
Avaliação 1 — Transcrição Procedural para OO
Esta semana é dedicada à Avaliação 1. Você receberá um código Java no paradigma procedural e deverá transcrevê-lo para Programação Orientada a Objetos, aplicando todos os conceitos das aulas 1 a 12.
formato
Código procedural fornecido em sala → análise → projeto das classes → implementação OO. Entrega: código impresso em folha A4.CHECKLIST AV1 — O QUE SERÁ AVALIADO
✓
Atributos private com getters/setters e validação de invariantes
✓
Construtores garantindo estado válido no nascimento do objeto
✓
Métodos com responsabilidade única e nomes descritivos
✓
Composição ou agregação para relacionamentos 1:N
✓
Pelo menos uma interface ou classe abstrata justificada
✓
Coleção adequada (justificar escolha — ArrayList, LinkedList, HashMap...)
✓
Tratamento de valores inválidos (exceções ou validação)
✓
Diagrama UML esboçado no verso da folha
Revisão rápida — conceitos-chave
Checklist mental antes de entregar:
1
Encapsulamento — Nenhum atributo público? Setter valida antes de atribuir?
2
Construtores — Parâmetros obrigatórios no construtor? Estado sempre válido?
3
Métodos — Nome é um verbo? Faz uma coisa só? Usa Tell Don't Ask?
4
Relacionamentos — HAS-A ou IS-A? Composição ou agregação? Coleção correta?
5
Polimorfismo — Código usa supertipo onde possível? @Override presente?
java
// Exemplo de código procedural que poderia aparecer na AV1 // (sua versão será diferente — este é apenas um guia) // ANTES — procedural (problema típico) public class SistemaEstoque { static String[] nomes = new String[100]; static double[] precos = new double[100]; static int[] quantidades = new int[100]; static int total = 0; static void cadastrar(String n, double p, int q) { nomes[total] = n; precos[total] = p; quantidades[total++] = q; } } // DEPOIS — OO (o que você deve entregar) public class Produto { private final String nome; private double preco; private int quantidade; public Produto(String nome, double preco, int qtd) { if (nome == null || preco < 0 || qtd < 0) throw new IllegalArgumentException("Dados inválidos"); this.nome = nome; this.preco = preco; this.quantidade = qtd; } public void darEntrada(int qtd) { if (qtd <= 0) throw new IllegalArgumentException("Qtd deve ser positiva"); quantidade += qtd; // Tell, não Ask } public String toString() { return String.format("%s | R$%.2f | %d un.", nome, preco, quantidade); } }
quiz · aula 13
Teste seus conhecimentos em Java
0/3 respondidas
QUESTÃO 01
Para representar uma lista de produtos no sistema OO, qual coleção usar se a operação principal é buscar por código?
QUESTÃO 02
O método cadastrar(String n, double p, int q) do código procedural viola qual princípio OO?
QUESTÃO 03
Ao transcrever para OO, você identifica que Produto e ProdutoImportado têm dados diferentes. O que fazer?
0/3