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