JAVA NOTLARI METOTLAR DEES-6
Merhaba arkadaşlar. Bu dersimizde programlarımız ve bizim için benzersiz yardımcılar olan “Metot”ları işleyeceğiz. Lafı uzatmadan başlayalım
Metot Nedir ?
Yukarıda da bahsettiğim gibi metotlar bizim için benzersiz yardımcılardır. Bir işlemi bir kere yazıp, program içerisinde istediğimiz yerde ve sıklıkta kullandığımız yapılardır. Fonksiyon olarak da adlandırılırlar ve diğer dillerde genellikle bu tabirle kullanılırlar. Ancak Java’da “methods“(metotlar) olarak isimlendirilir ve bu şekilde bilinirler. Metotlar oluşturulma şekillerine göre ikiye ayrılırlar :
- Önceden Tanımlanmış Metotlar : Java kütüphanelerinde bulunan hazır metotlardır.
Örneğin : pow(x,y) metodu. Math sınıfına ait olan bu
metot, x ve y olarak iki değer alır ve bir değer
döndürür. Görevi ilk değerin(x), ikinci değer(y)
üssünü almaktır.
- Kullanıcı Tanımlı Metotlar: Bizim yazdığımız ve oluşturduğumuz metotlardır.
Metotların deklarasyonunu görelim :
erisimBelirteci durumBelirteci donusTipi metotAdi(parametreList) { ifadeler; }erisimBelirteci, daha sonra göreceğimiz erişim belirtecidir. Bu metodun hangi alanlar tarafından kapsandığını ve ulaşılabilme sınırını belirtir. durumBelirteci, yine daha sonradan göreceğimiz metotun durumunu belirtmemize yarayan belirteçtir. donusTipi, biraz sonra göreceğimiz geri dönüş tipidir. Döndüreceği veri tipi buraya yazılır.metotAdi, metodumuzun adıdır. parametreList, yine biraz sonra göreceğimiz parametrelerin yazılacağı alandır.
Basit bir metot örneği yapalım :
Çıktımız :
Örneğimizi açıklayacak olursak : main metodumuzun bulunduğu sınıf içerisinde, erişim belirteci “public” ve “değerdöndürmeyen“(void) yeni bir metot tanımlaması yaptık. Metodumuz herhangi bir parametre almayıp ekrana sadece yazı yazdırma işlemi yapar. main metodumuza geldiğimizde, ilk başta bir nesne deklerasyonu görülür. Nesne deklerasyonuna kafanızı pek takmayın bir dahaki derste onunla tanışacaksınız Ancak şunu unutmayın ki, bir metot ancak bulunduğu sınıf üzerinden türeyen bir nesne tarafından çalıştırılabilir. 13.satırda, oluşturduğumuz nesne üzerinden metodumuzu çalıştırdık ve sonucu aldık.
Yukarıda basit bir örnek ile açıklanmaya çalışılmıştır ancak metotları biraz daha deşeceğiz. Anlamadık, çok sayıda terim var vs gibi sorularınız için yazının sonuna kadar bekleyin. Yazıyı sonuna kadar okuduğunuzda konuyu ve örneği bir daha kavramış olacaksınız.
Metotlar, dönüş tiplerine göre ikiye ayrılırlar :
1. Değer Döndüren Metotlar
Çağırıldığı yere değer döndüren metotlardır. Genel görünüşünü şu şekilde özetleyebiliriz :
erisimBelirteci durumBelirteci donusTipi metotAdi(parametreList) { ifadeler; return deger; }Bunun için basit bir örnek yapalım ve örneğimiz üzerinden açıklayalım :
Çıktımız :
Burada(5-7.satır) “topla” adında, “public” erişim belirtecine sahip olan ve “int” tipte geriye değer döndüren bir metot tanımladık. Metodumuz iki adet de “int” tipte değer alıyor ve bize bu değerleri toplayıp geri döndürüyor. Geri döndürme ifadesi “return” ile yapılır ve kullanımı örnekteki gibidir. main metodumuza geldiğimizde yine ilk olarak bir nesne deklerasyonu, daha sonra da int tipinde bir “a” değişkeni yazıyoruz. “a“ya değer olarak 10 giriyoruz. Ancak bir sonraki satırda “a“nın değerini metottan geri dönen değere eşitliyoruz. Metodumuz, 15 ve 30 değerleriyle çalıştırılıyor ve geriye bunları toplayıp 45 değerini döndürüyor. Dönen bu değer de “a” değişkenine atanıyor ve sonuç çıktıda görülüyor.
Örneği anlamışsınızdır umarım, gayet basit tutmaya çalıştım. Genel itibariyle değer döndüren metotlar bu sistemle çalışırlar. Metodun geriye döndüreceği değer tipi, tamamen size kalmış. Yani, örneğimiz int tipinde değer döndürüyordu ancak siz diğer primitif tipler(byte, char, boolean vs..) ile geri dönüş yaptırabileceğiniz gibi, tamamen sizin oluşturduğunuz yeni bir veri tipiyle de değer döndürme işlemi yapabilirsiniz. Ancak unutmamanız gereken şey “return” ifadesini yazmaktır. Metodunuz geriye bir değer döndürüyorsa ancak “return“ü yazmadıysanız hata alırsınız.
2. Değer Döndürmeyen Metotlar
Basit metotlardır ve geriye herhangi bir değer döndürmezler. “void” anahtar sözcüğüyle tanımlanırlar ve genel görünümü şu şekildedir :
erisimBelirteci durumBelirteci void metotAdi(parametreList) { ifadeler; }En başta yazdığımız örnek, bir değer döndürmeyen metot örneğiydi. Metot çağırılır, işlemini yapar, sonlanır ve ileriki satırdan devam edilir. Basit bir düzendir ve karmaşıklığı yoktur. void, İngilizce bir kelimedir ve anlamı “boş, geçersiz“dir. Bu da bir bilgi olsun diyelim
Metotları bir başka ikiye ayırma türümüz de parametre alıp almamasına dayanır. Şimdi bunları inceleyelim :
1. Parametre Alan Metotlar
Parametre, malzeme olarak örneklenebilir. Siz metoda malzeme verirsiniz ve o da size onu işleyerek geri döndürür veya döndürmeden kendi işlemlerinde kullanır. Bazı metotlar dışarıdan parametreye ihtiyaç duyarken, bazıları duymaz. Biz bu başlıkta parametre alan metotları inceleyeceğiz. Bazı kaynaklarda parametre yerine “argüman” kelimesi de kullanılır, bunların aynı şeyler olduğunu bilmenizde fayda var. Bu sefer örneğimizde daha önceden tanımlı metotlardan biri olan pow(x,y) metodunu kullanalım. pow(x,y) metodu, Java’nın Math sınıfında yer alır, dışarıdan iki değer alarak bunları işler ve bize bir sonuç döndürür :
Çıktımız :
Yine basit ancak örnek olması açısından yeterli bir kod görüyoruz. İlk olarak, 10 değerine sahip bir “a” değişkeni oluşturduk. Ancak daha sonra “a“nın değerini pow metodundan geri dönecek olan değere eşitledik. pow metodu, geriye double tipte değer döndüren bir metottur. Bu nedenle cast işlemi yaptık. pow metodunu çağırma biçimimizMath.pow şeklindedir. Yani bu, Math sınıfının pow metodu anlamına gelmektedir. Parametre listesine, değişkenin adını yazabileceğimiz gibi direk değerini de yazabiliriz.
2. Parametre Almayan Metotlar
Dışarıdan herhangi bir değer almayan metotlardır. Yine ilk örneğimiz bu metotlara bir örnektir. Basittirler, ancak hayal gücünüze bağlı olarak çok zor işlemlerin bile altından kalkma potansiyeline sahiptirler.
Overload
Overload, aşırı yükleme anlamına gelmektedir. Java, bize aynı isimde ancak farklı işlevde kullanılabilecek metotlar tanımlamaya izin verir. Aynı isimde metotlar tanımlamak için her birinin :
- Parametre tür veya sayıları
- Geri dönüş tipleri
farklı olmalıdır. Bir örnekle bunu açıklayalım :
Çıktımız :
Örneğimizde, iki adet aynı isimde ve aynı dönüş tipinde metot bulunuyor. Ancak parametre sayılarının farklı olması, hata almamamıza ve programın güvenle yürütülmesini sağlıyor. İşte bu olaya overload denir.
Ana Metodumuz : main()
Java’da program, ana metot olan main’den başlar. main’in bir metot olduğunu hemen hemen ilk dersten beri biliyoruz ve genel metot özelliklerini barındırdığını şimdi görmüş olduk. İsterseniz bu metodun özelliklerine bir kez daha bakalım :
Metot Adı -> main Erişim Belirteci -> public Durum Belirteci -> static Dönüş Tipi -> void Parametre -> String dizisiBu konunun ardından main’i daha iyi anlamış olduğumuzu düşünüyorum.
Evet arkadaşlar, bu dersimizin de sonuna gelmiş bulunuyoruz. Metotlar, programı kolaylaştıran yapılardır. Metotların kullanımı, programın işlevselliğini arttıracaktır. Metotların temel mantığı şudur : “Bir kere yaz, çok kez çalıştır“. Metotları, işlerimizi kolaylaştıran mutfak robotlarına benzetebilirsiniz. Parametre alan ve değer döndüren metotlar için bu iyi bir benzetme olur. Bir meyve sıkacağı düşünün, görevi meyve sıkmak. Siz ona elma verirseniz o size elma suyu verir, siz ona portakal verirseniz o size portakal suyu verir. Yani farklı parametreler farklı sonuçlar doğurur. Bir de aynı işi mutfak robotu olmadan yaptığınızı düşünün. Her meyve için aynı işlemleri tekrar tekrar ve daha uzun bir süre zarfında gerçekleştirmeniz gerekecek. İşte metotlar da programımızı bu yükten kurtarır ve bizlere kolaylık sağlar. Programlarınızda sıkça metot kullanmanızı öneririm. Bunun bir diğer artısı, kodun okunabilirliğini arttırmasıdır.
Bilgi paylaştıkça çoğalır.. Herkese bol Javalı günler !