Menu
Coddy logo textTech

Récapitulatif - Gestionnaire de compte bancaire

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy — leçon 20 sur 91.

challenge icon

Défi

Facile

Construisons un système complet de gestion de comptes bancaires qui rassemble tous les concepts de propriétés de classe que vous avez appris dans ce chapitre. Vous allez créer une classe BankAccount qui encapsule correctement les données du compte tout en suivant les statistiques globales de la banque.

Vous organiserez votre code sur deux fichiers :

  • BankAccount.php — Définissez une classe BankAccount qui gère les comptes individuels et suit les statistiques globales de la banque. La classe doit inclure :
    • Une constante MINIMUM_BALANCE fixée à 100
    • Une propriété publique en lecture seule (readonly) string $accountId qui ne peut pas changer après la création
    • Une propriété publique $holderName pour le nom du titulaire du compte
    • Une propriété privée $balance pour protéger le solde du compte
    • Une propriété statique privée $totalAccounts commençant à 0
    • Une propriété statique privée $totalDeposits commençant à 0
    Le constructeur doit accepter un identifiant de compte, un nom de titulaire et un solde initial. Il doit définir toutes les propriétés d'instance et incrémenter le compteur total de comptes. Incluez ces méthodes :
    • getBalance() — retourne le solde actuel
    • deposit($amount) — ajoute au solde et met à jour le suivi des dépôts totaux, retourne le nouveau solde
    • withdraw($amount) — soustrait du solde uniquement si le solde restant reste supérieur ou égal à la constante de solde minimum, retourne le nouveau solde (ou le solde inchangé si le retrait n'est pas autorisé)
    • Une méthode statique getTotalAccounts() — retourne le nombre total de comptes créés
    • Une méthode statique getTotalDeposits() — retourne la somme de tous les dépôts effectués sur l'ensemble des comptes
  • main.php — Incluez le fichier de la classe BankAccount. Vous recevrez quatre entrées : le premier identifiant de compte, le premier nom de titulaire, le deuxième identifiant de compte et le deuxième nom de titulaire. Créez deux comptes, tous deux avec un solde initial de 500. Pour le premier compte : déposez 200, puis retirez 100. Affichez l'identifiant du compte, le nom du titulaire et le solde sur une ligne au format : "[accountId]: [holderName] - $[balance]" Pour le deuxième compte : déposez 300, puis tentez de retirer 800 (cela devrait échouer en raison du solde minimum). Affichez le même format pour ce compte. Enfin, affichez le nombre total de comptes et le total des dépôts sur des lignes séparées :
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

Ce défi combine des propriétés en lecture seule pour les identifiants immuables, des propriétés privées avec des méthodes getter pour les données protégées, des constantes pour les règles fixes, et des propriétés statiques avec des méthodes statiques pour les statistiques globales de la banque.

Essayez vous-même

<?php

require_once 'BankAccount.php';

// Lire les entrées
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: Créer le premier compte avec un solde initial de 500

// TODO: Créer le deuxième compte avec un solde initial de 500

// TODO: Premier compte : déposer 200, puis retirer 100

// TODO: Afficher les informations du premier compte : "[accountId]: [holderName] - $[balance]"

// TODO: Deuxième compte : déposer 300, puis tenter de retirer 800

// TODO: Afficher les informations du deuxième compte : "[accountId]: [holderName] - $[balance]"

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

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

?>

Toutes les leçons de Programmation Orientée Objet