Rekap: Sistem Pembayaran
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 40 dari 87.
Tantangan
MudahMari kita bangun sistem pemrosesan pembayaran lengkap yang menggabungkan semua yang telah kamu pelajari tentang interface di bab ini. Kamu akan membuat sistem fleksibel yang dapat memproses berbagai metode pembayaran secara seragam melalui interface umum.
Kamu akan mengatur kodemu dalam lima file:
Payable.java: Definisikan interface inti yang harus diimplementasikan oleh semua metode pembayaran. Interface ini harus mendeklarasikan satu methodpay(double amount)yang mengembalikan String untuk menjelaskan tindakan pembayaran.CreditCard.java: Buat class yang mengimplementasikanPayabledan mewakili pembayaran kartu kredit. CreditCard memiliki fieldcardNumber(String) yang menyimpan 4 digit terakhir. Sertakan constructor untuk menginisialisasinya. Methodpayharus mengembalikan:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: Buat class lain yang mengimplementasikanPayableuntuk pembayaran PayPal. Akun PayPal memiliki fieldemail(String). Sertakan constructor untuk menginisialisasinya. Methodpayharus mengembalikan:Paid [amount] via PayPal account [email]PaymentProcessor.java: Buat class pemroses yang dapat menangani objectPayableapa pun. Class ini harus memiliki methodprocessPayment(Payable paymentMethod, double amount)yang memanggil methodpaypada metode pembayaran dan mengembalikan hasilnya. Ini menunjukkan bagaimana interface memungkinkan perilaku polimorfik: pemroses tidak perlu mengetahui tipe pembayaran tertentu!Main.java: Satukan semuanya. Kamu akan menerima tiga input: nomor kartu (4 digit terakhir), alamat email, dan jumlah pembayaran. BuatPaymentProcessor, lalu gunakan untuk memproses pembayaran dengan akunCreditCarddanPayPaluntuk jumlah yang diberikan. Cetak setiap hasil pada baris terpisah.
Kamu akan menerima tiga input: 4 digit terakhir nomor kartu (String), email PayPal (String), dan jumlah pembayaran (double).
Format jumlah dengan dua angka desimal pada outputmu. Perhatikan bagaimana PaymentProcessor yang sama menangani tipe pembayaran yang benar-benar berbeda dengan memanfaatkan interface!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca input
String cardNumber = scanner.nextLine(); // 4 digit terakhir
String email = scanner.nextLine(); // Email PayPal
double amount = scanner.nextDouble(); // Jumlah pembayaran
// TODO: Buat PaymentProcessor
// TODO: Buat CreditCard dengan cardNumber
// TODO: Buat akun PayPal dengan email
// TODO: Proses pembayaran dengan CreditCard dan cetak hasilnya
// TODO: Proses pembayaran dengan PayPal dan cetak hasilnya
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online