Riepilogo - Gestore di conti bancari
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 18 di 70.
Sfida
FacileCostruiamo un sistema completo di gestione dei conti bancari che riunisce tutto ciò che hai imparato sull'architettura delle classi. Creerai una classe BankAccount che distingue correttamente tra dati di istanza (unici per ogni conto) e dati statici (condivisi da tutti i conti), usando al contempo la convalida per mantenere i conti in uno stato valido.
Creerai due file per organizzare il tuo codice:
BankAccount.cs: definisci una classeBankAccountnello spazio dei nomiBanking. Il tuo conto deve includere:- Un campo
constMinimumBalanceimpostato su100- il saldo minimo che tutti i conti devono mantenere - Un campo
staticInterestRate(decimal) che inizia da0.03m- condiviso da tutti i conti - Un campo
staticTotalAccounts(int) che tiene traccia del numero di conti esistenti - Un campo
readonlyAccountNumber(string) - impostato una sola volta durante la creazione e mai modificato - Un campo di supporto privato
_ownerNamecon una proprietàOwnerNameche rimuove gli spazi vuoti quando viene impostata - Un campo di supporto privato
_balancecon una proprietàBalanceche impedisce al saldo di scendere sottoMinimumBalance(se qualcuno prova a impostarlo a un valore inferiore, mantienilo aMinimumBalance) - Un costruttore che accetta il numero del conto, il nome del titolare e il saldo iniziale, e incrementa
TotalAccounts - Un metodo statico
SetInterestRate(decimal rate)per aggiornare il tasso d'interesse condiviso - Un metodo
CalculateInterest()che restituisce il saldo moltiplicato per il tasso d'interesse
- Un campo
Program.cs: nel tuo file principale, crea due conti bancari usando i valori di input, aggiorna il tasso d'interesse e visualizza le informazioni sui conti insieme ai dati bancari condivisi.
Riceverai sette input:
- Numero del primo conto
- Nome del titolare del primo conto
- Saldo iniziale del primo conto
- Numero del secondo conto
- Nome del titolare del secondo conto
- Saldo iniziale del secondo conto
- Nuovo tasso d'interesse (come numero decimale, ad esempio
0.05)
Stampa l'output in questo formato:
--- 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}Per esempio, se gli input sono ACC001, Alice Smith , 500, ACC002, Bob Jones, 50 e 0.05, l'output dovrebbe essere:
--- 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.0Nota come gli spazi extra nel nome di Alice vengano rimossi e come il saldo di Bob, pari a 50, venga portato al minimo di 100. L'interesse viene calcolato usando il tasso aggiornato di 0.05, impostato dopo la creazione dei conti.
Provalo tu
using System;
using Banking;
class Program
{
public static void Main(string[] args)
{
// Leggi i dati per il primo conto
string accountNumber1 = Console.ReadLine();
string ownerName1 = Console.ReadLine();
decimal balance1 = Convert.ToDecimal(Console.ReadLine());
// Leggi i dati per il secondo conto
string accountNumber2 = Console.ReadLine();
string ownerName2 = Console.ReadLine();
decimal balance2 = Convert.ToDecimal(Console.ReadLine());
// Leggi il nuovo tasso di interesse
decimal newRate = Convert.ToDecimal(Console.ReadLine());
// TODO: Crea due oggetti BankAccount usando i valori inseriti
// TODO: Aggiorna il tasso di interesse usando il metodo statico
// TODO: Stampa il riepilogo bancario nel formato richiesto
// --- Bank Summary ---
// Interest Rate: {InterestRate}
// Minimum Balance: {MinimumBalance}
// Total Accounts: {TotalAccounts}
// (riga vuota)
// Conto: {AccountNumber}
// Intestatario: {OwnerName}
// Saldo: {Balance}
// Interest Earned: {interest}
// (riga vuota)
// Conto: {AccountNumber}
// Intestatario: {OwnerName}
// Saldo: {Balance}
// Interest Earned: {interest}
}
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniNamespace e direttiveIntroduzione a classi e oggettiLa parola chiave "this"Metodi e parametriCampi e proprietàCostruttoriInizializzatori di oggettiRiepilogo - Calcolatrice semplice4Ereditarietà
Sintassi di base dell'ereditarietà (:)La parola chiave 'base'Parole chiave virtual e overrideClassi sealedLa classe base 'object'Riepilogo - Gerarchia dei dipendenti7Funzionalità avanzate
Sovraccarico degli operatoriIndicizzatori (this[])Override di ToString()Metodi di estensioneRiepilogo - Lista personalizzata10Pattern di progettazione Parte 1
Introduzione ai pattern di progettazioneSingleton thread-safePattern FactoryPattern Observer (eventi)Pattern Strategy2Proprietà e membri statici
Proprietà implementate automaticamenteProprietà di sola lettura e di sola scritturaCampi e metodi staticiClassi staticheMembri con corpo di espressione5Polimorfismo e interfacce
Polimorfismo a compile time e runtimeInterfaccia o classe astrattaInterfacce multipleInterfacce espliciteUpcasting e downcastingRipasso: calcolatore di forme8Concetti avanzati di programmazione a oggetti
Composizione invece dell'ereditarietàTipi generici (classi e metodi)Delegati ed eventiAttributi e reflectionIDisposable e istruzione usingNozioni di base sull'iniezione delle dipendenze11Pattern di progettazione, parte 2
Pattern del ComandoPattern dell’AdattatorePattern del DecoratorePattern Template MethodPattern dello StatoPattern Composito3Architettura delle classi
Dati di istanza vs staticiParole chiave 'readonly' e 'const'Campi di supportoRiepilogo - Gestore di conti bancari6Incapsulamento
Modificatori di accessoProprietà per l'incapsulamentoImplementazione dell'occultamento dei datiModelli di immutabilitàRiepilogo - Registri degli studentiEsercitati da solo: Compilatore C# online