(Object Oriented Programming) Cascade Notation, Inheritance, Abstract Class, Implicit Interface Pada Bahasa Pemrograman DART

Pendahuluan

Bahasa pemrograman merupakan sekumpulan kata yang di wujudkan dalam sebuah perintah atau intruksi yang terdiri dari banyak baris yang bisa di mengerti oleh komputer. Bahasa pemrograman merupakan hal yang penting yang harus di kuasai oleh seorang programmer karna dalam membuat dan membangun aplikasi tentunya kita membutuhkan bahasa pemrograman. ada banyak bahasa pemrograman di dunia ini, pilihlah bahasa pemrograman yang sesuai dengan kebutuhan. Jika anda ingin membuat sebuah website anda bisa memilih bahasa pemrograman Html, Css, javaScript, DLL. dan jika anda ingin membuat sebuah aplikasi mobile anda bisa memilih bahasa pemrograman Java, Kotlin, Dart dan masih banyak lagi. Pada dasarnya bahasa pemrograman merupakan pondasi bagi seorang programmer, dan pada kesempatan kali ini kita akan mempelajari Object Oriented Programming atau yang biasa di singkat menjadi OOP pada bahasa pemrograman Dart. yap seperti yang kita bahas tadi bahwa bahasa pemrograman Dart adalah salah satu bahasa yang digunakan untuk membuat aplikasi mobile. sebelum kita membahas Object Oriented Programming pada dart mari kita kenalan dulu dengan Dart nya.

Apa Itu Dart

Dart merupakan bahasa pemrograman yang di kembangkan oleh google untuk kebutuhan umum dan Dart adalah bahasa pemrograman yang gratis atau open source. Dart bisa kita gunakan untuk membuat aplikasi android, front-end web, IoT, backend (CLI), game dan lain-lain.

Bahasa pemrograman Dart bisa anda pelajari dengan mudah. Untuk anda yang baru akan mempelajari bahasa pemrograman tentunya Dart bisa menjadi first languge anda, atau untuk anda yang sebelumnya sudah mempejari bahasa pemrograman seperti Javascript atau C tentunya anda tidak akan membutuhkan waktu lama untuk bisa mempelajari bahasa pemrograman dart ini.

dan seperti bahasa pemrograman lain dart juga mendukung pemrograman berorientasi objek. apa itu pemrograman berorientasi objek? mari kita bahasa lebih lanjut.

Object Oriented Programming (OOP)

Object oriented programming atau pemrograman berorientasi objek merupakan paradigma pemrograman yang berfokus pada konsep objek. OOP pada dart memiliki banyak fitur yang dapat anda gunakan untuk menciptakan dan mengelola objek, menerapkan konsep pewarisan, polimorfisme, enkapsulasi, dan masih banyak lagi. Tapi yang akan kita bahas dalam artikel kali ini kita akan membahas Cascade Notation, Inheritence, Abstract Class, dan Implicit Interface. tidak usah risau tentang istilah tadi karna pada artikel ini kita akan menpelajarinya secara jelas dan detail.

Cascade Notation

Cascade notation atau cascade operator adalah salah satu fitur dalam bahasa pemrograman dart yang memungkinkan kita untuk memanggil serangkaian metode pada objek yang sama secara beruntun dengan menggunakan tanda titik (‘.’) secara berulang. cascade notation membantu kita menghindari menuliskan berulang kali nama objek pada setiap pemanggilan metode dan memungkinkan kita untuk menggabungkan beberapa pemanggilan metode dalam satu baris.

Cara menggunakan cascade notation yaitu dengan menggunakan titik dua (..) setelah objek yang ingin anda operasikan. Setelah itu, Anda bisa memanggil beberapa metode atau melakukan beberapa operasi pada objek tersebut dalam satu rangkaian, tanpa perlu menyebutkan ulang nama objek pada setiap pemanggilan metode.

Contoh penggunaan cascade notation :

class Teachers {    String? name;  int? age;    void sayHello(){        print("my name is $name and I am a teacher and i'm $age year old");      }  }void main(){  Teachers teacher = Teachers()      ..name = 'Joni work'      ..age = 35      ..sayHello();}

Keterangan kode :

class Teachers { … } -> Ini adalah definisi kelas Teachers. Kelas ini memiliki dua properti name dan age, serta sebuah metode sayHello().

String? name; -> Properti name adalah tipe String dengan tanda tanya (?) di belakangnya, menandakan bahwa properti ini dapat bernilai null.

int? age; -> Properti age adalah tipe int dengan tanda tanya (?) di belakangnya, menandakan bahwa properti ini juga dapat bernilai null.

void sayHello() {..} -> Ini adalah definisi metode sayHello(). Metode ini mencetak kalimat yang mengandung nilai dari properti name dan age ke konsol.

Teachers teacher = Teachers() ..name = ‘Joni work’ ..age = 35 ..sayHello(); ->Di dalam fungsi main(), kita menciptakan objek teracher dari kelas Teachers menggunakan cascade notation dengan tanda ‘..’. Dengan cascade notation, kita dapat memanggil beberapa metode secara beruntun pada objek yang sama dalam satu baris.

perhatikan pada kode berikut :

void main(){  Teachers teacher = Teachers()      ..name = 'Joni work'      ..age = 35      ..sayHello();}

ini merupakan penggunaan cascade notation dimana kita tidak perlu menuliskan berulang kali nama method teacher. jika kita tidak menggunakan cascade notation kode di atas maka akan seperti berikut :

void main(){  Teachers teacher = Teachers();      teacher.name = 'Joni work';      teacher.age = 35;      teacher.sayHello();}

Inheritance

Inherintance atau pewarisan adalah salah satu hal yang penting dalam Object Oriented Programming pada bahasa pemrograman dart. Dengan menggunakan inheritance sebuah class baru bisa kita buat berdasarkan class class yang sudah ada. class yang baru disebut dengan class turunan atau child class, dan class yang menjadi dasar untuk menciptakan class turunan di sebut dengan superclass atau parent class.

Dengan menggunakan inheritance ini, child class atau class turunan akan mewarisi properti dan methode dari parent class atau super class. Itu artinya child class dapat menggunakan properti dna method dari parent class tanpa harus mendefinisikan ulang properti dan methodenya.

Berikut contoh penggunaan inheritance pada dart :

class Animal {  // properti  String name = '';  int age = 0;  double weight = 0;  // contactor  Animal(this.name, this.age, this.weight);  // method  void eat(){    print('$name is eating');    weight = weight + 0.9;  }  void poop(){    print('$name is pooping');    weight = weight - 0.5;  }}// childclass Lion extends Animal {  late String furcolor = '';  Lion(String name, int age, double weight, this.furcolor)      : super(name, age, weight);// method  void walk() {    print('$name is walking');  }}  void main() {    var dicodingLion = Lion('Grayson', 8, 140.52, 'glay')      ..eat()      ..poop()      ..walk();    print('weight is a Lion : ${dicodingLion.weight}');  }

Keterangan kode :

class Animal { … } -> Ini adalah definisi kelas Animal. Kelas ini memiliki tiga properti yaitu name, age, dan weight, serta dua metode yaitu eat() dan poop(). Properti dan metode ini berkaitan dengan karakteristik dan perilaku hewan.

Animal(this.name, this.age, this.weight); -> Ini adalah constructor (kontaktor) untuk kelas Animal. Ketika Anda menciptakan objek dari kelas Animal, Anda harus memberikan nilai untuk name, age, dan weight yang akan digunakan untuk menginisialisasi properti-properti tersebut.

void eat( ) { … } -> Ini adalah metode eat() dalam kelas Animal. Metode ini mencetak pesan bahwa hewan dengan nama tertentu sedang makan dan meningkatkan berat hewan sebesar 0.9 setiap kali dipanggil.

void poop( ) { … } -> Ini adalah metode poop() dalam kelas Animal. Metode ini mencetak pesan bahwa hewan dengan nama tertentu sedang buang air besar dan mengurangi berat hewan sebesar 0.5 setiap kali dipanggil.

class Lion extends Animal { … } -> Ini adalah definisi kelas turunan Lion, yang merupakan subkelas dari kelas Animal. Kelas Lion menambahkan properti khusus yaitu furcolor yang berkaitan dengan warna bulu singa.

Lion(String name, int age, double weight, this.furcolor) : super(name, age, weight); ->

Ini adalah constructor (kontaktor) untuk kelas Lion. Konstruktor ini memanggil constructor dari kelas induk Animal dengan menggunakan super() untuk menginisialisasi properti name, age, dan weight dari kelas Animal. Properti furcolor untuk kelas Lion diinisialisasi menggunakan parameter this.furcolor.

void walk() { … } -> Ini adalah metode walk() dalam kelas Lion. Metode ini mencetak pesan bahwa singa dengan nama tertentu sedang berjalan.

Di dalam fungsi main(), kita menciptakan objek dicodingLion dari kelas Lion dan menginisialisasi properti name, age, weight, dan furcolor. Kemudian, kita memanggil metode eat(), poop(), dan walk() pada objek dicodingLion, serta mencetak nilai weight objek tersebut setelah dipanggil metode eat() dan poop().

Output kode di atas adalah :

Grayson is eatingGrayson is poopingGrayson is walkingweight is a Lion : 140.92000000000002

Kesimpulan

Dart adalah bahasa pemrograman gratis dari Google yang serbaguna untuk aplikasi Android, web, dan IoT. Dengan OOP, Dart mendukung pewarisan, polimorfisme, dan enkapsulasi. Cascade notation memudahkan pemanggilan metode beruntun. Bahasa ini cocok untuk pemula dan pengguna berpengalaman, memungkinkan struktur kode yang lebih efisien. Dart juga mendukung abstraksi dan Implicit Interface. Penggunaannya membantu menghindari duplikasi kode dan memperluas fungsionalitas. Kesimpulannya, Dart adalah bahasa yang kuat dan fleksibel untuk mengembangkan berbagai jenis aplikasi yang memudahkan programmer mencapai tujuan mereka dengan kode yang lebih jelas dan terorganisir.

Tertarik mengikuti training di ID-Networkers? Kami menyediakan berbagai pilihan training yang bisa kamu ikuti. Klik disini untuk info lengkapnya.

Penulis : Syahril Sobirin