METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı bir ana fonksiyona ( Main) sahiptir. Program çalışmaya bu fonksiyondan başlar. Tüm kodların bu fonksiyon içine yazılması çok uygun olmaz. Programın herhangi bir yerinde kullanmak için belirli bir işi yerine getirmek amacıyla tasarlanmış kod bloklarına metot denir. Metotlar tek başlarına çalıştırılabilen yapılar değildir. Metot, metodu çağıran ana programa bir takım faydalı işler yapar. Metodun iş yapması için kendisini çağıran metottan aldığı bilgilere parametre(argüman), kendisini çağıran fonksiyona döndürdü ise geri dönü ş değeri( return value ) denir. Metot Tanımlama C# ta bildirilen bütün metotlar mutlaka bir sınıfın içinde olmalıdır. Bir sınıfın üyesi olmayan metotlar bildirilemez. Metotları tanımlarken kullanılan bildirim şu şekildedir: Örnek Tanımlama:
Erişim Belirteci: Metotlara erişim şekillerinin belirtilmek için kullanılan ifadedir. Public: Public olarak tanımlanmış bir metot veya özelliğe herhangi bir yerden ulaşmak mümkündür. Herkese açık olarak tanımlayabiliriz. Private: Bu sıfat ile tanımlanmış metot veya özelliklere sadece tanımlandığı sınıf içerisinden ulaşabiliriz. Protected: Protected metotlara veya özelliklere tanımlandıkları sınıftan ve bu sınıftan üretilmiş alt sınıflardan ulaşabiliriz. Internal: Internal metot veya özelliklere tanımlandıkları sınıftan ve tanımlandıkları sınıfla aynı Assembly de olan sınıflardan erişebiliriz. Protected Internal: Bu tip metot ve özellikler hem protected hem de Internal özelliğindedir. Diğer bir ifade ile bunlara ancak kendi sınıflarından veya aynı Assembly deki alt sınıflardan ulaşabiliriz. Geri Dönüş Tipi: Bir veri türü adıdır ve metodun yaptığı işlem sonucunda döndüreceği veri türünü belirler. Bu int ya da string türü bir veri olabilir. Herhangi bir sonuç döndürmeyen bir metot yazılıyorsa geri dönüş tipi yerine Void anahtar sözcüğü kullanılmalıdır. Metot İsmi: Metodu çağırmak için kullanılan addır. Metot adları belirlenirken değişken adları tanımlanırken uygulanan kurallara uyulmalıdır. Örneğin, Dort_islem geçerli bir metot adı olabilirken Dort$islem tanımlaması yanlıştır. Metot Parametreleri: İsteğe bağlıdır, metoda dışarıdan gönderilecek veri adlarını ve türlerini tanımlar. Parametreler önce tür adı, daha sonra parametre adı olacak şekilde parantez içerisinde değişken tanımlanıyormuş gibi yazılır. Metot Kullanımında Dikkat Edilecekler Programın ba'langıç metodu olan Main metodunu iki kez kullanılamaz. Metot ismi değişken isimlendirme kurallarına uygun olarak metodun yaptığı işi tarif eden kısa bir isim verilmelidir. Döüşüş tipi Void kullanıldığı zaman metot geriye değer döndürmez. Metodların parametre bilgisi varsa eksiksiz girilmelidir. Bir metod bloğu içinde başka bir metod tanımı yapılamaz. Değer döndürmede return anahtar sözcüğü kullanılır. C# ta bir metot kullanılacaksa metodun içinde bulundu sınıf türünden bir nesne tanımlanır ve. operatörü ile metot çağrılır. Ancak static olarak tanımlanan metotları çağırmak için bir nesne tanımlamaya gerek yoktur. Eğer metodun içinde olduğu sınıfın içinden çağrılacaksa metodun sadece adı yazılarak çalıştırılabilir, eğer sınıfın dışından çağrılacaksa SınıfAdı.Metot( ) şeklinde çağrılmaktadır.
Örnek Metot Tanımlama: public static int Topla(int a, int b) return a+b; Metotlar şu şekillerde çağrılıp kullanılabilir: int t = Topla(4, 5); Console.WriteLine(Topla(4,5)); int sonuc = Topla(4,Topla(5,6)); Uygulama 8: Klavyeden girilen bir tamsayının Tek mi, Çift mi olduğunu bit metot aracılığıyla tespit edip sonucu ekrana yazdıran program kodu aşağıdadır.
Uygulama 9: Klavyeden girilen iki tamsayının aritmetik dört işlem sonuçlarını farklı metotlarla hesaplayıp sonuçları ekrana yazdıran kod aşağıdaki gibidir.
Metot Overloading (Metotların Aşırı Yüklenmesi) Aynı isimde birden fazla metot yazılmasıdır. Parametreleri farklı olmalıdır. Fonksiyon ve yordamları kullanırken, aynı isimde birden fazla tanımlanabildikleri görülür. Buna Aşırı Yüklenme (OverLoad) denir. Bir yordamın ve fonksiyonun aşırı yüklenmesi kullanımını kolaylaştırır. Aynı isimde farklı seçenekler sunması metotların kullanışlığını arttırır. public void UrunAra( int UrunId ) // Ürün numarasına göre arama yapılır. public int UrunAra( string UrunIsmi ) // Ürün ismine göre arama yapılır. // Bulunan ürünün numarası döndürülür. public int UrunAra( string UrunIsmi, DateTime UretimTarihi ) // Ürün ismine ve üretim tarihine göre arama yapılır. // Bulunan ürünün numarası döndürülür. public int UrunAra( DateTime UretimTarihi ) // Üretim tarihine göre arama yapılır. // Bulunan ürünün numarası döndürülür. Metotların aynı isimde olmasının ayrımı parametrelerin veri tipi ve sayısına göre yapılır. Metotların isimleri, parametre sayısı ve parametrelerin veri tipleri metotların imzalarını (Method Signatures) oluşturur. Örneğin ürün numarasına göre arama yapan yordamın imzası UrunAra(int) şeklindedir. int parametre alan bir UrunAra isminde başka bir yordam veya fonksiyon tanımlanama z. Fonksiyonların dönüş tipleri ile imzaları tanımlanmaz. Metotları aşırı yüklerken dikkat edilmesi gereken bazı noktalar vardır. İmzaları aynı olan metotlar tanımlanamaz Fonksiyonlar yordamlarla, yordamlarda fonksiyonlarla aşırı yüklenebilir. Fonksiyonlar dönüş tiplerine göre aşırı yüklenemez.
HSancak Nesne Tabanlı Programlama I Ders Notları Uygulama : Klavyeden 2, 3, ya da 4 sayının toplamını aşırı yüklenmiş metotlar ile hesaplayıp ekrana kod aşağıdaki gibidir.