Final del proyecto: Bucle principal
Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 27 de 61.
Desafío
Fácil¡Felicidades! Has construido una biblioteca completa de Cuenta Bancaria. Ahora es el momento de cambiar de rol. En lugar de ser el creador de la biblioteca, te convertirás en el usuario de la biblioteca. Tu tarea es escribir un programa principal que ponga a prueba tu módulo Account.
Piensa en esto como un cliente que entra en un banco y realiza una serie de transacciones. Crearás una cuenta, realizarás depósitos y retiros, verificarás el saldo a lo largo del camino y, finalmente, cerrarás la cuenta cuando hayas terminado.
Trabajarás con tres archivos:
account.h: Tu archivo de cabecera completo con el tipo opacoAccounty todos los prototipos de funciones:create_account,destroy_account,deposit,withdraw, yget_balance.account.c: Tu implementación completa con la estructura oculta que contieneidybalance, además de todas las implementaciones de funciones que has construido a lo largo de este proyecto.main.c: ¡Aquí es donde brillas! Escribe un programa que demuestre el ciclo de vida completo de una cuenta bancaria a través de una secuencia realista de transacciones.
Recibirás cinco entradas: el ID de la cuenta (un entero), un primer depósito, un retiro, un segundo depósito y un intento de sobregiro (un retiro que debería fallar debido a fondos insuficientes).
Tu programa principal debe contar la historia de la vida de esta cuenta:
- Crear la cuenta y anunciarlo
- Mostrar el saldo inicial
- Realizar el primer depósito y mostrar el nuevo saldo
- Retirar algunos fondos y mostrar el saldo actualizado
- Realizar otro depósito y mostrar el saldo
- Intentar un retiro que exceda el saldo; esto debería fallar
- Mostrar el saldo final (sin cambios tras el retiro fallido)
- Cerrar la cuenta
Imprime la salida en este formato:
Account 2001 created
Balance: 0.00
Deposited 1000.00
Balance: 1000.00
Withdrew 250.00
Balance: 750.00
Deposited 500.00
Balance: 1250.00
Withdrawal failed: insufficient funds
Balance: 1250.00
Account 2001 closedDonde 2001 es el ID de la cuenta, y los montos reflejan tus entradas. Formatea todos los valores monetarios con dos decimales usando %.2f. El mensaje de retiro fallido debe imprimirse cuando withdraw devuelva 0.
Este final demuestra todo lo que has aprendido sobre la encapsulación: tu programa principal interactúa con la Account puramente a través de su interfaz pública, sin tocar nunca los datos internos ocultos directamente.
Pruébalo tú mismo
#include <stdio.h>
#include "account.h"
int main() {
// TODO: Leer account_id, deposit1, withdraw_amount, deposit2 y overdraft de la entrada
// TODO: Crear la cuenta e imprimir "Account <id> created"
// TODO: Imprimir el saldo inicial
// TODO: Realizar el primer depósito, imprimir "Deposited <amount>" y el nuevo saldo
// TODO: Retirar fondos, imprimir "Withdrew <amount>" y el saldo actualizado
// TODO: Realizar el segundo depósito, imprimir "Deposited <amount>" y el nuevo saldo
// TODO: Intentar el retiro por sobregiro; si falla, imprimir "Withdrawal failed: insufficient funds"
// TODO: Imprimir el saldo final
// TODO: Imprimir "Account <id> closed" y destruir la cuenta
return 0;
}
Todas las lecciones de Object Oriented Programming
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írculo