Final del proyecto: Bucle principal
Parte de la sección Programación Orientada a Objetos del Journey de C de Coddy. Lección 27 de 61.
Desafío
Fácil¡Felicidades: has creado una biblioteca completa de cuentas bancarias! Ahora es momento de cambiar de papel. En lugar de ser quien creó 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.
Imagina que eres un cliente que entra en un banco y realiza una serie de transacciones. Crearás una cuenta, harás depósitos y retiros, consultarás el saldo durante el proceso y, finalmente, cerrarás la cuenta cuando hayas terminado.
Trabajarás con tres archivos:
account.h: Tu archivo de encabezado completo con el tipo opacoAccounty todos los prototipos de funciones:create_account,destroy_account,deposit,withdrawyget_balance.account.c: Tu implementación completa con la estructura oculta que contieneidybalance, además de todas las implementaciones de funciones que has creado a lo largo de este proyecto.main.c: ¡Aquí es donde demostrarás lo que sabes! Escribe un programa que muestre el ciclo de vida completo de una cuenta bancaria mediante 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 sobregiro intentado (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
- Hacer el primer depósito y mostrar el nuevo saldo
- Retirar algunos fondos y mostrar el saldo actualizado
- Hacer otro depósito y mostrar el saldo
- Intentar un retiro que supere el saldo. Esto debe fallar
- Mostrar el saldo final (sin cambios después del retiro fallido)
- Cerrar la cuenta
Imprime la salida con 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 las cantidades reflejan tus entradas. Da formato a todos los valores monetarios con dos decimales usando %.2f. El mensaje de retiro fallido debe imprimirse cuando withdraw devuelva 0.
Este cierre demuestra todo lo que has aprendido sobre la encapsulación. Tu programa principal interactúa con Account únicamente a través de su interfaz pública, sin acceder nunca directamente a los datos internos ocultos.
Pruébalo tú mismo
#include <stdio.h>
#include "account.h"
int main() {
// TODO: Lee account_id, deposit1, withdraw_amount, deposit2 y overdraft de la entrada
// TODO: Crea la cuenta e imprime "Account <id> created"
// TODO: Imprime el saldo inicial
// TODO: Realiza el primer depósito, imprime "Deposited <amount>" y el nuevo saldo
// TODO: Retira fondos, imprime "Withdrew <amount>" y el saldo actualizado
// TODO: Realiza el segundo depósito, imprime "Deposited <amount>" y el nuevo saldo
// TODO: Attempt the overdraft withdrawal; if it fails, print "Withdrawal failed: insufficient funds"
// TODO: Imprime el saldo final
// TODO: Imprime "Account <id> closed" y destruye la cuenta
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