Pemrograman D - Kelas Abstrak
Abstraksi mengacu pada kemampuan untuk membuat abstrak kelas dalam OOP. Kelas abstrak adalah salah satu yang tidak bisa dipakai. Semua fungsionalitas kelas lainnya masih ada, dan bidang, metode, dan konstruktornya semua diakses dengan cara yang sama. Anda tidak bisa membuat instance dari kelas abstrak.
Jika sebuah kelas abstrak dan tidak bisa dibuat instance-nya, kelas tersebut tidak memiliki banyak kegunaan kecuali kelas tersebut merupakan subclass. Ini biasanya bagaimana kelas abstrak muncul selama fase desain. Kelas induk berisi fungsionalitas umum dari kumpulan kelas anak, tetapi kelas induk itu sendiri terlalu abstrak untuk digunakan sendiri.
Menggunakan Kelas Abstrak di D
Menggunakan abstractkata kunci untuk mendeklarasikan abstrak kelas. Kata kunci muncul di deklarasi kelas di suatu tempat sebelum kata kunci kelas. Berikut ini adalah contoh bagaimana kelas abstrak dapat diwariskan dan digunakan.
Contoh
import std.stdio;
import std.string;
import std.datetime;
abstract class Person {
int birthYear, birthDay, birthMonth;
string name;
int getAge() {
SysTime sysTime = Clock.currTime();
return sysTime.year - birthYear;
}
}
class Employee : Person {
int empID;
}
void main() {
Employee emp = new Employee();
emp.empID = 101;
emp.birthYear = 1980;
emp.birthDay = 10;
emp.birthMonth = 10;
emp.name = "Emp1";
writeln(emp.name);
writeln(emp.getAge);
}
Ketika kita mengkompilasi dan menjalankan program di atas, kita akan mendapatkan keluaran sebagai berikut.
Emp1
37
Fungsi Abstrak
Mirip dengan fungsi, kelas juga bisa abstrak. Implementasi fungsi tersebut tidak diberikan di kelasnya tetapi harus disediakan di kelas yang mewarisi kelas dengan fungsi abstrak. Contoh di atas diperbarui dengan fungsi abstrak.
Contoh
import std.stdio;
import std.string;
import std.datetime;
abstract class Person {
int birthYear, birthDay, birthMonth;
string name;
int getAge() {
SysTime sysTime = Clock.currTime();
return sysTime.year - birthYear;
}
abstract void print();
}
class Employee : Person {
int empID;
override void print() {
writeln("The employee details are as follows:");
writeln("Emp ID: ", this.empID);
writeln("Emp Name: ", this.name);
writeln("Age: ",this.getAge);
}
}
void main() {
Employee emp = new Employee();
emp.empID = 101;
emp.birthYear = 1980;
emp.birthDay = 10;
emp.birthMonth = 10;
emp.name = "Emp1";
emp.print();
}
Ketika kita mengkompilasi dan menjalankan program di atas, kita akan mendapatkan keluaran sebagai berikut.
The employee details are as follows:
Emp ID: 101
Emp Name: Emp1
Age: 37