J

Java

Programação Orientada à Objetos

Progresso:
1 / 6
Aula 02 - Construtores e Encapsulamento

Programação Orientada a Objetos

Aprenda os conceitos fundamentais de forma interativa e prática

🎯

Objetivos

  • Compreender construtores e sua importância
  • Implementar sobrecarga de construtores
  • Aplicar princípios de encapsulamento
📚

Metodologia

1
Conceitos teóricos
2
Exemplos práticos
3
Exercícios interativos

Construtores

Métodos especiais para inicializar objetos

💡 O que são?

Construtores são métodos especiais chamados automaticamente quando um objeto é criado. Eles inicializam os atributos do objeto com valores apropriados.

Características:

  • Mesmo nome da classe
  • Não possuem tipo de retorno
  • Chamados com new

🎮 Demonstração Interativa

Clique nos botões para ver os construtores em ação! 🚀
Exemplo Prático
public class Pessoa {
    private String nome;
    private int idade;
    
    // Construtor padrão
    public Pessoa() {
        nome = "Não informado";
        idade = 0;
    }
    
    // Construtor parametrizado
    public Pessoa(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
    }
    
    // Construtor com validação
    public Pessoa(String nome) {
        this(nome, 18); // Chama outro construtor
    }
}
💡

Dica Importante

Use this() para chamar outros construtores da mesma classe, evitando duplicação de código!

Encapsulamento

Protegendo e controlando o acesso aos dados

🔒

Proteção

Impede acesso direto aos dados internos

Validação

Controla como os dados são modificados

🔧

Manutenção

Facilita mudanças internas sem afetar o código externo

Modificadores de Acesso

private Apenas na própria classe
public Acesso de qualquer lugar
protected Pacote + herança

🧪 Teste de Validação

Teste a validação de dados! 🧪
Getters e Setters
public class ContaBancaria {
    private double saldo;
    private String titular;
    
    // Getter - acesso controlado
    public double getSaldo() {
        return saldo;
    }
    
    // Setter com validação
    public void setSaldo(double saldo) {
        if (saldo >= 0) {
            this.saldo = saldo;
        } else {
            throw new IllegalArgumentException(
                "Saldo não pode ser negativo"
            );
        }
    }
    
    public void setTitular(String titular) {
        if (titular != null && 
            !titular.trim().isEmpty()) {
            this.titular = titular.trim();
        } else {
            throw new IllegalArgumentException(
                "Titular não pode ser vazio"
            );
        }
    }
}

Atividade Prática

Implemente a classe Produto com construtores e encapsulamento

📋 Especificações

Atributos (private):

  • String nome
  • double preco
  • int quantidade
  • String categoria

Construtores:

  • • Padrão (valores iniciais)
  • • Básico (nome e preço)
  • • Completo (todos os atributos)

🎮 Demonstração

Teste os construtores da classe Produto! 🛍️
Classe Produto
public class Produto {
    private String nome;
    private double preco;
    private int quantidade;
    private String categoria;
    private String codigo;
    
    // Construtor padrão
    public Produto() {
        this.nome = "Sem nome";
        this.preco = 0.0;
        this.quantidade = 0;
        this.categoria = "Geral";
        this.codigo = gerarCodigo();
    }
    
    // Construtor básico
    public Produto(String nome, double preco) {
        setNome(nome);
        setPreco(preco);
        this.quantidade = 0;
        this.categoria = "Geral";
        this.codigo = gerarCodigo();
    }
    
    // Métodos com validação
    public void setPreco(double preco) {
        if (preco >= 0) {
            this.preco = preco;
        } else {
            throw new IllegalArgumentException(
                "Preço não pode ser negativo"
            );
        }
    }
}
🎯

Atividade 2: Classe ContaBancaria Completa

Agora vamos implementar uma classe mais complexa com múltiplos construtores e métodos de negócio!

📚

Atividade 3: Exercícios Práticos

Pratique com exercícios mais avançados para consolidar o aprendizado!

📖

Material de Apoio

Conceitos importantes e boas práticas para consulta!

📊

Avaliação da Semana

Critérios de Participação (1 ponto):
  • • Implementação correta dos construtores
  • • Aplicação adequada de validações
  • • Tratamento de exceções
  • • Qualidade do código produzido
Preparação para Próxima Semana:
  • • Métodos
  • • Métodos estáticos
  • • Uso da palavra-chave this
  • Revisar conceitos para avaliação parcial - dia 25/08

3º Bimestre - Trabalhos

Atividades avaliativas para consolidar o aprendizado

📝 TRABALHO 1: Lista de Exercícios Fundamentais

2,0 pontos 📅 Prazo: 30/08/2024 📄 Código Java + Relatório

👨‍💼 Exercício 1: Sistema de Funcionários (0,5 pts)

Especificações:
  • • Classe Funcionario: nome, cpf, salario, cargo, dataAdmissao
  • • Validações: CPF válido, salário positivo, nome não vazio
  • • Métodos: calcularTempoEmpresa(), aplicarAumento(), calcularSalarioAnual()
  • • Classe Empresa que gerencia lista de funcionários
  • • Operações: contratar, demitir, listar por cargo, calcular folha salarial

🏦 Exercício 2: Sistema Bancário Básico (0,5 pts)

Especificações:
  • • Classe ContaBancaria: numero, titular, saldo, tipo
  • • Operações: depositar, sacar, transferir, consultarSaldo
  • • Validações: saldo não negativo, valores positivos
  • • Classe Banco: gerenciar múltiplas contas
  • • Relatórios: contas por tipo, saldo total do banco

🛒 Exercício 3: Loja Virtual (0,5 pts)

Especificações:
  • • Classe Produto: codigo, nome, preco, categoria, estoque
  • • Classe Cliente: nome, cpf, email, endereco
  • • Classe Pedido: cliente, lista de produtos, data, total
  • • Operações: cadastrar produtos, realizar pedidos, controlar estoque
  • • Relatórios: produtos mais vendidos, vendas por categoria

🎓 Exercício 4: Sistema Escolar (0,5 pts)

Especificações:
  • • Classe Aluno: nome, matricula, curso, semestre
  • • Classe Disciplina: codigo, nome, cargaHoraria, professor
  • • Classe Nota: aluno, disciplina, valor, bimestre
  • • Operações: matricular alunos, lançar notas, calcular médias
  • • Relatórios: boletim do aluno, estatísticas da turma

📊 Critérios de Avaliação

40%
Funcionalidade
Código funcionando corretamente
30%
POO
Aplicação adequada de conceitos
20%
Validações
Tratamento de entradas inválidas
10%
Documentação
Comentários e clareza do código

🚀 TRABALHO 2: Projeto Integrador - Fase 1

2,0 pontos 📅 Prazo: 20/09/2024 📄 Código + Documentação + Apresentação

📚 Sistema de Biblioteca

Funcionalidades Mínimas:
  • • Cadastro de livros com validações completas
  • • Cadastro de usuários (diferentes tipos)
  • • Sistema de empréstimos e devoluções
  • • Consultas por diferentes critérios
  • • Relatórios básicos

⚙️ Requisitos Técnicos

  • Aplicação de todos os conceitos do 3º bimestre
  • Interface de console bem estruturada
  • Validações robustas
  • Código bem documentado
  • Casos de teste

📋 Critérios de Avaliação

Funcionalidade
Sistema funcionando completamente
0,7
Aplicação de POO
Conceitos bem aplicados
0,5
Qualidade do Código
Organização e documentação
0,4
Apresentação
Demonstração e defesa
0,4

⚠️ Dicas Importantes

  • Comece cedo! Projetos complexos precisam de tempo
  • Teste cada funcionalidade antes de avançar
  • Documente o código conforme desenvolve
  • Prepare-se bem para a apresentação

Quiz Interativo

Teste seus conhecimentos sobre construtores e encapsulamento

Questão 1 de 5

Qual é a principal função de um construtor?