Tipe data yang sudah kita gunakan sampai tahap ini merupakan tipe data yang sudah ditentukan sebelumnya seperti String
, int
, atau bool
. Kali ini kita akan mendiskusikan bagaimana membuat tipe data sendiri dengan menggunakan class
.
Class bagaikan sebuah template yang di dalamnya terdapat variabel, fungsi dan komponen-komponen lain. Dalam konsep pemrogramn berorientasi objek/object oriented programming (OOP), class sering dicontohkan sebagai sebuah blueprint sebuah desain awal yang produksinya bisa menghasilkan berbagai jenis objek. Contoh, Mitsubishi memiliki satu desain mobil Expander, tapi dari satu desain itu mereka bisa memproduksi mobil dengan berbagai macam warna, berbagai macam jenis tempat duduk, tapi juga masih memiliki mesin yang sama, rangka yang sama, setir yang sama dan lain sebagainya.
Semua nilai dalam pemrograman Dart merupakan sebuah objek. Objek dalam konsep OOP adalah variabel yang dibuat dari sebuah class. Sejatinya tipe data seperti int, double dan bool semuanya merupakan objek. Class merupakan komponen mendasar pemrogaman berorientasi objek, saat nanti membuat aplikasi mobile dengan Flutter, kita akan memakai class di mana-mana.
Cara Membuat Class
Berikut ini merupakan contoh class sederhana dengan dua buah properti:
class Student {
int age = 0;
String name = '';
}
Sebuah class didefinisikan dengan menulis keyword class diikuti dengan nama yang diinginkan. Nama suatu class ditulis dengan format CamelCase lalu diikuti oleh blok kurung kurawal. Pada contoh di atas, kelas Student
memiliki dua buah properti yaitu age
dengan tipe data int
serta name
dengan tipe data String
. Properti adalah istilah bagi suatu variabel yang dideklarasikan di dalam suatu class
. Istilah lain bagi properti yang mungkin akan sering pembaca temukan adalah fields
.
Membuat Objek dari Sebuah Class
Seperti yang sudah pernah disinggung sebelumnya, sebuah objek adalah sesuatu yang dibuat dari suatu class atau istilah lain bagi sebuah objek adalah suatu instance
. Berikut contoh membuat sebuah objek dari class Student
.
var andi = Student();
Kita membuat sebuah instance dari class Student
dengan nama andi
. Perhatikan tanda kurung setelah menuliskan nama class. Tanda kurung ini wajib dituliskan dan berfungsi untuk memanggil constructor dari kelas Student
yang akan kita bahas selanjutnya.
Membuat objek dengan cara yang dicontohkan baru bisa dilakukan pada versi Dart 2.0. Pada versi-versi sebelumnya kita wajib menuliskan keyword new
sebelum menulis nama kelas. Pada saat itu kode yang harus kita tuliskan adalah sebagai berikut:
var andi = new Student();
Meskipun masih bisa dipakai namun penulisan keyword new
tidak begitu disarankan. Bahkan editor seperti Android Studio akan menyarankan kita untuk tidak menuliskannya.
Mengubah Nilai Properti
Kelas Student
yang kita buat memiliki dua buah properti yaitu age
dan name
. Untuk mengisi nilai baru pada properti kita akan mengaksesnya menggunakan dot notation.
void main() {
final andi = Student();
andi.name = "Andi Malarangeng";
andi.age = 23;
print(andi.name);
}
class Student {
int age = 0;
String name = '';
}
Bila kode di atas dijalankan maka kita akan mendapat Andi Malarangeng
di cetak oleh perintah print. Apa yang terjadi bila yang kita print adalah objeknya?
print(andi);
// Instance of 'Student'
Hasil yang kita dapat tentu tidak memiliki informasi yang berharga. Umumnya, saat mencetak suatu objek kita juganingin melihat semua atau sebagian dari properti yang dimiliki objek tersebut.
Setiap objek yang ada di Dart memiliki method toString
untuk mengatur teks yang didapatkan saat objek di print.
class Student {
int age = 0;
String name = '';
@override
String toString() {
return "Student(age: $age, name: $name)";
}
}
Sesuatu yang di awali dengan tanda @
disebut dengan annotation. Annotation berfungsi untuk memberitahu compiler informasi mengenai kode yang ada di bawahnya. Khusus annotation @override
, ia memberi tahu bahwa method toString
diturunkan dari class lain dan class yang kita miliki akan memiliki implementasi yang berbeda. Tanpa menulis annotation kode akan tetap berjalan dengan benar, tapi dengan menggunakannya, compiler akan memastikan method di timpa (override) dengan benar tanpa kesalahan. Lebih detailnya akan kita bahas di topik khusus mengenai pewarisan alias inheritance.

Dengan mengupdate class Stude
nt, kali ini perintah print akan memberikan hasil:
Student(age: 23, name: Andi Malarangeng)
Cascade Notation
Pada contoh sebelumnya kita membuat sebuah objek Student
baru untuk kemudian kita ubah nilai dari properti age
dan name
. Dart memiliki sebuah fitur bernama cascade notation yang memungkinkan pengisian properti secara langsung setelah inisiasi class diikuti titik dua kali.
final andi = Student();
andi.name = "Andi Malarangeng";
andi.age = 23;
// menjadi
final andi = Student()
..name = "Andi Malarangeng"
..age = 23;
print(andi);
Perhatian bahwa titik koma hanya ditambahkan di baris yang terakhir.
Tinggalkan Balasan