Menu
Coddy logo textTech

Lógica de depósito

Parte de la sección Object Oriented Programming del Journey de C de Coddy — lección 24 de 61.

challenge icon

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 cantidad double, devolviendo un int (1 para éxito, 0 si la cantidad es inválida). Mantén tus declaraciones existentes para create_account y destroy_account.
  • account.c: Implementa la función deposit junto 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 destroyed

Donde 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