1
resposta

[Projeto] Desafio Conta Bancária

import java.util.Scanner;

public class ContaBancaria {
    //conta do cliente.
    static String nomeUsuario = "Leonardo Santos";
    static String tipoConta = "Corrente";
    static double saldo = 1000;
    static Scanner input = new Scanner(System.in);

    //informações básicas da conta.
    public static void dadosCliente() {
        System.out.println("\n**************************");
        System.out.println("Dados do Cliente: ");
        System.out.printf("Nome: %s\n", nomeUsuario);
        System.out.printf("Tipo de conta: %s\n", tipoConta);
        System.out.printf("Saldo inicial: R$ %.2f\n", saldo);
        System.out.print("**************************");

    }
    //Opções que vão ser mostradas na tela.
    public static void console() {
        System.out.println("\n\nOperações");
        System.out.println("\n1- Consultar saldo");
        System.out.println("2- Depositar valor");
        System.out.println("3- Sacar valor");
        System.out.println("4- Sair");

        System.out.print("\nDigite a opção desejada: ");
    }
    
    //mostra o saldo atual na tela.
    public static void consultaSaldo(double saldo) {
        System.out.printf("\nSaldo atual: %.2f", saldo);
    }

    //adiciona um valor na conta.
    public static void deposita() {
        System.out.print("Digite o valor que deseja depositar: ");
        double valor = input.nextDouble();
        saldo += valor;
        System.out.printf("\nSaldo atualizado: R$ %.2f", saldo);
    }

    //subtrai um valor da conta. Se o valor for maior do que o saldo, imprime um erro.
    public static void saca() {
        System.out.print("Informe o valor que deseja sacar: ");
        double valor = input.nextDouble();
        if (valor > saldo) {
            System.out.print("\nSaldo insuficiente.");
        } else {
            saldo -= valor;
            System.out.printf("\nSaldo atualizado: R$ %.2f", saldo);
        }
    }

    public static void main(String[] args) {
        dadosCliente();

        while(true) {
            console();
            int opcao = input.nextInt();
            if (opcao == 1) {
                consultaSaldo(saldo);
            } else if (opcao == 2) {
                deposita();
            } else if (opcao == 3) {
                saca();
            } else if (opcao == 4) {
                break;
            } else {
                System.out.print("\nOpção inválida.");
            }
        }
    }
}

Minha resolução do desafio. Coloquei quase tudo em métodos separados, deixando o Main mais enxuto. Acho que assim ficou mais bonitinho de ler rsrs. Passei os dados do cliente por meio de variáveis globais, mas entendo que não é a melhor maneira de implementação de uma conta bancária por questões de segurança.

1 resposta

Oi Leonardo, tudo bem?

Parabéns pela sua iniciativa de criar métodos separados para cada funcionalidade do seu código, isso realmente deixa o código mais organizado e mais fácil de ler e entender.

Em relação à sua observação sobre as variáveis globais, você está correto. Em uma aplicação real, seria mais seguro encapsular essas informações em uma classe e usar métodos para acessá-las e modificá-las, ao invés de deixá-las como variáveis globais. Isso é uma prática de programação chamada de encapsulamento, que é um dos quatro pilares da Programação Orientada a Objetos (POO).

Aqui está um exemplo de como você poderia fazer isso:

public class ContaBancaria {
    private String nomeUsuario;
    private String tipoConta;
    private double saldo;
    
    // construtor
    public ContaBancaria(String nomeUsuario, String tipoConta, double saldo) {
        this.nomeUsuario = nomeUsuario;
        this.tipoConta = tipoConta;
        this.saldo = saldo;
    }
    
    // métodos getters e setters
    public String getNomeUsuario() {
        return this.nomeUsuario;
    }
    
    public String getTipoConta() {
        return this.tipoConta;
    }
    
    public double getSaldo() {
        return this.saldo;
    }
    
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
    
    // outros métodos...
}

Dessa forma, você está protegendo suas variáveis de serem acessadas diretamente de fora da classe, e qualquer modificação no saldo, por exemplo, deve passar pelo método setSaldo(). Isso permite que você controle melhor como essas variáveis são modificadas e evite erros.

Espero ter ajudado.

Um abraço e bons estudos.