Obtener saldo
Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 26 de 61.
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 unconst Account *(ya que solo lee datos y nunca los modifica) y devuelve undoubleque representa el saldo actual. Conserva todas tus declaraciones existentes.account.c: Implementa la funciónget_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 destroyedDonde 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
1Fundamentos de programación modular
Archivos de cabeceraGuardas de inclusiónArchivos fuenteFunciones estáticasRepaso: Calculadora modular4Encapsulamiento
Concepto de punteros opacosDefinición de structs opacosGetters y SettersValidación en settersResumen: Caja secreta7Punteros a funciones
Declaración de punteros a funcionesLlamada a punteros a funcionesTypedef para punteros a funcionesPasar funciones como argumentosRepaso: Dispatch de calculadora10Contenedores genéricos
Repaso de punteros voidWrapper genéricoSwap genéricoComparación genéricaRepaso: Array genérico2Objetos y métodos
Structs como objetosEl puntero 'Self'Const CorrectnessPuntero vs. ValorMétodos auxiliaresResumen: Point Manager5Proyecto: Cuenta bancaria simple
Configuración del proyectoImplementación de la cuenta3Ciclo de vida de los objetos
Patrón ConstructorPatrón DestructorInicialización en StackCopia profundaResumen: String Wrapper6Herencia mediante composición
Incrustación de StructsLa regla del primer miembroAcceso a miembros padreUpcastingResumen: Jerarquía de formas9Proyecto: Dibujador de figuras
Descripción general del proyectoImplementación del círculoImplementación del rectánguloUso polimórficoContenedor de figurasPractica por tu cuenta: Compilador de C online