Consultar Saldo
Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 26 de 61.
Desafio
FácilSua Conta Bancária está quase completa! Você construiu a capacidade de criar contas, depositar fundos e sacar dinheiro — mas falta uma peça crucial. No momento, o código externo não tem como ver o saldo atual. Vamos corrigir isso adicionando uma função getter.
Um 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 de apenas leitura que retorna o valor. Isso mantém os dados protegidos, permitindo o acesso controlado.
Você continuará trabalhando com seus três arquivos:
account.h: Adicione um novo protótipo de função:get_balance. Esta função recebe umconst Account *(já que ela apenas lê os dados, nunca os modifica) e retorna umdoublerepresentando o saldo atual. Mantenha todas as suas declarações existentes.account.c: Implemente a funçãoget_balance. Ela simplesmente retorna o campo de saldo oculto da conta. Observe como esta função pode acessar os dados internos porque está definida no mesmo arquivo que a struct — o código externo ainda não pode espiar o interior diretamente.main.c: Agora você finalmente pode ver o que está acontecendo dentro de suas contas! Crie uma conta, realize algumas transações e use seu novo getter para exibir o saldo em cada etapa.
Você receberá quatro entradas: o ID da conta (um número 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 seu 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. Em seguida, 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 destroyedOnde 1001 é o ID da conta, e os saldos refletem: inicial (0.00), após depositar 500.00, após sacar 300.00 e após depositar outros 150.00. Formate todos os valores de saldo com duas casas decimais usando %.2f.
Com este getter implementado, seu módulo de Conta Bancária agora fornece acesso completo e controlado aos dados da conta — os usuários podem ver o saldo, mas só podem modificá-lo através de 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: Imprimir o saldo inicial usando get_balance
deposit(account, deposit1);
// TODO: Imprimir o saldo após o primeiro depósito
withdraw(account, withdraw_amount);
// TODO: Imprimir o saldo após o saque
deposit(account, deposit2);
// TODO: Imprimir o saldo após o segundo depósito
destroy_account(account);
printf("Account destroyed\n");
return 0;
}Todas as lições de Object Oriented Programming
1Fundamentos da Programação Modular
Arquivos de CabeçalhoInclude GuardsArquivos-FonteFunções EstáticasRecapitulação: Calculadora Modular4Encapsulamento
Conceito de Ponteiros OpacosDefinindo Structs OpacasGetters e SettersValidação em SettersRecapitulação: Caixa Secreta2Objetos e Métodos
Structs como ObjetosO Ponteiro 'Self'Const CorrectnessPonteiro vs ValorMétodos AuxiliaresRecapitulação: Point Manager5Projeto: Conta Bancária Simples
Configuração do ProjetoImplementação da Conta3Ciclo de Vida de Objetos
Padrão de ConstrutorPadrão de DestrutorInicialização na StackCópia ProfundaRecapitulação: String Wrapper6Herança via Composição
Incorporação de StructsA Regra do Primeiro MembroAcessando Membros PaiUpcastingRecapitulação: Hierarquia de Formas9Projeto: Desenhador de Formas
Visão Geral do ProjetoImplementação do Círculo