Menu
Coddy logo textTech

Récapitulatif - Gestionnaire de comptes bancaires

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 réunit 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 des comptes 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 définie à 100
    • Une propriété publique en lecture seule string $accountId qui ne peut pas être modifiée 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 initialisée à 0
    • Une propriété statique privée $totalDeposits initialisée à 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 nombre total de comptes. Incluez les méthodes suivantes :
    • getBalance() : renvoie le solde actuel
    • deposit($amount) : ajoute le montant au solde et met à jour le suivi du total des dépôts, puis renvoie le nouveau solde
    • withdraw($amount) : soustrait le montant du solde uniquement si le solde restant reste supérieur ou égal à la constante du solde minimum, puis renvoie le nouveau solde (ou le solde inchangé si le retrait n’est pas autorisé)
    • Une méthode statique getTotalAccounts() : renvoie le nombre total de comptes créés
    • Une méthode statique getTotalDeposits() : renvoie 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 : l’identifiant du premier compte, le nom du premier titulaire, l’identifiant du second compte et le nom du second titulaire. Créez deux comptes, chacun avec un solde initial de 500. Pour le premier compte : effectuez un dépôt de 200, puis un retrait de 100. Affichez l’identifiant du compte, le nom du titulaire et le solde sur une seule ligne au format : "[accountId]: [holderName] - $[balance]" Pour le second compte : effectuez un dépôt de 300, puis essayez d’effectuer un retrait de 800 (cela doit échouer en raison du solde minimum). Affichez ce compte au même format. 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 les propriétés en lecture seule pour les identifiants immuables, les propriétés privées avec des méthodes d’accès pour les données protégées, les constantes pour les règles fixes, ainsi que les propriétés statiques et les 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 second compte avec un solde initial de 500

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

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

// TODO: Second compte : déposer 300, puis tenter de retirer 800

// TODO: Afficher les infos du second compte : "[accountId]: [holderName] - $[balance]"

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

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

?>

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur PHP en ligne