Lógica de depósito
Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 24 de 61.
Desafío
Fácil¡Es hora de añadir la primera operación bancaria real a tu módulo Account: la capacidad de depositar fondos! Una función de depósito debe ser inteligente: solo debe aceptar cantidades positivas, protegiendo tu cuenta de transacciones inválidas.
Basándote en tu proyecto Bank Account existente, ampliarás el módulo con la funcionalidad de depósito. Tu función de depósito debe validar la entrada antes de modificar el saldo oculto; esto es la encapsulación trabajando para proteger la integridad de tus datos.
Trabajarás con tres archivos:
account.h: Amplía tu cabecera existente añadiendo un nuevo prototipo de función:deposit. Esta función debe recibir un puntero Account y una cantidaddouble, devolviendo unint(1 para éxito, 0 si la cantidad es inválida). Mantén tus declaraciones existentes paracreate_accountydestroy_account.account.c: Implementa la funcióndepositjunto con tu constructor y destructor existentes. El depósito solo debe tener éxito si la cantidad es positiva (mayor que cero). Si es válida, añade la cantidad al saldo oculto y devuelve 1. Si la cantidad es cero o negativa, recházala devolviendo 0 sin cambiar el saldo.main.c: Demuestra tu funcionalidad de depósito creando una cuenta y realizando múltiples operaciones de depósito (algunas válidas, otras inválidas) para mostrar que tu validación funciona correctamente.
Recibirás tres entradas: el account ID (un entero), una cantidad de depósito válida (un número positivo) y una cantidad de depósito inválida (cero o negativa).
En tu archivo principal, crea una cuenta con el ID proporcionado e imprime una confirmación. Luego intenta depositar primero la cantidad inválida: imprime si tuvo éxito y observa que el saldo debe permanecer sin cambios. A continuación, deposita la cantidad válida e imprime el resultado de éxito. Finalmente, destruye la cuenta y confirma la limpieza.
Imprime la salida en este formato:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedDonde 1001 es el ID de la cuenta, -50.00 es la cantidad inválida y 200.00 es la cantidad válida. Formatea todas las cantidades con dos decimales usando %.2f.
Tu función de depósito actúa como un guardián: asegura que solo las transacciones válidas puedan modificar el saldo oculto de la cuenta. Aunque todavía no puedes ver el saldo (añadiremos un getter en una lección posterior), puedes confiar en que los depósitos inválidos están siendo rechazados correctamente.
Pruébalo tú mismo
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
destroy_account(account);
printf("Account destroyed\n");
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