Menu
Coddy logo textTech

Resumen - Gestor de cuenta bancaria

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

Vamos a construir 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 adecuadamente los datos de la cuenta mientras realiza un seguimiento de las estadísticas globales 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 (readonly) string $accountId que no pueda cambiar después de su 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 un saldo inicial. Debe establecer todas las propiedades de instancia e incrementar el recuento total de cuentas. Incluye estos métodos:
    • getBalance() — devuelve el saldo actual
    • deposit($amount) — añade al saldo y actualiza el rastreador de depósitos totales, devuelve el nuevo saldo
    • withdraw($amount) — resta del saldo solo si el saldo restante se mantiene igual o por encima de la constante de saldo mínimo, devuelve el nuevo saldo (o el saldo sin cambios si el retiro no está permitido)
    • 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 ID de la primera cuenta, el nombre del primer titular, el ID de la segunda cuenta y el nombre del segundo titular. Crea dos cuentas, ambas con un saldo inicial de 500. Para la primera cuenta: deposita 200, luego retira 100. Imprime el ID de la cuenta, el nombre del titular y el saldo en una línea con el formato: "[accountId]: [holderName] - $[balance]" Para la segunda cuenta: deposita 300, luego 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 readonly 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 estadísticas globales 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 un saldo inicial de 500

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

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

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

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

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

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

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

?>

Todas las lecciones de Programación Orientada a Objetos