Ulasan: Metode Pembayaran
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 26 dari 57.
Tantangan
SedangRancang payment method dengan antarmuka.
PaymentMethodmewajibkanname,fee(amount),pay(amount)(mengembalikan apakah pembayaran berhasil) danstatus(), serta memberikantotal(amount)default: jumlah ditambah biaya.Card(namecard) mengenakan biaya 2% (dibulatkan ke bawah), selalu membayar dan menghitung jumlah pembayarannya:card: 2 payment(s).Wallet(balance)(namewallet) tidak mengenakan biaya dan hanya membayar jika saldo mencukupi total, yang kemudian dikurangkan dari saldo:wallet: 50 left.GiftCard(balance)(namegift card) juga tidak mengenakan biaya, tetapi hanya membayar jumlah paling banyak 100, dan hanya jika saldo mencukupi:gift card: 40 left.
Lalu lengkapi checkout(amount, methods), yang mencoba setiap PaymentMethod secara berurutan dan mengembalikan paid 100 with wallet (total 100) untuk metode pertama yang berhasil membayar, atau declined jika tidak ada yang berhasil.
Kode yang disediakan membaca metode seperti card,wallet:150,gift:120, lalu membaca satu jumlah pada setiap baris, mencetak hasil setiap checkout, dan terakhir mencetak status() setiap metode.
Tulis kodemu di PaymentMethod.kt, Card.kt, Wallet.kt, GiftCard.kt dan Functions.kt. Main.kt berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
fun main() {
// Kode input/output yang disediakan: biarkan apa adanya
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())
}
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classKonstruktor utamaBlok init dan validasiKonstruktor sekunderRingkasan: Kartu Perpustakaan2property dan Enkapsulasi
Accessor KustomModifier VisibilitasSetter Privatlazy dan lateinitRingkasan: Rekening Bank5Interface
Mendeklarasikan Interfacemethod DefaultBeberapa InterfaceInterface sebagai TipeUlasan: Metode Pembayaran11Proyek: Pengelolaan Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Kotlin