Kotlin OOP (Class, Constructor, Property, dan Method)

            Selamat datang kembali di blog IDN. Sebelumnya kita sudah belajar tentang kotlin mengenai collection dan operasi-operasi yang ada pada kotlin collection. Maka part selanjutnya kita akan belajar mengenai Object Oriented Programing atau biasa kita sebut dengan OOP. Kotlin merupakan bahasa pemrograman yang multiparadigma. Paradigma dalam bahasa pemrograman merupakan metode atau cara untuk menyelesaikan masalah dengan menggunakan bahasa pemrograman. Kotlin disebut sebagai bahasa pemrograman multiparadigma dikarenakan kotlin mendukung 2 paradigma. Penyelesaian masalah pada kotlin bisa kita selesaikan dengan metode OOP atau Object Oriented Programing dan Functional Programing. Bahasa pemrograman bisa dikatakan memiliki paradigma Object Oriented Programing jika memiliki karakteristik yang dimana salah satunya adalah mengimplementasikan Class dan Object.

            Pada artikel kali ini kita akan membahas salah satu paradigma dari bahasa pemrograman kotlin, yaitu Object Oriented Programing. Materi paling dasar dari sebuah Object Oriented Programing adalah Class, Constructor, Property, dan juga method atau behavior. Nanti kita dibawaha akan membahas dan mempraktekan secara satu-persatu.

            Kita mulai dengan Class. Class merupakan sebuah template kode program yang digunakan untuk membuat sebuah objek, menginisialisasi nilai untuk state atau keadaan, dan mengimplementasi dari behavior atau perilaku dalam class tersebut. Secara singkat class merupakan sebuah blueprint untuk melakukan tugas-tugas diatas. Untuk lebih mudah memahami dari konsep class, kita akan menggunakan contoh mahluk hidup yaitu burung elang. Burung elang merupakan sebuah objek. Burung elang merupakan bagian dari hewan. Hewan ini kita bisa sebut dengan class karena hewan merupakan blueprint yang bisa menghasilkan banyak objek salah satunya adalah burung elang. Sekarang kita akan membuat class dari contoh diaatas.

class Hewan {} 
fun main() {
    val elang = Hewan()

Contoh deklarasi class dan pemanggilannya bisa dilihat pada kode diatas . Penulisan Class ditandai dengan keyword class lalu diikuti dengan nama kelasnya. Aapabila ketika kita ingin membuat instance atau objek dari class tersebut, kita bisa mendeklarasikan objeknya dengan keyword val atau var dan panggil nama kelasnya. Caranya pun sama ketika kita akan membuat objek lagi dari class tersebut.

            Setiap hewan memliki klasifikasnya masing-masing. Contoh hewan tersebut memiliki tangan, memiliki kaki, bergerak menggunakan sayap, dan sebagainya. Dalam hal tersebut, bagian-bagian dari hewan tersebut merupakan representasi dari property atau member. Untuk membuat property dalam class tidak memiliki batas jumlah dan dibuat sesuai kebutuhan saja.

class Hewan() {
    var nama:String = “elang”
    var habitat:String = “Udara”
    var jenisMakanan:String = “Karnivora”
}
fun main() {
    val elang = Hewan()

Sebelum membuat sebuah property pada sebuah class, kita harus tentukan hal-hal apa saja yang ingin kita gunakan sebagai property. Dalam contoh kasus diatas, saya membuat property dari class hewan yang isinya diantaranya adalah nama, habitat, dan jenis makanan. Penulisan property diletakan didalam curly braces atau kurung kurawal pada class tersebut. Setelah itu kita deklarasikan property menggunakan keyword val atau var beserta dengan tipedata property tersebut. Jangan lupa untuk mengisi nilai dari property.

Disini kita menemukan masalah, apabila kita membuat sebuah objek baru dari class hewan tersebut yang bernama Paus, maka isi dari property itu tidak valid dikarenakan class tersebut hanya memiliki property dari objek elang. Solusinya kita bisa gunakan yang namanya constructor. Dengan constructor kita bisa mebuat tiap nilai dari property objek sesuai dengan objek tersebut.

class Hewan(nama:String,habitat:String,jenisMakanan:String) {
    var nama:String = nama
    var habitat:String = habitat
    var jenisMakanan:String = jenisMakanan

fun main() {
    val elang = Hewan(“Elang”,”Udara”,”Karnivora”)
    val paus = Hewan(“Paus”,”Air”,”Karnivora”)
     println(“Hewan ${elang.nama} dengan habitat di
${elang.habitat}”)
    println(“Hewan ${paus.nama} dengan habitat di
${paus.habitat}”)} 
// result à Hewan Elang dengan habitat di Udara
// result à Hewan Paus dengan habitat di Air  

 Dari contoh diatas, objek elang dan paus memiliki nilai property yang berbeda-beda. Untuk membuktikannya kita bisa mengakses nilai property tersebut. Constructor ditulis sesudah nama classnya dan dibungkus dengan nama-nama constructornya beserta dengan tipe datanya. Lalu pada propertinya kita isi dari constructor tersebut. Jangan lupa pada saat pemanggilan classnya memasukan nilai constructor yang akan dijadikan nilai property pada class tersebut. Sebenarnya untuk mempersingkat kode, kita bisa menuliskan property pada constructornya sehingga kode yang ditulis lebih ringkas dan bersih.

class Hewan(var nama:String,var habitat:String,var jenisMakanan:String) {} 

            Pada constructor kita bisa membuat nilai default pada property tersebut. Dalam artian ketika kita memanggil class tersebut, nilai yang memiliki nilai default tidak perlu kita isi dan juga ketika kita mengakses dari property tersebut maka yang akan muncul adalah nilai default yang sudah ditetapkan. Namun apabila ketika pemanggilan class kita isi, maka yang akan mucul adalah nilai yang kita isi pada pemanggilan class tersebut.

            Setiap property class pada kotlin memiliki fungsi getter dan setter, akan tetapi class pada kotlin sudah menyediakan langsung fungsi getter dan setter dan tidak terlihat penuisan kodenya. Berbeda dengan pendahulunya yaitu bahas pemrograman java yang dimana kita harus mendefiniskan fungsi setter dan getternya pada saat membuat property class. Akan tetapi jika anda ingin memodifikasi nilai property class dengan fungsi setter dan getter,disini kita bisa meng-override kedua fungsi tersebut. Dalam fungsi getter, kita bisa memodifikasi nilai ketika property tersebut diambil dan juga pada fungsi setter, kita bisa memodifikasi nilai property yang akan diset atau diatur kedalam property tersebut.

class Hewan(
    nama: String,
    var habitat: String,
    var jenisMakanan: String,
    var jumlahMakanan: Int = 0
) {
    var nama:String = nama
    get() {
        return “Hewan $field”
    }
    set(value) {
        field = value
    }
     fun eat(makanan:String)= println(“${nama} sedang makan $makanan”)

fun main() {
    val elang = Hewan(
        “Elang”,
        “Udara”,
        “Karnivora”,
        30
    )
     elang.eat(“daging”)
     //result –> Hewan Elang sedang makan daging}  

Penulisan fungsi setter dan getternya berada dibawah pendeklarasian property class tersebut. Dalam kode diatas, bisa dilihat didalam fungsi setter dan getternya terdapat keyword field. Field tersebut merujuk pada nilai property yang kita assign pada property class tersebut.

class Hewan(
    var nama: String,
    var habitat: String,
    var jenisMakanan: String,
    var jumlahMakanan: Int = 0
) {}
fun main() {
    val elang = Hewan(
        “Elang”,
        “Udara”,
        “Karnivora”,
        30
    )
     println(“Jumlah makanan ${elang.nama} adalah
${elang.jumlahMakanan}”)
}
// result à Jumlah makanan elang adalah 30

            Setiap class memiliki behavior atau method masing-masing. Misal dengan contoh kasus diatas, elang memiliki kebiasaan terbang, mengintai mangsa, makan, dan juga sebagianya. Behavior tersebut berbentuk function. Pendeklarasian fungsi nya juga sama seperti fungsi biasa. Menggunakan kata kunci fun, membuat parameter, dan menentukan nilai kembalian dari fungsi tersebut. Kita juga bisa menuliskan secara singkat fungsi tersebut tanpa body fungsinya.

class Hewan(
    var nama: String,
    var habitat: String,
    var jenisMakanan: String,
    var jumlahMakanan: Int = 0
) {
    fun eat(makanan:String)= println(“${nama} sedang memakan $makanan”)
}
fun main() {
    val elang = Hewan(
        “Elang”,
        “Udara”,
        “Karnivora”,
        30
    )
    elang.eat(“daging”)
        //result –> Elang sedang memakan daging
}  

Sekian untuk pembahasan mengenai kotlin Object Oriented Programing kali ini. Selanjutnya kita akan membahas tentang kotlin OOP lebih dalam lagi lagi. Oleh karna itu tetep nantikan artikel pada blog IDN selanjutnya.

Tertarik mengikuti training kotlin di IDN.ID? Cek disini. Selain training kotlin, kami juga menyediakan berbagai pilihan training klik disini untuk informasi lebih lengkapnya.

Penulis : Exfar Nanda Micola