Menu
CoddyTech

Consultar Saldo

Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 26 de 61.

challenge icon

Desafio

Fácil

Sua conta bancária está quase completa! Você criou a capacidade de criar contas, depositar fundos e sacar dinheiro, mas ainda falta uma peça crucial. No momento, o código externo não tem como ver o saldo atual. Vamos resolver isso adicionando uma função getter.

Uma função getter é a maneira adequada de expor dados ocultos em um módulo encapsulado. Em vez de tornar o campo de saldo público (o que quebraria o encapsulamento), você fornece uma função somente de leitura que retorna o valor. Isso mantém os dados protegidos e ainda permite acesso controlado.

Você continuará trabalhando com seus três arquivos:

  • account.h: Adicione um novo protótipo de função: get_balance. Essa função recebe um const Account * (já que apenas lê os dados, nunca os modifica) e retorna um double que representa o saldo atual. Mantenha todas as declarações existentes.
  • account.c: Implemente a função get_balance. Ela simplesmente retorna o campo de saldo oculto da conta. Observe como essa função pode acessar os dados internos porque está definida no mesmo arquivo que a struct: o código externo ainda não pode acessar diretamente os dados internos.
  • main.c: Agora você finalmente pode ver o que está acontecendo dentro das suas contas! Crie uma conta, realize algumas transações e use sua nova função getter para exibir o saldo em cada etapa.

Você receberá quatro entradas: o ID da conta (um inteiro), um valor de depósito, um valor de saque e um segundo valor de depósito.

No seu arquivo principal, crie uma conta e imprima o saldo inicial (deve ser 0.00). Deposite o primeiro valor e imprima o novo saldo. Saque o valor especificado e imprima o saldo novamente. Por fim, faça o segundo depósito e imprima o saldo final. Depois, destrua a conta.

Imprima a saída neste formato:

Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyed

Em que 1001 é o ID da conta, e os saldos correspondem aos valores: inicial (0.00), após depositar 500.00, após sacar 300.00 e após depositar mais 150.00. Formate todos os valores de saldo com duas casas decimais usando %.2f.

Com essa função getter, seu módulo de conta bancária agora oferece acesso completo e controlado aos dados da conta: os usuários podem ver o saldo, mas só podem modificá-lo por meio das suas funções validadas de depósito e saque.

Experimente você mesmo

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double deposit1;
    scanf("%lf", &deposit1);
    
    double withdraw_amount;
    scanf("%lf", &withdraw_amount);
    
    double deposit2;
    scanf("%lf", &deposit2);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    // TODO: Imprima o saldo inicial usando get_balance
    
    deposit(account, deposit1);
    // TODO: Imprima o saldo após o primeiro depósito
    
    withdraw(account, withdraw_amount);
    // TODO: Imprima o saldo após o saque
    
    deposit(account, deposit2);
    // TODO: Imprima o saldo após o segundo depósito
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de C online