Metotların Aşırı Yüklenmesi ve Çeşitli Metotlar

Giriş

İlk ünitede metotların ne olduğu ve nasıl kullanıldığı açıklanmıştı. Daha sonraki ünitelerde string ve matematiksek metotlardan bahsedilmişti. Bu ünitede ise metotların aşırı yüklenmesi (overloading) ve çeşitli bazı metotlar örneklerle anlatılacaktır.

Metot aşırı yükleme (overloading), aynı iş mantığına sahip metotları bir arada tutarak bu metotlara kolay erişim ve kullanım sağlamaktır.

Yani başka bir deyişle, metot aşırı yükleme (overloading) aynı isimde ama birbirinden farklı özelliklere sahip birden fazla benzer metodun yazılmasıdır. Bu da yazılım geliştiricilere, metodu çağırdığı zaman kullanacağı özelliğe göre seçim yapma esnekliği kazandırır.

C# için geliştirilen .NET Framework içerisinde bir çok metot overloading yüklenmiştir. Örneğin MessageBox sınıfına ait Show metodunun yirmi adet farklı yüklenmiş versiyonu bulunmaktadır. Bu yirmi versiyonun faklı isimlerde tanımlanan metotlar olduğu düşünülürse, geliştiricinin bu metotların hepsini ezberinde tutması gerekecektir ki bu da gerçekten oldukça zordur. Metot overloading iste tam bu noktada geliştiriciye büyük fayda sağlamaktadır. Bu tanımlamaları yaparken ise aynı metotları birbirinden ayırmak gerekmektedir.

Metot parametrelerinin tipleri ve sayıları, aynı isimli metotları birbirinden ayırmaya yarayan özelliklerdir. Metotları benzersiz yapan bu özelliklere metot imzası denilmektedir.

Bu bilgi ışığında başka bir tanımla, metot imzaları farklı ve isimleri aynı birden fazla metodun yazılmasına metot aşırı yükleme (overloading) denilmektedir ( Alkan, 2021).

Metot Aşırı Yükleme Yöntemleri

Metot aşırı yükleme; parametre sayısını, parametre veri tipini ve parametre sırasını değiştirerek gerçekleştirilebilir (Programiz, 2022).

1. Parametre Sayısını Değiştirme

Metotlardaki parametre sayıları farklı olduğu için aynı isimde birden fazla metodun olması mümkündür.

2. Parametre Veri Tiplerini Değiştirerek

Aynı metot isminde parametre sayısı farklı olan metotların aşırı yüklendiği gösterildi. Aynı sayıda parametre sayısına sahip ancak parametrelerinin veri türünün farklı olduğu metotların da aşırı yüklenmesi mümkündür .

3. Parametrelerin Sırasını Değiştirerek

Aynı sayıda parametre sayısına sahip ve parametrelerinin veri türünün aynı olduğu ancak parametre sırasının farklı olduğu metotların da aşırı yüklenmesi mümkündür.

Özyinelemeli (Recursive) Metotlar

Bilgisayar biliminde özyineleme, bir metodun görevini yapmak için kendini tekrar çağırmasıdır. Başka bir deyişle özyineleme, belirli bir koşul sağlanana kadar kendisini bir veya daha fazla kez çağırmak için bir işlev veya algoritma kullanan bir programlama tekniğidir. Aslında yinelemeli yöntemin döngü oluşturmanın başka bir yolu olduğu da söylenebilir. Bir bilgisayarda çözülecek problem birden fazla parçaya bölünebiliyorsa ve her parça aynı özelliklere sahipse, bu problemlerle ilgili algoritmalar yinelemeli olarak tasarlanmalı ve kodlanmalıdır. Özyinelemeli yöntemler, yinelemeli yöntemlerle yazılan programlardan daha yavaş çalışsa da, daha okunaklı, daha kısa kodlar yazarak çözüm üretebildikleri için programcılar tarafından oldukça tercih edilirler

Özyinelemeli (Recursive) Metotların Özellikleri

Özyinelemeli metotların üç temel bileşeni vardır. Bu temel bileşenler:

Temel Durum (Base Case)

Özyinelemeli metotlarda temel durum, işlevin özyinelemeli olarak kendisini çağırmamasıdır. Başka bir deyişle temel durum, problemin bölünemez en küçük durumudur. Bir özyinelemeli işlevin temel durumu yoksa kendisini çağırmaya devam eder ve değerleri döndürmeyi asla durdurmaz. Bu, genellikle arzu edilmeyen sonsuz bir döngünün meydana geldiği anlamına gelir.

Genel Durum (General Case)

Özyinelemeli metotlarda genel durum özyinelemeli durumdur ve problemi kademeli olarak yukarıdan aşağıya daha küçük parçalara bölmektir. Bu işlem temel duruma kadar devam eder .

Convergence (Yakınlaşma):Temel Duruma (Base case) yaklaşma.

Özyinelemeli (Recursive) Metot Avantaj ve Dezavantajları

Avantajlar

Özyinelemeli metotlar ile çok daha az kod ile işlevi yüksek kodlar yazılabilir.

Kod okunabilirliği oldukça artar.

Dezavantajlar

Bazı durumlarda çok yavaştır.

Ufak bir hatada program sonsuz döngüye girebilir.

Bazı durumlarda bellek problemi yaşanabilir

Özyinelemeli Metotların Genel Yapısı

Özyinelemeli metotların yapısında, temel durumu genel durumdan ayıran bir if else koşul yapısı vardır. Bu yapıda bir temel durum koşulu vardır ve bu koşul sağlandığında iteratif olarak hesaplama yapılır. Temel durum koşulunun sağlanmadığı durumda, problem daha küçük parçalara bölünür ve özyinelemeli olarak çözülür. Yukarıda belirtildiği gibi, metotların özyinelemeli yazılması, bilgisayarın daha az kaynak tüketeceği veya daha hızlı çalışacağı anlamına gelmez. Genellikle, iteratif metotlar daha hızlı çalışabilir ve bilgisayar belleğini daha verimli kullanabilir. Ancak özyinelemeli yaklaşım kullanılarak yazılan programlarda, kodun okunabilirliğinin yüksek olması ve daha kısa kod yazılarak elde edilen çözüm nedeniyle yinelemeli yaklaşıma göre tercih edilir.