Aller au contenu principal

Système de Gestion de Comptes Bancaires

Hiérarchie d'héritage pour différents types de comptes bancaires avec gestion de clients

Account (Classe de Base Abstraite)

La classe parente pour tous les types de comptes bancaires.

  • id: Identifiant unique du compte (privé)
  • balance: Solde actuel du compte (protégé - accessible aux sous-classes)
  • accountCount: Compteur statique pour le total de comptes créés (privé)
  • Account(float balance): Constructeur pour initialiser le compte avec un solde de départ
  • deposit(float amount): Ajouter de l'argent au compte
  • withdraw(float amount): Retirer de l'argent du compte (lève WithdrawalException si fonds insuffisants)
  • Le solde protégé permet aux sous-classes d'accéder et de modifier le solde

SimpleAccount

Compte courant standard avec protection contre le découvert.

  • overdraft: Limite maximale de découvert autorisée (privé)
  • SimpleAccount(balance, float overdraft): Constructeur avec solde initial et limite de découvert
  • Hérite de Account
  • Surcharge withdraw(): Permet le retrait jusqu'à solde + limite de découvert
  • Lève OverdraftException si le retrait dépasse les fonds disponibles + découvert

SavingsAccount

Compte d'épargne portant intérêts.

  • interestRate: Taux d'intérêt annuel en pourcentage (privé)
  • SavingsAccount(float rate, float balance): Constructeur avec taux d'intérêt et solde initial
  • Hérite de Account
  • calculateInterest(): Calcule et ajoute les intérêts au solde basé sur interestRate
  • Typiquement avec des restrictions sur les retraits (non montré dans le modèle de base)

FeeAccount

Compte qui facture des frais pour les transactions.

  • FeeAccount(balance): Constructeur avec solde initial
  • Hérite de Account
  • Surcharge deposit(): Facture des frais modiques pour chaque transaction de dépôt
  • Surcharge withdraw(): Facture des frais modiques pour chaque transaction de retrait
  • Utile pour les comptes premium avec services additionnels

Client

Client bancaire pouvant posséder plusieurs comptes.

  • id: Identifiant unique du client (privé)
  • clientCount: Compteur statique pour le total de clients créés (privé, partagé entre toutes les instances)
  • firstName: Prénom du client (privé)
  • lastName: Nom de famille du client (privé)
  • accounts: Liste des comptes détenus par ce client (List<Account> privée)
  • Client(String firstName, String lastName): Constructeur qui auto-incrémente clientCount
  • calculateTotalAssets(): Somme des soldes de tous les comptes du client
  • add(Account account): Associer un nouveau compte à ce client
  • Un client peut avoir zéro ou plusieurs comptes (relation un-à-plusieurs)

WithdrawalException

Exception levée lorsqu'un retrait échoue.

  • Levée lors d'une tentative de retrait supérieure au solde disponible
  • Utilisée par la classe Account de base

OverdraftException

Exception levée lorsque la limite de découvert est dépassée.

  • Levée par SimpleAccount lorsque le retrait dépasse solde + découvert
  • Exception spécialisée pour les scénarios de découvert