Melanjutkan artikel sebelumnya yang membahas tentang Operator, Function, dan Control Flow (Loops), pada artikel kali kita akan membahas Control Flow (Decision Making), Class, dan Object.
1. Decision Making
Konstruksi dari sebuah conditional/decision-making akan mengevaluasi kondisi sebelum instruksi dieksekusi.
Ada 4 Jenis Decision Making, yaitu:
- if statement
- if…Else statement
- else…If Ladder
- switch…Case statement
if Statement
Kontruktor if…else mengevaluasi kondisi sebelum blok kode dieksekusi.
Berikut sintaksnya.
if(boolean_expression){ // statement(s) will execute if the boolean expression is true. }
Jika ekspresi Boolean bernilai true, maka blok kode di dalam pernyataan if akan dieksekusi. Jika ekspresi Boolean bernilai false, maka kumpulan kode pertama setelah akhir pernyataan if (setelah kurung kurawal penutup) akan dieksekusi.
Ilustrasi berikut menunjukkan diagram alur dari pernyataan if.
if…Else Statement
Sebuah if dapat diikuti oleh blok else yang di dalamnya terdapat sintaks opsional. Blok else akan dieksekusi jika ekspresi Boolean yang diuji oleh blok if bernilai false.
Berikut sintaksnya.
if(boolean_expression){ // statement(s) will execute if the Boolean expression is true. } else { // statement(s) will execute if the Boolean expression is false. }
Jika ekspresi Boolean bernilai true, maka blok kode if akan dieksekusi, jika tidak, blok kode else akan dieksekusi.
Ilustrasi berikut menunjukkan diagram alur dari pernyataan if…else.
Pada gambar, blok if berfungsi untuk menjaga ekspresi kondisional. Blok yang berada di dalam pernyataan if dieksekusi jika ekspresi Boolean bernilai true. Blok if dapat diikuti oleh pernyataan else yang bersifat opsional. Blok instruksi yang berada di dalam blok else dieksekusi jika ekspresi bernilai false.
else…if Ladder Statement
else…if Ladder sangat berguna untuk menguji beberapa kondisi. Berikut contoh sintaksnya:
if (boolean_expression1) { //statements if the expression1 evaluates to true } else if (boolean_expression2) { //statements if the expression2 evaluates to true } else { //statements if both expression1 and expression2 result to false }
switch…Case Statement
Switch…Case Statement mengevaluasi ekspresi dengan mencocokkan nilai ekspresi dengan klausa case dan mengeksekusi pernyataan yang terkait dengan case itu.
Berikut sintaksnya.
switch(variable_expression) { case constant_expr1: { // statements; } break; case constant_expr2: { //statements; } break; default: { //statements; } break; }
Nilai dari variabel_ekspresi diuji terhadap semua case yang ada pada switch. Jika variabel cocok dengan salah satu case, blok kode yang sesuai akan dieksekusi. Jika tidak ada ekspresi huruf besar/kecil yang cocok dengan nilai variabel_ekspresi, kode dalam blok default yang akan dieksekusi.
Aturan berikut berlaku ketika kita menggunakan switch…case:
- Mungkin ada sejumlah pernyataan case di dalam switch.
- Pernyataan case hanya dapat mencakup konstanta, tidak dapat berupa variabel atau ekspresi.
- Tipe data dari variabel_ekspresi dan ekspresi konstan harus cocok.
- Setiap case harus memiliki break.
- Ekspresi case harus unik.
- Blok default adalah opsional.
Ilustrasi berikut menunjukkan diagram alur dari pernyataan switch…case:
2. Class
Dart adalah bahasa yang mendukung fitur pemrograman berorientasi objek seperti class, interface, dll. Class dalam hal OOP (object-oriented language) adalah blueprint untuk membuat object karena sebuah class merangkum data untuk object.
Mendeklarasikan sebuah Class
Kita perlu menggunakan kata kunci untuk mendeklarasikan sebuah class di Dart. Definisi class dimulai dengan kata kunci class diikuti dengan nama class dan badan class diapit oleh sepasang kurung kurawal. Sintaksnya sebagai berikut:
class class_name { <fields> <getters/setters> <constructors> <functions> }
Beberapa komponen yang tercakup ketika mendefiniskan class:
- Fields − variabel yang dideklarasikan dalam sebuah kelas. Field mewakili data yang berkaitan dengan object.
- Setters and Getters − Memungkinkan program untuk menginisialisasi dan mengambil nilai dari field sebuah class. Setter/getter secara default dikaitkan dengan setiap class. Namun, yang default dapat diganti dengan mendefinisikan setter/getter secara eksplisit.
- Constructors − bertanggung jawab untuk mengalokasikan memori untuk object sebuah class.
- Functions − function mewakili tindakan yang dapat dilakukan object. Function juga terkadang disebut sebagai methods.
Contoh pendeklarasian sebuah class:
Contoh di atas mendeklarasikan class Mobil. Class memiliki field bernama mesin. Disp() adalah function sederhana yang mencetak nilai dari field mesin.
Membuat Instance sebuah Class
Untuk membuat instance sebuah class kita harus gunakan kata kunci new diikuti dengan nama class. Sintaksnya sebagai berikut:
var object_name = new class_name([ arguments ])
Pengaplikasiannya sebagai berikut:
Cara Mengakses Attributes dan Functions
Attribute dan Function sebuah class dapat diakses melalui object dengan menggunakan notasi titik ‘.’ untuk mengakses data anggota class.
Pengaplikasiannya sebagai berikut:
Constructor pada Dart
Contructor adalah function khusus dari class yang bertanggung jawab untuk menginisialisasi variabel class. Dart mendefinisikan contructor dengan nama yang sama dengan nama class. Contructor adalah function dan karenanya dapat diparameterisasi. Namun, tidak seperti function, Contructor tidak dapat memiliki return type. Jika kita tidak mendeklarasikan contructor, maka contructor tanpa argumen default akan tersedia untuk kita. Sintaksnya sebagai berikut:
Class_name(parameter_list) { //constructor body }
Pengaplikasiannya sebagai berikut:
Named Constructors
Dart menyediakan named constructors untuk mengaktifkan class agar dapat mendefinisikan beberapa constructor. Sintaksnya sebagai berikut:
Class_name.constructor_name(param_list)
Pengaplikasiannya sebagai berikut:
Keyword this.-
Kata kunci this mengacu pada instance sebuah class yang sedang digunakan. Di sini, nama parameter dan nama field sebuah class adalah sama. Oleh karena itu untuk menghindari ambiguitas, field sebuah class diawali dengan kata kunci this. Sintaks pengaplikasiannya sebagai berikut:
Class – Getters dan Setters
Getter dan Setter, juga disebut sebagai pengakses dan mutator, memungkinkan program untuk menginisialisasi dan mengambil nilai masing-masing field pada sebuah class. Getter atau pengakses didefinisikan menggunakan kata kunci get. Setter atau mutator didefinisikan menggunakan kata kunci set.
Getter/setter secara default dikaitkan dengan setiap class. Namun, yang default dapat diganti dengan mendefinisikan setter/getter secara eksplisit. Getter tidak memiliki parameter dan mengembalikan nilai, dan setter memiliki satu parameter dan tidak mengembalikan nilai. Pengaplikasian keduanya sebagai berikut:
Inheritance sebuah Class
Dart mendukung konsep Inheritance yang merupakan kemampuan suatu program untuk membuat class baru dari class yang sudah ada. Class yang diperluas untuk membuat class yang lebih baru disebut parent class/super class. Class yang baru dibuat disebut child/sub class.
Sebuah class mewarisi dari class lain menggunakan kata kunci ‘extends‘. Child Class mewarisi semua properti dan metode kecuali contructor dari parent class. Sintaksnya sebagai berikut:
class child_class_name extends parent_class_name
Noted : Dart tidak mendukung multiple inheritance.
Contoh pengaplikasiannya sebagai berikut:
Beberapa tipe dari Inheritance:
- Single −Setiap class paling banyak dapat di-extend dari satu parent class.
- Multiple − Sebuah class dapat mewarisi dari beberapa class. Dart tidak mendukung multiple inheritance.
- Multi-level − Sebuah class dapat mewarisi dari child class lain.
Berikut contoh multi-level inheritance:
Dart – Class Inheritance dan Method Overriding
Method Overriding adalah mekanisme di mana child class mendefinisikan ulang method di parent class-nya. Contoh pengaplikasiannya sebagai berikut:
Jumlah dan jenis parameter pada function harus cocok saat melakukan overriding sebuah method. Jika ada ketidakcocokan dalam jumlah parameter atau tipe datanya, kompiler Dart akan menampilkan pesan kesalahan. Contoh pengaplikasiannya sebagai berikut:
dan Output-nya sebagai berikut:
value of b 12
Keyword static
Kata kunci static dapat diterapkan ke data member sebuah class, seperti field dan method. Static variable mempertahankan nilainya sampai program selesai dieksekusi. Static member direferensikan dengan sebuah nama class.
Keyword super
Kata kunci super digunakan untuk merujuk ke parent secara langsung dari suatu class. Kata kunci dapat digunakan untuk merujuk ke versi super class dari variabel, property, atau method. Contoh pengaplikasiannya sebagai berikut:
3. Object
Object-Oriented Programming mendefinisikan object sebagai “entitas apa pun yang memiliki batas yang ditentukan.”. Contohnya sebuah benda biasanya memiliki komponen berikut:
- State − berfungsi untuk mendeskripsikan suatu object. Field pada sebuah class mewakili status/state sebuah object.
- Behavior − Menggambarkan apa yang dapat dilakukan suatu object.
- Identity − Nilai unik yang membedakan suatu object dari sekumpulan object lain yang serupa. Dua atau lebih object dapat berbagi state dan behavior tetapi bukan identitasnya/identity-nya.
Operator periode (.) digunakan bersama dengan object untuk mengakses datamembers sebuah class.
Operator Cascade
Contoh di atas adalah untuk memanggil method yang ada di dalam class. Namun, setiap kali suatu function dipanggil, referensi ke objek diperlukan. Disinilah operator cascade dapat digunakan untuk menyingkat contoh kasus di atas. Contohnya pengaplikasiannya sebagai berikut:
Method toString( )
Function ini mengembalikan representasi string dari suatu object. Perhatikan contoh berikut untuk memahami cara menggunakan method toString.
Jika ada pertanyaan silahkan komen dan jika artikel ini dirasa bermanfaat, jangan lupa like dan sharenya ya teman-teman. ??????? Sampai bertemu di artikel selanjutnya.
Terima Kasih, Assalamu’alaykum… Salam KODINGINDONESIA
Referensi : dart.dev
, tutorialspoint.com