Belajar Bahasa Pemrograman Kotlin mudah

Belajar “Interface” Pada Kotlin [part 8]

Kali ini kita akan belajar menggunakan interface pada bahasa pemrograman kotlin.

interface secara artian “tampilan antarmuka”, secara umum sih bisa dikatakan sebagai penghubung dari sesuatu yang abstrak dengan yang nyata.

seperti halnya antarmuka sebuah Ponsel atau remot yang memiliki tombol-tombol, tombol-tombol tersebut juga bisa saja memiliki fungsi berbeda di tiap ponsel atau remot.

Anggap kalian punya smartphone, hp si A jika menekan volume atas (+) dua kali akan melewati lagu yang diputar, sedangkan hp si B menekan volume atas (+) dua kali tidak terjadi apa-apa dan ternyata pada hp si B cukup menahan volume atas (+) barulah lagu akan di skip.

Jadi walaupun sama-sama tombol volume atas (+) tapi implementasinya berbeda, sederhananya kurang lebih sih seperti itu yang dimaksud dengan interface pada OOP ini.

Interface tiap ATM – img by emitennews.com

Interface pada kotlin dapat berisikan deklarasi dari method abstrak, begitu juga methodnya yang bisa berisikan implementasi, yang membuatnya bisa lebih fleksibel dari Java yang hanya bisa menuliskan methodnya saja tanpa bisa diimplementasikan langsung di dalam interface tersebut.

Menggunakan interface

interface AtmKu {
    val namaATM : String
    fun masukkanKartu()
}

class ATMbnu() : AtmKu{
        override val namaATM: String
        get() = "BNU"

    override fun masukkanKartu() {
        println("Selamat datang di $namaATM")
    }
 }

class ATMmandira() : AtmKu{
    override val namaATM: String
        get() = "Mandira"

    override fun masukkanKartu() {
        println("Selamat datang di $namaATM")
    }
}

fun main(){
    val atm1 = ATMbnu()
    val atm2 = ATMmandira()
    atm1.masukkanKartu()
    atm2.masukkanKartu()
}

Output :
>> Selamat datang di BNU
>> Selamat datang di Mandira

Baris 6 & 15 : Cara mengimplementasikan interface pada class dalam kotlin.

Setiap menggunakan properti dan method yang ada di dalam interface kedalam class harus di awali dengan keyword “override“.

Implementasi method dalam interface

Di dalam kotlin kita juga bisa mengisi method yang ada di dalam interface, jadi tidak hanya sekedar wadah kosong.

interface AtmKu {
    val namaATM : String
    fun masukkanKartu(){
        println("Masukkan Kartu Anda")
    }
}

class ATMbnu() : AtmKu {
    override val namaATM: String
        get() = "BNU"

    override fun masukkanKartu() {
        super.masukkanKartu()
        println("Selamat Datang di ATM $namaATM")
    }
}

fun main(){
    val atm1 = ATMbnu()
    atm1.masukkanKartu()
}

Output :
>> Masukkan Kartu Anda
>> Selamat Datang di ATM BNU

Tips : Jika ingin menghemat waktu dalam penulisan, tekan “CTRL+O” di dalam class yang sudah terimplementasi interfacenya lalu centang nama properti dan methodnya lalu enter, maka kita akan dibuatkan nama properti dan method secara otomatis berdasarkan interface yang dibuat.

Menggunakan banyak interface dalam sebuah Class

interface AtmKu {
    val namaATM : String
    fun masukkanKartu(){
        println("Masukkan Kartu Anda")
    }
}

interface Nasabah{
    fun proFil()
}

class ATMbnu() : AtmKu,Nasabah { //2 interface di class ini
    override val namaATM: String
        get() = "BNU"

    override fun masukkanKartu() {
        super.masukkanKartu()
        println("Selamat Datang di ATM $namaATM")
    }

    override fun proFil() {
        println("Halo Budi !!")
    }
}

fun main(){
    val atm1 = ATMbnu()
    atm1.masukkanKartu()
    atm1.proFil()
}

Output :
>> Masukkan Kartu Anda
>> Selamat Datang di ATM BNU
>> Halo Budi !!

Baris 12 : Menambah interface lainnya ke dalam Class

Contoh lainnya

interface Hape{
    fun hpNyala()
    fun hpMati()
    fun volUp()
    fun volDown()
    fun volDownPower()
    fun volUpPower()
}

class Pengguna(){

    fun nyalakanHape(ponsel:Hape){
        ponsel.hpNyala()
    }

    fun matikanHape(ponsel:Hape){
        ponsel.hpMati()
    }

    fun keraskanVolume(ponsel:Hape){
        ponsel.volUp()
    }

    fun kecilkanVolume(ponsel:Hape){
        ponsel.volDown()
    }
    fun TangKapLayar(ponsel:Hape){
        ponsel.volDownPower()
    }
    fun RekamLayar(ponsel:Hape){
        ponsel.volUpPower()
    }
}

class HPsamsul : Hape{

    private var powerNya = false

    override fun hpNyala() {
        powerNya = true
        println("Hape menyala..")
        println("Anda sedang Menggunakan Samsul")
    }

    override fun hpMati() {
        powerNya = false
        println("Hape dimatikan..")
    }

    override fun volUp() {
        if(powerNya){
            println("volume dinaikkan")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }

    override fun volDown() {
        if(powerNya){
            println("volume diturunkan")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }

    override fun volDownPower() {
        if(powerNya){
            println("Anda Mengambil ScreenShoot !")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }

    override fun volUpPower() {
        if(powerNya){
            println("Anda Merekam Layar !")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }
}

class HPsiomay : Hape{

    private var powerNya = false

    override fun hpNyala() {
        powerNya = true
        println("Hape menyala..")
        println("Anda sedang Menggunakan Siomay")
    }

    override fun hpMati() {
        powerNya = false
        println("Hape dimatikan..")
    }

    override fun volUp() {
        if(powerNya){
            println("volume dinaikkan")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }

    override fun volDown() {
        if(powerNya){
            println("volume diturunkan")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }

    override fun volDownPower() {
        if(powerNya){
            println("Anda Mengambil ScreenShoot")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }

    override fun volUpPower() {
        if(powerNya){
            println("fungsi ini tidak tersedia..")
        }
        else{
            println("Harap Nyalakan hapenya dulu..")
        }
    }
}

fun main(){

    val user = Pengguna()
    val samsul = HPsamsul()
    val siomay = HPsiomay()

    user.nyalakanHape(siomay)
    user.TangKapLayar(siomay)
    user.RekamLayar(siomay)
    println()
    user.nyalakanHape(samsul)
    user.TangKapLayar(samsul)
    user.RekamLayar(samsul)
}

Output :
>> Hape menyala..
>> Anda sedang Menggunakan Siomay
>> Anda Mengambil ScreenShoot
>> fungsi ini tidak tersedia..
>>
>> Hape menyala..
>> Anda sedang Menggunakan Samsul
>> Anda Mengambil ScreenShoot !
>> Anda Merekam Layar !

Contoh-contoh kode di atas sengaja saya gabung satu file biar gampang, kedepannya jika perlu silahkan dipisah file untuk tiap interface dan class yang dibuat.

Leave a Reply

Your email address will not be published. Required fields are marked *