C# Constructor (Yapıcı-Kurucu) Metotlar
C# severlere ve nesne yönelimli programlama konusunu öğrenmek isteyen yazılımcılara tekrar merhaba :)
Önceki makalemizde C# ile sınıflara giriş yapmış ve oluşturduğumuz örnek sınıfımızdan küçük bir uygulama yapmıştık.Bu sayede sınıflar hakkında başlangıç olarak bilgi sahibi olmuştuk ve bu konuda bir adım daha öteye gidebilmek için bu dersimizde Constructor (yapıcı,kurucu) metot kavramını öğreneceğiz.
Bildiğiniz gibi Java ile C#, C++ dilinden ortak geliştirildiği için aralarında syntax açısından pekte fazla bir fark yok denilebilir,o yüzden Java dilindeki constructor metot konusuyla ilgili target="_blank">bu makalemi de incelemenizde fayda var.
Yapıcı metotlardan kısaca bahsedersek, static olmayan (ilerde öğreneceğiz) bir sınıf içerisindeki property'lere (özelliklere) sınıfın instance (örnek kopyası) alımı esnasında değerler verme işlemidir.Bu metotlar tıpkı void metodu gibi çalışır ve geriye herhangi bir tipte (int,string..) değer döndürmezler ancak bu metodun bir adı da olmaz çünkü yapıcı metotlar sınıfın birebir kendi adıyla yazılmak zorundadırlar.
Constructor metotlar ile sınıfın tüm üyelerine değer vermek zorunda değiliz,istediğimiz özelliklere değerler verebiliriz.Böylece farklı overload'larla (aşırı yükleme-ileride öğreneceğiz) property'lerin sayı ve tipleriyle birçok sayıda constructor metot yazabiliriz.
Yapıcı bir metodun en önemli ve en güzel özelliği ise new sözcüğüyle sınıfın instance'ını aldığımız anda sınıfın property'lerine değerler vermek için harcadığımız süre,sınıftan alınan instance değişkeniyle property'lere tek tek değer vermekten daha azdır.Bu cümleyi anlamadıysanız sorun yok çünkü şimdi örneklerle öğreneceğiz :)
Visual Studio'yu açarak yeni bir Windows Form projesi oluşturalım ve "Bilgisayar" adında yeni bir sınıf yazalım:
Bu sınıfımızdan formumuzun Form_Load metoduna bir instance alalım ve property'lere tek tek
değerler verelim:
Property'lere bu şekilde daha önceki C# dersimizde değer vermeyi tanımlamıştık,şimdi tekrar bilgisayar classına geri dönelim ve constructor metot yazalım.Hatırlarsanız constructor metotlar içinde bulunduğu sınıfın adını alır demiştik ve bu metotların parametreleri olur.
Constructor metotların parametreleri, içinde bulunduğu sınıfın hangi property'lerine değerler atamak istiyorsak o şekilde yazılırlar ve varsayılan olarak sınıfımızdaki tüm property'lere yapıcı metodumuz
üzerinden değerler vereceğiz:
Şimdi formumuza tekrar dönüyor ve önceki yazdığımız kodları yorum satırları haline getirip yeniden sınıfımızdan örnek alıyoruz:
ve o da ne? Sınıfımızdan instance alırken bizden parametre istiyor, o halde sınıfımızın üyelerine vermek istediğimiz değerleri parametreler halinde veriyoruz:
İşte bu şekilde sınıfın instance alındığı esnada sınıf özelliklerine değer vermemizi sağlayan metotlara yapıcı-kurucu metotlar diyoruz.
İçerisinde bu örneğimizdeki gibi içerisinde tek başına constructor metot içeren sınıflar "new" sözcüğüyle instance alınırken daha önce öğrendiğimiz property'lere tek tek değerler vermemizi sağlayan
Bilgisayar bilgisayar=new Bilgisayar();
bilgisayar.Marka="Casper";
gibi yapıya izin vermemektedir.Bunun sebebi yapıcı metodun parametrelerini boş geçememizden kaynaklanmaktadır.
Eğer parametreleri doğru girdikten sonra instance aldığımız değişkene yukarıdaki gibi tekrar property'lere tek tek değerler atayabiliriz ancak aynı özelliklere aynı değerleri tekrar yazmak hem zahmetli hem de gereksiz bir işlem olacaktır.
O yüzden boş constructor metot kavramını da bilmemiz gerekiyor.
Boş yapıcı metotlar, ilgili sınıfın hem constructor metodu ile hem de daha önce öğrendiğimiz klasik bir biçimde sınıfın property'lerine tek tek değerler vermemize olanak sağlayan metotdur.Normal bir yapıcı metot gibi sınıfın ismini alırlar ancak parametreleri ve içeriğinde herhangi bir kod yoktur,böylece sınıfın instance'ını alırken parametre girme zorunluluğu ortadan kalkmaktadır.
Örneğimize uygularsak Bilgisayar classı içerisinde boş yapıcı metodumuzu yazalım:
Formumuza geri dönelim ve önceki yorum satırlarını kaldıralım:
Gördüğünüz gibi artık sınıfın property'lerine her iki şekilde de değerler verebiliyoruz.
C# constructor metotlarını öğrendiğimize göre bir sonraki makalemizde görüşmek üzere hoşçakalın diyebilirim :)
Projeyi İndir
Önceki makalemizde C# ile sınıflara giriş yapmış ve oluşturduğumuz örnek sınıfımızdan küçük bir uygulama yapmıştık.Bu sayede sınıflar hakkında başlangıç olarak bilgi sahibi olmuştuk ve bu konuda bir adım daha öteye gidebilmek için bu dersimizde Constructor (yapıcı,kurucu) metot kavramını öğreneceğiz.
Bildiğiniz gibi Java ile C#, C++ dilinden ortak geliştirildiği için aralarında syntax açısından pekte fazla bir fark yok denilebilir,o yüzden Java dilindeki constructor metot konusuyla ilgili target="_blank">bu makalemi de incelemenizde fayda var.
Yapıcı metotlardan kısaca bahsedersek, static olmayan (ilerde öğreneceğiz) bir sınıf içerisindeki property'lere (özelliklere) sınıfın instance (örnek kopyası) alımı esnasında değerler verme işlemidir.Bu metotlar tıpkı void metodu gibi çalışır ve geriye herhangi bir tipte (int,string..) değer döndürmezler ancak bu metodun bir adı da olmaz çünkü yapıcı metotlar sınıfın birebir kendi adıyla yazılmak zorundadırlar.
Constructor metotlar ile sınıfın tüm üyelerine değer vermek zorunda değiliz,istediğimiz özelliklere değerler verebiliriz.Böylece farklı overload'larla (aşırı yükleme-ileride öğreneceğiz) property'lerin sayı ve tipleriyle birçok sayıda constructor metot yazabiliriz.
Yapıcı bir metodun en önemli ve en güzel özelliği ise new sözcüğüyle sınıfın instance'ını aldığımız anda sınıfın property'lerine değerler vermek için harcadığımız süre,sınıftan alınan instance değişkeniyle property'lere tek tek değer vermekten daha azdır.Bu cümleyi anlamadıysanız sorun yok çünkü şimdi örneklerle öğreneceğiz :)
Visual Studio'yu açarak yeni bir Windows Form projesi oluşturalım ve "Bilgisayar" adında yeni bir sınıf yazalım:
Bu sınıfımızdan formumuzun Form_Load metoduna bir instance alalım ve property'lere tek tek
değerler verelim:
Property'lere bu şekilde daha önceki C# dersimizde değer vermeyi tanımlamıştık,şimdi tekrar bilgisayar classına geri dönelim ve constructor metot yazalım.Hatırlarsanız constructor metotlar içinde bulunduğu sınıfın adını alır demiştik ve bu metotların parametreleri olur.
Constructor metotların parametreleri, içinde bulunduğu sınıfın hangi property'lerine değerler atamak istiyorsak o şekilde yazılırlar ve varsayılan olarak sınıfımızdaki tüm property'lere yapıcı metodumuz
üzerinden değerler vereceğiz:
Şimdi formumuza tekrar dönüyor ve önceki yazdığımız kodları yorum satırları haline getirip yeniden sınıfımızdan örnek alıyoruz:
ve o da ne? Sınıfımızdan instance alırken bizden parametre istiyor, o halde sınıfımızın üyelerine vermek istediğimiz değerleri parametreler halinde veriyoruz:
İşte bu şekilde sınıfın instance alındığı esnada sınıf özelliklerine değer vermemizi sağlayan metotlara yapıcı-kurucu metotlar diyoruz.
İçerisinde bu örneğimizdeki gibi içerisinde tek başına constructor metot içeren sınıflar "new" sözcüğüyle instance alınırken daha önce öğrendiğimiz property'lere tek tek değerler vermemizi sağlayan
Bilgisayar bilgisayar=new Bilgisayar();
bilgisayar.Marka="Casper";
gibi yapıya izin vermemektedir.Bunun sebebi yapıcı metodun parametrelerini boş geçememizden kaynaklanmaktadır.
Eğer parametreleri doğru girdikten sonra instance aldığımız değişkene yukarıdaki gibi tekrar property'lere tek tek değerler atayabiliriz ancak aynı özelliklere aynı değerleri tekrar yazmak hem zahmetli hem de gereksiz bir işlem olacaktır.
O yüzden boş constructor metot kavramını da bilmemiz gerekiyor.
Boş yapıcı metotlar, ilgili sınıfın hem constructor metodu ile hem de daha önce öğrendiğimiz klasik bir biçimde sınıfın property'lerine tek tek değerler vermemize olanak sağlayan metotdur.Normal bir yapıcı metot gibi sınıfın ismini alırlar ancak parametreleri ve içeriğinde herhangi bir kod yoktur,böylece sınıfın instance'ını alırken parametre girme zorunluluğu ortadan kalkmaktadır.
Örneğimize uygularsak Bilgisayar classı içerisinde boş yapıcı metodumuzu yazalım:
Formumuza geri dönelim ve önceki yorum satırlarını kaldıralım:
Gördüğünüz gibi artık sınıfın property'lerine her iki şekilde de değerler verebiliyoruz.
C# constructor metotlarını öğrendiğimize göre bir sonraki makalemizde görüşmek üzere hoşçakalın diyebilirim :)
Projeyi İndir
teşekkürler, çok yardmcı oldunuz
public bilgisayar (string marka,str......) yazdığımda bilgisayarda hat a veriyor (method must have a return type).