Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, Pedro. Como vai?
Sensacional! Você fez uma entrega massiva e de altíssima qualidade para os desafios do capítulo. É nítido que você compreendeu perfeitamente os pilares de Encapsulamento e Controle de Acesso em Java utilizando os métodos modificadores getters e setters.
Dividir o código mantendo as classes de modelo separadas das classes de execução (Principal) é a estrutura padrão utilizada no mercado de desenvolvimento Java. O design das suas classes ficou excelente e muito limpo.
Para enriquecer a sua postagem e valorizar o seu código, trago uma análise técnica detalhada dos seus acertos e um pequeno ponto de atenção na estrutura da classe bancária:
Produto.java): A sua implementação do método aplicarDesconto ficou fantástica. Você utilizou o operador de atribuição composto (-=) de forma muito elegante:preco -= desconto;
Isso demonstra maturidade na escrita do código. Além disso, o cálculo percentual preco * (percentual/100) roda sem problemas porque a variável recebe um tipo double.
Livro.java e IdadePessoa.java): Criar métodos como exibirDetalhes() e verificarIdade() diretamente dentro da classe de modelo é uma excelente prática de Orientação a Objetos. Isso respeita o princípio de que a classe deve ser dona dos seus próprios comportamentos e dados, deixando a classe Principal responsável apenas por coordenar o fluxo.ContaBancaria.java)Se olharmos com atenção para a quarta imagem (ContaBancaria.java e BancoPrincipal.java), há uma pequena quebra no padrão de encapsulamento que você aplicou perfeitamente nos outros arquivos.
Na definição dos atributos da classe ContaBancaria, você configurou numeroConta e saldo como private. Porém, o atributo titular foi declarado com o modificador de acesso public:
public String titular;
Por causa disso, na classe BancoPrincipal.java (linha 8 e 13), você acessou e modificou o nome diretamente sem usar métodos intermediários: conta1.titular = "Pedro";.
Por que corrigir isso?
O objetivo do encapsulamento é proteger os dados da classe contra acessos externos diretos. Mesmo que o nome do titular pareça uma informação simples que não cause problemas ao ser alterada, a boa prática estrita do Java determina que todos os atributos de uma classe de modelo devem ser privados, permitindo o acesso apenas via Getters e Setters.
Veja como a sua estrutura de conta bancária fica 100% protegida e padronizada com o restante do seu projeto:
No arquivo ContaBancaria.java:
package br.com.alura.meuprojeto;
public class ContaBancaria {
private int numeroConta;
private double saldo;
private String titular; // <--- Modificado para private
public int getNumeroConta() {
return numeroConta;
}
public void setNumeroConta(int numeroConta) {
this.numeroConta = numeroConta;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
// Novos métodos modificadores para o Titular
public String getTitular() {
return titular;
}
public void setTitular(String titular) {
this.titular = titular;
}
}
No arquivo BancoPrincipal.java:
package br.com.alura.meuprojeto;
public class BancoPrincipal {
public static void main(String[] args) {
ContaBancaria conta1 = new ContaBancaria();
conta1.setNumeroConta(123);
conta1.setSaldo(1000);
conta1.setTitular("Pedro"); // <--- Uso correto do Setter
System.out.println("Número da Conta: " + conta1.getNumeroConta());
System.out.println("Saldo Bancário: " + conta1.getSaldo());
System.out.println("Titular: " + conta1.getTitular()); // <--- Uso correto do Getter
conta1.setSaldo(1500);
System.out.println("O saldo bancário agora é: " + conta1.getSaldo());
}
}
Com esse pequeno ajuste, todo o seu ecossistema de classes fica blindado e seguindo as regras da comunidade Java. Um erro de digitação super comum na declaração do método getNome em Produto.java (onde ficou getNomenome) também vale a pena ser renomeado para manter a camelCase perfeita!
Parabéns pelo excelente empenho e pela quantidade de exercícios resolvidos com sucesso. Você está evoluindo muito rápido na linguagem!
Espero que possa ter lhe ajudado!