Riepilogo - Gestore di conti bancari
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 14 di 87.
Sfida
FacileCostruiremo un sistema completo BankAccount che riunisce tutto ciò che hai imparato sull'incapsulamento, i modificatori di accesso, i getter, i setter e la parola chiave final.
Creerai due file per organizzare il codice:
BankAccount.java: Progetta una classe per un conto bancario sicuro che protegga i dati finanziari sensibili:- Un numero di conto immutabile che non può mai cambiare una volta creato il conto
- Un saldo privato che parte da 0.0 e può essere modificato solo tramite metodi controllati
- Il nome privato del titolare, che può essere recuperato ma non modificato direttamente
- Un costruttore che accetta il numero di conto e il nome del titolare
- Un getter per il numero di conto
- Un getter per il nome del titolare
- Un getter per il saldo
- Un metodo
deposit(double amount)che aggiunge denaro al saldo solo se l'importo è positivo, restituendotruein caso di successo ofalsese l'operazione viene rifiutata - Un metodo
withdraw(double amount)che sottrae denaro dal saldo solo se l'importo è positivo E sono disponibili fondi sufficienti, restituendotruein caso di successo ofalsese l'operazione viene rifiutata - Un metodo
getAccountSummary()che restituisce:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(saldo formattato con 2 cifre decimali)
Main.java: Crea un BankAccount ed esegui una serie di transazioni. Riceverai cinque input: numero di conto, nome del titolare, importo del deposito, importo del primo prelievo e importo del secondo prelievo. Stampa quattro righe:- Il risultato del deposito:
Deposit: trueoDeposit: false - Il risultato del primo prelievo:
Withdraw 1: trueoWithdraw 1: false - Il risultato del secondo prelievo:
Withdraw 2: trueoWithdraw 2: false - Il riepilogo finale del conto
- Il risultato del deposito:
Riceverai cinque input, in quest'ordine: accountNumber (String), ownerName (String), depositAmount (double), withdrawAmount1 (double), withdrawAmount2 (double).
Per formattare il saldo con 2 cifre decimali, puoi usare String.format("%.2f", balance).
Provalo tu
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leggi gli input
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO: Crea un oggetto BankAccount con accountNumber e ownerName
// TODO: Effettua un deposito e stampa il risultato come "Deposit: true" o "Deposit: false"
// TODO: Effettua il primo prelievo e stampa il risultato come "Withdraw 1: true" o "Withdraw 1: false"
// TODO: Effettua il secondo prelievo e stampa il risultato come "Withdraw 2: true" o "Withdraw 2: false"
// TODO: Stampa il riepilogo del conto
}
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online