12 – Metodlar

Sadece çağırıldığında çalışan kod bloklarına metod denir.

Bir metoda parametreler yardımıyla veri gönderebiliriz.

Metodları kullanma amacımız bir işi yapacak kod bloğunu tek seferde yazıp birden fazla kullanabilmektir.

Nasıl Metod Yazarız

Tıpkı değişkenlerde olduğu gibi her metodun bir ismi olmak zorundadır.

İsminin sonuna boşluk koymadan () işaretleri eklenir. Ör: IlkMetodumuz() gibi

Metodlar yazılırken bir de dönüş tiplerini belirtiriz. Ör: int IlkMetodumuz ()

Metod içerisinde çalışacak kod bloğu { } süslü parantezler içerisine alınır.

Tavsiye: Metod isimlendirmelerinde, isimde geçen her kelime büyük harf ile yazılırsa ismini okuma açısından kolaylık sağlar.

Aşağıda ilk metodumuzu örneklendirelim:

IlkMetodumuz(); olarak bu metod çağrıldığında aşağıdaki gibi bir çıktı alınır.

Egzersiz

Ekrandan kişinin kimlik bilgilerini isteyen (isim, soyisim, doğum tarihi, doğum yeri, ve medeni durumu) ve bunları toplu olarak ekrana yazdıran aşağıdaki çıktıyı verecek olan metodu yazalım.


Egzersiz

Ekrandan bir sayı isteyip, bu sayının karesini hesaplayan ve sonucu ekrana yazdıran bir metod yazınız.


Egzersiz

Ekrandan bir sayı isteyip, bu sayının faktöriyelini hesaplayan ve sonucu ekrana yazdıran bir metod yazınız.

Bilgi:
5! = 5*4*3*2*1
8! = 8*7*6*5*4*3*2*1


Parametreler

Parametreler kullanılarak metodlara çağrılırken veri gönderilebilir.

Böylece bu method üzerinde işlem yapmak için ihtiyacı olan veriye erişmiş olur.

Parametreler metod içerisinde tıpkı eskiden tanımladığımız değişkenler gibi olurlar.

Metod içerisinde değerleri değişebilir, kullanılabilirler.


Çok Parametre Tanımlama

Parametreler virgül ile ayrılır ve her parametrenin tipi belirtilir.

Parametre sayı limiti yoktur. İstenildiği kadar parametre tanımlanabilir.



Default Parametre

Default, yani varsayılan parametre değeri eğer parametre değeri gönderilmezse bu değer kullanılır.

Her parametre için bu durum yoktur, eğer isteniyorsa tanımlanabilir.

Tanımlamak için parametre isminden sonra = deger şeklinde girilir.

Default parametre tanımından sonra sadece yine default parametre tanımı yapılabilir, normal parametre tanımlanamaz.


Return Values

Return values, yani dönüş değeri, metod işlerini yaptıktan sonra bir değer dönebilir.

Örneğin iki adet integer parametre alıp bunları toplayıp sonucu geri döndüren bir metod yazabiliriz.

Şimdiye kadar yazdığımız methodlar hiçbir değer dönmediler, bu yüzden method isimlerinden önce hep void kullandık.

return anahtar kelimesi metodun döneceği değerden önce yazılır. Ör: return x;

Buradaki x değişkeninin veri tipi ne ise metod isminden önce dönüş veri tipi belirtilir.


İsim İle Parametre Geçme

Metodlar çağırılırken parametreler isim : değer çifti olarak da gönderilebilir.

Normalde metod çağırılırken parametre sırası ile değerler gönderilir. Ör: ToplamaYap(int a, int b) metodu ToplamaYap(1, 2) diye çağrılırken a = 1, b = 2 değerini alacaktır.

Bu metod aynı zamanda şu şekilde de çağrılabilir:
ToplamaYap(a:1, b:2); ya da
ToplamaYap(b:2, a:1);

Parametreleri ismi ile geçme kodun okunulurluğunu artıracaktır.


Detaylar

Metodlara parametre gönderilirken metoda sadece değer gider

Değişkenin kendisi gönderilmek istenirse ref anahtar kelimesi ile tanımlanmalı ve gönderilmelidir.

Görüldüğü üzere TestMethod’a x ve y değişkenleri parametre olarak gönderildiğinde aslında bu değişkenlerin sadece değerleri gönderilir. Yani ilkSayi isimli parametre = 10, ikinciSayi isimli parametre = 12 olur. Metod çalıştıktan sonra ekrana x ve y yazdırıldığında değerlerini korudukları gözlemlenir. Halbuki ilk bakışta bu değişkenlerin değerlerinin de değişmesi gerekiyor gibi görünebilir. Value type değişkenlerde parametrelere sadece değerler gider. Ancak ref anahtar kelimesi ile değişkenin bizzat kendisi gönderilir.

Burada TestMetod2 isimli metoda a ve b değişkenleri bizzat gönderilirler ve metod içerisinde bu değişkenlerin değeri değişirse metod çalıştıktan sonrası için de bu durum korunur. Görüldüğü üzere 175. satırda önce metod çağrılmış daha sonra a ve b değişkenlerinin değerleri ekrana yazdırılmıştır. değişkenler metoda bizzat gittikleri için değişiklikler değişkenlere yansımış ve metod çalışması bittikten sonra a ve b ekrana yazdırıldığında değerlerinin değiştiği gözlemlenir.