Menu
Coddy logo textTech

Repaso: gestor de cuentas bancarias

Parte de la sección Programación Orientada a Objetos del Journey de PHP de Coddy. Lección 20 de 91.

challenge icon

Desafío

Fácil

Construyamos un sistema completo de gestión de cuentas bancarias que reúna todos los conceptos de propiedades de clase que has aprendido en este capítulo. Crearás una clase BankAccount que encapsule correctamente los datos de la cuenta mientras realiza un seguimiento de las estadísticas generales del banco.

Organizarás tu código en dos archivos:

  • BankAccount.php: Define una clase BankAccount que gestione cuentas individuales y realice un seguimiento de las estadísticas generales del banco. La clase debe incluir:
    • Una constante MINIMUM_BALANCE establecida en 100
    • Una propiedad pública de solo lectura string $accountId que no pueda cambiar después de la creación
    • Una propiedad pública $holderName para el nombre del titular de la cuenta
    • Una propiedad privada $balance para proteger el saldo de la cuenta
    • Una propiedad estática privada $totalAccounts que comience en 0
    • Una propiedad estática privada $totalDeposits que comience en 0
    El constructor debe aceptar un ID de cuenta, el nombre del titular y el saldo inicial. Debe establecer todas las propiedades de la instancia e incrementar el total de cuentas. Incluye estos métodos:
    • getBalance(): devuelve el saldo actual
    • deposit($amount): suma el importe al saldo y actualiza el registro de depósitos totales; devuelve el nuevo saldo
    • withdraw($amount): resta el importe del saldo solo si el saldo restante se mantiene en el mínimo o por encima de este, y devuelve el nuevo saldo (o el saldo sin cambios si no se permite el retiro)
    • Un método estático getTotalAccounts(): devuelve el número total de cuentas creadas
    • Un método estático getTotalDeposits(): devuelve la suma de todos los depósitos realizados en todas las cuentas
  • main.php: Incluye el archivo de la clase BankAccount. Recibirás cuatro entradas: el primer ID de cuenta, el nombre del primer titular, el segundo ID de cuenta y el nombre del segundo titular. Crea dos cuentas, ambas con un saldo inicial de 500. Para la primera cuenta: deposita 200, después retira 100. Imprime el ID de cuenta, el nombre del titular y el saldo en una línea con el formato: "[accountId]: [holderName] - $[balance]" Para la segunda cuenta: deposita 300, después intenta retirar 800 (esto debería fallar debido al saldo mínimo). Imprime el mismo formato para esta cuenta. Finalmente, imprime el total de cuentas y el total de depósitos en líneas separadas:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

Este desafío combina propiedades de solo lectura para identificadores inmutables, propiedades privadas con métodos getter para datos protegidos, constantes para reglas fijas y propiedades estáticas con métodos estáticos para las estadísticas generales del banco.

Pruébalo tú mismo

<?php

require_once 'BankAccount.php';

// Leer entradas
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: Crear la primera cuenta con saldo inicial de 500

// TODO: Crear la segunda cuenta con saldo inicial de 500

// TODO: Primera cuenta: depositar 200, luego retirar 100

// TODO: Imprimir info de la primera cuenta: "[accountId]: [holderName] - $[balance]"

// TODO: Segunda cuenta: depositar 300, luego intentar retirar 800

// TODO: Imprimir info de la segunda cuenta: "[accountId]: [holderName] - $[balance]"

// TODO: Print "Total Accounts: [count]"

// TODO: Print "Total Deposits: $[amount]"

?>

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de PHP online