Alıntı (acehreli):
>D o konuda bana garip gelmişti ama düşündükçe D'nin yaklaşımını daha çok sevdim. D'nin söylediği şu: Aynı modülün içindeki kodlar aynı programcı(lar) tarafından yazılmaktadırlar ve aynı modüldeki kodlar birbirlerine gerçekleştirim açısından çok yakındırlar. Modüldeki sınıfları birbirlerinden sakınmaya gerek yoktur.
D dili her nekadar farklıda olsa mantıklı bir açıklama getirmiş ve bir açıdan düşününce belki güzel bir yaklaşım bile denilebilir ama genel sınıf yaklaşımını baya bir esnetmiş :)
static değişkenlerin tek olduğunu Ali zaten mesajında gayet güzel anlatmıştı. Nesne yönelimli dillerde static tanımının bir diğer özelliği static ile işaretlenen üye veya metodlara bir nesne örneği oluşturmadan direk ulaşılabilmesidir. D gibi bir dilde bu fark pek anlaşılmasada C# dilinde bu fark senin denemende bariz bir şekilde ortaya çıkmaktadır.
Kısaca bellek sınıfının d değişkenine erişmek için (tabi sınıf izin vermişse) C# veya D ile aşağıdaki gibi bir kod yazarsın.
void main ()
{
bellek b = new bellek();
b.d = 1;
}
Ancak bellek sınıfının static s değişkenine erişmek istersen D için aşağıdaki kod geçerli olurken C# için durum biraz farklıdır.
void main ()
{
bellek b = new bellek();
bellek.s = 1;
}
void main ()
{
bellek.s = 1
}
C# kullanıyorsan ise yazman gereken kod şöyle olmalı
static void Main(string[] args)
{
bellek.s = 1;
}
Yalnız burada dikkat etmek gereken bir nokta daha yakaladım. C# ile bir sınıf tanımladığında üye değişken veya metodları public ile işaretlemediğin sürece private olarak tanımlanırlar. Yani bellek sınıfını c# ile oluşturursan bu hali ile hiçbir üye değişkene ulaşamasın, ulaşmak istediğin üye değişkenleri ve metodları public olarak işaretlemelisin.
D dilinde gördüğüm durum ise bunun tam tersi yani private olarak işaretlemediğin sürece üye değişkenlere direk ulaşabiliyorsun. Küçük ama değerli bir bilgi olarak bunuda eklemek istedim.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]