Riepilogo - Gestore di conti bancari
Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 22 di 110.
Sfida
FacileCreiamo un sistema di gestione dei conti bancari che riunisce tutti i concetti relativi alle proprietà delle classi che hai imparato in questo capitolo. Creerai un sistema che tiene traccia dei dati dei singoli conti e, allo stesso tempo, mantiene le statistiche dell'intera banca.
Organizzerai il codice in due file:
bank_account.dart: Definisci una classeBankAccountche gestisca i singoli conti e tenga traccia delle statistiche complessive della banca. La classe deve includere:- Un
final String accountNumberche non può cambiare dopo la creazione - Un
String holderNameper il nome del titolare del conto - Un campo privato
double _balanceche parte da0.0 - Un
static int totalAccountsche parte da0per tenere traccia del numero di conti esistenti - Un
static double totalDepositsche parte da0.0per tenere traccia di tutti i depositi effettuati in banca - Un costruttore che accetta
accountNumbereholderNamee incrementatotalAccounts - Un getter
balanceche restituisce il saldo attuale - Un metodo
deposit(double amount)che aggiunge al saldo solo se l'importo è positivo e, in caso di successo, aggiunge anche atotalDeposits - Un metodo
withdraw(double amount)che sottrae dal saldo solo se l'importo è positivo e non supera il saldo attuale - Un metodo
displayInfo()che stampa i dettagli del conto - Un metodo statico
getBankStats()che restituisce una stringa con le statistiche complessive della banca
- Un
main.dart: Importa la classe del conto bancario e mostra come funziona il sistema:- Crea un conto con numero
'ACC001'per'Alice' - Crea un conto con numero
'ACC002'per'Bob' - Deposita
500.0sul conto di Alice - Deposita
300.0sul conto di Bob - Preleva
150.0dal conto di Alice - Prova a prelevare
1000.0dal conto di Bob (dovrebbe essere ignorato: fondi insufficienti) - Prova a depositare
-50.0sul conto di Alice (dovrebbe essere ignorato: importo negativo) - Chiama
displayInfo()sul conto di Alice e poi su quello di Bob - Stampa le statistiche della banca usando
BankAccount.getBankStats()
- Crea un conto con numero
Il metodo displayInfo() dovrebbe stampare in questo formato:
Account [accountNumber] | Holder: [holderName] | Balance: $[balance]Il metodo getBankStats() dovrebbe restituire:
Bank Stats - Total Accounts: [totalAccounts] | Total Deposits: $[totalDeposits]Output previsto:
Account ACC001 | Holder: Alice | Balance: $350.0
Account ACC002 | Holder: Bob | Balance: $300.0
Bank Stats - Total Accounts: 2 | Total Deposits: $800.0Provalo tu
import 'bank_account.dart';
void main() {
// TODO: Crea un conto con numero 'ACC001' per 'Alice'
// TODO: Crea un conto con numero 'ACC002' per 'Bob'
// TODO: Deposita 500.0 sul conto di Alice
// TODO: Deposita 300.0 sul conto di Bob
// TODO: Preleva 150.0 dal conto di Alice
// TODO: Prova a prelevare 1000.0 dal conto di Bob (l'operazione deve essere ignorata)
// TODO: Prova a depositare -50.0 sul conto di Alice (l'operazione deve essere ignorata)
// TODO: Chiama displayInfo() sul conto di Alice
// TODO: Chiama displayInfo() sul conto di Bob
// TODO: Stampa le statistiche della banca usando BankAccount.getBankStats()
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniLibrerie e importazioniIntroduzione alla programmazione orientata agli oggettiClassi e oggettiLa parola chiave thisMetodiVariabili di istanzaFondamenti dei costruttoriRiepilogo - Calcolatrice semplice4Sicurezza dei valori null
Introduzione alla sicurezza dei valori nullNullable e non nullableGli operatori ? e !La keyword late e la sicurezza dei valori nullOperatori null-awareSicurezza dei valori null nelle classiRiepilogo - Sistema di profili utente7Classi astratte e interfacce
Classi astratteMetodi astrattiInterfacce in DartInterfacce impliciteImplementare vs estendereInterfacce multipleRiepilogo - Calcolatore di forme10Collezioni e generici
Panoramica di List, Set e MapCollezioni sicure rispetto ai tipiClassi genericheMetodi genericiVincoli sui genericiIterable e IteratorRiepilogo - Archiviazione generica13Concetti avanzati di OOP
Composizione vs ereditarietàMetodi di estensioneClassi chiamabiliClassi sealed (Dart 3)Record (Dart 3)Pattern e matching (3.0)Enum con metodi16Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e Utente2I costruttori in Dart
Costruttore predefinitoCostruttori con nomeListe di inizializzazioneCostruttori costantiCostruttori factoryCostruttori di reindirizzamentoRiepilogo - Crea forme5Incapsulamento
Membri pubblici e privatiConvenzione del prefisso _Visibilità a livello di libreriaApprofondimento su getter e setterNascondimento delle informazioniRiepilogo - Registri degli studenti8Mixin
Introduzione ai MixinCreare MixinUsare più MixinParola chiave on nei MixinMixin vs ereditarietàMixin vs interfacciaRiepilogo - Sistema animale11Metodi speciali
Sovrascrittura di toString()Sovrascrittura di hashCode e ==Interfaccia ComparableMetodo call()Sovrascrittura di noSuchMethodRiepilogo - Collezione personalizzata14Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneSingletonFactoryObserverStrategy3Proprietà delle classi
Membri di istanza e staticiCampi final e constVariabili lateMetodi e campi staticiGetter e setterRiepilogo - Gestore di conti bancari6Ereditarietà
Ereditarietà di baseLa parola chiave superOverride dei metodiL’annotazione @overrideLa parola chiave final per le classiCostruttori ed ereditarietàRiepilogo - Gerarchia dei dipendenti9Polimorfismo
Fondamenti di polimorfismoPolimorfismo tramite interfacceControllo del tipo a runtimeGli operatori is e asParola chiave covariantRiepilogo - Elaboratore di pagamenti12OOP asincrona
Future e async/awaitNozioni di base sugli streamController degli streamCostruttori asincroniAsync nei metodi di classeRiepilogo - Recupero dei dati15Pattern di progettazione Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern RepositoryEsercitati da solo: Compilatore Dart online