Tuesday, March 15, 2016

Scala : Class dan Object

Setelah sebelumnya mengenal basic tentang scala. sekarang kita akan mencoba melangkah ke bagian selanjutnya yakni tetang OOP (object oriented). Selain sebagai functional programming scala juga memiliki bagian OOP nya. Sama seperti java, di scala oop juga dibentuk dengan adanya Class.
Pada dasarnya class adalah sebuah blueprint. Sebuah class dapat membuat sebuah object (dengan menggunkan keyword `new`). Misal class Mobil bisa membuat Object sedan, pickup, dll. Konsep class di scala sama seperti dipemrograman lain.
Create sebuah class.
Class bisa ada atau tanpa constructor. membuat constructor harus di definisi class nya tidak perlu menbuat method yg sama dengan nama classnya seperti di Java.

 class Person (val pName : String, val pAge : Int) {  
   var name : String = pName  
   var age : Int = pAge;  
   // setter getter  
   def setName(name : String) = {  
    this.name = name  
   }  
   def getName() : String = this.name  
   def setAge(age : Int) = {  
    this.age = age  
   }  
   def getAge() : Int = this.age  
 }  

Inisialisasi class menggunakan keywordnya.  tapi ingat harus definisi variabel di scala harus menggunakan var / val.
contoh : val mperson : Person = new Person ("budi", 99)

Extending Class
class bisa juga diturunkan dengan cara diextend.
perlu didefinisikan juga varible parent yg harus dioverride di cosntructornya.

 class Student(override val pName: String, override val pAge: Int,  
        val pAddress :String) extends Person(pName, pAge){  
  var address : String = pAddress;  
  def setAddress(address : String) = {  
   this.address = address  
  }  
  def getAddress() : String = this.getAddress()  
 }  

Singleton Object.
Scala tidak menyediakan static variable / member seperti di java. Maka jika kita membutuhkan variable yg sifatnya static dan hanya sekali dicreate kita bisa menggunakan singleton object. Kalau di java seperti kita membuat static blok.

 static {  
  // codes and variables  
 }  

Contoh singleton object

 object Person {  
  var p : Person = new Person("budi", 10)  
  def displayPerson() = {  
   println("name "+ p.getName() + " age "+ p.getAge())  
  }  
 }  

Jadi di dalam object Person akan ada varible 'p' yang isinya selalu sama.
Untuk memanggil method di singleton object cukup lewat nama objectnya,
Person.displayPerson()

Companion object
Jika class dan object mempunyai nama sama dan berada di satu source file. hanya berbeda keyword 'class' dan 'object'. Dalam satu companion object bisa saling mengakses variable membernya masing-masing.

 class Person (val pName : String, val pAge : Int) {  
   var name : String = pName  
   var age : Int = pAge;  
   // setter getter  
   def setName(name : String) = {  
    this.name = name  
   }  
   def getName() : String = this.name  
   def setAge(age : Int) = {  
    this.age = age  
   }  
   def getAge() : Int = this.age  
 }  
 object Person {  
  var p : Person = new Person("budi", 10)  
  def displayPerson() = {  
   println("name "+ p.getName() + " age "+ p.getAge())  
  }  
 }  

Kapan mengunakan companion object?.  varible yg sifatnya bisa berubah atau reuseable sebaiknya ditaruh di Class. sedangkan varible atau method yang sifatnya static / singleton / bisa dipake berkali kali sebaiknya ditaruh di Object.

Sekian dulu pembahasan tentang class dan object di scala dan selamat mencoba.

bersambung di materi scala selanjutnya

referensi :
http://docs.scala-lang.org/tutorials/tour/classes
http://docs.scala-lang.org/tutorials/tour/singleton-objects.html



No comments:

Post a Comment