Menu
Coddy logo textTech

Obtener saldo

Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 26 de 61.

challenge icon

Desafío

Fácil

¡Tu cuenta bancaria está casi completa! Has desarrollado la capacidad de crear cuentas, depositar fondos y retirar dinero, pero falta una pieza crucial. En este momento, el código externo no tiene forma de ver el saldo actual. Vamos a solucionar esto añadiendo una función getter.

Un getter es la forma adecuada de exponer datos ocultos en un módulo encapsulado. En lugar de hacer que el campo del saldo sea público (lo que rompería la encapsulación), proporcionas una función de solo lectura que devuelve el valor. Esto mantiene los datos protegidos al tiempo que permite un acceso controlado.

Continuarás trabajando con tus tres archivos:

  • account.h: Añade un nuevo prototipo de función: get_balance. Esta función recibe un const Account * (ya que solo lee datos, nunca los modifica) y devuelve un double que representa el saldo actual. Mantén todas tus declaraciones existentes.
  • account.c: Implementa la función get_balance. Simplemente devuelve el campo de saldo oculto de la cuenta. Observa cómo esta función puede acceder a los datos internos porque está definida en el mismo archivo que la estructura; el código externo todavía no puede mirar directamente en su interior.
  • main.c: ¡Ahora finalmente puedes ver lo que sucede dentro de tus cuentas! Crea una cuenta, realiza algunas transacciones y utiliza tu nuevo getter para mostrar el saldo en cada paso.

Recibirás cuatro entradas: el ID de la cuenta (un entero), un monto de depósito, un monto de retiro y un segundo monto de depósito.

En tu archivo principal, crea una cuenta e imprime su saldo inicial (debería ser 0.00). Deposita el primer monto e imprime el nuevo saldo. Retira el monto especificado e imprime el saldo nuevamente. Finalmente, realiza el segundo depósito e imprime el saldo final. Luego, destruye la cuenta.

Imprime la salida en este formato:

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

Donde 1001 es el ID de la cuenta, y los saldos reflejan: inicial (0.00), después de depositar 500.00, después de retirar 300.00 y después de depositar otros 150.00. Formatea todos los valores de saldo con dos decimales usando %.2f.

Con este getter implementado, tu módulo de cuenta bancaria ahora proporciona un acceso completo y controlado a los datos de la cuenta: los usuarios pueden ver el saldo pero solo pueden modificarlo a través de tus funciones validadas de depósito y retiro.

Pruébalo tú mismo

#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 el saldo inicial usando get_balance
    
    deposit(account, deposit1);
    // TODO: Imprimir el saldo después del primer depósito
    
    withdraw(account, withdraw_amount);
    // TODO: Imprimir el saldo después del retiro
    
    deposit(account, deposit2);
    // TODO: Imprimir el saldo después del segundo depósito
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Todas las lecciones de Object Oriented Programming