D Programlama - Kapsülleme
Tüm D programları aşağıdaki iki temel unsurdan oluşur -
Program statements (code) - Bu, bir programın eylemleri gerçekleştiren kısmıdır ve bunlara işlevler denir.
Program data - Program fonksiyonlarından etkilenen program bilgisidir.
Kapsülleme, verileri ve verileri bir araya getiren işlevleri birbirine bağlayan ve hem dış müdahalelerden hem de yanlış kullanımdan koruyan bir Nesne Yönelimli Programlama konseptidir. Veri kapsülleme, önemli OOP konseptine yol açtı.data hiding.
Data encapsulation verileri ve bunları kullanan işlevleri bir araya getiren bir mekanizmadır ve data abstraction sadece arayüzleri açığa çıkaran ve uygulama detaylarını kullanıcıdan gizleyen bir mekanizmadır.
D, adı verilen kullanıcı tanımlı türlerin oluşturulması yoluyla kapsülleme ve veri gizleme özelliklerini destekler. classes. Zaten bir sınıfın içerebileceğini inceledikprivate, korumalı ve publicüyeler. Varsayılan olarak, bir sınıfta tanımlanan tüm öğeler özeldir. Örneğin -
class Box {
public:
double getVolume() {
return length * breadth * height;
}
private:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
Uzunluk, genişlik ve yükseklik değişkenleri private. Bu, programınızın başka herhangi bir bölümü tarafından değil, yalnızca Box sınıfının diğer üyeleri tarafından erişilebileceği anlamına gelir. Bu, kapsüllemenin elde edilmesinin bir yoludur.
Bir sınıfın parçalarını yapmak public (yani, programınızın diğer bölümlerine erişilebilir), bunları daha sonra beyan etmelisiniz. publicanahtar kelime. Genel tanımlayıcıdan sonra tanımlanan tüm değişkenlere veya işlevlere programınızdaki diğer tüm işlevler tarafından erişilebilir.
Bir sınıfı diğerinin arkadaşı yapmak, uygulama ayrıntılarını ortaya çıkarır ve kapsüllemeyi azaltır. Mümkün olduğunca her sınıfın ayrıntılarını diğer tüm sınıflardan gizli tutmak idealdir.
D'de Veri Kapsülleme
Genel ve özel üyelerle bir sınıf uyguladığınız herhangi bir D programı, veri kapsülleme ve veri soyutlamasına bir örnektir. Şu örneği düşünün -
Misal
import std.stdio;
class Adder {
public:
// constructor
this(int i = 0) {
total = i;
}
// interface to outside world
void addNum(int number) {
total += number;
}
// interface to outside world
int getTotal() {
return total;
};
private:
// hidden data from outside world
int total;
}
void main( ) {
Adder a = new Adder();
a.addNum(10);
a.addNum(20);
a.addNum(30);
writeln("Total ",a.getTotal());
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Total 60
Yukarıdaki sınıf, sayıları toplar ve toplamı döndürür. Kamu üyeleriaddNum ve getTotaldış dünyaya arayüzler ve kullanıcının sınıfı kullanmak için bunları bilmesi gerekiyor. Özel üye toplamı, dış dünyadan gizlenmiş bir şeydir, ancak sınıfın düzgün çalışması için gereklidir.
D Sınıfı Tasarım Stratejisi
Çoğumuz, onları gerçekten ifşa etmemiz gerekmedikçe, sınıf üyelerini varsayılan olarak özel kılmayı acı deneyimlerle öğrendik. Bu sadece iyiencapsulation.
Bu bilgelik en çok veri üyelerine uygulanır, ancak sanal işlevler de dahil olmak üzere tüm üyeler için aynı şekilde geçerlidir.