3.hafta METODLAR
Metot nedir? Program yazarken belli bir işi yapan kod bloğunu bir kaç kez kullanmak gerekebilir. Bunun için aynı kod bloğunu tekrar yazmak yerine bunu bir metot olarak hazırlarız ve ihtiyaç duyduğumuzda kullanırız.
Sıkça Kullandığımız Metotlar Bu zamana kadar metot olduğunu bilmesek de farkında olmadan sıkça kullanmış olduğumuz metotları görelim.
Metot Kullanmanın Avantajları Metotlar aynı kodların sürekli tekrarlanmasını önler. Programların okunabilirliğini ve anlaşılabilirliğini arttırır. Aynı kod bloklarının farklı farklı yerlerde yeniden kullanılmasına olanak sağlar. Metotlar nesne tabanlı programlamada önemli bir yere sahiptir.
Metot Tanımlarken Dikkat Edilecek Hususlar Metotlar her zaman bir sınıfın içerisinde tanımlanırlar. Metotların erişim belirleyicisinin yazılması zorunlu değildir. Yazılmadığı takdirde private olarak kabul edilir. Her metodun geri dönüş tipi mutlaka belirtilmelidir. Geriye herhangi bir değer döndürülmüyorsa dönüş tipi void olarak belirtilir. Geriye döndürülecek değer return anahtar kelimesiyle bildirilir. Metotlar parametreli veya parametresiz olarak kullanılabilirler. Eğer metot birden fazla parametre alıyorsa her bir parametre arasına virgül konularak birbirinden ayrılır.
Değer Döndürmeyen Metotlar Kendi ismi ile çağrılarak içerisinde yazılmış olan kod satırlarını çalıştırılan ve geriye herhangi bir değer döndürmeyen kod bloğudur. Değer döndürmeyen metotlar void anahtar sözcüğü ile başlar.
Metotların yapısal olarak bir takım özellikleri vardır.Bunlar; Erişim seviyeleri Geriye değer döndürmesi Aldığı parametreler
Erişim Seviyeleri Bu metoda, programın diğer bölümlerinin nasıl erişebileceğini belirleyen bir erişim niteleyicisidir. Bunun kullanımı isteğe bağlıdır. Eğer herhangi bir erişim belirteci kullanılmazsa varsayılan olarak sınıfa özel (private) olarak belirlenir. Private olarak kullanıldığında yalnızca metodun yazıldığı sınıf içerisinden çağrılabilmesini öngörür. Eğer programın içerisinde bulunan diğer kodlar içerisinden de bu metot çağrılabilsin isteniyorsa, erişim belirteci public olarak belirtilmelidir. Nesne yönelimli programlama dillerinde metotlar, tanımlandıkları sınıf adı ile birlikte çağrılırken eğer metot, programın ana metodu ( Main() ) içerisinden çağrılacaksa static olarak tanımlanır ve sınıf adını yazmaya gerek kalmadan çağrılır
İsim belirleme Metodunun isminin belirtildiği kısımdır. Metodumuza isim verirken yapacağı iş ile alakalı bir isim vermek hem metodun ne işe yaradığıyla ilgili bize bilgi verecektir, hem de bizden başka aynı programı kodlayacak kimselere yol gösterecektir. Metoda isim verirken aynı değişken isimleri tanımlarken kullandığımız kuralları yine göz önünde bulundurmalıyız. Geri dönüş tiplerinin veya parametre-listesinin farklı olması durumunda aynı isme sahip birden fazla metot olabilir
Parametre-Listesi Virgül ( , ) ile ayrılmış tip ve tanımlayıcı çiftlerden oluşan bir listedir. Parametreler, metot çağrıldığında, metodun kullanması için gönderilen bilgilerdir. Eğer metot hiç parametre kullanmayacaksa parametre listesi de boş olur.
Metot kullanımında diğer dikkat edilecek hususlar Programın başlangıç metodu olan Main metodu iki kez kullanılmaz. Metot isimleri numerik karakterle başlamaz. Metot isimleri büyük/küçük harflere duyarlıdır. Void kullanıldığı zaman geriye değer döndürülmez.
Void Geri dönüş değeri olmayan metotlar “Void” olarak tanımlanır.Void olarak tanımlı bir fonksiyon için “return” kullanılamaz.Eğer giriş parametresi yoksa parantez içi boş bırakılır.
C# Metot Overloading (Aşırı yükleme) Aynı metodun birden fazla versiyonun olmasıdır. Mesela toplama işlemini yapan birden fazla metodun olması. C# içerisinde birden fazla aynı metodu kullanmak için metot overloading (aşırı yükleme) yapısı vardır.
C# Metot Overloading (Aşırı yükleme) public void yazdir (string yazi) { MessageBox.Show( yazi ); } private void btnGoster_Click(object sender, EventArgs e) yazdir (Convert.ToString(topla(12.5,11.7))); public int topla(int a, int b) return a + b; public int topla(int a, int b, int c) return a + b + c ; public double topla(double a, double b)
C# Ref – Out Özellikleri Ref ve Out, metotların kullanacakları parametrelerin ilk değerlerinin atanmasında yada atanmamasında kullanılan türlerdir. Metodun parantezinde Ref kullanıldığında parametrenin ilk değerinin tanımlandığı yerde mutlaka atanması gerekmektedir ve Ref tanımlanan metoda gelen parametrenin bir değerinin olması gerekmektedir, yani bir atama işleminin gerçekleştirilmiş olması gerekmektedir.
C# Ref – Out Özellikleri Metodun parantezinde Out kullanıldığında parametrenin ilk değerinin olması gerekmez, Atam islemi out tanımlanan metodun icerisinde yapılır. Metodun kullanıldığı yerde yapılmaz.
C# Ref – Out Özellikleri public void metodRef(ref int a) { // Burda a parametresine bir değer vermek zorunda değiliz a = 24; // eğer a ya değer vermezsek programdan gelen parametrenin değeri aynen geri döner } public void metodOut(out int b) // Burda b parametresine bir değer vermek zorundayız b = 34; private void btnRefOut_Click(object sender, EventArgs e) int a = 5; metodRef(ref a); yazdir(a.ToString()); int b; metodOut(out b); yazdir(b.ToString());