Menu
Coddy logo textTech

Obtener saldo

Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 26 de 61.

challenge icon

Desafío

Fácil

¡Tu cuenta bancaria está casi completa! Has creado 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 solucionarlo 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 público el campo de saldo (lo que rompería la encapsulación), proporcionas una función de solo lectura que devuelve el valor. Esto mantiene los datos protegidos y, al mismo tiempo, permite un acceso controlado.

Seguirá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 y nunca los modifica) y devuelve un double que representa el saldo actual. Conserva 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 aún no puede consultar su contenido directamente.
  • main.c: ¡Ahora por fin puedes ver qué ocurre 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 identificador de la cuenta (un entero), un importe de depósito, un importe de retiro y un segundo importe de depósito.

En tu archivo principal, crea una cuenta e imprime su saldo inicial (debe ser 0.00). Deposita el primer importe e imprime el nuevo saldo. Retira el importe especificado e imprime el saldo nuevamente. Por último, realiza el segundo depósito e imprime el saldo final. Después, destruye la cuenta.

Imprime la salida con este formato:

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

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

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

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C online