Capítulo 05: Programação Orientada a Objetos: Classes, Construtores, Sobrecarga e Encapsulamento
Especialização em Sistemas com Java 21 LTS • Capítulo 05
🗺️ Mapa Conceitual do Tópico
classDiagram
class ContaBancaria {
-String numeroConta
-String titular
-double saldo
+ContaBancaria(numeroConta, titular)
+ContaBancaria(numeroConta, titular, saldoInicial)
+getNumeroConta() String
+getTitular() String
+getSaldo() double
+depositar(valor) void
+sacar(valor) boolean
}
note for ContaBancaria "Atributos privados, construtores sobrecarregados
e métodos de acesso (Getters/Setters)"
🏛️ 1. Princípios de POO e Modelagem de Classes em Java
Uma classe define a estrutura de um tipo de dado personalizado.
- Atributos de Instância: Variáveis que compõem o estado do objeto no Heap.
- Membros Estáticos (
static): Pertencem à classe como um todo, compartilhados por todas as instâncias. - Construtores e Sobrecarga: Métodos especiais com o mesmo nome da classe para inicialização controlada de atributos.
- Encapsulamento: Modificadores de visibilidade (
private,package-private,protected,public) protegendo o estado interno.
💻 Exemplo Prático e Compilável em Java 21
// ContaBancaria.java - Classe com Encapsulamento Estrito
package com.empresa.dominio;
public class ContaBancaria {
private final String numeroConta;
private String titular;
private double saldo;
public ContaBancaria(String numeroConta, String titular) {
this(numeroConta, titular, 0.0);
}
public ContaBancaria(String numeroConta, String titular, double saldoInicial) {
if (numeroConta == null || !numeroConta.matches("\\d{4}-\\d")) {
throw new IllegalArgumentException("Formato de conta inválido (Esperado XXXX-X).");
}
this.numeroConta = numeroConta;
this.titular = titular.trim();
if (saldoInicial > 0.0) {
this.saldo = saldoInicial;
}
}
public String getNumeroConta() { return numeroConta; }
public String getTitular() { return titular; }
public double getSaldo() { return saldo; }
public void depositar(double valor) {
if (valor <= 0.0) throw new IllegalArgumentException("Valor de depósito deve ser positivo.");
this.saldo += valor;
}
public boolean sacar(double valor) {
if (valor <= 0.0 || valor > this.saldo) return false;
this.saldo -= valor;
return true;
}
}
🔗 Recursos Pedagógicos do Capítulo 05
| Recurso Didático | Finalidade | Link de Acesso |
|---|---|---|
| 📊 Slides de Aula | Apresentação visual interativa com Dark Mode e suporte a teclado | Ver Slides |
| 🧠 Quiz Formativo | Teste interativo de fixação com feedback imediato por alternativa | Fazer Quiz |
| 💻 Exemplos de Código | Demonstrações funcionais compiláveis com saída no console | Ver Exemplos |
| 🧩 Exercícios em 4 Níveis | Lista progressiva de fixação com gabarito em bloco colapsável | Resolver Exercícios |
| 🔢 Capítulo Anterior | 📚 Sumário de Tópicos | 📊 Próximo Capítulo |