Last Updated on September 13, 2021 by
Dart adalah bahasa pemrograman berorientasi object. Dart juga mendukung berbagai fitur object-oriented programming (OPP) seperti kelas, interface dan masih banyak lagu. Kelas dalam OOP adalah sebuah blueprint untuk membuat objek. Dart classes melakukan enkapsulasi data untuk objek. Dart memberi Anda dukungan built-ini untuk konsep ini disebut dengan kelas.
Pada pembahasan seri Tutorial Dart Codekey kali ini akan membahas tentang Dart Classes. Jika Anda tertarik untuk mengetahui tentang seri Tutorial Dart Codekey, pastikan Anda menyimak artikel ini sampai habis.
Table of Contents
Dart Classes
Dart Classes atau kelas dart adalah blueprint dari suatu objek yang disebut juga dengan object constructor. Sebuah kelas bisa berisi bidang, fungsi, constructor, dan lain sebagainya.
Kelas ini adalah wrapper yang mengikat/mengenkapsulasi data dan fungsi bersama-sama; yang dapat diakses dengan membuat objek. Kelas dapat disebut sebagai tipe data yang ditentukan pengguna yang mendefinisikan karakteristik oleh semua objeknya.
Kita dapat mengasumsikan kelas sebagai sketsa (prototipe) atau mobil. Sehingga penjelasannya ini berisi semua detail tentang nama model, tahun, fitur, harga, dan lain sebagainya. Berdasarkan properti siswa ini, kita dapat membuat siswa.
Di sini siswa adalah objek. Ada banyak siswa sehingga kita bisa membuat banyak objek siswa untuk mengakses semua properti.
Mendefinisikan Dart Classes
Dart menyediakan kata kunci kelas yang diikuti dengan nama kelas yang digunakan untuk mendefinisikan kelas. semua bidang dan fungsi diapit oleh sepasang kurung kurawal ({}). Sintaksnya diberikan di bawah ini:
class class_name { <fields> <getters/setters> <constructors> <functions> }
Kata kunci kelas tersebut diikuti oleh nama kelas. Ada beberapa aturan untuk identifiers yang harus dipertimbangkan ketika menamai kelas.
Sebuah definisi kelas dapat berisikan seperti di bawah ini.
1. Field
Sebuah field atau bidang adalah variabel yang dideklarasikan di dalam sebuah kelas. Bidang mewakili data yang berkaitan dengan objek.
2. Setter dan Getter
Setter dan Getter memunginkan program untuk menginisialisasi dan mengambil nilai dari bidang kelas. Setter dan Getter default dikaitkan dengan setiap kelas. Namun, yang default dapat diganti dengan mendefinisikan setter/getter secara eksplisit.
3. Constructor
Konstruktor bertanggung jawab untuk mengalokasikan memori untuk objek kelas.
4. Functions
Fungsi mewakili tindakan yang dapat dilakukan objek. Mereka juga kadang-kadang disebut sebagai metode.
Komponen-komponen ini disatukan disebut sebagai anggota data kelas.
Contohnya adalah sebagai berikut:
class Siswa { // field String nama = "Andi"; // function void view() { print(nama); } }
Contoh di atas mendeklarasikan kelas Siswa. Kelas tersebut memiliki sebuah nama. view() adalah fungsi sederhana yang mencetak nilai dari nama.
Membuat Instance dari Kelas
Untuk membuat sebuah instance dari kelas, gunakanlah keyword new yang diikuti dengan nama kelas. Syntax untuk hal yang sama akan diberikan seperti di bawah ini:
Syntax:
var object_name = new class_name([ arguments ])
– Keyword baru bertanggung jawab untuk instantiation.
– Sisi kanan ekspresi memanggil konstruktor. Konstruktor harus melewati nilai jika itu merupakan parameternya.
Contoh cara menginstanisasi sebuah kelas:
Mengakses Atribut dan Fungsi
Sebuah atribut kelas dan fungsi dapat diakses melalui objek. Gunakan notasi titik ‘.’ yang disebut dengan period untuk mengakses data member dari suatu kelas. Perhatikanlah contoh syntax di bawah ini:
//accessing an attribute obj.field_name //accessing a function obj.function_name()
Berikut ini adalah contoh penerapannya:
void main() { Siswa s= new Siswa(); s.view(); } class Siswa { // field String nama = "Andi"; // function void view() { print(nama); } }
Kode-kode di atas akan menghasilkan output sebagai berikut:
Andi
Konstruktor Dart
Konstruktor dalam bahasa pemrograman dart adalah fungsi khusus dari suatu kelas yang bertanggung jawab untuk menginisialisasi variabel yang ada di suatu kelas. Dart mendefinisikan sebuah konstruktor dengan nama yang sama sebagai suatu kelas.
Sebuah konstruktor adalah fungsi dan oleh karena itu kelas ini dapat memiliki parameter. Bagaimanapun, konstruktor tidak dapat memiliki sebuah tipe return, hal ini pun berbeda dengan function. Jika kamu mendeklarasikan sebuah konstruktor, konstruktor tanpa argumen default disediakan untuk Anda.
Syntax dari konstruktor dart adalah sebagai berikut:
Class_name(parameter_list) { //constructor body }
Contoh berikut ini menampilkan bagaimana cara menggunakan konstruktor di Dart:
void main() { Siswa s = new Siswa('Andi'); } class Siswa { Siswa(String nama) { print(nama); } }
Kode-kode di atas akan menghasilkan output seperti berikut ini:
Konstruktor yang Dinamai (Named Constructor)
Dart menyediakan named constructor atau konstruktor yang dinamai untuk untuk mengaktifkan kelas serta mendefinisikan beberapa konstruktor. Sintaks konstruktor bernama adalah seperti yang diberikan di bawah ini:
Syntax: Mendefinisikan Konstruktor
Class_name.constructor_name(param_list)
Berikut ini adalah contoh penerapan konstruktor di Dart:
void main() { Siswa s1 = new Siswa.namedConst('Andi'); Siswa s2 = new Siswa(); } class Siswa { Siswa() { print("Konstruktor non-parameter dipanggil"); } Siswa.namedConst(String nama) { print("Nama : ${nama}"); } }
Maka kode di atas akan menghasilkan output sebagai berikut:
Nama : Andi Konstruktor non-parameter dipanggil
Kata Kunci ‘This’
Kata kunci ‘This’ mengacu pada instance kelas saat ini. Di sini, nama parameter dan nama bidang kelas adalah sama. Oleh karena itu untuk menghindari ambiguitas, bidang kelas diawali dengan kata kunci this. Contoh berikut menjelaskan akan menjelaskan maksud dari kata kunci ‘This’:
void main() { Siswa s1 = new Siswa('Andi'); } class Siswa { String nama; Siswa(String nama) { this.nama = nama; print("Nama : ${nama}"); } }
Kode-kode ini akan menghasilkan output sebagai berikut:
Nama : Andi
Kelas Dart: Getters dan Setters
Getters dan Setters juga disebut sebagai ‘Accessors’ dan ‘Mutators’ yang memungkinkan program untuk menginisialisasi dan mengambil nilai masing-masing bidang kelas. Getter atau pengakses didefinisikan menggunakan kata kunci get. Setter atau mutator didefinisikan menggunakan kata kunci set.
Getter dan setter secara default dikaitkan dengan setiap kelas. 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.
– Syntax yang digunakan untuk mendefinisikan getter:
Return_type get identifier {
– Syntax yang digunakan untuk mendeginisikan setter:
set identifier { }
Contoh penerapan dari getter dan setter di dalam kelas Dart adalah sebagai berikut:
class Siswa { String nama; int umur; String get nama_siswa { return nama; } void set nama_siswa(String nama) { this.nama = nama; } void set umur_siswa(int umur) { if(umur<= 0) { print("Umur harus lebih besar dari 5"); } else { this.umur = umur; } } int get umur_siswa { return umur; } } void main() { Siswa s1 = new Siswa(); s1.nama_siswa = 'Andi'; s1.umur_siswa = 10; print(s1.nama_siswa); print(s1.umur_siswa); }
Program di atas akan menghasilkan output seperti di bawah ini:
Andi 10
Kelas Inheritance
Dart mendukung konsep inheritance yang mana inheritance merupakan kemampuan dari suatu program untuk membuat kelas baru dari kelas yang ada. Kelas tersebut adalah kelas yang diperluas untuk membuat kelas yang lebih baru atau dalam dart dikenal dengan istilah parent class atau super class. Sementara kelas yang baru dibuat disebut dengan child class atau subclass.
Sebuah kelas mewarisi dari kelas lain menggunakan kata kunci ‘extends’. Child class mewarisi semua properti dan metode kecuali konstruktor dari parent class. Berikut adalah contoh syntax-nya:
class child_class_name extends parent_class_name
Namun perlu dicatat bahwa Dart tidak mendukung multi inheritance. Berikut ini kami tampilkan kelas inheritance yang mendeklarasikan sebuah kelas Shape. Kelas akan diperpanjang oleh kelas lingkaran, karena adanya hubungan pewarisan antara kelas, kelas anak, yaitu kelas Car yang mendapat akses implisit ke anggota data kelas induknya atau parent class.
void main() { var item = new segitiga(); item.luas_item(); } class Object { void luas_item() { print("Menghitung luas segitiga"); } } class Segitiga extends Object {}
Kode di atas akan menghasilkan output sebagai berikut:
Menghitung luas segitiga
Jenis-jenis Inheritance pada Dart
Bahasa pemrograman Dart memiliki beberapa jenis inheritance yaitu:
- Single
Setiap class paling banyak dapat diperpanjang dari satu parent class.
- Multiple
Sebuah kelas dapat mewarisi dari beberapa kelas. Dart tidak mendukung pewarisan berganda.
- Multi-level
Sebuah kelas dapat mewarisi dari kelas anak lain.
Contoh berikut ini menunjukan bagaimana multi-level inheritance dapat bekerja:
void main() { var item = new Pesan(); item.str = "Selamat Belajar"; print(item.str); } class Root { String str; } class Child extends Root {} class Pesan extends Child {} //secara tidak langsung mewarisi dari Root berdasarkan warisan
Kelas Pesan memperoleh atribut dari kelas root dan child berdasarkan inheritance multi-level. Outputnya adalah sebagai berikut:
Selamat Belajar
Class Inheritance dan Metode Overriding
Metode Overriding adalah mekanisme di mana kelas anak mendefinisikan ulang metode di kelas induknya. Contoh berikut menggambarkan hal yang sama:
void main() { Siswa s = new Siswa(); s.w1(5); } class Wali { void w1(int x){ print("nilai dari x : ${x}");} } class Siswa extends Wali { @override void w1(int y) { print("nilai dari y : ${y}"); } }
Maka kode di atas akan menghasilkan output sebagai berikut:
nilai dari y : 5
Jumlah dan jenis parameter fungsi harus cocok saat mengganti metode. Jika ada ketidakcocokan dalam jumlah parameter atau tipe datanya, kompiler Dart akan membuat kesalahan. Hal tersebut akan dijelaskan dalam ilustrasi berikut ini:
import 'dart:io'; void main() { Siswa s = new Siswa(); s.w1(5); } class Wali { void w1(int x){ print("nilai dari x : ${x}");} } class Siswa extends Wali { @override void w1(String y) { print("nilai dari y : ${y}"); } }
Kode di atas akan menghasilkan output sebagai berikut:
nilai dari y : 5
Kata Kunci ‘Static’
Kata kunci ‘static’ dapat diterapkan ke anggota data kelas, yaitu bidang dan metode. Variabel statis mempertahankan nilainya sampai program selesai dieksekusi. Anggota statis direferensikan dengan nama kelas.
class StaticVal { static int angka; static view() { print("nilai dari angka adalah ${StaticVal.angka}") ; } } void main() { StaticVal.angka = 5; // Inisialisasi variabel statis StaticVal.view(); // memanggil metode statis }
Maka kode di atas akan menghasilkan output:
nilai dari angka adalah 5
Keyword Super
Kata kunci super digunakan untuk merujuk ke induk langsung dari suatu kelas. Kata kunci dapat digunakan untuk merujuk ke versi kelas super dari variabel, properti, atau metode. Hal tersebut digambarkan dalam kode berikut:
void main() { Siswa s = new Siswa(); s.w1(5); } class Wali { String pesan = "Pesan variabel dari kelas wali"; void w1(int x){ print("nilai dari x : ${x}");} } class Siswa extends Wali { @override void w1(int y) { print("nilai dari y : ${y}"); super.w1(7); print("${super.pesan}") ; } }
Maka kode tersebut akan menghasilkan output sebagai berikut:
value of y 5 value of x 7 Pesan variabel dari kelas wali
Demikianlah penjelasan tentang Dart Classes yang harus Anda ketahui. Penjelasan kali ini memang cukup panjang. Anda disarankan untuk memperhatikan setiap detil dari kode-kode yang ada agar tidak terjadi kesalahan. Jika Anda tertarik untuk belajar tentang bahasa pemrograman Dart, kunjungilah seri tutorial Dart yang ada di Codekey.
Situs Codekey menyediakan berbagai penjelasan, materi, tutorial, tips, dan trik untuk Anda belajar Bahasa pemrograman, tidak hanya bahasa pemrograman Dart tetapi juga bahasa pemrograman lainnya. Jangan lupa untuk mendapatkan update terbaru dari situs Codekey
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.