Dart Class

Dart Class

Dart adalah bahasa pemrograman berorientasi Object. Dart mendukung fitur pemrograman berorientasi Object seperti class, interface, dan sebagainya. Class dalam konsep OOP adalah sebuah cetak biru untuk membuat object. Class mengenkapsulasi data untuk object.

Mendeklarasikan sebuah Class

Gunakan kata kunci class untuk mendeklarasikan class dalam Dart. Definisi class dimulai dengan kata kunci class diikuti oleh nama class; dan badan class diapit oleh sepasang kurung kurawal. Cara penulisan deklarasi class diberikan dalam contoh di bawah ini.

Cara Penulisan

class namaClass {  
   (fields)
   (getters/setters) 
   (constructors) 
   (functions) 
}

Kata kunci class diikuti dengan nama class. Aturan untuk nama class harus dipertimbangkan saat memberi nama class.

Definisi class dapat mencakup hal-hal berikut :

  • Fields Field adalah variabel apa pun yang dideklarasikan dalam class. Field mewakili data yang berkaitan dengan Object.
  • Setters and Getters Memungkinkan program menginisialisasi dan mengambil nilai dari field class. Getter / setter default langsung terdefinisi untuk setiap field dalam class tersebut. Namun, getter / setter default dapat diganti dengan secara eksplisit.
  • Constructors bertanggung jawab untuk mengalokasikan memori untuk Object class.
  • Functions Fungsi atau method mewakili tindakan yang dapat dilakukan terhadap Object yang dibuat dari class tertentu.

Komponen-komponen di atas bersama-sama disebut sebagai anggota data class.

Contoh deklarasi sebuah class

class Mobil {  
   // field 
   String mesin = "E1001";  
   
   // function 
   void disp() { 
      print(mesin); 
   } 
}

Contoh di atas mendeklarasikan sebuah class bernama Mobil. Class tersebut memiliki sebuah variabel field bernama mesin. Fungsi disp() adalah fungsi sederhana yang mencetak nilai dari variabel mesin.

Membuat Instance dari Class

Untuk membuat sebuah instance dari class, gunakan kata kunci “new” yang diikuti dengan nama class. Berikut adalah cara penulisannya.

Cara Penulisan

var namaObject = new namaKelas([ arguments ])
  • Kata kunci “new” berfungsi untuk membuat sebuah Object.
  • Bagian sebelah kanan dari ekspresi tersebut memanggil constructor dari suatu class. Jika constructor memiliki parameter, maka nilai-nilai tersebut harus diberikan pada saat dipanggil.

Contoh

var obj = new Mobil("Mesin 1")

Mengakses Fungsi Dan Field

Fungsi dan Field dari sebuah class dapat diakses melalui Object yang dibuat dari class tersebut. Gunakan notasi titik (disebut sebagai period) dengan menambahkan tanda titik pada nama Object diikuti dengan nama fungsi atau field yang ingin diakses.

//mengakses sebuah field
obj.namaField  

//mengakses sebuah fungsi 
obj.namaFungsi()

Contoh

Perhatikan contoh berikut ini untuk memahami cara mengakses field dan fungsi :

void main() { 
   Mobil c= new Mobil(); 
   c.disp(); 
}  
class Mobil {  
   // field 
   String mesin = "E1001";  
   
   // fungsi 
   void disp() { 
      print(mesin); 
   } 
}

Output dari kode di atas adalah sebagai berikut :

E1001

Constructors

Constructor adalah fungsi khusus dari class yang bertanggung jawab untuk menginisialisasi variabel-variabel dari class tersebut pada saat suatu Object dibuat. Dart mendefinisikan sebuah constructor dengan nama yang sama dengan nama class. Sebuah constructor adalah sebuah fungsi dan dapat diberikan parameter. Namun, berbeda dengan sebuah fungsi, constructor tidak dapat memiliki nilai kembalian. Jika Anda tidak mendeklarasikan sebuah constructor, sebuah default constructor tanpa paramater akan otomatis disediakan untuk Anda.

Cara Penulisan

namaClass (daftar_parameter) { 
   // isi constructor 
}

Contoh

Berikut ini menunjukkan bagaimana cara menggunakan constructor :

void main() { 
   Mobil c = new Mobil('E1001'); 
} 
class Mobil { 
   Mobil(String mesin) { 
      print(mesin); 
   } 
}

Output dari kode di atas adalah sebagai berikut :

E1001

Named Constructors

Dart menyediakan named constructor untuk memungkinkan sebuah class mempunyai beberapa constructor. Cara penulisan dari named constructor adalah seperti yang diberikan di bawah ini :

Cara Penulisan

namaKelas.namaConstructor(param_list)

Contoh

Berikut contoh menunjukkan cara menggunakan named constructor :

void main() {           
   Mobil c1 = new Mobil.namedConst('E1001');                                       
   Mobil c2 = new Mobil(); 
}           
class Mobil {                   
   Mobil() {                           
      print("Constructor non-parameter dipanggil");
   }                                   
   Mobil.namedConst(String mesin) { 
      print("Mesinnya adalah : ${mesin}");    
   }                               
}

Output dari kode di atas adalah sebagai berikut :

Mesinnya adalah : E1001
Constructor non-parameter dipanggil

Kata Kunci this

Kata kunci this merujuk pada instance Object saat ini dari suatu class. Berikut adalah contoh pemakaian kata kunci this.

Contoh

Berikut ini menjelaskan bagaimana menggunakan kata kunci this dalam Dart

void main() {
  Mobil c1 = new Mobil('E1001');
}
class Mobil {
  String mesin;
  Mobil(String mesin) {
    this.mesin = mesin;
    print("Mesinnya adalah : ${mesin}");
  }
}

Output dari kode di atas adalah sebagai berikut :

Mesinnya adalah : E1001

Getters dan Setters

Getters dan Setters, juga disebut sebagai accessors dan mutators, memungkinkan program untuk menginisialisasi dan mengambil nilai dari setiap field di dalam class. Getter atau accessor didefinisikan menggunakan kata kunci get. Setter atau mutator didefinisikan menggunakan kata kunci set.

Getter/setter default selalu ada otomatis untuk setiap kelas. Namun, getter/setter default dapat diganti dengan mendefinisikan setter/getter baru secara eksplisit. Getter tidak memiliki parameter dan mengembalikan nilai, dan setter memiliki satu parameter dan tidak mengembalikan nilai.

Cara Penulisan Getter

Return_type get namaField 
{ 
} 

Cara Penulisan Setter

set namaField
{ 
} 

Contoh

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan getter dan setter dalam class Dart 

class Murid {
   String nama = '';
   int umur = 0;

  String get namaMurid {
    return nama;
  }

  void set namaMurid(String nama) {
    this.nama = nama;
  }

  void set umurMurid(int umur) {
    if(umur<= 0) {
      print("Umur harus lebih besar dari 5");
    }  else {
      this.umur = umur;
    }
  }

  int get umurMurid {
    return umur;
  }
}
void main() {
  Murid s1 = new Murid();
  s1.namaMurid = 'Asep';
  s1.umurMurid = 0;
  print(s1.namaMurid);
  print(s1.umurMurid);
}

Output dari kode di atas adalah sebagai berikut :

Umur harus lebih besar dari 5
Asep
0

Class Inheritance

Dart mendukung konsep pewarisan (inheritance) yang merupakan kemampuan dari suatu program untuk membuat class baru dari sebuah class yang sudah ada. Class yang diwariskan untuk membuat class baru disebut sebagai super class (class induk). Class yang baru dibuat disebut sebagai sub class (class anak).

Sebuah class mewarisi dari class lain menggunakan kata kunci extends. Class anak (sub class) mewarisi semua properti dan fungsi kecuali constructor dari class induk (super class).

Cara Penulisan

class namaSubClass extends namaSuperClass

Catatan – Dart tidak mendukung multiple inheritance.

Contoh

Pada contoh berikut, kita mendeklarasikan class Shape. Class ini diperluas oleh class Circle. Karena terdapat hubungan pewarisan antara kedua class tersebut, class anak, yaitu kelas Circle, secara implisit mendapatkan akses ke anggota data class induknya.

void main() { 
   var obj = new Circle(); 
   obj.cal_area(); 
}  
class Shape { 
   void cal_area() { 
      print("memanggil cal_area yang didefinisikan dalam class Shape"); 
   } 
}  
class Circle extends Shape {}

Output dari kode di atas adalah sebagai berikut :

memanggil cal_area yang didefinisikan dalam class Shape

Jenis-Jenis Inheritance

Inheritance dapat dibagi menjadi tiga jenis berikut :

  • Single Setiap class hanya dapat mewarisi dari satu super class.
  • Multiple Sebuah class dapat mewarisi dari beberapa super class. Namun, Dart tidak mendukung multiple inheritance.
  • Multi-level Sebuah class dapat mewarisi dari sub class lainnya.

Contoh

Berikut ini adalah contoh bagaimana inheritance multi-level bekerja :

void main() {
  var obj = new Daun();
  obj.str = "Halo";
  print(obj.str);
}
class Akar {
  String str;
}
class Anak extends Akar {}
class Daun extends Anak {}
//Class Daun secara tidak langsung mewarisi dari class Anak dan Akar berdasarkan konsep multi-level inheritance

Class Daun mewarisi semua field dan fungsi dari class Anak dan Akar. Outputnya adalah sebagai berikut :

Halo

Method Overriding

Methon overriding adalah mekanisme di mana sub class mendefinisikan ulang fungsi atau method pada super class.

Contoh

void main() { 
   Anak c = new Anak(); 
   c.m1(12); 
} 
class Induk { 
   void m1(int a){ print("value dari a ${a}");} 
}  
class Anak extends Induk { 
   @override 
   void m1(int b) { 
      print("value dari b ${b}"); 
   } 
}

Output dari kode di atas adalah sebagai berikut :

value dari b 12

Jumlah dan jenis parameter fungsi harus sama saat melakukan override pada suatu fungsi. Jika terjadi ketidakcocokan pada jumlah parameter atau tipe datanya, Dart compiler akan menampilkan pesan kesalahan pada unchecked mode.

import 'dart:io';
void main() {
  Anak c = new Anak();
  c.m1(12);
}
class Induk {
  void m1(int a){ print("value dari a ${a}");}
}
class Anak extends Induk {
  @override
  void m1(String b) {
    print("value dari b ${b}");
  }
}

Output dari kode di atas adalah sebagai berikut, untuk unchecked mode, tapi akan menampilkan kesalahan pada checked mode :

value dari b 12

Kata Kunci Static

Kata kunci static dapat diterapkan pada anggota data dari sebuah class, yaitu field dan fungsi / method. Variabel static mempertahankan nilainya sampai program selesai dieksekusi.

Contoh

class StaticMem {
  static int num;
  static disp() {
    print("Value dari num adalah ${StaticMem.num}")  ;
  }
}
void main() {
  StaticMem.num = 12;
  // membuat variable static
  StaticMem.disp();
  // memanggil method static
}

Output dari kode di atas adalah sebagai berikut

Value dari num adalah 12

Kata Kunci super

Kata kunci super digunakan untuk merujuk pada super class langsung dari sebuah sub class. Kata kunci super dapat digunakan untuk merujuk pada anggota super class yang berupa variable, properti, atau method.

Contoh

void main() { 
   Anak c = new Anak(); 
   c.m1(12); 
} 
class Induk { 
   String pesan = "variabel pesan dari kelas induk"; 
   void m1(int a){ print("value dari a ${a}");} 
} 
class Anak extends Induk { 
   @override 
   void m1(int b) { 
      print("value dari b ${b}"); 
      super.m1(13); 
      print("${super.pesan}")   ; 
   } 
}

Output dari kode di atas adalah sebagai berikut :

value dari b 12
value dari a 13
variabel pesan dari kelas induk

Tutorial sebelumnya : Dart Interface
Tutorial setelahnya : Dart OOP
Semua Tutorial Dart : Tutorial Dart

Tinggalkan Balasan

Keranjang Belanja0
Keranjang belanja kosong ...
0