Rangkuman: Pemroses Pembayaran
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 62 dari 110.
Tantangan
MudahMari bangun sistem pemrosesan pembayaran yang menunjukkan kekuatan polimorfisme! Kamu akan membuat class metode pembayaran abstrak dan beberapa implementasi konkret, lalu memproses kumpulan berbagai tipe pembayaran melalui antarmuka terpadu.
Kamu akan mengatur kodemu ke dalam dua file:
payments.dart: Definisikan hierarki pembayaranmu di sini:- Class abstrak
PaymentMethoddengan propertyString accountHolder, sebuah konstruktor, dan method abstrakprocessPayment(double amount) - Class
CreditCardyang memperluasPaymentMethoddengan property tambahanString cardNumber(hanya 4 digit terakhir).processPaymentmiliknya harus mencetakProcessing $[amount] via Credit Card ****[cardNumber] for [accountHolder] - Class
PayPalyang memperluasPaymentMethoddengan property tambahanString email.processPaymentmiliknya harus mencetakProcessing $[amount] via PayPal ([email]) for [accountHolder] - Class
BankTransferyang memperluasPaymentMethoddengan property tambahanString bankName.processPaymentmiliknya harus mencetakProcessing $[amount] via Bank Transfer from [bankName] for [accountHolder]
processAllPayments(List<PaymentMethod> methods, double amount)yang:- Mencetak
Processing [count] payments of $[amount] each:, dengan count sebagai jumlah metode pembayaran - Melakukan iterasi pada setiap metode pembayaran dan memanggil
processPayment(amount) - Setelah memproses semua pembayaran, menghitung berapa yang bertipe
CreditCardmenggunakan operatorisdan mencetakCredit card payments: [count]
- Class abstrak
main.dart: Impor file pembayaranmu dan tunjukkan pemroses pembayaran:- Buat
List<PaymentMethod>yang berisi:CreditCarduntuk'Alice Smith'dengan nomor kartu'1234'PayPaluntuk'Bob Jones'dengan email'bob@email.com'BankTransferuntuk'Carol White'dengan bank'National Bank'CreditCarduntuk'David Brown'dengan nomor kartu'5678'
- Panggil
processAllPaymentsdengan list ini dan nilai99.99
- Buat
Perhatikan bagaimana fungsi processAllPayments bekerja dengan tipe abstrak PaymentMethod, tetapi setiap pembayaran diproses sesuai implementasi spesifiknya. Pemeriksaan tipe di akhir menunjukkan bahwa kamu tetap dapat mengenali tipe tertentu saat diperlukan.
Output yang diharapkan:
Processing 4 payments of $99.99 each:
Processing $99.99 via Credit Card ****1234 for Alice Smith
Processing $99.99 via PayPal (bob@email.com) for Bob Jones
Processing $99.99 via Bank Transfer from National Bank for Carol White
Processing $99.99 via Credit Card ****5678 for David Brown
Credit card payments: 2Coba sendiri
import 'payments.dart';
void main() {
// TODO: Buat List<PaymentMethod> yang berisi:
// - CreditCard untuk 'Alice Smith' dengan nomor kartu '1234'
// - PayPal untuk 'Bob Jones' dengan email 'bob@email.com'
// - BankTransfer untuk 'Carol White' dengan bank 'National Bank'
// - CreditCard untuk 'David Brown' dengan nomor kartu '5678'
// TODO: Panggil processAllPayments dengan list tersebut dan jumlah 99.99
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online