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 (propres à chaque compte) des données statiques (partagées entre 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 à100— le solde minimum que tous les comptes doivent maintenir - Un champ
staticInterestRate(decimal) qui commence à0.03m— partagé entre 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 privé de stockage
_ownerNameavec une propriétéOwnerNamequi supprime les espaces superflus lors de l’affectation - Un champ privé de stockage
_balanceavec une propriétéBalancequi empêche le solde de descendre sousMinimumBalance(si quelqu’un essaie de lui attribuer une valeur inférieure, conservez la valeurMinimumBalance) - Un constructeur qui accepte le numéro de compte, le nom du titulaire et le solde initial, et 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 renvoie le solde multiplié par le taux d’intérêt
- Un champ
Program.cs: dans votre fichier principal, créez deux comptes bancaires à l’aide de valeurs saisies, mettez à jour le taux d’intérêt et affichez les informations des comptes ainsi que les données bancaires partagées.
Vous recevrez sept entrées :
- Numéro du premier compte
- Nom du titulaire du premier compte
- Solde initial du premier compte
- Numéro du deuxième compte
- Nom du titulaire du deuxième compte
- Solde initial du deuxième compte
- Nouveau taux d’intérêt (sous forme décimale, comme
0.05)
Affichez la sortie au format suivant :
--- 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 que les espaces superflus sont supprimés du nom d’Alice et que le solde de Bob, égal à 50, est relevé au minimum de 100. Les intérêts sont calculés à l’aide du taux mis à jour de 0.05, 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 UtilisateurLogique du système d'empruntLINQ pour la rechercheInterface Console / Interface d'administrationTests unitaires (NUnit/xUnit)Entraînez-vous par vous-même : Compilateur C# en ligne