Properties & Methods

 Kita telah mempelajari variabel untuk menyimpan nilai dan function untuk menuliskan set instruksi yang bisa digunakan kembali. Di dalam class, variabel dan fungsi ini dikenal dengan property dan method.

Seperti yang telah disebutkan pada materi Classproperty merepresentasikan atribut pada sebuah objek sementara method menggambarkan perilaku dari objek.

Sama seperti variabel, kita mendeklarasikan property di dalam kelas dengan menentukan tipe datanya atau menginisialisasikan nilainya secara eksplisit.

  1. class Animal {
  2.   String _name = '';
  3.   int _age = 0;
  4.   double _weight = 0;
  5. }

OOP memiliki konsep enkapsulasi di mana kita bisa menyembunyikan informasi di dalam objek sehingga status atau data di dalam objek tidak bisa diubah atau bahkan dilihat. Umumnya bahasa pemrograman memiliki visibility modifier untuk menentukan siapa saja yang bisa mengakses property atau method. Namun, Dart tidak memiliki keyword visibility modifier seperti private atau public. Bagaimana cara mengatasinya?

Jadikanlah class sebagai library lalu panggilah ia dengan keyword import. Untuk membuat class sebagai library Anda cukup membuat berkas baru, sehingga Anda akan memiliki 2 buah berkas:

Property yang private artinya hanya bisa diakses pada berkas atau library yang sama. Kita akan membutuhkan private property ini di saat kita tidak ingin objek diubah dari luar. Karena Dart tidak memiliki modifier private, sebagai gantinya kita perlu menambahkan underscore (_) sebelum nama property.

  1. String _name = '';
  2. int _age = 0;
  3. double _weight = 0;

Setelah menambahkan underscore pada nama variabel, Anda akan mendapatkan eror di berkas main.dart ketika mengakses property weight. Apa pasal? Kini  weight bersifat private dan tidak bisa diakses dari luar berkasnya. Solusinya, Anda bisa menambahkan setter dan getter untuk mendapatkan nilai serta mengubahnya dari luar berkas. Jika menggunakan IntelliJ IDEA Anda bisa menggunakan shortcut Alt + Insert lalu pilih Getter and Setter.

  1. // Setter
  2. set name(String value) {
  3.   _name = value;
  4. }
  5.  
  6. // Getter
  7. double get weight => _weight;

Selain dengan setter, Anda juga bisa mengubah nilai dengan property dari pemanggilan method. Pada contoh kelas hewan tentunya kita tidak bisa langsung mengubah nilai berat badan, namun kita bisa menambah dan mengubah nilainya melalui proses makan atau buang air besar (BAB).

  1. void eat() {
  2.   print('$_name is eating.');
  3.   _weight = _weight + 0.2;
  4. }
  5.  
  6. void poop() {
  7.   print('$_name is pooping.');
  8.   _weight = _weight - 0.1;
  9. }

Sehingga, keseluruhan kode pada berkas animal.dart akan menjadi seperti berikut.

Silakan kunjungi tautan berikut apabila ingin melihat sumber dari interactive code di atas.

Info lebih lanjut terkait Properties & Methods dapat Anda lihat pada dokumentasi berikut.

Popular posts from this blog

Build APK

Web Deployment

Generic