C#-Overloaded(Aşırı Yüklenmiş) Metotların Gücü
Overloaded(Aşırı Yüklenmiş) Metotların Gücü
| Bu makalemde sizlere overload kavramından bahsetmek istiyorum. Konunun daha iyi anlaşılabilmesi açısından, ilerliyen kısımlarda basit bir örnek üzerinde de çalışacağız.
Öncelikle Overload ne demek bundan bahsedelim. Overload kelime anlamı olarak Aşırı Yükleme anlamına gelmektedir. C# programlama dilinde overload dendiğinde, aynı isme sahip birden fazla metod akla gelir. Bu metodlar aynı isimde olmalarına rağmen, farklı imzalara sahiptirler. Bu metodların imzalarını belirleyen unsurlar, parametre sayıları ve parametre tipleridir. Overload edilmiş metodları kullandığımız sınıflarda, bu sınıflara ait nesne örnekleri için aynı isme sahip fakat farklı görevleri yerine getirebilen ( veya aynı görevi farklı sayı veya tipte parametre ile yerine getirebilen ) fonksiyonellikler kazanmış oluruz. Örneğin;
Şekil 1 : Overload metodlar. Şekil 1 de MetodA isminde 3 adet metod tanımı görüyoruz. Bu metodlar aynı isime sahip olmasına rağmen imzaları nedeni ile birbirlerinden tamamıyla farklı metodlar olarak algılanırlar. Bize sağladığı avantaj ise, bu metodları barındıran bir sınıf nesnesi yarattığımızda aynı isme sahip metodları farklı parametreler ile çağırabilmemizdir. Bu bir anlamda her metoda farklı isim vermek gibi bir karışıklığında bir nebze önüne geçer. Peki imza dediğimiz olay nedir? Bir metodun imzası şu unsurlardan oluşur.
Tablo 1. Kullanım Kuralları Yukarıdaki unsurlara dikkat ettiğimiz sürece dilediğimiz sayıda aşırı yüklenmiş (overload edilmiş) metod yazabiliriz. Şimdi dilerseniz küçük bir Console uygulaması ile , overload metod oluşumuna engel teşkil eden duruma bir göz atalım. Öncelikle metodun geri dönüş tipinin metodun imzası olarak kabul edilemiyeceğininden bahsediyoruz. Aşağıdaki örneğimizi inceleyelim.
Örneğin yukarıdaki uygulamada, Islem isimli iki metod tanımlanmıştır. Aynı parametre tipi ve sayısına sahip olan bu metodların geri dönüş değerlerinin farklı olması neden ile derleyici tarafından farklı metodlar olarak algılanmış olması gerektiği düşünülebilir. Ancak böyle olmamaktadır. Uygulamayı derleme çalıştığımızda aşağıdaki hata mesajı ile karşılaşırız:
Yapıcı metodları da overload edebiliriz. Bu nokta oldukça önemlidir; ki metodları overload etmeyi .NET ile yazılım geliştirirken sıkça kullanırız. Örneğin, SqlConnection sınıfından bir nesne örneği oluşturmak istediğimizde bunu yapabileceğimiz 2 tane overload edilmiş yapıcı metod olduğunu görürüz. Bunlardan birisi aşağıda görülmektedir.
Şekil 2. Örnek bir Overload Constructor(Aşırı Yüklenmiş Yapıcı) metod. Dolayısıyla bizde yazdığımız sınıflara ait constructorları overload edebiliriz. Şimdi dilerseniz overload ile ilgili olaraktan kısa bir uygulama geliştirelim. Bu uygulamada yazdığımız bir sınıfa ait constructor metodları overload ederek değişik tipte fonksiyonellikler edinmeye çalışacağız. Bu uygulamada KolayVeri isminde bir sınıfımız olucak. Bu sınıfın üç adet yapıcısı olucak. Yani iki adet overload constructor yazıcaz. İki tane diyorum çünkü C# zaten default constructoru biz yazmasak bile uygulamaya ekliyor. Bu default constructorlar parametre almayan constructorlardır. Overload ettiğimiz constructor metodlardan birisi ile, seçtiğimiz bir veritabanına bağlanıyoruz. Diğer overload metod ise, parametre olarak veritabanı adından başka, veritabanına bağlanmak için kullanıcı adı ve parola parametrelerinide alıyor. Nitekim çoğu zaman veritabanlarımızda yer alan bazı tablolara erişim yetkisi sınırlamaları ile karşılaşabiliriz. Bu durumda bu tablolara bağlantı açabilmek için yetkili kullanıcı adı ve parolayı kullanmamız gerekir. Böyle bir olayı canlandırmaya çalıştım. Elbetteki asıl amacımız overload constructor metodların nasıl yazıldığını, nasıl kullanıldığını göstermek. Örnek gelişmeye çok, hemde çok açık. Şimdi uygulamamızın bu ilk kısmına bir gözatalım. Aşğıdakine benzer bir form tasarım yapalım.
Şimdi sıra geldi kodlarımızı yazmaya. Öncelikle uygulamamıza KolayVeri adında bir class ekliyoruz. Bu class’ın kodları aşağıdaki gibidir. Aslında uygulamaya bu aşamada baktığımızda SqlConnection nesnemizin bir bağlantı oluşturmasını özelleştirmiş gibi oluyoruz. Gerçekten de aynı işlemleri zaten SqlConnection nesnesini overload constructor’lari ile yapabiliyoruz. Ancak temel amacımız aşiri yüklemeyi anlamak olduğu için programın çalışma amacının çok önemli olmadığı düşüncesindeyim. Umuyorum ki sizlere aşırı yükleme hakkında bilgi verebiliyor ve vizyonunuzu geliştirebiliyorumdur.
Şimdi sıra geldi, formumuz üzerindeki kodları yazmaya.
Sekil 4. 2nci yapıcı
Şekil 5. 3ncü yapıcı
Evet şimdide programın nasıl çaliştığına bir bakalım. Listbox nesnesi üzerinde bir veritabanı adına bastığımızda bu veritabanına bir bağlantı açılır. Ve birde kullanıcı adı ile parola verilerek nasıl bağlanacağımızı görelim. Peki ya yanlış kullanıcı adı veya parola girersek? Şekil 8. Yanlış kullanıcı adı veya parolası sonrası. Evet değerli okuyucular bu seferlikte bu kadar. Bir sonraki makalemizde görüşmek dileğiyle hepinize mutlu günler, yarınlar dilerim. |
