Uma ótima noite a todos vocês meus amigos. Sou novo tanto aqui no GUJ como no mundo da programação. Iniciei já um curso online de Java e tenho estudado por alguns livros.
Entretanto quando eu começo a programar algo, me perco por não saber se estou seguindo pelo caminho ‘do bem’, se estou fazendo algo deplorável. Por este motivo gostaria que vocês que possuem muito mais experiência que eu, me ajudassem com a análise do meu código e me dessem sugestões do que estudar e aonde melhorar.
O código é realmente SIMPLES. Eu tentei utilizar todo o meu conhecimento. Atualmente estou focado em aprender o puro Java, buscando entender bem todos os tópicos como polimorfismo, herança, composição, para então partir para outra. Gostaria de saber se tem algum problema eu postar códigos aqui neste fórum para ser analisado. Desde já agradeço a atenção de todos.
O código está separado em três classes, sendo uma delas a classe principal que utilizei somente para o teste, mas vou colar aqui também pois como utilizei o Scanner, gostaria de saber se fiz alguma burrada. E basicamente eu tentei criar um sistema bancário, aonde você conta com saque e depósito.
Classe Conta
package sistemabancosimples;
public class Conta {
private int numeroConta;
private Cliente cliente;
private double saldo;
//Tentando trabalhar o encapsulamento
//Saldo iniciará zerado.
//O número da conta será gerado randomicamente.
public Conta(Cliente cliente) {
this.numeroConta = 123;
this.cliente = cliente;
this.saldo = 0;
}
//Método que realiza depósito na conta e imprime resultado.
public void deposito(double valorDeposito) {
this.saldo += valorDeposito;
System.out.println("Deposito realizado com sucesso." + "\n"
+ "Saldo atual R$ " + this.saldo + "\n");
}
//Método que realiza saque na conta e imprime resultado.
//Também verifica se há saldo suficiente para tal transação.
public void saque(double valorSaque) {
if(this.saldo >= valorSaque){
this.saldo -= valorSaque;
System.out.println("Saque realizado com sucesso!" + "\n"
+ "Saldo atual R$ " + this.saldo + "\n");
} else {
System.out.println("Saldo insuficiente!" + "\n"
+ "Saldo disponível R$ " + this.saldo + "\n");
}
}
//Getters utilizados na impressão de infos ao usuário.
public int getNumeroConta() {
return numeroConta;
}
public Cliente getCliente() {
return cliente;
}
public double getSaldo() {
return saldo;
}
}
Classe Cliente
package sistemabancosimples;
public class Cliente {
private String nome;
private String cpf;
public Cliente() {
}
//Mantive Getters e Setters pois o usuário irá informar tais infos.
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
}
Classe Main
package sistemabancosimples;
import java.util.Scanner;
public class CaixaEletronico {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Cliente cliente = new Cliente();
Conta conta = new Conta(cliente);
System.out.println("Informe seu nome: ");
String nome = scanner.nextLine();
System.out.println("Informe seu CPF: ");
String cpf = scanner.nextLine();
conta.getCliente().setNome(nome);
conta.getCliente().setCpf(cpf);
//Imprimir as infos da conta para o Usuário
System.out.println("Cliente: " + conta.getCliente().getNome() + "\n"
+ "CPF: " + conta.getCliente().getCpf() + "\n"
+ "Numero Conta: " + conta.getNumeroConta() + "\n"
+ "Saldo: " + conta.getSaldo() + "\n");
conta.deposito(150);
conta.saque(100);
}
}