hnzbyte

Untitled

Jul 16th, 2023
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.05 KB | None | 0 0
  1. // Definisikan kelas dasar 'Emas' dengan properti 'perGram', 'min', dan 'max'
  2. open class Emas(
  3.     open val perGram: Double = 0.0,
  4.     open val min: Double = 0.0,
  5.     open val max: Double = 0.0
  6. ) {
  7.     // Definisikan metode untuk mengecek apakah ada NPWP
  8.     open fun hasNPWP(input: String): Boolean {
  9.         return input == "y"
  10.     }
  11.  
  12.     // Definisikan metode untuk menghitung pajak
  13.     fun hitungPajak(hasNPWP: Boolean, total: Double): Double {
  14.         val pajak: Double = if (hasNPWP) 0.0015 else 0.03
  15.         return total * pajak
  16.     }
  17. }
  18.  
  19. // Buat subkelas 'Transaksi' yang mewarisi dari 'Emas'
  20. class Transaksi(perGram: Double, min: Double, max: Double, private val transaksi: String) : Emas(perGram, min, max) {
  21.  
  22.     // Definisikan properti untuk mendapatkan perGram, min, dan max dari kelas induk
  23.     val getPerGram: Double
  24.         get() = perGram
  25.  
  26.     val getMin: Double
  27.         get() = min
  28.  
  29.     val getMax: Double
  30.         get() = max
  31.  
  32.    // Definisikan method untuk menghitung TotalAkhir
  33.     protected fun hitungTotal(grams: Double, hasNPWP: Boolean): Map<String, Int> {
  34.         val totalHarga: Double = perGram * grams
  35.         val pajak: Double = hitungPajak(hasNPWP, totalHarga)
  36.         return mapOf("hargaDiskon" to (totalHarga - pajak).toInt(), "totalHarga" to totalHarga.toInt(), "pajak" to pajak.toInt())
  37.     }
  38.  
  39.     // Definisikan method untuk menampilkan output
  40.     public fun mulai(grams: Double, hasNPWP: Boolean) {
  41.         val total: Map<String, Int> = hitungTotal(grams, hasNPWP)
  42.  
  43.         println("Harga $transaksi : ")
  44.         println("Total : " + total["totalHarga"])
  45.         println("Diskon : " + total["pajak"])
  46.         println("Harga Diskon : " + total["hargaDiskon"])
  47.  
  48.     }
  49. }
  50.  
  51. fun main(args: Array<String>) {
  52.     if (args.isEmpty() || args.size != 3) {
  53.         println("Penggunaan: java -jar <nama_file_jar>.jar <aksi(jual/beli)> <grams> <hasNPWP(y/n)>")
  54.         return
  55.     }
  56.  
  57.     if (args[2].toString() != "y" && args[2].toString() != "n") {
  58.         println("Tidak ada perintah yang sesuai!")
  59.         println("Penggunaan: java -jar <nama_file_jar>.jar <aksi(jual/beli)> <grams> <hasNPWP(y/n)>")
  60.         return
  61.     }
  62.  
  63.     //Inisialissasi Objek
  64.     val emas = Emas()
  65.     val beli = Transaksi(850000.00, 0.05, 80.0, "Beli")
  66.     val jual = Transaksi(900000.00, 1.0, 100.0, "Jual")
  67.  
  68.     // Mendapatkan Aksi(jual/beli), jumlah gram, dan punya NPMW atau tidak dari Args
  69.     val aksi: String = args[0].toString()
  70.     val grams: Boolean = args[1].toDouble()
  71.     val hasNPWP: String = emas.hasNPWP(args[2].toString())
  72.  
  73.     when (aksi) {
  74.         "jual" -> {
  75.             if (grams in jual.getMin..jual.getMax) jual.mulai(grams, hasNPWP) else print("Jumlah gram harus berada dalam range ${beli.getMin} hingga ${beli.getMax}.")
  76.         }
  77.         "beli" -> {
  78.             if (grams in beli.getMin..beli.getMax) beli.mulai(grams, hasNPWP) else print("Jumlah gram harus berada dalam range ${beli.getMin} hingga ${beli.getMax}.")
  79.         }
  80.         else -> {
  81.             print("Aksi tidak valid (jual/beli)")
  82.         }
  83.     }
  84.  
  85. }
Advertisement
Add Comment
Please, Sign In to add comment