5
Ara'13

OOP 5: Nesneler İle Çalışmak ve Object Initializer (C# ile OOP)

Bir sınıfı örneklemek, nesne yaratmak; ikiside aynı şeylerdir. İngilizce tabiriyle nesne için instance da denilebilir.Nesnelerin bir sınıfın örneği olduğundan daha önce bahsetmiştim. Yani ilk önce örneklenebilecek bir sınıfa sahip olunmalıdır. Örneklenemeyen sınıflar da mı var diyorsanız bu konuda ayrıntılı bilgileri ilerleyen zamanlarda aktarmaya çalışacağım. Şimdilik bir sınıfın örneklenemez(nesnesi yaratılamaz) olabileceğini bilmek yeterli. Örneklenmeye müsait, aşağıdaki gibi bir sınıfı ele alalım.

class Tasit
{
	public string Marka{ get; set; }
	public string Model{ get; set; }
}

Yukarıdaki sınıf için biraz inceleme yapma zamanı:

 

– Field tanımlamayıp direkt property kullandım. Biliyorum ki derleyici fieldları, getter ve setter’ları kendisi oluşturacak(kendi belirlediği uygun isimlerle).

– Ctor(yapıcı fonksiyon/constructor) kodlamadım. Yine biliyorum ki derleyici, gövdesi boş ve parametre almayan bir ctor oluşturacak.

– Son olarak, c#’taki her şey gibi yukarıdaki sınıfın da Object sınıfından kalıtıldığını biliyorum.

Nesne Yaratma ve Propertylere Değer Atama

Yukarıdaki sınıftan bir nesne yaratıp propertylere değer atayalım.

Tasit t = new Tasit();
t.Marka = "Audi";
t.Model = "A3";

Yukarıdaki örnekte nesne yaratılıyor ve ardından propertylere değerleri atanıyor.

Propertylere Değerini, Nesne Yaratılırken Atama

Propertylere değer atması nesne yaratılırken de yapılabilirdi. Bunu gerçekleştirebilmek için ctor kullanılabilir. Bir ctor kodlayıp, yeni bir nesne yaratarak ilk değer atamalarını gerçekleştirelim.

class Tasit
{
	public string Marka{ get; set; }
	public string Model{ get; set; }

	// Default ctor.
	// Kodlanmış herhangi başka ctor yoksa derleyici otomatik oluşturur.
	public Tasit()
	{

	}

	// Parametre alan ikinci bir ctor
	public Tasit(string marka, string model)
	{
		// "this" anahtar kelimesi, buraya ulaşan nesne özelliklerini işaret eder.
                // Başka bir açıklama ile, içinde bulunduğu sınıfın özelliklerini işaret eder.
		this.Marka = marka;
		this.Model = model;
	}
}
Tasit t = new Tasit("Audi","A3");

İlk olarak this anahtar kelimesine değinmeliyim. Yukarıda kullanım örneğini gördüğünüz this anahtar kelimesi içinde bulunduğu sınıfın özelliklerine erişir/işaret eder. Kullanılması halinde daha anlaşılır bir kod yazılmasını sağlayacaktır. Sınıf içerisindeki bir field ya da property ile aynı isimde parametreler kullanmadığınız sürece this anahtar kelimesi gereklilik arz etmeyecektir.

 

Asıl konu olan, “nesne yaratılırken propertylere değer ataması” na gelirsek, yukarıdaki gibi bir kullanımla bunu sağlamış oluruz.

Object Initializer

Yukarıdaki örneklerde nesne yaratıldıktan sonra ve ctor yardımı ile nesne yaratılırken, propertylere nasıl atama yapılacağını inceledik. Bir diğer yöntem de object initializer kullanmaktır. Yukarıdaki sınıf için object initializer kullanarak nesne örneklenmesi ve propertylere değer atanması işlemleri şu şekilde kodlanabilir:

Tasit t = new Tasit{ Marka = "Audi", Model = "A3" };

Kodlama oldukça kolaylaştı. Artık biz object initializer kullanıyoruz ve aslında derleyici bizim yerimize ilk önce nesneyi örnekleyip ardından t.Marka = “Audi”; t.Model=”A3″ tarzında satır satır atamalar yaparak kodu derliyor. Kodlama kolaylığından başka değişen hiçbir şey yok.

 

Özet

– Nesneyi örnekledikten sonra satır satır propertylere değer atamaları yapılabilir.

– Ctor kullanarak nesne örneklenirken propertylere ilk değer atamaları yapılabilir.

– Object initializer ile, propertylere pratik bir şekilde değer atamaları yapılabilir.

 

İyi Eğlenceler:)

Yeni makaleleri E-Mail ile takip edin!