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