Sanal Sınıf Nedir?

Sanal sınıf, yalnızca bir kez belleğe tahsis edilen bir sınıftır, öyle ki, o sınıfın çocukları bellekte kurulan ana sınıfın sadece bir kopyasını kullanır. Sınıf, ortak özellikleri veya özellikleri paylaşan bir nesne grubudur. Bir sınıfı sanal yapmak, nesne yönelimli programlama dillerine, ikinci veya daha fazla kuşak ebeveyn sınıfları ortak ata temel sınıflarından türetildiğinde çoklu kalıtım kullanma yeteneği verir. Başvurulan bilgisayar programlama diline bağlı olarak, "sanal" anahtar kelime, benzer anahtar kelime veya bir sınıfın sözdizimi ve anlambilimi, belirli bir sınıfın sanal olarak kabul edileceği anlamına gelir.

Nesneye yönelik programlama dillerinin tümü birden fazla kalıtıma izin vermez, bu, bir alt sınıfın aynı anda birden fazla üst sınıftan türetilebildiği zamandır. C ++ gibi bir programlama dilinde, bir sınıf, tüm üye verilerini ve üye işlevlerini aynı anda her iki sınıftan da devralabilir ve hem ana veri hem de işlev kümelerine erişebilir. Çoklu kalıtımı destekleyen diğer diller arasında Perl, Python, Tcl ve Eiffel bulunur.

Bir çocuk sınıfı oluşturmak için kullanılan iki ya da daha fazla ebeveyn sınıfı başlangıçta yalnızca bir ya da aynı büyükbaba sınıfından türetildiğinde, birden fazla kalıtım hiyerarşisinde bir sorun ortaya çıkar. Buna elmas problemi denir, adı bu durumda hiyerarşinin nasıl görüneceğinden kaynaklanır. Bir derleyici programı, ortak bir büyükbaba veya büyükbabası olan iki ebeveyn sınıfından yapılan bir torun sınıfı gibi bir sınıfı başlatmaya çalıştığında, büyük ebeveynin iki kopyası bellekte, her ebeveyn için birer tane yapılır.

Hafızada aynı büyük ebeveynin birden fazla kopyasının neden olduğu belirsizliğe bağlı olarak, derleyici, büyükbaba veya büyükbaba verilerine veya işlevlerine erişmek için büyükbaba veya büyükanne torununun hangi kopyasını kullanması gerektiğini belirleyemiyor. Bu durumu düzeltmek için, ebeveynleri ilan ederken C ++ 'da büyükbaba veya büyükanne sanal sınıf haline getirilir. Bu, derleyicinin, her iki ebeveynin de paylaştığı bellekte büyükbaba veya büyükanne'nin yalnızca bir kopyasını çıkarmasına neden olur. Büyükbaba veya büyükbaba sanal sınıf haline geldiğinde, derleyicinin torunun büyükbaba veya büyükbabasına nasıl erişmesi gerektiğine karar vermekte hiçbir problemi yoktur, çünkü büyükbaba veya büyükbabanın yalnızca bir kopyası vardır.

Sınıf hiyerarşileri yapılandırılırken, özellikle gelecekte yer alacakları veya daha büyük hiyerarşilerin temelleri olacakları zaman büyük özen gösterilmelidir. Sanal bir sınıfın doğru kullanımı, sınıf hiyerarşilerine gelişimde daha fazla enlem sağlar; Bununla birlikte, bulunması zor hatalara neden olma potansiyeline sahiptir. Sağlam bilgisayar programlama mühendisliği ilkelerinin incelenmesi, yanlış program organizasyonundan beklenmeyen yan etkilerin oluşmamasını sağlamaya yardımcı olacaktır.