Récapitulatif - Gestionnaire de compte bancaire
Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 18 sur 70.
Défi
FacileConstruisons un système complet de gestion de comptes bancaires qui rassemble tout ce que vous avez appris sur l'architecture des classes. Vous allez créer une classe BankAccount qui distingue correctement les données d'instance (uniques à chaque compte) et les données statiques (partagées par tous les comptes), tout en utilisant la validation pour maintenir les comptes dans des états valides.
Vous allez créer deux fichiers pour organiser votre code :
BankAccount.cs: Définissez une classeBankAccountdans l'espace de nomsBanking. Votre compte doit inclure :- Un champ
constMinimumBalancedéfini sur100- le solde minimum que tous les comptes doivent maintenir - Un champ
staticInterestRate(decimal) qui commence à0.03m- partagé par tous les comptes - Un champ
staticTotalAccounts(int) qui suit le nombre de comptes existants - Un champ
readonlyAccountNumber(string) - défini une seule fois lors de la création et jamais modifié - Un champ de support privé
_ownerNameavec une propriétéOwnerNamequi supprime les espaces blancs (trim) lors de la définition - Un champ de support privé
_balanceavec une propriétéBalancequi empêche le solde de descendre en dessous deMinimumBalance(si quelqu'un essaie de le définir plus bas, maintenez-le àMinimumBalance) - Un constructeur qui accepte le numéro de compte, le nom du propriétaire et le solde initial, et qui incrémente
TotalAccounts - Une méthode statique
SetInterestRate(decimal rate)pour mettre à jour le taux d'intérêt partagé - Une méthode
CalculateInterest()qui retourne le solde multiplié par le taux d'intérêt
- Un champ
Program.cs: Dans votre fichier principal, créez deux comptes bancaires en utilisant les valeurs d'entrée, mettez à jour le taux d'intérêt et affichez les informations du compte ainsi que les données bancaires partagées.
Vous recevrez sept entrées :
- Premier numéro de compte
- Premier nom du propriétaire
- Premier solde initial
- Deuxième numéro de compte
- Deuxième nom du propriétaire
- Deuxième solde initial
- Nouveau taux d'intérêt (sous forme de décimal comme
0.05)
Affichez la sortie dans ce format :
--- Bank Summary ---
Interest Rate: {InterestRate}
Minimum Balance: {MinimumBalance}
Total Accounts: {TotalAccounts}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}Par exemple, si les entrées sont ACC001, Alice Smith , 500, ACC002, Bob Jones, 50, et 0.05, la sortie devrait être :
--- Bank Summary ---
Interest Rate: 0.05
Minimum Balance: 100
Total Accounts: 2
Account: ACC001
Owner: Alice Smith
Balance: 500
Interest Earned: 25.0
Account: ACC002
Owner: Bob Jones
Balance: 100
Interest Earned: 5.0Remarquez comment le nom d'Alice est débarrassé des espaces supplémentaires, et comment le solde de Bob de 50 est relevé au minimum de 100. L'intérêt est calculé en utilisant le taux mis à jour de 0.05 qui a été défini après la création des comptes.
Essayez vous-même
using System;
using Banking;
class Program
{
public static void Main(string[] args)
{
// Lire les entrées pour le premier compte
string accountNumber1 = Console.ReadLine();
string ownerName1 = Console.ReadLine();
decimal balance1 = Convert.ToDecimal(Console.ReadLine());
// Lire les entrées pour le deuxième compte
string accountNumber2 = Console.ReadLine();
string ownerName2 = Console.ReadLine();
decimal balance2 = Convert.ToDecimal(Console.ReadLine());
// Lire le nouveau taux d'intérêt
decimal newRate = Convert.ToDecimal(Console.ReadLine());
// TODO: Créer deux objets BankAccount en utilisant les valeurs d'entrée
// TODO: Mettre à jour le taux d'intérêt en utilisant la méthode statique
// TODO: Imprimer le résumé de la banque au format requis
// --- Bank Summary ---
// Interest Rate: {InterestRate}
// Minimum Balance: {MinimumBalance}
// Total Accounts: {TotalAccounts}
// (ligne vide)
// Account: {AccountNumber}
// Owner: {OwnerName}
// Balance: {Balance}
// Interest Earned: {interest}
// (ligne vide)
// Account: {AccountNumber}
// Owner: {OwnerName}
// Balance: {Balance}
// Interest Earned: {interest}
}
}
Toutes les leçons de Programmation Orientée Objet
1Fondamentaux de la POO
Fichiers externesEspaces de noms et directivesIntro aux classes et objetsLe mot-clé 'this'Méthodes et paramètresChamps vs PropriétésConstructeursInitialiseurs d'objetsRécapitulatif - Calculatrice simple4Héritage
Syntaxe de base de l'héritage (:)Le mot-clé 'base'Mots-clés Virtual & OverrideClasses scelléesLa classe de base 'object'Récapitulatif - Hiérarchie des employés7Fonctionnalités avancées
Surcharge d'opérateursIndexeurs (this[])Redéfinition de ToString()Méthodes d'extensionRécapitulatif - Liste personnalisée10Patrons de conception - Partie 1
Introduction aux patrons de conceptionSingleton Thread-SafePatron FabriquePatron Observateur (Événements)Patron Stratégie2Propriétés et membres statiques
Propriétés auto-implémentéesPropriétés en lecture/écriture seuleChamps et méthodes statiquesClasses statiquesMembres à corps d'expression5Polymorphisme & Interfaces
Polymorphisme : Compilation vs ExécutionInterface vs Classe AbstraiteInterfaces MultiplesInterfaces ExplicitesUpcasting & DowncastingRécapitulatif - Calculateur de Formes8Concepts avancés de la POO
Composition plutôt qu'héritageGénériques (Classes et Méthodes)Délégués et ÉvénementsAttributs et RéflexionIDisposable et l'instruction usingBases de l'Injection de Dépendances11Patrons de conception, Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode TemplatePatron ÉtatPatron Composite3Architecture des classes
Données d'instance vs statiquesMots-clés 'readonly' & 'const'Champs de supportRécapitulatif - Gestionnaire de compte bancaire6Encapsulation
Modificateurs d'accèsPropriétés pour l'encapsulationImplémentation du masquage de donnéesPatterns d'immuabilitéRécapitulatif - Dossiers d'étudiants12Projet : Système de gestion de bibliothèque
Structure du projetModèles Livre et Utilisateur