Thread overview
Tekli Tasarım Örüntüsü
Mar 08, 2018
hsencan
Mar 08, 2018
İbrahim
Mar 08, 2018
hsencan
March 08, 2018

Ben tekli tasarım örüntüsü kullanılarak yazılmış kodu inceliyordum

class Butce{
public:
	static Butce* nesneAl();
	void gelirEkle(float _gelir){gelir+=_gelir;}
	float gelirAl(){return gelir;}
	void giderEkle(float _gider){gider+=_gider;}
	float giderAl(){return gider;}
protected:
	Butce(float gelir=0,float gider=0){}
private:
	static Butce* nesne;
	float gelir,gider;
};

Burada kurucunun protected tanımlanmasının ve 'nesne' değişkeninin ve 'nesneAl();' fonksiyonunun neden static tanımlandığını anlayamadım.

Şimdiden Teşekkür Ederim.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 08, 2018

protected olarak tanımlamasının sebebi o kurucu fonksiyonu yalnızca Butce sınıfından türetilmiş bir sınıf içinden kullanılabilir olmasını istemiş. Tabii ki burada bir hata var, aslında o kurucu fonksiyon hiçbir işlem yapmıyor. Yani gereksiz olmuş. nesne üyesinin static olmasının sebebiyse bu sınıftan veya bu sınıftan türetilmiş olan olan sınıflardan herhangi bir nesne üretildiğinde o nesne adındaki üye bütün üretilen nesnelerde aynı değere sahip olacak. Çünkü static olduğu için tek bir tane bu üyeden oluşuyor. nesneAl fonksiyonunun static olması ise şudur: C++'da sınıflarda / yapılarda static olarak tanımlanan bir fonksiyon, o sınıftan oluşturulan herhangi bir nesne olmadan direk olarak kullanılmasını sağlıyor. Yani eğer static olmasaydı:

Butce b1;
b1.nesneAl(); // Çalışır
Butce::nesneAl(); // Çalışmaz

İşte nesne olmadan bu fonksiyonu çağırmak istemiş ve bu yüzden static yapmış. Artık Butce::nesneAl(); diyerek kullanabiliriz. Ama neden böyle birşey yapmak istemiş dersen onun sebebi de şudur: Biraz önce söylediğim üzere bu sınıftan oluşturulan veya bu sınıftan türetilmiş sınıflardan oluşturulan ne kadar nesne olursa olsun hepsinde ortak kullanılacak olan sadece bir tane nesne adlı üye oluşturulacak ve bu tek olduğu için yeni bir nesne oluşturmadan direk olarak istediği zaman Butce::nesneAl() diyerek tek olan bu nesne adlı üyeyi alabilecek.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 08, 2018

Teşekkürler.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 08, 2018

static bu bağlamda nesneden bağımsız anlamına geliyor: static üye değişken bütün tür için tek oluyor ve static üye işlev gizli this göstergesini edinmiyor. Amaç da zaten bu türden nesneden tek oluşturmak olduğundan mantıklı: tek değişken...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]