Menu
Coddy logo textTech

Özet - Ödeme Yöntemleri

Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 26 / 57.

challenge icon

Görev

Orta

Ödeme yöntemlerini bir arayüz etrafında tasarlayın.

  • PaymentMethod; name, fee(amount), pay(amount) (ödeme yapıp yapmadığını döndürür) ve status() gerektirir ve varsayılan bir total(amount) sağlar: tutar artı ücret.
  • Card (adı card) %2 ücret alır (aşağı yuvarlanır), her zaman ödeme yapar ve ödemelerini sayar: card: 2 payment(s).
  • Wallet(balance) (adı wallet) ücret almaz ve yalnızca bakiye toplam tutarı karşılıyorsa ödeme yapar; ardından bu tutarı bakiyeden çıkarır: wallet: 50 left.
  • GiftCard(balance) (adı gift card) da ücret almaz, ancak yalnızca en fazla 100 tutarındaki ödemeleri ve bakiye bunları karşılıyorsa gerçekleştirir: gift card: 40 left.

Ardından, her PaymentMethod'u sırayla deneyen ve ödeme yapan ilk yöntem için paid 100 with wallet (total 100) döndüren, hiçbiri ödeme yapmadığında ise declined döndüren checkout(amount, methods) işlevini tamamlayın.

Sağlanan kod, yöntemleri card,wallet:150,gift:120 olarak okur, ardından her satırda bir tutar alır, her checkout sonucunu yazdırır ve son olarak her yöntemin status() bilgisini yazdırır.

Kodunuz PaymentMethod.kt, Card.kt, Wallet.kt, GiftCard.kt ve Functions.kt dosyalarına yazılmalıdır. Main.kt, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

fun main() {
    // Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
    val input = generateSequence(::readLine).toList()
    val methods = input[0].split(",").map { spec ->
        val p = spec.split(":")
        when (p[0]) {
            "card" -> Card()
            "wallet" -> Wallet(p[1].toInt())
            else -> GiftCard(p[1].toInt())
        }
    }
    for (line in input.drop(1)) println(checkout(line.toInt(), methods))
    for (m in methods) println(m.status())
}

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

Kendi başına pratik yap: Kotlin playground