Yazan : Şadi Evren ŞEKER

Bu yazının amacı, C++ dilindeki soyut sınıf kavramını açıklamaktır. Daha öncede anlatılan soyut sınıf tanımını okuyabilirsiniz.

C++ dilinde, soyut sınıflar içerisinde en az bir adet saf sanal metot (pure virtual function) bulunduran sınıflardır.

Sanal fonksiyon konusu (virtual function) daha önce anlatılmıştır, detaylarına buraya tıklayarak bakabilirsiniz.

Bir sanal fonksiyonun, saf olması, =0 gösterimi ile olur. Örneğin aşağıdaki gösterim bir saf sanal fonksiyondur:

virtual int alan() = 0;

Görüldüğü üzere, fonksiyon tanımlanmamış bunun yerine fonksiyon 0’a eşitlenmiştir. Bu gösterimle tanımlanan saf sanal fonksiyonlar, çağırılamaz. Bu fonksiyonların tanım amacı, bu fonksiyonların tanımlandığı soyut sınıflardan miras alan alt sınıfları, bu fonksiyonları yeniden tanımlamaya zorlamaktır.

Örneğin yukarıdaki alan fonksiyonunu içeren bir sınıf, soyut sınıf olacak (abstract class) ve bu sınıftan miras alan bütün sınıflar da otomatik olarak bu fonksiyonun üzerine yüklemek zorunda kalacaktır (overriding)

Soyut sınıfların kullanım amacı, bir miras silsilesi içerisinde, alt sınıfları bazı şartlara zorlamaktır. Örneğin aşağıdaki şekilde bir sınıfımız olsun:

class şekil{

public:

int x, y;

public:

virtual int alan() = 0;

};

Yukarıdaki bu tanım, bize şekil sınıfının bir x ve y koordinatları olduğu ve her şeklin bir alanı olduğu bilgisini verir. Ancak her şeklin alan hesabı farklı olabilir. Örneğin daire’nin alan hesaplaması ile kare’nin alan hesaplaması farklıdır. Ancak her ikisi de bir şekildir ve her ikisinde de birer alan fonksiyonu bulunmalıdır. İşte yukarıdaki sınıf tanımı, içerisinde saf bir sanal fonksiyon bulundurması bakımından, soyut bir sınıftır.

Soyut sınıflardan nesne üretilemez. Yani soyut sınıflar sadece tanım için kullanılır. Bununla birlikte, soyut sınıflar, kendilerinden miras alan sınıflardan üretilen nesneleri gösterebilir.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir