Menu
Coddy logo textTech

Özet - Ödeme İşlemcisi

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 62 / 110.

challenge icon

Görev

Kolay

Polimorfizmin gücünü gösteren bir ödeme işleme sistemi kuralım! Soyut bir ödeme yöntemi sınıfı ve birkaç somut uygulama oluşturacak, ardından farklı ödeme türlerinden oluşan bir koleksiyonu birleşik bir arayüz üzerinden işleyeceksiniz.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • payments.dart: Ödeme hiyerarşinizi burada tanımlayın:
    • String accountHolder özelliğine, bir kurucuya (constructor) ve soyut bir processPayment(double amount) metoduna sahip soyut bir PaymentMethod sınıfı
    • PaymentMethod sınıfını genişleten ve ek bir String cardNumber (yalnızca son 4 hane) özelliğine sahip bir CreditCard sınıfı. Bu sınıfın processPayment metodu Processing $[amount] via Credit Card ****[cardNumber] for [accountHolder] çıktısını vermelidir
    • PaymentMethod sınıfını genişleten ve ek bir String email özelliğine sahip bir PayPal sınıfı. Bu sınıfın processPayment metodu Processing $[amount] via PayPal ([email]) for [accountHolder] çıktısını vermelidir
    • PaymentMethod sınıfını genişleten ve ek bir String bankName özelliğine sahip bir BankTransfer sınıfı. Bu sınıfın processPayment metodu Processing $[amount] via Bank Transfer from [bankName] for [accountHolder] çıktısını vermelidir
    Ayrıca şu işlemleri yapan bir processAllPayments(List<PaymentMethod> methods, double amount) fonksiyonu oluşturun:
    • Burada count ödeme yöntemlerinin sayısı olmak üzere Processing [count] payments of $[amount] each: çıktısını verir
    • Her bir ödeme yöntemi üzerinde döngü kurar ve processPayment(amount) metodunu çağırır
    • Tüm ödemeleri işledikten sonra, is operatörünü kullanarak kaç tanesinin CreditCard türünde olduğunu sayar ve Credit card payments: [count] çıktısını verir
  • main.dart: Ödemeler dosyanızı içe aktarın ve ödeme işlemcisini gösterin:
    • Şunları içeren bir List<PaymentMethod> oluşturun:
      • 'Alice Smith' için '1234' kart numaralı bir CreditCard
      • 'Bob Jones' için 'bob@email.com' e-postalı bir PayPal
      • 'Carol White' için 'National Bank' bankalı bir BankTransfer
      • 'David Brown' için '5678' kart numaralı bir CreditCard
    • Bu liste ve 99.99 tutarı ile processAllPayments fonksiyonunu çağırın

processAllPayments fonksiyonunun soyut PaymentMethod türüyle nasıl çalıştığına, ancak her ödemenin kendi özel uygulamasına göre nasıl işlendiğine dikkat edin. Sondaki tür kontrolü, gerektiğinde belirli türleri hala nasıl tanımlayabileceğinizi gösterir.

Beklenen çıktı:

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

Kendin dene

import 'payments.dart';

void main() {
  // TODO: Şunları içeren bir List<PaymentMethod> oluşturun:
  // - 'Alice Smith' için '1234' kart numaralı CreditCard
  // - 'Bob Jones' için 'bob@email.com' e-postalı PayPal
  // - 'Carol White' için 'National Bank' bankalı BankTransfer
  // - 'David Brown' için '5678' kart numaralı CreditCard
  
  // TODO: Liste ve 99.99 tutarı ile processAllPayments fonksiyonunu çağırın
}

Nesne Yönelimli Programlama bölümündeki tüm dersler