D Programlama - Sınıflar ve Nesneler
Sınıflar, nesne yönelimli programlamayı destekleyen ve genellikle kullanıcı tanımlı türler olarak adlandırılan D programlamanın merkezi özelliğidir.
Sınıf, bir nesnenin biçimini belirtmek için kullanılır ve veri gösterimini ve bu verileri tek bir düzgün paket halinde işlemek için yöntemleri birleştirir. Bir sınıftaki veriler ve işlevlere sınıfın üyeleri denir.
D Sınıfı Tanımları
Bir sınıf tanımladığınızda, bir veri türü için bir plan tanımlarsınız. Bu aslında herhangi bir veriyi tanımlamaz, ancak sınıf adının ne anlama geldiğini, yani sınıfın bir nesnesinin nelerden oluşacağını ve böyle bir nesne üzerinde hangi işlemlerin gerçekleştirilebileceğini tanımlar.
Bir sınıf tanımı, anahtar kelimeyle başlar classardından sınıf adı; ve bir çift kaşlı ayraç içine alınmış sınıf gövdesi. Sınıf tanımının ardından noktalı virgül veya bildirimler listesi gelmelidir. Örneğin, Box veri türünü anahtar sözcüğünü kullanarak tanımladıkclass aşağıdaki gibi -
class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
}
Anahtar kelime publiconu izleyen sınıfın üyelerinin erişim özniteliklerini belirler. Bir genel üyeye, sınıf nesnesi kapsamında herhangi bir yerden sınıfın dışından erişilebilir. Bir sınıfın üyelerini şu şekilde de belirtebilirsiniz:private veya protected bunu bir alt bölümde tartışacağız.
D Nesnelerini Tanımlama
Bir sınıf, nesnelerin planlarını sağlar, bu nedenle temelde bir sınıftan bir nesne oluşturulur. Bir sınıfın nesnelerini, temel türlerdeki değişkenleri tanımladığınızla tam olarak aynı tür bildirimlerle bildirirsiniz. Aşağıdaki ifadeler Box sınıfının iki nesnesini bildirir -
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
Box1 ve Box2 nesnelerinin her ikisi de kendi veri üyelerine sahiptir.
Veri Üyelerine Erişim
Bir sınıfın nesnelerinin genel veri üyelerine doğrudan üye erişim operatörü (.) Kullanılarak erişilebilir. Olayları netleştirmek için aşağıdaki örneği deneyelim -
import std.stdio;
class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
}
void main() {
Box box1 = new Box(); // Declare Box1 of type Box
Box box2 = new Box(); // Declare Box2 of type Box
double volume = 0.0; // Store the volume of a box here
// box 1 specification
box1.height = 5.0;
box1.length = 6.0;
box1.breadth = 7.0;
// box 2 specification
box2.height = 10.0;
box2.length = 12.0;
box2.breadth = 13.0;
// volume of box 1
volume = box1.height * box1.length * box1.breadth;
writeln("Volume of Box1 : ",volume);
// volume of box 2
volume = box2.height * box2.length * box2.breadth;
writeln("Volume of Box2 : ", volume);
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Volume of Box1 : 210
Volume of Box2 : 1560
Özel ve korumalı üyelere, doğrudan üye erişim operatörü (.) Kullanılarak doğrudan erişilemeyeceğini unutmamak önemlidir. Kısaca özel ve korumalı üyelere nasıl erişilebileceğini öğreneceksiniz.
D'de Sınıflar ve Nesneler
Şimdiye kadar, D Sınıfları ve Nesneleri hakkında çok temel fikirleriniz var. Aşağıda listelenen çeşitli alt bölümlerde tartışacağımız D Sınıfları ve Nesneleri ile ilgili başka ilginç kavramlar da vardır -
Sr.No. | Konsept ve Açıklama |
---|---|
1 | Sınıf üyesi işlevleri Bir sınıfın üye işlevi, diğer herhangi bir değişken gibi, tanımına veya prototipine sahip olan bir işlevdir. |
2 | Sınıf erişim değiştiricileri Bir sınıf üyesi, genel, özel veya korumalı olarak tanımlanabilir. Varsayılan olarak üyelerin özel olduğu varsayılır. |
3 | Yapıcı ve yıkıcı Sınıf yapıcısı, sınıfın yeni bir nesnesi oluşturulduğunda çağrılan bir sınıftaki özel bir işlevdir. Yıkıcı ayrıca, oluşturulan nesne silindiğinde çağrılan özel bir işlevdir. |
4 | D'deki bu işaretçi Her nesnenin özel bir işaretçisi vardır this nesnenin kendisine işaret eder. |
5 | D sınıflarına işaretçi Bir sınıfa işaretçi, bir yapıya işaretçi ile tam olarak aynı şekilde yapılır. Aslında bir sınıf, içinde işlevleri olan bir yapıdır. |
6 | Bir sınıfın statik üyeleri Bir sınıfın hem veri üyeleri hem de işlev üyeleri statik olarak bildirilebilir. |