Java’da Method Ve Fonksiyonlar

Öncelike Method ve fonksiyon kavramını anlamak gerekir.Standart bir programala dilinde method bize herhangi bir geri değer döndürmeyen kod bloklarına method denir.Eğer bize geri bir değer döndürüyorsa örneğin 5 sayısının 2 ile çarpımı gibi … İşte buna da fonksiyon diyoruz.Java da aynen bu şekilde.

Bazı yeni nesil programlama dilinde method ve fonksiyon aynı şeymiş gibi bir kavramda anlatırlar (Örneğin Swift) gerçek şu dur ki Method aslında bizim tane tane yazdığımız kodları her seferinde tekrar tekrar yazmamak için ve iyi bir bellek yönetimine sahip program yazmamız için varlardır.Fonksiyonlar ise bir işi otomatiğe etmek içi kullanabiliriz.Herhangi bir x saysının 4 ile çarpımı ve bu x sayısının ne olduğu belli degil diyelim.Sadece gelen x sayını 4 ile çarpıp bize bir sonuç verecekse işte burada da fonksiyon kulllanmak gerekir.

İlk Method

Şimdi standart bir method tanımladım.Standart bir method sadece çağrıldığı yerde çalışır.Çağrılmadan çalışmaz.O yüzden biz bunu main kısmına yazdık çünkü biz program ilk derlendiğinde merhaba methodu çalışsın istiyoruz bu yüzden.Başka bir yerde çalışsın istiyorsak oraya yazmamız lazımdı.

Method Etiketlerim

  • Standart bir method aslında sadece void etiketi ile çağrılabilir.
  • Örnek: void merhaba() { // İŞlemler }
  • Burada biz public, static, void etiketi kullandık.Bunu kullanmak zorunda değildik ama biz burada bu etiketleri kullanarak şunu dedik:
  • Merhaba methodu şu özelliklere sahiptir:Public ile heryerden erişebileceğimiz anlamına geliyor.Static ile methoda herhangi bir nesne olmadan erişebileceğimiz belirttik.Void ile de bunun düz bir method olduğunu belirttik.

Nesne Üzerinden Method Erişimi

Static olmayan bir durumda nesne üzerinden erişmem gerekir.Şimdi nesne üzerinden methoda nasıl eriştim ona bakalım.

User-defined Method

Şimdi bir sayının çiftçi tek mi olduğuna bakacak ve ona göre kod blogu çalıştıracak bir user-defined Method tanımlayalım.

Burada sadece 1 değer alır ve gleen değere göre işlem yapar.

Fonksiyonlar Konusu

Aslında iş bir değer almaya gedliyse o zaten bir fonksiyon olmuştur artık.Şimdi örneklere bakalım.

Parametre Almayan Ama Değer Döndüren Fonksiyon

  • Fonksiyon syntax : public static yine bize bağlı şart değil.Float bize fonksiyonun hangi veri tipini return edeceğini söylüyor.piyasi ise fonksiyon ismi. pisayi() parantez içi boş ise bu fonksiyon dışardan bir değer almadan işlem yapma hakkına sahiptir.
  • Biz burada return anahtar kelimesi ile değer döndürecek float tipinde bir veri olan 3.14f değerini girdik.

Parametre Alan ve Geri Değer Döndüren Fonksiyon

  • Burada parantez içine fonksiyonun alacağı veri tipinde local bir değişken oluşturdum.
  • Ardından return ile gelen sayı degerını 2 ile çarptım.

Birden Fazla Değer ile Fonksiyon

Birden fazla değer alan fonksiyonlar da aynı mantıkla yazılır.

  • 2 adet int deger alması şeklinde ayarladım.
  • Gelen değerleri topladım ve o şekilde return ettim.


Instance Method Ve Static Method

Static bir methodu nesne erişimi olmadan çağırabilirim.

Bu görsel boş bir alt niteliğe sahip; dosya adı Ekran-Resmi-2020-10-08-23.45.46.png

Instance method kullanıcaksam yani no-statik bir void yöntem ise nesne kullanmak zorudayım.

Bu görsel boş bir alt niteliğe sahip; dosya adı Ekran-Resmi-2020-10-08-23.48.11.png

Aynı şey fonksiyonlar içinde geçerli.

Bu görsel boş bir alt niteliğe sahip; dosya adı Ekran-Resmi-2020-10-08-23.50.46.png

Instance method 2 kısıma ayrılır.

  • Accessor Method. (Erişimci Yöntemi)
  • Mutator Method. (Mutator Yöntemi)

Accessor Method

Değişkenler üzerinde değer okuyan fonksiyonlar olarak bilinir.Bunu kolayca tanımlayabilir çünkü get kelimesi ile birlikte kullanılır.

Bu görsel boş bir alt niteliğe sahip; dosya adı Ekran-Resmi-2020-10-09-00.02.02.png

Mutator Method

Değişken üzerinde ki değeri okur ve değerleri değiştirir.Yani set eder.Hiç bir şey döndürmez.

Bu görsel boş bir alt niteliğe sahip; dosya adı Ekran-Resmi-2020-10-09-00.07.29.png

Recursive Fonksiyonlar (Özyenileme Fonksiyonlar)

Öncelikle recursive fonksiyon nedir ? Bir yapının kendi kendine atıfta bulunmasını olanak sağlayam fonksiyon türüdür.Kendini dolaylı yoldan veya doğrudan çağıran fonksiyon türü olarak anılır .Matematiksel işlemlerde örneğin döngü kullanarak 100 satır kod yazman gerekirken recursive fonksiyonlarla bu işlemi çok daha kısa süre de yapmak mümkün.

Ama recursive fonksiyonlarda kendi içinde dezavantajları da vardır bunlardan bir tanesi recursive fonksiyonlarda olan bazı açıkların olması .BU yüzden mesela askeri projelerde kullanılmaması gibi durumlar vardır.Recursive fonksiyonlar bir problemi çözmek için algoritmayı basitleştirir.Lakin döngülere göre çağırma sayısı arttığı için bellek yönetimide aynı şekilde artar.

Her döngü bir Recursive fonksiyon olarak yazılabilir 🙂 Şimdi örneklere bakalım.

Örnek: 1:

Şimdi 1 ile 10 arasında ki sayıların bulan bir for döngüsü yapalım.

Şimdi bir de aynı örneği Recursive fonksiyon ile yapalım.,

  • myRecursive fonksiyonu int tipinde bir sayı alarak işleme başlar.
  • Gelen sayı değeri eğer 10 a eşit ise ekrana sayı değerinin çıktısını basar ve return sayı ile sayı değerini return eder.
  • Else : Tersi bir durum yani gelen sayının 10 olmadığı bir durumda yani suanda bizim main kısmında gördüğümüz gibi ilk olarak 1 değerini gönderdik.
  • İşte tam da bu an da ekrana sayı değerini basar .Ardından return myRecursive (sayi+1) ile işte tamda bu anda Recursive işlemi görüyoruz.Dikkat ettiyseniz return etmeden önce sayi+1 ile (Örnegin 2+1) 1 arttrıp o şekilde return ediyor.
  • Sonra da sayı değeri artık 10 olduktan sonra ilk başta ki if blogu devreye giriyor ve işlem sonlanıyor.

Recursive fonksiyonlar da aslında kendi içinde ikiye ayrılır diyebilirim.

  • Finite times (Sonlu Zaman)
  • Infinite times. (Sonsuz Zaman)

Önceki örneğiniz bir koşuşa bağlı yani Finite times Recursive bir fonksiyon örneğiydi.İşte belli bir koşulu olmayanlarada Infinite times Recursive diyoruz.

This deyimi

Sınf içersinde erişebilecek üyeler için kullanılır .Nesnelerin kendini referans etmesini sağlar.Bu referans sayesinde nesnelere ait global değişkenlere erişim sağlarım.Ayrıca değişken isim çakışmalarında yine ters köşe olmamak için this kullanmak mantıklıdır.Yapıcılarda (Constructor ) göreceğimiz bol bol this kullanıma şimdiden hakim olmanız önemli.

Eğer this kullanmasaydık ?

This kullanmasakta aynı sonucu elde edebilir lakin atama işlemlerinde daha doğru bir sonuç elde etmek için ki set işlemi de bir atama işlemidir, o yüzden this kullanmak doğru olan şeydir.This anahtarı o an ki mevcut sınıfın örnek değişkenine erişiyor.

Super Deyimi

Super deyiminin farklı kullanım alanları vardır .Alt sınıftan oluşturan her bir nesnede bulunan üst sınıfa ait iç nesneye erişmek için kullanılır .Alt sınıftan üst sınıfa erişmek için super deyimi kullanma kafiidir.

  1. super, hemen üst sınıf örnek değişkenini belirtmek için kullanılabilir.
  2. super, hemen üst sınıf yöntemini çağırmak için kullanılabilir.
  3. super (), hemen üst sınıf yapıcısını çağırmak için kullanılabilir.

Örnek:

  • Örnekte hayvan ve köpek sınıfınında renk isminde ortak bir özelliği var.Ayrıca köpek sınıfı hayvan sınıfın tüm özelliklerini kullanabilme hakkında sahip yani extends edilmiş.
  • Renk özelliğini yazdırırsak default olarak mevcut sınıfın kendi rengini yazacaktır . Burada mülke erişmek içn super anahtar kelimesini kullanmamız gerekir.
  • System.out.println(renk) bize köpek sınıfın rengini yazar.
  • System.out.println(super.renk) Eğer mevcut sınıf bir kastım ile türetildiyse hangi sınıftan türetildiyse o sınıf onun super sınıfa olarak geçtigi için ise hayvan sınıfını rengini yazar.

Örnek 2:

Main kısmı:

  • Hayvan classı sadece yemek adında bir void method içerir.
  • Kopek sınıfı ise hayvan sınıfından miras alınarak yapılandırılmış.
  • Kopek sınıfının içinde yemek ve kopeksesi ve yasam olmak üzere 3 adet method var.
  • yasam methodu ise kopek sınıf kalıtım ile türetildiği için onun super sınıfın yemek methoduu çağır.

Şimdilik bu kadar temel bilgi yeterli 🙂

Leave a Reply

*