Menu
Coddy logo textTech

Lógica de depósito

Parte de la sección Programación Orientada a Objetos 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 no válidas.

A partir de tu proyecto existente de cuenta bancaria, 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 protegiendo la integridad de tus datos.

Trabajarás con tres archivos:

  • account.h: Amplía tu encabezado existente añadiendo un nuevo prototipo de función: deposit. Esta función debe recibir un puntero a Account y una cantidad double, y devolver un int (1 si tiene éxito, 0 si la cantidad no es válida). Conserva 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 la funcionalidad de depósito creando una cuenta y realizando varias operaciones de depósito, algunas válidas y otras no válidas, para mostrar que la validación funciona correctamente.

Recibirás tres entradas: el ID de cuenta (un entero), una cantidad de depósito válida (un número positivo) y una cantidad de depósito no válida (cero o negativa).

En tu archivo principal, crea una cuenta con el ID indicado e imprime una confirmación. Después, intenta depositar primero la cantidad no válida: imprime si tuvo éxito y señala que el saldo debería permanecer sin cambios. A continuación, deposita la cantidad válida: imprime el resultado de éxito. Por último, destruye la cuenta y confirma la limpieza.

Imprime la salida con este formato:

Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyed

Donde 1001 es el ID de cuenta, -50.00 es la cantidad no válida y 200.00 es la cantidad válida. Da formato a todas las cantidades con dos decimales usando %.2f.

Tu función de depósito actúa como un guardián. Garantiza 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 no válidos se están rechazando 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 Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C online