Aller au contenu

Système de Gestion de Comptes Bancaires

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

classDiagram
    class Account {
        <<abstract>>
        -int id
        #float balance
        -int$ accountCount
        +Account(float balance)
        +deposit(float amount) void
        +withdraw(float amount)* void
        +getBalance() float
    }
    class SimpleAccount {
        -float overdraft
        +SimpleAccount(float balance, float overdraft)
        +withdraw(float amount) void
    }
    class WithdrawalException {
        <<exception>>
        +WithdrawalException(String message)
    }
    class SavingsAccount {
        -float interestRate
        +SavingsAccount(float rate, float balance)
        +calculateInterest() void
    }
    class Client {
        -int id
        -int$ clientCount
        -String firstName
        -String lastName
        -List~Account~ accounts
        +Client(String firstName, String lastName)
        +calculateTotalAssets() float
        +add(Account account) void
    }
    class FeeAccount {
        -float fee
        +FeeAccount(float balance, float fee)
        +deposit(float amount) void
        +withdraw(float amount) void
    }
    class OverdraftException {
        <<exception>>
        +OverdraftException(String message)
    }
    SimpleAccount --|> Account
    SavingsAccount --|> Account
    FeeAccount --|> Account
    Client "1" --> "0..*" Account

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

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

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)

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 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)

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

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