C#

C# Nesne Kavramı

Merhaba, bu yazıda nesnelere biraz daha değineceğim. Nesneler’in sınıfların birer örneği olduğunu bir önceki yazıda söylemiştik. Nesneler aslında sınıftaki verileri anlamlı bir şekilde modellemektir. Peki ne işe yarar dersek, kısaca sınıfları işe yarar hale getirmek diyebiliriz. Örneğin bir araba fabrikasında elimizde motor, tekerlek vb.(değişken) veriler var. Eğer biz bu verilerle araba nesnelerini oluşturmazsak bunların hiçbir anlamı yoktur. Aynı verilerle birbirinden farklı birçok nesne oluşturabiliriz. Gerçek bir nesne oluşturmak için aşağıdaki gibi bir ifade kullanılması gerekmektedir.

Taist otomobil = new Tasit();

Artık otomobil adında gerçek bir nesnemiz oluşmuş durumda.

Bir sınıfa ait bir nesne oluşturduğumuzda, her nesne de sınıfta tanımlanan örnek değişkenlerin birer kopyası oluşur. Yani her nesnede renk, marka, hiz, yakitTipi değişkenlerinin kopyaları bulunmaktadır. Bu aynı zamanda nesnelerin içindeki değişkenlerin farklı değer alabilecekleri anlamına gelmektedir. Bu değişkenlere nokta(.) operatörü ile erişilebilir.

// nesne.uye

otomobil.hiz = 220;

Örnek değişkenlere ve metotlara erişim için nokta kullanılabilir. Şimdi bir nesne oluşturma işleminin parça parça ne anlama geldiğini gösterelim.

Tasit otomobil = new Tasit();

Gördüğümüz gibi otomobil adında bir nesne oluşturduk. Şimdi bölelim:

Tasit otomobil;
otomobil = new Tasit();

İlk kısımda Tasit sınıfı tipinde otomobil adında bir referans oluşturuyoruz. Yani ortada fiziksel bir nesne yok. İkinci kısımda ise fiziksel olarak ram de nesne yer almış olur. otomobil ‘in değişkenine nesnenin referansı atanır ve nesne ile ilişkilendirilmiş olur. Burada new operatörünün görevi, dinamik olarak bellekte yer ayırmak ve referans döndürmektir. Bu referans değişkeninin (otomobil) içinde saklanır.

Sınıflar ile bir değişken tanımlayabildiğimiz için, referans tipi olarak da adlandırılırlar. Değer tipleri ile aralarındaki fark değişkenlerinin aralarındaki farktan kaynaklanmaktadır. Bir değer tipi için;

Örneğin;

int i = 5;

İfadesinde “i” 5 değerini taşımaktadır.

Tasit motor = new Tasit();

Burada ise motor değişkeni nesneyi değil nesnenin referansını taşımaktadır. Bu yüzden şu tanımlama yanlıştır:

Tasit motor = 5; 
// motor nesneyi değil referansını taşır, 
bu yüzden herhangi bir atama yapamayız.

Şimdi bir örnek üzerinde anlatmaya devam edelim.

namespace OOP
{
	public class Tasit
	{

		public String yakit;// Taşıtın yakıt tipi
		public int hiz; // Taşıtın Maximum hızı 
		public String renk; // Taşıtın rengi
		public String marka; // Taşıtın markası

		// Taşıtın bilgilerini ekrana yazdıran metot
		public void tasitInfo() {
			String tasit = "Taşıtın markası: " + marka + " rengi: " + renk + " yakıt tipi: " + yakit + " maximum hızı: " + hiz;

			System.Console.WriteLine (tasit);
		}
	}

	class MainClass
	{
		public static void Main (string[] args)
		{
			// Taşıt tipinden otomobil nesnesini oluşturuyoruz
			Tasit otomobil = new Tasit ();
			Tasit motor = new Tasit ();

			// nesnemize özellik değerlerini giriyoruz
			otomobil.hiz = 220;
			otomobil.yakit = "LPG";
			otomobil.renk = "Siyah";
			otomobil.marka = "Renault";

			// nesnemize özellik değerlerini giriyoruz
			motor.hiz = 200;
			motor.yakit = "Benzin";
			motor.renk = "Metalik Gri";
			motor.marka = "Honda";

			/* Yukarıda dikkat edilmesi gereken bir nokta var. Oluşturduğumuz iki 
           nesnenin örnek değişkenlerine farklı değerler atıyoruz. Yani her nesne 
           oluşturulduğu sınıfın örnek değişkenlerinden bir kopya taşır, kendisini değil. 
           Bu yüzden her nesne örnek değişkenlere farklı değerler verip kullanabilir.
	        */

			// Bilgileri ekrana yazdıracak metodu çağırıyoruz
			otomobil.tasitInfo();
			motor.tasitInfo ();

		}
	}
}

1 Yorum

  • […] Bir sınıfa ait bir nesne oluşturduğumuzda, her nesne de sınıfta tanımlanan örnek değişkenlerin birer kopyası oluşur. Yani her nesnede Isci, Makine, Urun değişkenlerinin kopyaları bulunmaktadır. Bu aynı zamanda nesnelerin içindeki değişkenlerin farklı değer alabilecekleri anlamına gelmektedir. Bu değişkenlere nokta(.)operatörü ile erişilebilir. Okumaya devam et… […]

  • Ben boyle bir guzel aciklama gormedim abi allah razi olsun daha 17 yawindayim Azerbeycanda yawiyorum ismim cavidan ama kiz degilim:)) bizde erkek ismi . programlama ile ugrawiyorum ingilizcem var ama birde turkce search yapmak istedim wans eseri buraya geldim twkler sagol varol

Cavidan Əkbərov için bir yanıt yazın X