D Programlama - Soyut Sınıflar
Soyutlama, OOP'de bir sınıf soyutlama yapma yeteneğini ifade eder. Soyut bir sınıf, somutlaştırılamayan bir sınıftır. Sınıfın diğer tüm işlevselliği hala mevcuttur ve alanlarına, yöntemlerine ve yapıcılarına aynı şekilde erişilir. Soyut sınıfın bir örneğini oluşturamazsınız.
Bir sınıf soyutsa ve somutlaştırılamıyorsa, alt sınıf olmadığı sürece sınıfın fazla bir kullanımı olmaz. Tasarım aşamasında soyut sınıflar tipik olarak bu şekilde ortaya çıkar. Bir ana sınıf, bir alt sınıf koleksiyonunun ortak işlevselliğini içerir, ancak ana sınıfın kendisi, kendi başına kullanılamayacak kadar soyuttur.
D'de Soyut Sınıfı Kullanma
Kullan abstractsınıf özetini bildirmek için anahtar kelime Anahtar kelime, sınıf bildiriminde class anahtar kelimesinden önce bir yerde görünür. Aşağıda, soyut sınıfın nasıl miras alınabileceği ve kullanılabileceği ile ilgili bir örnek gösterilmektedir.
Misal
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);
}
Yukarıdaki programı derleyip çalıştırdığımızda aşağıdaki çıktıyı alacağız.
Emp1
37
Soyut Fonksiyonlar
İşlevlere benzer şekilde, sınıflar da soyut olabilir. Bu tür bir işlevin gerçeklenmesi sınıfında verilmemiştir, ancak soyut işlevi olan sınıfı miras alan sınıfta sağlanmalıdır. Yukarıdaki örnek, özet işlevi ile güncellenmiştir.
Misal
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();
}
Yukarıdaki programı derleyip çalıştırdığımızda aşağıdaki çıktıyı alacağız.
The employee details are as follows:
Emp ID: 101
Emp Name: Emp1
Age: 37