Anda di halaman 1dari 49

Pengenalan Bahasa

Pemrograman Kotlin
Sunaryo Winardi, S.Kom., M.TI.

PRODI. TEKNIK INFORMATIKA (S-1)


Elearning
http://www.mikroskil.ac.id/elearning
• Kelas MW-A Pagi
• #MWApg2018
Pembahasan
• Pengenalan Kotlin
• Variable
• String templates
• Kelas
• Konsep Extra
Pengenalan Kotlin
• Pada tahun 2017, Google I/O telah mengumumkan
bahwa Kotlin telah menjadi bahasa pemrograman
resmi untuk membagun aplikasi android apps.
• Artinya Bahasa Kotlin didukung penuh oleh Google
yang memastikan semua fitur terbaru untuk
Android akan dapat digunakan menggunakan
Bahasa Kotlin.
• Anda masih dimungkinkan untuk membangun
aplikasi menggunakan Bahasa Java
Pengenalan Kotlin
Kenapa Kotlin?
• Kotlin dapat dapat membawa Anda selangkah lebih
maju dan membuat kode Anda jauh lebih baik.
Jadi apa itu Kotlin?
• Kotlin merupakan Bahasa pemrograman dari
JetBrains5 (yang membuat IntelliJ IDEA)
• Android Studio sendiri menggunakan IDE yang
didasari dengan IDEA IntelliJ
• JetBrains mendesain Kotlin dengan memastikan
penerapan Java, dengan IntelliJ sebagai IDE utama.
Pengenalan Kotlin
• Ada 2 faktor utama yang menyebabkan Kotlin dapat
dengan mudah diterapkan pada pembangunan
Android, yaitu:
• Kotlin sangat intuitif dan mudah dipelajari untuk
pengembang Java. Sebagian besar Bahasa Kotlin sudah
akrab (mirip dengan Bahasa pemrograman lain)
sehingga penguasaannya dapat dilakukan dengan cepat
• Integrasi total dengan IDE yang bisa didapatkan secara
gratis. Android Studio sendiri dapat anda gunakan
untuk meng-compile dan menjakalankan kode Kotlin.
Projek Android Studio dengan Kotlin
• Untuk Sebelum masuk ke Android Studio, pastikan
Anda melakukan semua proses yang ada pada
modul ini, untuk memastikan bahwa anda
mengetahui apa yang dibutuhkan projek anda
dalam mebangun aplikasi menggunakan Kotlin
Pengenalan Kotlin
• Apa kelebihan Kotlin?
• Anda dapat menjalankan banyak perintah, hanya dengan menuliskan
sediit kode
• Kotlin bersifat null safe, yang artinya anda dapat menangani nilai null
pada saat compile time, untuk mencegah execution time exceptions.
• Kotlin merupakan object-oriented language, tetapi seperti Bahasa
pemograman modern, kotlin akan banyak menggunakan konsep fungsi
seperti lambda expressions untuk menyelesaikan masalah collection
• Memanfaatkan extension functions, yang artinya anda tidak
memerlukan proses extend pada kelas untuk menambahkan fitur
tertentu.
• Sangat dimungkinkan untuk membuat projek yang menggunakan dua
bahasa, Kotlin dan Java.
Pengenalan Kotlin
• Kedepannya, kita akan dapat mengimplementasikna Bahasa
kotlin, bukan hanya untuk android, tetapi untuk server, web
dan bahkan iOS.
• Jadi, anda dapat melihat perkembangan Kotlin kedepannya,
sehingga mempelajari Kotlin dapat menjadi Bahasa yang
anda gunakan dalam mengembangkan aplikasi pada banyak
platform, yang menjadikan Bahasa ini memiliki nilai jual
yang tinggi.
Pengenalan Kotlin
• Kotlin memiliki beberapa fitur paling unik yaitu
Expressiveness, Null Safety, Extension functions, dan
Lambdas:

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
)

• Kelas data dengan Kotlin, akan secara otomatis membuat


semua aksesor dan mutator untuk semua metode, dan
beberapa metode yang berguna seperti toString().
Pengenalan Kotlin
Null Safety
• Ketika anda menggunakan java, anda perlu memastikan
bahwa objek bukan merupakan sebuah objek null
dengan menambahkan beberapa baris pengecekan
sehingga dapat terhidar dari NullPointerException.
• Dengan kotlin, sama seperti bahasa modern lainnya,
bersifat null-safe karena pemanfaatan operator safe
call.
• Beberapa cara yang dapat anda lakukan:
Pengenalan Kotlin
fun main() {
//baris ini tidak akan bisa melewati compiler
var notNullArtist: Artis = null;

//Jika diperbolehkan null, tambahkan ?


var myArtis : Artis? = null;

//Karena myArtis bernilai null, maka fungsi print //


//tidak akan melewati compiler
myArtis.printName();

//Anda dapat menambahkan ?//


//yang mana jika objek Null, fungsi tidak akan dijalankan
myArtis?.printName();

//atau anda menggunakan cara paling dasar


if (myArtis != null) {
myArtis.printName();
}
// perinta ini, digunakan jika objek anda benar-benar tidak null
myArtis!!.printName();

//cara terbaik adalah dengan menggunakan Elvis operator


val name = myArtis?.name?: "empty";

}
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))
}

• Dan, ketika menggunakannya, anda dapat menggunakan fungsi yang


lebih sederhana:
println("hello world!".upperCaseFirstLetter())
Extension Functions
• Contoh Lain
fun MutableList<Int>.swap(index1: Int, index2: Int) {
val tmp = this[index1]
this[index1] = this[index2]
this[index2] = tmp
}
• Penggunaan :
val r = mutableListOf(1, 2, 3,4 ,5 ,6 ,7)
l.swap(0, 5)

16
Pengenalan Kotlin
Lambda
• Lambda expression atau lambda merupakan penggunaan
fungsi tanpa nama. Biasanya ditandai dengan { }
• Contoh:
val greeting = { println("Hello!")}
greeting()

• Contoh dengan return:


val product = { a: Int, b: Int -> a * b }
val result = product(9, 3)
println(result)
Pengenalan Kotlin
• Semua fitur diatas merupakan sebagian kecil dari apa yang
dapat disederhanakan oleh Kotlin.
• Anda telah mengetahui sedikit tentang kotlin, disini lah anda
memastikan apakah anda siap menggunakan nya atau tidak.
Variable
• Pada Kotlin, Semuanya adalah object.
• Tidak ada tipe data primitif seperti pada Java.
• Hal ini berguna untuk memberikan anda sebuah cara yang
sama dalam menggunakan tipe data.
• Anda masih bisa mendeklarasikan tipe data dalam integer,
float, character atau boolean, tetapi variable anda akan
bertindak sebagai objek.
• Tipe data objek ini sama bekerja sama seperti tipe data
objek di java, tetapi tedapat sedikit perbedaan dalam
penggunaannya, yaitu:
Variable
• Tidak ada konfersi tipe data otomatis, yang artinya objek
variable anda tidak dapat diubah dari Int ke nilai Double.
• Anda harus secara eksplisit melakukan konversi tipe data,
menggunakan fungsi yang tersedia pada tipe data objek.

//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

• Namun, suatu tipe perlu ditentukan jika kita ingin


menggunakan tipe yang lebih umum:

val context : Context = this


String templates
• Pada Kotlin, anda dapat mengekspresikam sebuah string
menggunakan templates expression yang
menyederhanakan cara untuk menampilkan string dengan
membadakan antara variabel dengan string kata.

fun main() {
var nama:String="adi";
var umur:Int=27;
println("Nama : $nama \n Umur : $umur \n" +
" contoh templates expression")
}

• Jika variable terlalu kompleks anda dapat menambahkan { }


Kelas
• Kelas pada Kotlin sama seperti kelas pada umumnya.
• Tetapi, terdapat sedikit perbedaan dengan kelas yang
kamu ketahui pada Java.
• Pada tahap ini, anda akan mengulangi pembuatan kelas
kembali, tetapi dengan menggunakan Kotlin, yaitu
1. Mendeklarasikan kelas
2. Instant Variable
3. Inheritance
4. Fungsi
5. Parameter
Mendeklarasikan kelas
• Jika anda ingin mendeklarasikan file sebagai kelas, maka anda
perlu menambahkan keyword class:
class Person

• Kelas biasanya akan memiliki konstraktor default yang unik. Anda


dapat membuat beberapa konstraktor, akan tetapi, biasanya
kebanyakan situasi, anda hanya akan membutuhkan sebuah
konstraktor.
• Konstraktor dibuat hanya dengan menambahkan parameters
setelah nama Kelas.
class Person(personName: String, personAge: Int)
• Cttn: Simbol { } tidak diperlukan jika kelas dalam keadaan kosong
Instance Variable
instance variable
• Instance variable merupakan varibale/data/field
dari sebuah objek yang sama pada Java.
• Instance variable pada java bekerja menggunakan
getter dan setter.
• Sedangkan pada Kotlin, anda hanya perlu
mendeklarasikan Instance variable untuk
mendapatkan proses yang sama.
class Person{
var name = ""
}
Instance Variable
instance variable
• Jika tidak ada perubahan, anda boleh menggunakan getter
dan setter bawaan dari Kotlin.
• Jika anda memerlukan perubahan/pengaturan nilai
Instance Variable, anda dapat menggunakan getter dan
setter dari kotlin dengan cara:
class Person{
var nama = ""
get() = field.toUpperCase()
set(value) {
field = "$value"
}
}
Mendeklarasikan kelas
• Bagian tubuh dari konstraktor akan anda deklarasikan pada
blok init:
class Person(personName: String, personAge: Int){
var name:String = personName
var age:Int = personAage

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
}

class Student(studentName: String,


studentAge: Int,
studentNIM: String) : Person(studentName,
studentAge) {
var NIM = studentNIM
}
Fungsi
• Fungsi (atau metode pada Java) pada kotlin
dideklarasikan mengunakan keyword fun.
• Fungsi ini harus selalu mengembalikan sebuah
nilai.
• Jika fungsi anda tidak ingin mengembalikan
nilai, anda dapat mengembalikan nilai Unit
(sama seperti void pada java)
• Anda juga dapat menspesifikasikan tipe data
yang akan anda kembalikan melalui fungsi
• Cttn: tanda ; tidak begitu penting pada Kotlin
class Person(personName: String = "no Name",
Fungsi personAge: Int =0){
var name:String = personName
var age:Int = personAge
init {
name = personName.toUpperCase();
if(personAge<=0)
age = 0;
}
fun getLowerNamw(): String{
return name.toLowerCase()
}
fun addAge(): Unit{
age++
}
}
fun main() {
var person1 = Person("Andi")
person1.addAge()
println(person1.age)
}
Fungsi
• Jika fungsi anda dapat dituliskan dalam
sebuah ekspreis, anda dapat membuang
tanda { } dan menggantinya dengan tanda =.

fun getLowerName(): String = name.toLowerCase()


Parameter
• Parameter pada Kotlin berbeda dengan Java.
• Pada Kotlin anda akan memberikan nama
field terlebih dahulu, diikuti titik dua (:) baru
diakhiri dengan tipe data
fun add(x:Int,y:Int):Int = x+y
//atau
fun add(x:Int,y:Int):Int {
var hasil : Int
hasil = x+y
return hasil
}
Parameter
• Keunikan parameter pada kotlin, anda dapat
menambahkan default value, yang membuat
nilai pada parameter bersifat opsional.

fun add(x:Int=0,y:Int=1):Int = x+y


fun main() {
println(add())
}
Parameter
• Dengan keunikan ini, anda dapat memanggil
fungsi dengan parameter yang anda
inginkan.

fun add(x:Int=0,y:Int=1):Int = x+y


fun main() {
println(add())
println(add(3))
println(add(4,5))
}
Konsep Extra
• Konsep Extra pada pertemuan ini akan
membahas beberapa fitur pada Kotlin yang
mungkin anda perlukan dalam membangun
proyek android menggunakan Kotlin, seperti
• Nested classes
• Enum
• Exceptions
Konsep Extra
Nested classes
• Seperti Java, anda dapat mendefinisikan
sebuah kelas didalam kelas.
• Secara umum, inner class tidak akan dapat
mengakses anggota dari outer class.
Konsep Extra
Nested classes
class outter{
var a =10
fun get100() = 100
class inner{
var a = 20;
}
}

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())
}
}

Anda mungkin juga menyukai