1
resposta

[Projeto] Desafio: hora da prática (Exercício ContaBancária)

Crie uma classe ContaBancaria com métodos para realizar operações bancárias como depositar(), sacar() e consultarSaldo(). Em seguida, crie uma subclasse ContaCorrente que herda da classe ContaBancaria. Adicione um método específico para a subclasse, como cobrarTarifaMensal(), que desconta uma tarifa mensal da conta corrente.

package br.com.exercicio.contabancaria;

import java.util.Scanner;

public class ContaBancaria {
    private String titular;
    protected double saldo;

    // métodos
    public void consultarSaldo() {
        System.out.println("Saldo disponível: R$" + saldo);
    }

    public void depositar(double valorDeposito) {
        saldo += valorDeposito;
        System.out.println("Depósito efetuado; Saldo disponível: R$" + saldo);
    }

    public void sacar(double valorSaque) {
        if (saldo >= valorSaque) {
            saldo -= valorSaque;
            System.out.println("Saque efetuado; Valor Disponível: R$" + saldo);
        } else {
            System.out.println("Saldo insuficiente.");
        }
    }

    // getters e setters
    public String getTitular() {
        return titular;
    }

    public void setTitular(String titular) {
        this.titular = titular;
    }

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
}
package br.com.exercicio.contabancaria;

public class ContaCorrente extends ContaBancaria{
    private double tarifaMensal;


    // métodos

    public void cobrarTarifaMensal() {
        saldo -= tarifaMensal;
        System.out.println("Saldo disponível: R$" + saldo);
    }


    // getters e setters
    public double getTarifaMensal() {
        return tarifaMensal;
    }

    public void setTarifaMensal(double tarifaMensal) {
        this.tarifaMensal = tarifaMensal;
    }
}
import br.com.exercicio.contabancaria.ContaBancaria;
import br.com.exercicio.contabancaria.ContaCorrente;

import java.util.Scanner;

public class Principal {
    public static void main(String[] args) {
        int operacao = 0;
        Scanner leitura = new Scanner(System.in);

        ContaCorrente contaCorrente = new ContaCorrente();
        contaCorrente.depositar(5000);

        contaCorrente.setTarifaMensal(8.50);
        contaCorrente.cobrarTarifaMensal();

        while (operacao != 4) {
            String escolherOperacao = """
                    Escolha a operação desejada:
                    
                    1 - Consultar saldo;
                    2 - Depositar;
                    3 - Sacar;
                    4 - Sair.
                    
                    """;
            System.out.println(escolherOperacao);
            operacao = leitura.nextInt();

            switch (operacao) {
                case 1:
                    contaCorrente.consultarSaldo();
                    break;
                case 2:
                    System.out.println("Insira o valor do depósito:");
                    double deposito = leitura.nextDouble();
                    contaCorrente.depositar(deposito);
                    break;
                case 3:
                    System.out.println("Insira o valor do saque:");
                    double saque = leitura.nextDouble();
                    contaCorrente.sacar(saque);
                    break;
                case 4:
                    System.out.println("Encerrado.");
                    break;
            }

            if (operacao > 4) {
                System.out.println("Operação inválida.");
            }
        }
    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Aline! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu projeto ficou muito bem estruturado. Gostei de como você utilizou a herança para criar a classe ContaCorrente, reaproveitando o comportamento de ContaBancaria. Isso mostra uma boa compreensão dos princípios de orientação a objetos aplicados no desafio.

Uma dica interessante para o futuro é testar a ideia de sobrescrever métodos (override) para personalizar o comportamento de subclasses. Veja este exemplo:


@Override
public void consultarSaldo() {
    System.out.println("Saldo atualizado (com tarifas): R$" + saldo);
}

Esse código substitui o método da classe mãe, adaptando-o à necessidade da conta corrente e mostra como o polimorfismo pode tornar o código mais flexível.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!