Riepilogo: sistema di pagamento
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 40 di 87.
Sfida
FacileCostruiamo un sistema completo di elaborazione dei pagamenti che riunisce tutto ciò che hai imparato sulle interfacce in questo capitolo. Creerai un sistema flessibile in cui è possibile elaborare uniformemente diversi metodi di pagamento tramite un’interfaccia comune.
Organizzerai il codice in cinque file:
Payable.java: Definisci l’interfaccia di base che tutti i metodi di pagamento devono implementare. Dovrebbe dichiarare un unico metodopay(double amount)che restituisce una String che descrive l’azione di pagamento.CreditCard.java: Crea una classe che implementaPayablee rappresenta i pagamenti con carta di credito. Una CreditCard ha un campocardNumber(String) che memorizza le ultime 4 cifre. Includi un costruttore per inizializzarlo. Il metodopaydovrebbe restituire:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: Crea un’altra classe che implementaPayableper i pagamenti PayPal. Un account PayPal ha un campoemail(String). Includi un costruttore per inizializzarlo. Il metodopaydovrebbe restituire:Paid [amount] via PayPal account [email]PaymentProcessor.java: Crea una classe processore in grado di gestire qualsiasi oggettoPayable. Dovrebbe avere un metodoprocessPayment(Payable paymentMethod, double amount)che chiama il metodopaydel metodo di pagamento e restituisce il risultato. Questo dimostra come le interfacce consentano un comportamento polimorfico: il processore non deve conoscere il tipo di pagamento specifico!Main.java: Metti insieme tutto. Riceverai tre input: un numero di carta (ultime 4 cifre), un indirizzo email e un importo di pagamento. Crea unPaymentProcessor, poi usalo per elaborare pagamenti dell’importo indicato sia con unaCreditCardsia con un accountPayPal. Stampa ogni risultato su una riga separata.
Riceverai tre input: le ultime 4 cifre del numero della carta (String), l’email PayPal (String) e l’importo del pagamento (double).
Formatta gli importi con due cifre decimali nel tuo output. Nota come lo stesso PaymentProcessor gestisce tipi di pagamento completamente diversi grazie alla potenza delle interfacce!
Provalo tu
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Leggi i dati in input
String cardNumber = scanner.nextLine(); // Ultime 4 cifre
String email = scanner.nextLine(); // Email PayPal
double amount = scanner.nextDouble(); // Importo del pagamento
// TODO: Crea un PaymentProcessor
// TODO: Crea una CreditCard con cardNumber
// TODO: Crea un account PayPal con email
// TODO: Elabora il pagamento con CreditCard e stampa il risultato
// TODO: Elabora il pagamento con PayPal e stampa il risultato
}
}
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