🧩 Exercícios: Classes, Construtores, Sobrecarga e Encapsulamento
Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 05.1 — Classe com Encapsulamento e Getters/Setters Defensivos
Contexto: Classe com Encapsulamento e Getters/Setters Defensivos no contexto de Classes, Construtores, Sobrecarga e Encapsulamento.
Requisitos de Execução:
- Criar classe
Funcionariocom atributos privados e validação no setter de salário.
Resultado Esperado
Regra de negócio validada no encapsulamento da classe.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_1_SeuNome - Envie na tarefa:
Atividade Cap 05 - Classes, Construtores, Sobrecarga e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class Funcionario {
private String nome;
private double salario;
public Funcionario(String nome, double salario) {
this.nome = nome;
setSalario(salario);
}
public void setSalario(double salario) {
if (salario < 1412.0) throw new IllegalArgumentException("Salario abaixo do minimo");
this.salario = salario;
}
public double getSalario() { return salario; }
}
🔍 Nível 2: Prática
Problema 05.2 — Sobrecarga de Construtores com this() Chaining
Contexto: Sobrecarga de Construtores com this() Chaining no contexto de Classes, Construtores, Sobrecarga e Encapsulamento.
Requisitos de Execução:
- Criar múltiplos construtores encadeando a inicialização no construtor completo com
this(...).
Resultado Esperado
Sobrecarga de construtores encadeada com segurança.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_2_SeuNome - Envie na tarefa:
Atividade Cap 05 - Classes, Construtores, Sobrecarga e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class Produto {
private String nome;
private double preco;
public Produto(String nome) { this(nome, 0.0); }
public Produto(String nome, double preco) {
this.nome = nome;
this.preco = preco;
}
}
⚡ Nível 3: Integração
Problema 05.3 — Membros Estáticos (static) e Padrão Singleton Thread-Safe
Contexto: Membros Estáticos (static) e Padrão Singleton Thread-Safe no contexto de Classes, Construtores, Sobrecarga e Encapsulamento.
Requisitos de Execução:
- Implementar Singleton com Bill Pugh (Holder estático interno) para inicialização lazy e thread-safe.
Resultado Esperado
Padrão Singleton instanciado com segurança absoluta de concorrência.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_3_SeuNome - Envie na tarefa:
Atividade Cap 05 - Classes, Construtores, Sobrecarga e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class ConfiguradorApp {
private ConfiguradorApp() {}
private static class Holder {
private static final ConfiguradorApp INSTANCIA = new ConfiguradorApp();
}
public static ConfiguradorApp getInstancia() {
return Holder.INSTANCIA;
}
}
🏆 Nível 4: Desafio Corporativo
Problema 05.4 — Construtores Privados e Métodos Fábrica Estáticos (Static Factory Methods)
Contexto: Construtores Privados e Métodos Fábrica Estáticos (Static Factory Methods) no contexto de Classes, Construtores, Sobrecarga e Encapsulamento.
Requisitos de Execução:
- Substituir construtores públicos por métodos semânticos como
Conta.abrirCorrente()eConta.abrirPoupanca().
Resultado Esperado
Criação de instâncias expressiva via Static Factory Methods.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_4_SeuNome - Envie na tarefa:
Atividade Cap 05 - Classes, Construtores, Sobrecarga e Encapsulamento
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class ContaBancaria {
private String tipo;
private ContaBancaria(String tipo) { this.tipo = tipo; }
public static ContaBancaria criarCorrente() { return new ContaBancaria("CORRENTE"); }
public static ContaBancaria criarPoupanca() { return new ContaBancaria("POUPANCA"); }
}