Skip to main content

5. Visibility Control, Extension, Data Classes - Sealed Class.html

Visibility Control, Extension, Data Classes & Sealed Class

  1. Visibility Control

Visibility control atau sering disebut modifier pada kotlin ini berguna untuk membatasi penggunaan variabel, metode, dan class. Modifier digunakan sebagai accessibility atau hak akses. Access modifier merupakan salah satu implementasi dari OOP yang dimana dapat membatasi resource untuk dapat diakses oleh object - object tertentu, turunannya, ataupun method tertentu.

Dari tabel diatas, terdapat 4 jenis access modifier yang ada di dalam bahasa kotlin, yaitu:

1.    Public

      

Visibility public merupakan access modifier yang paling luas hak aksesnya. Dengan kelebihannya yang sangat luas dalam perihal hak akses sehingga dapat diakses oleh class manapun, biasanya access modifier public ini digunakan untuk method setter dan getter.

2.    Protected

Visibility protected merupakan access modifier yang memperbolehkan hak akses ke dalam class itu sendiri dan class turunannya serta class yang berada dalam satu package

3.    Internal

visibility internal adalah tingkatan visibilitas yang berarti anggota (misalnya, kelas, fungsi, atau properti) hanya dapat diakses oleh elemen-elemen dalam modul yang sama.

4.    Private

Visibility private merupakan access modifier yang bersifat tertutup. Pada access modifier private tidak memberikan akses kemanapun hanya di classnya sendiri. Untuk dapat melakukan pengaksesan atau perubahan data dapat menggunakan setter dan getter.

  1. Extension

Extension dalam pemrograman kotlin memungkinkan kalian untuk menambahkan fungsi baru ke dalam class yang sudah ada tanpa harus mengubah isi dari class tersebut serta tanpa harus mewarisi atau melakukan extend dari class asal. Untuk lebih jelasnya dapat dilihat pada contoh dibawah ini

  1. Data Classes

Data class atau class data merupakan jenis class yang digunakan untuk memudahkan pembuatan class sederhana yang hanya berfungsi sebagai wadah untuk menyimpan dan mengelola data. Class data ditandai dengan keyword data. Sintaks yang digunakan dalam penggunaan class data dapat dilihat pada gambar dibawah ini

Setiap penggunaan dari class data harus memenuhi persyaratan yang ditentukan, seperti:

1.    Primary constructor yang memiliki minimal satu buah parameter

2.    Semua parameter primary constructornya harus ditandai dengan val atau var

3.    Data class tidak boleh abstract, open, sealed atau inner class.

 

Class data secara otomatis menyediakan beberapa fungsi bawaan yang biasa digunakan, seperti:

1.    Copy()

Fungsi copy() digunakan untuk membuat salinan object dengan beberapa properti yang mungkin diperbarui. Fungsi ini memudahkan pembuatan objek dengan perubahan sebagian properti.

Pada contoh di atas value dari jack2 merupakan hasil copy dari value jack, akan tetapi merubah parameter dari age.

2.    hashCode()

Fungsi hashCode() menghasilkan nilai hash unik untuk objek berdasarkan nilai properti. Fungsi ini umumnya digunakan dalam implementasi struktur data seperti HashSet atau HashMap yang membutuhkan operasi pencocokan dan pencarian berdasarkan hash.

3.    equals()

Fungsi equals() membandingkan objek dengan objek lain untuk menentukan kesamaan berdasarkan nilai properti. Secara default, fungsi ini membandingkan semua properti objek secara reflektif.

4.    toString()

Fungsi toString() mengembalikan representasi teks objek dalam bentuk String. Implementasi default akan menghasilkan String yang berisi nama kelas dan nilai properti yang diformat.

  1. Sealed Class

Sealed class merupakan merupakan fitur kotlin yang membatasi hirarki dari class. Kegunaan dari sealed class dalam bahasa Kotlin adalah untuk memodelkan hierarki kelas yang memiliki jumlah terbatas dan terdefinisi sebelumnya. Sealed class membatasi jumlah kelas turunannya dan memungkinkan kita untuk melakukan pemrosesan data dengan cara yang aman dan komprehensif. Berikut tahapan implementasi dari sealed class:

 

 

1.    Mendefinisikan sealed class

Untuk membuat sealed class, kita menggunakan kata kunci "sealed" sebelum kata kunci "class". Contoh sintaks untuk mendefinisikan sealed class dalam Kotlin adalah sebagai berikut:

Mendeklarasikan sealed class Result. Sealed class adalah kelas yang memiliki beberapa turunan (subclass) yang terbatas dan semua turunannya harus dideklarasikan di dalam kelas yang sama. Dalam contoh ini, kita memiliki dua turunan Success dan Error yang merupakan data class.

2.    Pewarisan pada sealed class

Sealed class memungkinkan kita untuk mendefinisikan kelas-kelas turunan yang dapat menjadi pewarisan langsung dari sealed class tersebut. Namun, kelas turunan ini harus dideklarasikan di dalam file yang sama dengan sealed class atau di dalam kelas yang sama dengan sealed class.

Di dalam fungsi processResult(), kita menggunakan ekspresi when untuk melakukan pemrosesan berdasarkan jenis Result. Jika result adalah turunan dari Result.Success, kita mencetak pesan "Success" beserta data yang diberikan. Jika result adalah turunan dari Result.Error, kita mencetak pesan "Error" beserta pesan kesalahan yang diberikan.

3.    Implementasi

Di dalam fungsi main(), kita membuat contoh objek successResult dan errorResult yang merupakan turunan dari Result yaitu Result.Success dan Result.Error. Kemudian, kita memanggil fungsi processResult() untuk memproses masing-masing objek dan mencetak hasilnya ke konsol.

 

Last modified: Thursday, 10 August 2023, 4:16 PM