Metot Tanımlama ve Kullanma

Programcılıkta Metotlar

Bir programı yazarken bazı işlemleri farklı yerlerde tekrar tekrar yapmamız gerekebilir. Bu durumda aynı satırları her seferinde yazmak yerine metotları kullanabiliriz.

Örneğin bir dizinin elemanlarını birkaç yerde ekrana yazdırmamız gerekiyorsa, bir metot oluşturarak yazdırmak için gerekli kodları bu metodun içine yazabilir ve ana programın istediğimiz yerinden bu metodu çağırabiliriz. 

Metotlar çağrıldıkları yerde devreye girer ve içlerinde yazan satırlar işletilir.

Metotları kullanmak programcıya önemli avantajlar sağlar. Bunlardan bazıları şunlardır:

  • Programın karmaşıklığını azaltır, anlaşılırlığını artırır.
  • Aynı işlemleri tekrar yazmaktan kurtarır.
  • Tekrarlanan işlemlerde bir değişiklik yapılması gerektiğinde, metodun içini değiştirmemiz yeterli olur. Aksi halde aynı kodu yazdığımız her satırı değiştirmemiz gerekir.
  • Hata bulmayı kolaylaştırır.

Bir metodun kullanılabilmesi için öncelikle tanımlanması gerekir. Aşağıda bir örnek gösterilmiştir. Örneği incelediğimizde diziYazdir isimli bir metodun tanımlandığını göreceksiniz.

diziYazdir metodu ana program içerisinde, Form1 sınıfının içinde tanımlanmıştır. Bu nedenle aynı sınıftan ulaşılabilecektir.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
       public void diziYazdir()
       {
            // yapılacak işlemler
       }
 
        private void button1_Click(object sender, EventArgs e)
        {
            diziYazdir();
        }
}

public ifadesi metodun erişim belirleyicisidir. Metot tanımlanırken ilk olarak erişim sınırı belirtilmelidir. 

Erişim Belirleyiciler

Metotlar, özellikler ve benzer yapılar tanımlanırken nerelerden erişilebileceği belirtilir. Buna kapsülleme denmektedir. Kapsülleme, güvenlik amacıyla bazı öğelere erişimin kısıtlanmasını sağlar. C# programlama dilinde kullanılan erişim belirleyicileri şunlardır:

  • public: public olarak tanımlanan ögelere bir erişim kısıtlanması uygulanmaz. Her yerden erişilebilirler.
  • private: En katı erişim belirleyicidir. Private öğeler sadece tanımlandığı sınıf içinden erişilebilir. 
  • protected: Protected olarak tanımlanan öğeler, bulunduğu sınıf içinde ya da bu sınıftan türeyen başka sınıflardan erişilebilir.
  • internal: Bu öğelere sadece aynı program içinden erişilebilir.
  • protected internal: Protected ve internal erişim belirleyicisine sahip olarak değerlendirilir. 

public olarak tanımlanmış metotları, programın içinde istediğimiz yerden çağırabiliriz. Örnekte diziYazdir metodu, button1_Click içerisinden çağrılmıştır.

void ifadesi metodun geriye değer döndürmediğini belirtir. Eğer tanımladığımız metot geri değer döndürecek ise buraya void yerine o değerin türü yazılır. 

Ardından metoda bir isim verilir. Metot çağrılırken bu isim kullanılacaktır.

Metot isminden sonra normal parantez açılıp kapatılmıştır. Metot dışarıdan değer almayacak ise bu parantezlerin arası boş bırakılır. Eğer metot dışarıdan değer alacaksa ne yapılacağı yazının devamında...

Dışarıdan değer alıp almamasına ve geri değer döndürüp döndürmemesine göre metotları 4 adımda inceleyelim:

1. Dışarıdan Değer Almayan ve Geri Değer Döndürmeyen Metotlar

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
       public void bilgileriTemizle( )
       {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            label1.Text = "";
            label2.Text = "Bilgiler Temizlendi.";
            comboBox1.Items.Clear();
       }
 
        private void button1_Click(object sender, EventArgs e)
        {
            // bazı işlemler
 
            bilgileriTemizle( );
 
            // bazı işlemler
        }
}

Yukarıdaki örnekte bilgileriTemizle adında bir metot tanımlanmıştır. Bu metot dışarıdan değer almadığı için metot adından sonraki parantezler boştur. Ayrıca void ifadesi ile geri değer döndürmeyeceği belirtilmiştir.

Geri değer döndürmeyen metotlar bir değişken veya özelliğe eşitlenerek kullanılamazlar. Örneğin biz yukarıdaki bilgileriTemizle metodunu a = bilgileriTemizle(); şeklinde kullanamayız.

Geri değer döndürmeyen bir metot sadece ismi yazılarak, dışarıdan değer de almadığından parantezleri boş olacak şekilde yazılarak kullanılır.

bilgileriTemizle();

Kullandığımız hazır metotları kıyaslayarak bu işi şöyle açıklayalım. ToString, Parse, Pow gibi metotlar geri değer döndürdükleri için mutlaka bir şeye eşitlenerek kullanılırlar.

int a = Math.Pow( a, b );

label1.Text = sonuc.ToString();

ComboBox nesnesinin elemanlarını temizleyen Clear metodu ise geri değer döndürmediği için bir yere eşitlenmeden çağrılır.

comboBox1.Items.Clear();

bilgileriTemizle metodumuz geri değer döndürmüyor diye içerisinden form nesnelerine birşeyler yazdıramayacağımızı sanmayalım. Örnekte zaten metin kutusu ve label'ların içerikleri değiştirilmektedir.

2. Dışarıdan Değer Alan, Geri Değer Döndürmeyen Metotlar

Bir metodun dışarıdan değer alacak şekilde tanımlanması için tanımlanma satırındaki parantezin içine alacağı verilerin türü ve isimleri belirtilir. (Metotun aldığı bilgiye parametre denir)

public void tekrarlayarakYaz( int a )
{
      for ( int i = 1; i <= a; i ++ )
          label1.Text += i + textBox1.Text + "\n";
}
 
private void button1_Click(object sender, EventArgs e)
 {
       int tekrarSayisi = int.Parse(textBox2.Text);
       tekrarlayarakYaz(tekrarSayisi);
 }

Yukarıda tanımlanan tekrarlayarakYaz metodu dışarıdan bir değer alacaktır ve bu değer int türündedir.

Dışarıdan aldığı değer a ismindeki bir değişkene alınacak ve bu değişken ile metodun içinde işlemler yapılabilecektir.

tekrarlayarakYaz metodu çağrılırken parametre belirtilmez ya da birden fazla parametre belirtilirse hata olacaktır. Metot çağrılırken int türünde bir değer gönderilmesi zorunludur, çünkü metot dışarıdan bir adet değer alacak şekilde tanımlanmıştır.

tekrarlayarakYaz( tekrarSayisi ); satırında tekrarSayisi değişkeni metoda parametre olarak gönderilmiştir. Metot kendisine gelen bu değeri kendi içinde a değişkenine alarak kullanacaktır.

Bir metot dışarıdan birden fazla değer alabilir. Bu durumda metot çağrılırken gönderilen değerler, tanımlanırkenki sıra ile aynı olmalıdır. Örnek ile açıklayalım.

public void kuvvetiniYaz( int a, int b )
{
      long sonuc = a;
      for ( int i = 1; i <= b; i ++ )
          sonuc = sonuc * a
      label1.Text = sonuc.ToString();
}
 
private void button1_Click(object sender, EventArgs e)
 {
       int taban= int.Parse(textBox1.Text);
       int kuvvet= int.Parse(textBox2.Text);
       kuvvetiniYaz( taban, kuvvet );
 }

Yukarıdaki örnekte kuvvetiniYaz metodu dışarıdan int türünde iki değer almaktadır. button1_Click içerisinden taban ve kuvvet değişkenlerinin değerleri gönderilerek metot çağrılmıştır.

taban değişkeninin değeri metot içinde a değişkenine, kuvvet değişkeninin değeri ise metot içinde b değişkenine alınacak ve metot bu şekilde çalışacaktır.

kuvvetiniYaz metoduna 2 parametre göndermek zorunludur, 2'den az veya fazla gönderilemez.

3. Dışarıdan Değer Almayan, Geri Değer Döndüren Metotlar

Geri değer döndüren bir metot tanımlanırken void ifadesi yerine, geriye döndürülecek değerin türü yazılır. String, int, long, double vb..

Bu tür bir metot çağrılırken bir değişken veya özelliğe eşitlenmelidir. 

Dışarıdan değer almadığı için parantezler boş bırakılacaktır.

0 ile 1000 arasında rastgele bir sayı üreterek bu sayıyı geri döndüren metot:

public int sayiUret( )
{
      Random rastgele = new Random();
      int sayi = rastgele.Next(0,1000);
      return sayi;
}
 
private void button1_Click(object sender, EventArgs e)
 {
       int a = sayiUret( );
 }

Yukarıda sayiUret metodunun geri dönüş tipi int olarak belirtilmiştir. Bu nedenle bu metodu çağırırken uyumlu bir değişkene veya özelliğe atayarak kullanmalıyız.

return ifadesi son derece önemlidir. Metodun hangi değeri geri döndüreceği bu komut ile belirtilir. Örnekte metot içindeki sayi değişkeninin değeri sonuç olarak geri döndürülmüştür.

* Metot tanımlandıktan sonra return ifadesi yazılıncaya kadar kırmızı renkte uyarı verilecektir. return komutunu yazdığınızda hata ortadan kalkacaktır.

return 55; yazsaydık bu metot ne işlem yaparsa yapsın her zaman 55 sonucunu geri döndürürdü. 

return komutu ile doğru bilgiyi geri döndürdüğümüzden emin olmalıyız.

4. Dışarıdan Değer Alan ve Geri Değer Döndüren Metotlar

Yukarıda anlatılanlardan sonra direk örneğe geçebiliriz.

public string tekrarla( string metin, int a )
{
      string sonuc = "";
      for ( int i = 1; i <= a; i ++ )
          sonuc += metin + "\n";
      return sonuc;
}
 
private void button1_Click(object sender, EventArgs e)
 {
       label1.Text = tekrarla( "Zafer", 5 );
 }

tekrarla metodu bir string ve bir int türünde parametre almıştır. Çağrılırken de aynı sıra ile "Zafer" ve 5 bilgileri gönderilmiştir. Metot içerisinde sonuç hesaplanmış ve string türünde geri döndürülmüştür.

Metot çağrılırken label1'in Text özelliğine atanarak çağrılmıştır. Bu sayede sonuç direk label içine yazılacaktır.

 

c# metot tanımlama, c# metotlar, metot kullanımı, metot nedir ne amaçla kullanılır, c# dilinde metot oluşturma, geri değer döndüren metot oluşturma, dışarıdan değer alan metot tanımlama

KONU İLE İLGİLİ ÖRNEKLER

Bu konu ile ilgili örnek bulunmamaktadır.



YORUMLAR




13281  kez okundu.

Online Kullanıcı Sayısı 2738



metot-tanimlama-ve-kullanma