Pemrograman Kotlin
Sunaryo Winardi, S.Kom., M.TI.
Expressiveness
• Dengan Kotlin, jauh lebih mudah untuk menghindari
boilerplate karena Bahasa kotlin menutupi pola paling
umum secara default. Misalnya, di Java, jika kita ingin
membuat kelas data, kita perlu menulis (atau setidaknya
menghasilkan) kode ini:
Pengenalan Kotlin
class Artis{ name) {
private long id; this.name = name;
private String name; }
private int Age; public int getAge() {
public long getId() { return Age;
return id; }
} public void setAge(int age)
public void setId(long id) {
{ Age = age;
this.id = id; }
} }
public String getName() {
return name;
}
public void setName(String
Pengenalan Kotlin
• Dengan Kotlin, untuk membuat kelas data, anda hanya perlu
melakukan :
data class Artis(
var id:Long,
var name:String,
var Age: Int
)
}
Pengenalan Kotlin
Extension functions
• Dengan extension functions, anda dapat membuat fungsi baru anda,
menggunakan fungsi yang telah ada pada sebuah kelas.
• Dengan cara ini, anda dapat membuat fungsi dari kelas lain yang lebih
sesuai dengan projek anda. Sebagai contoh, anda dapat menambahkan
sebuah metode toast pada fragment anda menggunakan :
fun String.upperCaseFirstLetter() : String {
return this.substring(0, 1).toUpperCase()
.plus(this.substring(1))
}
16
Pengenalan Kotlin
Lambda
• Lambda expression atau lambda merupakan penggunaan
fungsi tanpa nama. Biasanya ditandai dengan { }
• Contoh:
val greeting = { println("Hello!")}
greeting()
//Java
int a =10;
double b = a;
//kotlin
var a : Int = 10;
var b : Double = a.toDouble();
Variable
• Character (Char) tidak dapat langsung digunakan sebagai
angka.
• Anda harus mengkonversi nilai char menjadi angka jika
diperlukan:
//Java
char c = 'a';
int i = c;
//kotlin
var c : Char = 'a';
var i : Int = c.toInt();
Variable
• Operator arikmatika bitwise berbeda, yaitu menggunakan
operator “and” dan“or “ pada kotlin:
//Java
int flag1 = 10;
int flag2 = 20;
int bitwiseOr = flag1 | flag2;
int bitwiseAnd = flag1 & flag2;
//kotlin
var flag1 : Int = 10
var flag2 : Int = 20
var bitwiseOr = flag1 or flag2
var bitwiseAnd = flag1 and flag2
Variable
• Literal dapat memberikan informasi tentang tipe data pada
variable kotlin, sehingga bukan keharusan umum di Kotlin
untuk memberikan jenis variabel, melainkan kita cukup
memberikan beberapa petunjuk kepada kompilator untuk
membiarkan compiler menyimpulkan tipe dari literal.
//kotlin
val i = 10 // Integer
val iHex = 0x0f // hexadecimal
val l = 3L // Long
val d = 3.5 // Double
val f = 3.5F // Float
Variable
• Pada Kotlin, sebuah objek String dapat diakses sebagai array
dan anda dapat melakukan iterasi pada objek string:
fun main() {
var kata = "Kotlin"
var huruf = kata[2]
for(huruf in kata){
println(huruf.toString())
}
}
Variable
Variable
• Variables pada Kotlin dapat didefinisikan sebagai variable (var)
atau konstanta (val).
• Val sama sepeti variable final di java, yaitu sebuah objek yang
tidak dapat diubah kondisinya setekah diinisialisasi.
• Pada Android, selalu gunakan val secukupnya, karena ada kondisi
dalam implementasi val akan menjadi sulit diterapkan.
• Seperti yang dibahas pada slide sebelumnya, anda dapat
menghindari pendeklarasian tipe data dan membiarkan compiler
yang menentukan tipe data berdasarkan nilai yang diberikan,
yang akan memudahkan anda dalam melakukan modifikasi
variable.
Variable
Variable
val s = "kotlin"
val j = 1
fun main() {
var nama:String="adi";
var umur:Int=27;
println("Nama : $nama \n Umur : $umur \n" +
" contoh templates expression")
}
init {
name = personName.toUpperCase();
if(personAge<=0)
age = 0
}
}
Mendeklarasikan kelas
• Jika konstraktor anda, memiliki 2 parameter, maka anda
akan menginisialisasi kelas dengan mengirimkan 2
paramater:
fun main() {
var person1 : Person = Person("Agus",10)
println(person1.name + "\n" +person1.age)
println("${person1.name}\n${person1.age}")
}
Mendeklarasikan kelas
• Atau anda dapat memberikan nilai default sehingga
penggunaan konstraktor anda lebih fleksible
class Person(personName: String = "no Name",
personAge: Int =0){
var name:String = personName
var age:Int = personAge
init {
name = personName.toUpperCase();
if(personAge<=0)
age = 0;
}
}
Mendeklarasikan kelas
• Maka anda dapat menggunakan konstraktor kelas anda
dengan cara:
fun main() {
var person1 : Person = Person()
println(person1.name + "\n" +person1.age)
println("${person1.name}\n${person1.age}")
}
Mendeklarasikan kelas
• Anda dapat juga membentuk 2 konstraktor atau lebih
dengan cara (jarang digunakan pada Kotlin):
class Person{
var name :String = ""
var age : Int = 0
constructor(personName: String){
//baris kode
}
constructor(personAge: Int){
//baris kode
}
constructor(personName: String,personAge: Int){
//baris kode
}
}
Inheritance
• Secara umum, kelas tidak dapat diturunkan, sehingga untuk
memunginkan sebuah kelas untuk diturunkan ke kelas lain,
anda perlu mendeklarasikan sebuah kelas induk sebagai
open atau abstract:
open class Person(personName: String = "no Name",
personAge: Int =0){
var name:String = personName
var age:Int = personAge
}
fun main() {
var tmp = outter.inner()
println(tmp.a.toString())
}
Konsep Extra
Enum
• Kotlin juga memberikan pengimplementasian
enum:
enum class hari{
senin,selasa,rabu,kamis,
jumat,sabtu,minggu
}
open class Day{
fun getHari() = hari.senin //mengembalikan senin
fun getTotalHari() =(hari.values().size) //mengembalikan 7
fun getNamaHari() =(hari.valueOf("senin")) //mengembalikan senin
fun getAllhari(): String {
var hasil =""
for (enum in hari.values()) {
hasil+=enum.name+" "
}
return hasil
}
}
Konsep Extra
Exception
• Pada Kotlin, semua exception
mengiplementasikan Throwable, yang
memiliki pesan kesalahan.
• Penggunaan exception sama dengan
penggunaannya pada java, yaitu berada
dalam blok try/catch
Konsep Extra
Exception
fun main() {
var amount = 600
try {
if (amount < 1000)
throw Exception("Your balance $amount
is less than minimum balance 1000.")
} catch (e: Exception) {
toast(e.message.toString())
}
}