Konsep OOP di Pemrograman Dart: Class

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.

Annotation @override membantu memberitahu bila method tidak ditulis dengan benar.

Dengan mengupdate class Student, 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.

Comments

Satu tanggapan untuk “Konsep OOP di Pemrograman Dart: Class”

  1. […] artikel sebelumnya, kita telah membuat sebuah class bernama Student. Setiap class dalam pemrograman Dart secara […]

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *