Özet - Ödeme Yöntemleri
Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 26 / 57.
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) vestatus()gerektirir ve varsayılan birtotal(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
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaBirincil Yapıcılarinit Blokları ve Doğrulamaİkincil YapıcılarTekrar - Kütüphane Kartı4Kalıtım
Açık Sınıflar ve Alt SınıflarÜyeleri Geçersiz Kılmasuper ve YapıcılarSoyut SınıflarTekrar - Personel Dizini2Özellikler ve Kapsülleme
Özel ErişimcilerGörünürlük DeğiştiricileriÖzel Setter'larlazy ve lateinitTekrar - Banka Hesabı5Arayüzler
Arayüz BildirimleriVarsayılan MetotlarBirden Çok ArayüzTür Olarak ArayüzlerÖzet - Ödeme Yöntemleri8Generic'ler
Generic FonksiyonlarGeneric SınıflarTür Kısıtlamalarıin ve out ile VaryansTekrar - Öncelik Kuyruğu11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Kotlin playground