07 OCAK 2018
PAZARTESİ
19.35
C++ ile OOP - Constructor

Constructor bir metottur. Bu metot bir class içerisinde bulunur ve class ile aynı ismi alır. Herhangi bir veri tipi yoktur, objedir.

Neden Kullanılır?

Class'ı ele alalım. Bir class içerisinde birden fazla veri barındırabiliyor. Bazı durumlarda bu verilere otomatik olarak bir başlangıç ataması yapmamız gerekebilir. Öyle ki bir koordinat classı oluşturulurken başlangıç değeri 0,0 belirlenebilir. Veya yeni bir classı main içerisinde tanımlarken doğrudan bazı verilere bilgi gönderilebilir. Yani;

class kisi{
	public:
		int numara;
		string ad;
		string soyad;
		double dersNotu;
	
		kisi() {
			numara = 0;
			ad = "";
			soyad = "";
			dersNotu = 0;
		}
};

int main(){
	kisi mert;
	cout << "NUMARA: " << mert.numara << "\n";
	cout << "AD: " << mert.ad << "\n";
	cout << "SOYAD: " << mert.soyad << "\n";
	cout << "DERS NOTU: " << mert.dersNotu << "\n";
}

Kod blogumuzu incelediğimizde kisi() adındaki constructor'ın nasıl açıldığını ve nasıl veri aktarımı yapıldığını görmüş olduk. Main içerisinde mert adındaki obje herhangi bir parametreye sahip olmadığı için altta yer alan çıktılarımız şöyle olacaktır:

NUMARA: 0
AD:
SOYAD:
DERS NOTU: 0

Ama varsayalım ki biz bir constructor oluşturmadan doğrudan main alanını bu hali ile çalıştırsaydık:

NUMARA: 0
AD:
SOYAD:
DERS NOTU: 1.5211e-4127

gibi anlamsız ifadeleri (bellekten herhangi bir bölgeyi) çekmiş olurduk.

Bu sebeple constructor oluşturmak çok önemlidir.

ÖRNEK

Bir dikdörtgen sınıfı oluşturun ve alanı ile çevresini hesaplayan metotlar yazın. (Constructor oluşturun.)

ÇÖZÜM

class Dikdortgen {
	public:
		double x;
		double y;
		
		Dikdortgen(){
			x = 0;
			y = 0;
		}
		Dikdortgen(double a) {
			x = a;
			y = a;
		}
		Dikdortgen(double a, double b) {
			x = a;
			y = b;
		}
		
		double alan(){
			return x*y;
		}
		double cevre(){
			return (x*2)+(y*2);
		}
};

int main(){
	Dikdortgen M;
	cout << "Alan: " << M.alan() << "\nCevre: " << M.cevre() << "\n\n";
	
	Dikdortgen S(10);
	cout << "Alan: " << S.alan() << "\nCevre: " << S.cevre() << "\n\n";
	
	Dikdortgen T(10,5);
	cout << "Alan: " << T.alan() << "\nCevre: " << T.cevre() << "\n\n";
}

ÇIKTI

Görüldüğü üzere 2. Constructor (tek değer alan) eğer tek bir değer gelirse kare gibi kabul edilmesi için hazırlanmıştır.

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et