Menu
Coddy logo textTech

Riepilogo - Gestore di conti bancari

Fa parte della sezione Programmazione orientata agli oggetti del percorso PHP di Coddy. Lezione 20 di 91.

challenge icon

Sfida

Facile

Costruiamo un sistema completo di gestione dei conti bancari che riunisce tutti i concetti relativi alle proprietà delle classi che hai imparato in questo capitolo. Creerai una classe BankAccount che incapsula correttamente i dati dei conti e tiene traccia delle statistiche dell'intera banca.

Organizzerai il codice in due file:

  • BankAccount.php: definisci una classe BankAccount che gestisce i singoli conti e tiene traccia delle statistiche complessive della banca. La classe dovrebbe includere:
    • Una costante MINIMUM_BALANCE impostata su 100
    • Una proprietà pubblica di sola lettura string $accountId che non può cambiare dopo la creazione
    • Una proprietà pubblica $holderName per il nome del titolare del conto
    • Una proprietà privata $balance per proteggere il saldo del conto
    • Una proprietà statica privata $totalAccounts che parte da 0
    • Una proprietà statica privata $totalDeposits che parte da 0
    Il costruttore dovrebbe accettare un ID del conto, il nome del titolare e un saldo iniziale. Dovrebbe impostare tutte le proprietà dell'istanza e incrementare il conteggio totale dei conti. Includi questi metodi:
    • getBalance(): restituisce il saldo attuale
    • deposit($amount): aggiunge l'importo al saldo e aggiorna il totale dei depositi, quindi restituisce il nuovo saldo
    • withdraw($amount): sottrae l'importo dal saldo solo se il saldo rimanente è pari o superiore al valore minimo della costante, quindi restituisce il nuovo saldo (oppure il saldo invariato se il prelievo non è consentito)
    • Un metodo statico getTotalAccounts(): restituisce il numero totale di conti creati
    • Un metodo statico getTotalDeposits(): restituisce la somma di tutti i depositi effettuati su tutti i conti
  • main.php: includi il file della classe BankAccount. Riceverai quattro input: l'ID del primo conto, il nome del primo titolare, l'ID del secondo conto e il nome del secondo titolare. Crea due conti, entrambi con un saldo iniziale di 500. Per il primo conto: deposita 200, poi preleva 100. Stampa l'ID del conto, il nome del titolare e il saldo su un'unica riga nel formato: "[accountId]: [holderName] - $[balance]" Per il secondo conto: deposita 300, poi prova a prelevare 800 (l'operazione dovrebbe fallire a causa del saldo minimo). Stampa per questo conto lo stesso formato. Infine, stampa il totale dei conti e il totale dei depositi su righe separate:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

Questa sfida combina proprietà di sola lettura per identificatori immutabili, proprietà private con metodi getter per proteggere i dati, costanti per regole fisse e proprietà statiche con metodi statici per le statistiche dell'intera banca.

Provalo tu

<?php

require_once 'BankAccount.php';

// Leggi gli input
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: Crea il primo conto con un saldo iniziale di 500

// TODO: Crea il secondo conto con un saldo iniziale di 500

// TODO: Primo conto: deposita 200, poi preleva 100

// TODO: Stampa le informazioni del primo conto: "[accountId]: [holderName] - $[balance]"

// TODO: Secondo conto: deposita 300, poi prova a prelevare 800

// TODO: Stampa le informazioni del secondo conto: "[accountId]: [holderName] - $[balance]"

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

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

?>

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore PHP online