Menu
CoddyTech

Rangkuman: Pemroses Pembayaran

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 62 dari 110.

challenge icon

Tantangan

Mudah

Mari 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 PaymentMethod dengan property String accountHolder, sebuah konstruktor, dan method abstrak processPayment(double amount)
    • Class CreditCard yang memperluas PaymentMethod dengan property tambahan String cardNumber (hanya 4 digit terakhir). processPayment miliknya harus mencetak Processing $[amount] via Credit Card ****[cardNumber] for [accountHolder]
    • Class PayPal yang memperluas PaymentMethod dengan property tambahan String email. processPayment miliknya harus mencetak Processing $[amount] via PayPal ([email]) for [accountHolder]
    • Class BankTransfer yang memperluas PaymentMethod dengan property tambahan String bankName. processPayment miliknya harus mencetak Processing $[amount] via Bank Transfer from [bankName] for [accountHolder]
    Buat juga fungsi 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 CreditCard menggunakan operator is dan mencetak Credit card payments: [count]
  • main.dart: Impor file pembayaranmu dan tunjukkan pemroses pembayaran:
    • 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'
    • Panggil processAllPayments dengan list ini dan nilai 99.99

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: 2

Coba 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

Latihan sendiri: Compiler Dart online