Java Metodlari
Java Metodlari
Problemleri cozmek icin kullanilan bilgisayar programlari cok buyuk boyutlardadir. Buyuk programlari yonetmenin ve gelistirmenin en uygun yolu ise programlari daha kucuk parcalara bolmektir. Bu parcalara modul denir.
Java 'da Program Modulleri
Java dilinde 2 modul bulunmaktadir.Bunlar sinif lar ve metod lardir. Java programlari java sinif kutuphanelerinde hazir olarak bulunan metodlar ve siniflar kullanilarak, onlardan yeni siniflar tureterek ve yeni sinif ve metodlar olusturularak bunlarin birlestirilmesiyle yazilir. Java API, Java sinif kut uphanelerinin olusturdugu bir arayuzdur.Bu arayüz ( sinif kutuphaneleri ) ,programcinin isini genel matematiksel hesaplamalar, string islemleri, karakter islemleri, giris cikis ve hata kontrolleri gibi bircok islemlerde kullanilmak uzere cok sayida sinif ve metod
icererek kolaylastirir. Java diline ait hazir sinif kutuphaneleri JDK( Java Developer's Kit )'in bir parcasidir.
Programci programda kullanilmak uzere ozel isler icin tasarlanmis metodlar yazabilir. Bir metodun kullanilabilmesi için çagrilmasi(method call) gerekir. Bu çagirma islemi sirasinda gerekli parametreler(arguments) de belirtilir.
Math Sinifi Metodlari
Math sinifi metodlari genel matematik islemlerinde kullanilir. Metodlar isimleri va parantez icindeki parametreleri ile birlikte cagrilir. Butun math sinifi metodlari Math sinif ismi, "." ve metod ismi ile birlikte kullanilir. Metotlar genelde asagidaki sekilde çagrilirlar :
[Class_name] Method_name ([Arg_1],[Arg_2..]); [Class_name] : bu kisim çagrilacak olan metotun ait oldugu sinifi belirtir. Her zaman gerekmez. Ancak Math sinifinin bir metodu çagrilacaksa "Math." Ifadesi mutlaka metot isminde önce bulunmalidir.
Metod parametreleri sabitler, degiskenler veya ifadeler( expressions ) olabilir.
Metodlar
Metodlar programcinin programi moduler hale getirmesini saglar. Metod icinde tanimlanmis butun degiskenler yerel degiskenler ( local variables ) dir. Sadece icinde tanimlandigi metod
icerisinde taninirlar. Metodlarin bir cogu parametrelere sahiptir. Bu parametreler metodlar arasindaki iletisimi saglamak icin kullanilir. Genellikle yerel degiskenlerdir Programi metodlar ile modularize etmenin bir kac yolu vardir. Divide-conquer yaklasimi program gelistirirken programa daha cok hakim olunmasini saglar. Diger bir yol ise software reusability' dir ( Var olan metodlar yeni bir program uretmek icin bloklar halinde olusturulur).Iyi bir yontem ile isimlendirme ve tanimlamalar yapilir, ayrica ozel bir program kodu yazmak yerine program standart metodlardan olusturulur. Ucuncu bir nokta ise tekrar eden program kodundan sakinmaktir. Paketlenmis kod(modularize edilmis, kucuk parcalara ayrilmis) programin degisik yerlerinden cagrilir ve boylece tekrar yazilmasindan kurturulur.
Metod Tanimlamalari
Su ana kadar sinif kutuphanelerinde var olan metodlar ve siniflar kullanildi. Simdi yeni bir metodun nasil tasarlandigini gorecegiz. Bir applet tasarlayalim ve square metodunu kullanarak 1' den 10'a kadar olan sayilarin karesini bulsun ve paint metodunu kullanarak yazdirsin.
Square metodu paint icerisindeki 12. satirdaki call ( square(x)) deyimi ile cagrilir. Square metodu parametre olarak x'i alir ve y'ye x' in degerini kopyalar. Metod y*y' yi hesaplar ve sonuc
geri doner ve ekrana yazdirilir. Bu islem on kez tekrarlanir. 17. satirdaki metod tanimlamasi metodun paramatre olarak integer bir sayi kabul ettigini gosterir. Metod isminden onceki Int kelimesi ile metodun integer bir sonuc dondurecegi anlasilir.Javadaki butun metodlarin tanimlamasi bir sinif taniminin icerisinde yapilmalidir. Metod tanimlamasinin formati asagidaki gibidir.
Dondurulecek-degerin-tipi metod-ismi( parametre -listesi )
{
Tanimlamalar ve ifadeler
}
Metod ismi herhangi gecerli bir ifade olabilir. Dondurulecek degerin tipi void ise bu ifade Metodun birsey döndürmeyecegini gösterir.Parametre listesinde birden fazla parametre var ise "," ile birbirinden ayrilirlar. Parametere listesindeki parametreler metod cagrildigi zaman kabul edilir.Parametrelerin tanimlamalari acik bir sekilde yapilmalidir. "{" ve "}" arasinda yazilan hersey metodun govdesini olusturur.Blok olarakta isimlendirilir.Degiskenler blok icerisinde tanimlanmalidir. Bir metod baska bir metod icinde tanimlanamaz. Metodun cagrildigi yere donmesi uc sekilde olur. Eger metod bir deger dondurmuyor ise geri donus metodun sonuna gelinmesiyle "}" veya asagidaki satirin uygulanmasi ile olur ; return eger bir deger geri donduruyorsa return expression ifadesi kullanilir. Ikinci ornegimizde programci tarafindan tanimlanmis, uc tane sayidan en buyugu bulan maximum isimli metod kullanilmistir. Sayilar metin kutularindan giris olarak alinir, enter ile birlikte maximum metodu cagrilir, en buyuk olan sayi bulunup return ile geri donulur ve diger metin kutusuna en buyuk sayi yazdirilir.
Rastgele Sayi Türetme
Bu bolumde birden fazla metod iceren bir oyun programi olusturacagiz. Programda daha once gosterilen yapilar kullanilacaktir. double randomValue = Math.random( ); Random metodu 0.0 ile 1.0 arasinda rastgele double bir sayi uretir.Bu aradaki sayilarin her biri esit sansa sahiptir. Random metodunu gostermek icin bir program yazacagiz. Bu programda 20 kere zar atisini
simule edecegiz ve uretilen sayilari satirlara sirasi ile yazdiracagiz. Program 1 ile 6 arasinda rastgele sayi uretir. Programi asagida gorebilirsiniz. Random ile birlikte " * " operatoru kullanilir.
0 ile 5 arasinda rastgele sayi uretmek icin yukaridaki ifade kullanilir. Buna scalling denir. 6 scalling faktorudur.Program icerisinde her uretilen sayiya 1 eklenmistir.
Otomatik Degiskenler
Su ana kadar degisken isimleri için tanimlayicilar kullanilmistir.(identifiers) degiskenlerin bir çok özellkileri vardir : ad, tip, boyut, deger, süre(duration), menzil (scope). Bunlardan ilk dördü açiktir. Süre ise degiskene ilk referans verilip bellekte yer açilmasindan, bellekten silinineye kadar geçen süredir. Bu süre her degisken için farklidir. Bazilari çok kisa, bazilari ise tüm
program boyunca hayatta kalirlar. Menzil ise program içinden degiskene referans edilebilen yerlerdir. Bazilarinin menzili modül seviyesinde kalirken bazilari da tüm programdan referans edilebilir. Metotlarin yerel degiskenleri ve parametrelerde yaratilan degiskenleri "otomatik süreli degiskenler" olarak adlandirilir. Bu degiskenler islenme sirasi kendilerine geldiginde yaratilirlar
ve metottan çikana kadar var olurlar. Metottan çikinca da gene otomatik olarak imha edilirler. Otomatik süreli degiskenler kisaca "Otomatik Degiskenler" diye adlandirilir. Java ayrica static
süreli degiskenlere de izin vermektedir. Bu tür degiskenler bellege yüklendikten programin bitmesine kadar yasarlar. Statik süreli metotlarin adlari ise ilk bellege yüklendigi andan program
bitimine kadar varolur. Ancak bu her zaman kullanilabilecekleri anlamina gelmez, çünkü menzil ve süre (duration) kisitlamalari hala geçerlidir.
Scope Kurallari
Bir degiskene ait scope o degiskene program icerisinden ulasilabildigimiz sahalardir. Mesela bir yerel degiskene tanimlandigi blok disindan ulasilamaz. O degiskene sadece
tanimlandigi blok icerisinden referans edilebilir. Bir degisken icin class scope ve block scope' una bakilir. Metodlar ve ornek degiskenler icin class scope soz konusudur. Class scope sinifa ait ' { ' ile baslar ve ' } ' ile son bulur. Class scope sinif icerisindeki metodlar icerisinden diger metod ve ornek degiskenlere ulasilabilmesini saglar. Blok icerisindeki degiskenler block scope 'a sahiptir. Block scope tanimlanmasi ile baslar ve blok sonu olan ' } ' ile biter.
Recursion ( tekrarlama )
Daha once uzerinde durdugumuz programlar genel olarak metodlardan olusuyor ve birbirlerini bir duzen icerisinde hiyerarsik olarak cagiriyorlardi. Bir recursive metod ise kendi icerisinden
kendisini cagiran metod olarak tanimlanabilir. Basit ornekleri mevcuttur. Asagidaki programimiz ( FactorialTest.java ) recursion bir programdir. 0' dan 10' a kadar olan sayilarin faktoriyellerini hesaplar ve yazdirir. Recursive bir metod olan factorial once sayinin 1' e esit veya 1' den kucuk olup olmadigini kontrol eder, eger bu sart gerceklesirse factorial 1 degerini dondurur. Eger bu sart dogru degil ise bu satir islenir ;
return number*factorial ( number - 1 ); yani factorial metodu icerisinden yine factorial metodu (number-1) parametresi yollanarak cagrilir
Recursion ve Iterasyon
Bu bolumde recursion ve iteration metodlari karsilastirilacak ve programcinin hangi sebeple hangi metodu nerede sececegi uzerinde durulacaktir.. Ikiside kontrol yapisina dayanir. Iteration tekrarlamali yapilari kullanir(for veya do/while). Recursion secmeli bir yapi kullanir( if, if /else veya switch gibi ) Hepsi tekrarlamayi icerir. Ikiside yok etmek icin bir test icerir. Iteration dongu sarti gerceklestiginde recursion ise temel sart gerceklestiginde yok olur. Eger iteration testinde dongu sarti gerceklesmezse sonsuz dongu meydana gelir. Recursion' un eksileri coktur.Surekli olarak mekanizmayi calistirir ve siksik overhead ( ustune yazma ) yapar. Bu da onun islemci zamani ve bellek acisindan pahali olmasi anlamina gelir. Iteration normal olarak metod icinde meydana gelir overhead ve extra bellek ayrimi ihmal edilir.
Recursive olarak cozulebilecek her problem iterative olarakta cozulebilir. Recursive iteration ' a gore daha cok hatalari kontrol eder ve anlasilmasi ve yonetilmesi daha kolaydir.
Method Overloading
Java metodlarin isimlendirilmesi sirasinda ayni isimlerin kullanilmasina izin verir. Metodlar isimleri aynioldugu halde parametreleri farkli olabilir. Bu method overloading olarak tanimlanir.
Bir method overloading meydana geldigi zaman java compiler'i metodlari sirasi ile test eder parametrelerin tiplerini, sayilarini ve sirasini karsilastirir ve uygun olan metod cagrilir. Method overloading ayni isi yapan fakat farkli veri tiplerini kullanan metodlar icin tercih edilir. Overloading methodlar programlari daha anlasilir ve okunur hale getirir. Asagida gordugunuz program ( MethodOverload.java ) overloaded metodlar olan square'lari kullanir. Metodlardan biri parametre olarak integer bir sayi alirken digeri double sayi almaktadir.
Program icerisindeki square metodlari;
int square ( int x ) &n bsp;
double square ( double y )
Applet Siniflarinin Metodlari
Su ana kadar bircok applet yazildi ama bir apletin uygulanmasi sirasinda otomatic olarak cagrilan applet sinifi uzerinde durulmadi. Asagidaki figurde applet sinifina ait metodlar, ne
zaman cagrildiklari ve amaclari listelenmistir.
Henüz Yorum Yapılmamış, İlk Yorumu Siz Yapın