Pemrograman Dart - Kelas
Dart adalah bahasa berorientasi objek. Ini mendukung fitur pemrograman berorientasi objek seperti kelas, antarmuka, dll. Aclassdalam istilah OOP adalah cetak biru untuk membuat objek. SEBUAHclassmerangkum data untuk objek. Dart memberikan dukungan bawaan untuk konsep yang disebut iniclass.
Mendeklarasikan Kelas
Menggunakan class kata kunci untuk mendeklarasikan a classdi Dart. Definisi kelas dimulai dengan kelas kata kunci diikuti olehclass name; dan badan kelas diapit oleh sepasang kurung kurawal. Sintaks yang sama diberikan di bawah ini -
Sintaksis
class class_name {
<fields>
<getters/setters>
<constructors>
<functions>
}
Itu classkata kunci diikuti dengan nama kelas. Aturan untuk pengidentifikasi harus dipertimbangkan saat memberi nama kelas.
Definisi kelas dapat mencakup yang berikut -
Fields- Bidang adalah variabel apa pun yang dideklarasikan di kelas. Bidang mewakili data yang berkaitan dengan objek.
Setters and Getters- Memungkinkan program untuk menginisialisasi dan mengambil nilai bidang kelas. Pengambil / penyetel default dikaitkan dengan setiap kelas. Namun, yang default dapat diganti dengan mendefinisikan penyetel / pengambil secara eksplisit.
Constructors - bertanggung jawab untuk mengalokasikan memori untuk objek kelas.
Functions- Fungsi mewakili tindakan yang dapat dilakukan suatu objek. Mereka juga kadang-kadang disebut sebagai metode.
Komponen-komponen ini disatukan disebut sebagai data members dari kelas.
Contoh: Mendeklarasikan kelas
class Car {
// field
String engine = "E1001";
// function
void disp() {
print(engine);
}
}
Contoh mendeklarasikan kelas Car. Kelas memiliki bidang bernamaengine. Itudisp() adalah fungsi sederhana yang mencetak nilai bidang engine.
Membuat Instance kelas
Untuk membuat instance kelas, gunakan newkata kunci diikuti dengan nama kelas. Sintaks yang sama diberikan di bawah ini -
Sintaksis
var object_name = new class_name([ arguments ])
Itu new kata kunci bertanggung jawab untuk instantiation.
Sisi kanan ekspresi memanggil konstruktor. Konstruktor harus memberikan nilai jika berparameter.
Contoh: Membuat instance kelas
var obj = new Car("Engine 1")
Mengakses Atribut dan Fungsi
Atribut dan fungsi kelas dapat diakses melalui objek. Menggunakan '.' notasi titik (disebut sebagaiperiod) untuk mengakses data anggota kelas.
//accessing an attribute
obj.field_name
//accessing a function
obj.function_name()
Contoh
Lihat contoh berikut untuk memahami cara mengakses atribut dan fungsi di Dart -
void main() {
Car c= new Car();
c.disp();
}
class Car {
// field
String engine = "E1001";
// function
void disp() {
print(engine);
}
}
Itu output dari kode diatas adalah sebagai berikut -
E1001
Pembuat Dart
Konstruktor adalah fungsi khusus kelas yang bertanggung jawab untuk menginisialisasi variabel kelas. Dart mendefinisikan konstruktor dengan nama yang sama dengan kelas. Konstruktor adalah sebuah fungsi dan karenanya dapat dijadikan parameter. Namun, tidak seperti fungsi, konstruktor tidak dapat memiliki tipe kembalian. Jika Anda tidak mendeklarasikan konstruktor, defaultno-argument constructor disediakan untuk Anda.
Sintaksis
Class_name(parameter_list) {
//constructor body
}
Contoh
Contoh berikut menunjukkan cara menggunakan konstruktor di Dart -
void main() {
Car c = new Car('E1001');
}
class Car {
Car(String engine) {
print(engine);
}
}
Ini harus menghasilkan yang berikut output -
E1001
Konstruktor Bernama
Dart menyediakan named constructors untuk mengaktifkan definisi kelas multiple constructors. Sintaks konstruktor bernama seperti yang diberikan di bawah ini -
Sintaks: Mendefinisikan konstruktor
Class_name.constructor_name(param_list)
Contoh
Contoh berikut menunjukkan bagaimana Anda dapat menggunakan konstruktor bernama di Dart -
void main() {
Car c1 = new Car.namedConst('E1001');
Car c2 = new Car();
}
class Car {
Car() {
print("Non-parameterized constructor invoked");
}
Car.namedConst(String engine) {
print("The engine is : ${engine}");
}
}
Ini harus menghasilkan yang berikut output -
The engine is : E1001
Non-parameterized constructor invoked
Kata kunci ini
Itu thisKata kunci mengacu pada contoh kelas saat ini. Di sini, nama parameter dan nama bidang kelas sama. Karenanya untuk menghindari ambiguitas, bidang kelas diawali denganthiskata kunci. Contoh berikut menjelaskan hal yang sama -
Contoh
Contoh berikut menjelaskan cara menggunakan file this kata kunci dalam Dart -
void main() {
Car c1 = new Car('E1001');
}
class Car {
String engine;
Car(String engine) {
this.engine = engine;
print("The engine is : ${engine}");
}
}
Ini harus menghasilkan yang berikut output -
The engine is : E1001
Kelas Dart ─ Getters dan Setter
Getters dan Setters, juga disebut sebagai accessors dan mutators, izinkan program untuk menginisialisasi dan mengambil nilai masing-masing bidang kelas. Getter atau aksesor ditentukan menggunakangetkata kunci. Setter atau mutator didefinisikan menggunakanset kata kunci.
Pengambil / penyetel default dikaitkan dengan setiap kelas. Namun, yang default dapat diganti dengan mendefinisikan penyetel / pengambil secara eksplisit. Seorang pengambil tidak memiliki parameter dan mengembalikan nilai, dan penyetel memiliki satu parameter dan tidak mengembalikan nilai.
Sintaks: Mendefinisikan pengambil
Return_type get identifier
{
}
Sintaks: Mendefinisikan penyetel
set identifier
{
}
Contoh
Contoh berikut menunjukkan bagaimana Anda dapat menggunakan getters dan setters di kelas Dart -
class Student {
String name;
int age;
String get stud_name {
return name;
}
void set stud_name(String name) {
this.name = name;
}
void set stud_age(int age) {
if(age<= 0) {
print("Age should be greater than 5");
} else {
this.age = age;
}
}
int get stud_age {
return age;
}
}
void main() {
Student s1 = new Student();
s1.stud_name = 'MARK';
s1.stud_age = 0;
print(s1.stud_name);
print(s1.stud_age);
}
Kode program ini harus menghasilkan yang berikut output -
Age should be greater than 5
MARK
Null
Warisan Kelas
Dart mendukung konsep Inheritance yang merupakan kemampuan program untuk membuat kelas baru dari kelas yang sudah ada. Kelas yang diperluas untuk membuat kelas yang lebih baru disebut kelas induk / kelas super. Kelas yang baru dibuat disebut anak / sub kelas.
Sebuah kelas mewarisi dari kelas lain menggunakan kata kunci 'meluas'. Child classes inherit all properties and methods except constructors from the parent class.
Sintaksis
class child_class_name extends parent_class_name
Note - Dart tidak mendukung multiple inheritance.
Contoh: Warisan Kelas
Dalam contoh berikut, kami mendeklarasikan kelas Shape. Kelas diperpanjang olehCirclekelas. Karena ada hubungan warisan antara kelas, kelas anak, yaitu kelasCar mendapat akses implisit ke anggota data kelas induknya.
void main() {
var obj = new Circle();
obj.cal_area();
}
class Shape {
void cal_area() {
print("calling calc area defined in the Shape class");
}
}
class Circle extends Shape {}
Ini harus menghasilkan yang berikut output -
calling calc area defined in the Shape class
Jenis Warisan
Warisan dapat dari tiga jenis berikut -
Single - Setiap kelas maksimal dapat diperluas dari satu kelas induk.
Multiple- Kelas dapat mewarisi dari beberapa kelas. Dart tidak mendukung multiple inheritance.
Multi-level - Kelas dapat mewarisi dari kelas anak lain.
Contoh
Contoh berikut menunjukkan cara kerja warisan multi-level -
void main() {
var obj = new Leaf();
obj.str = "hello";
print(obj.str);
}
class Root {
String str;
}
class Child extends Root {}
class Leaf extends Child {}
//indirectly inherits from Root by virtue of inheritance
Kelas Leafmemperoleh atribut dari kelas Root dan Child berdasarkan warisan multi-level. Nyaoutput adalah sebagai berikut -
hello
Dart - Peninggalan Kelas dan Penimpaan Metode
Metode Overriding adalah mekanisme di mana kelas anak mendefinisikan kembali metode di kelas induknya. Contoh berikut menggambarkan hal yang sama -
Contoh
void main() {
Child c = new Child();
c.m1(12);
}
class Parent {
void m1(int a){ print("value of a ${a}");}
}
class Child extends Parent {
@override
void m1(int b) {
print("value of b ${b}");
}
}
Ini harus menghasilkan yang berikut output -
value of b 12
Jumlah dan jenis parameter fungsi harus cocok saat mengganti metode. Jika terjadi ketidakcocokan dalam jumlah parameter atau tipe datanya, kompilator Dart akan menampilkan kesalahan. Ilustrasi berikut menjelaskan hal yang sama -
import 'dart:io';
void main() {
Child c = new Child();
c.m1(12);
}
class Parent {
void m1(int a){ print("value of a ${a}");}
}
class Child extends Parent {
@override
void m1(String b) {
print("value of b ${b}");
}
}
Ini harus menghasilkan yang berikut output -
value of b 12
Kata Kunci statis
Itu static kata kunci dapat diterapkan ke anggota data kelas, yaitu, fields dan methods. Variabel statis mempertahankan nilainya sampai program menyelesaikan eksekusi. Anggota statis direferensikan dengan nama kelas.
Contoh
class StaticMem {
static int num;
static disp() {
print("The value of num is ${StaticMem.num}") ;
}
}
void main() {
StaticMem.num = 12;
// initialize the static variable }
StaticMem.disp();
// invoke the static method
}
Ini harus menghasilkan yang berikut output -
The value of num is 12
Kata kunci super
Itu superkata kunci digunakan untuk merujuk ke induk langsung dari sebuah kelas. Kata kunci dapat digunakan untuk merujuk ke versi kelas super dari avariable, property, atau method. Contoh berikut menggambarkan hal yang sama -
Contoh
void main() {
Child c = new Child();
c.m1(12);
}
class Parent {
String msg = "message variable from the parent class";
void m1(int a){ print("value of a ${a}");}
}
class Child extends Parent {
@override
void m1(int b) {
print("value of b ${b}");
super.m1(13);
print("${super.msg}") ;
}
}
Ini harus menghasilkan yang berikut output -
value of b 12
value of a 13
message variable from the parent class