Merhaba Arkadaşlar,
mobilhanem.com üzerinden anlattığımız/yayınladığımız derslerimize Temel Java Dersleri serisi altında Java’da Metot Yapısı konusunu anlatarak devam ediyoruz. Metot Yapısı kod geliştirirken çok işimize yarayacak ve gerçek anlamda işimizi çok kolaylaştıracak bir yapıdır. Ayrıca Nesne Yönelimli Programlamada olmazsa olmaz denilebilecek bir konudur. Bu sebeple Metot Yapısı bir geliştirici tarafından iyi öğrenilmelidir.
Metot Yapısı sadece Java geliştirme diline özel bir yapı olmadığı için yapacağımız tanım Nesne Yönelimli Programlamayı destekleyen bir çok yazılım dili için geçerli bir tanım olacaktır. Yazılım dünyasında bir çok ifadenin, tanımlamanın bir araya gelerek bir fonksiyon içerisinde işlemleri gerçekleştirmesiyle metot yapısı ortaya çıkar. Metot Yapısı bir kez kurulduktan sonra bir çok kez ve farklı yerlerde kullanılabilir. Java yazılım dilinde metotların kullanım alanları oldukça geniştir, en çok kullanılan metot olarak yapılandırıcılar (constructors) gösterilebilir. Yapılandırıcı metotlar konusunu ilerleyen derslerde detaylarıyla anlatacağız. Şimdilik sadece bir sınıf çalıştığında ilk önce eğer varsa yapılandırıcı sınıfını çalıştırır diyerek bir başlangıç bilgisi vermiş olalım. Artık metot yapısını daha iyi anlayabilmenizi sağlamak için örnekler vermeye başlayalım.
Örnekler
Örnek 1
Bir proje geliştirdiğinizi ve bu projenin bir muhasebe projesi olduğunu varsayalım. Bu projede bir çok kez toplama, çıkarma, çarpma ve bölme işlemleri yapılacaktır. Bu ve buna benzer durumlarda her toplama işlemi yapmamız gerektiğinde tek tek o işlemi yazmaktansa bu işlemleri yapan metotlar hazırladığımız takdirde işimiz oldukça kolaylaşacaktır. Şimdi bunu nasıl yapacağımızı görelim;
package com.mobilhanem.javaders; /** * Created by ErenBasaran on 04/10/16. */ public class MainClass { public static void toplama(int sayi1, int sayi2) { int sonuc = sayi1 + sayi2; System.out.println(sayi1 + " + " + sayi2 + " = " + sonuc); } public static void cikarma(int sayi1, int sayi2) { int sonuc = sayi1 - sayi2; System.out.println(sayi1 + " - " + sayi2 + " = " + sonuc); } //eger cikarma isleminde negatif deger cikmasini istemiyorsak public static void cikarma2(int sayi1, int sayi2) { if(sayi1 > sayi2) { int sonuc = sayi1 - sayi2; System.out.println(sayi1 + " - " + sayi2 + " = " + sonuc); } else { System.out.println(sayi1 + " küçüktür " + sayi2); int sonuc = sayi2 - sayi1; System.out.println(sayi2 + " - " + sayi1 + " = " + sonuc); } } public static void carpma(int sayi1, int sayi2) { int sonuc = sayi1 * sayi2; System.out.println(sayi1 + " x " + sayi2 + " = " + sonuc); } public static void bolme(int sayi1, int sayi2) { int sonuc = sayi1 / sayi2; System.out.println(sayi1 + " / " + sayi2 + " = " + sonuc); } public static void main(String[] args) { System.out.println("Toplama"); toplama(5, 6); System.out.println("Çıkarma"); cikarma(10, 2); cikarma2(8, 12); System.out.println("Çarpma"); carpma(5, 6); System.out.println("Bölme"); bolme(10, 2); } }
Bu methodları farklı bir sınıfı içerisinden veya farklı bir metot içerisinden rahatlıkla çağırarak heryerde kullanabiliriz. Bu şekilde toplama işlemini yapan metodu bir kere yazdıktan sonra bir daha yazmamıza gerek kalmadan sadece ilgili metodu çağırmak yeterli olacaktır. Dikkatinizi çeken bir konuda, yukarıda yazmış olduğumuz örnek metotların hepsi void anahtar kelimesiyle değer dönmektedir. Aslında bu tip sınıflar dışarıya bir değer dönmezler tüm tanımlanan değerler ile kendi içlerinde işlem yaparlar. Bunun aksi durum ise dışarıya daha önce anlattığımız veri tiplerini dönen metotlardır. Aslında bir metot istediğiniz her türlü nesneyi dönebilir, fakat bu konuları önümüzdeki derslerde anlatacağız. Şimdi veri tiplerini dönen metotlara örnek kodlar yazalım;
Örnek 2
package com.mobilhanem.javaders; /** * Created by ErenBasaran on 04/10/16. */ public class MainClass { public static int toplama(int sayi1, int sayi2) { int sonuc = sayi1 + sayi2; return sonuc; } public static int cikarma(int sayi1, int sayi2) { int sonuc = sayi1 - sayi2; return sonuc; } //eger cikarma isleminde negatif deger cikmasini istemiyorsak public static int cikarma2(int sayi1, int sayi2) { if(sayi1 > sayi2) { int sonuc = sayi1 - sayi2; return sonuc; } else { System.out.println(sayi1 + " küçüktür " + sayi2); int sonuc = sayi2 - sayi1; return sonuc; } } public static int carpma(int sayi1, int sayi2) { int sonuc = sayi1 * sayi2; return sonuc; } public static int bolme(int sayi1, int sayi2) { int sonuc = sayi1 / sayi2; return sonuc; } public static void main(String[] args) { System.out.println("Toplama"); System.out.println("5 + 6 = " + toplama(5, 6)); System.out.println("Çıkarma"); System.out.println("10 - 2 = " + cikarma(10, 2)); System.out.println("12 - 8 = " + cikarma2(8, 12)); System.out.println("Çarpma"); System.out.println("5 x 6 = " + carpma(5, 6)); System.out.println("Bölme"); System.out.println("10 / 2 = " + bolme(10, 2)); } }
Bu örneğimizde metot içerisinde işlemi yaptıktan sonra çıkan sonucu return anahtar kelimesi ile metot dışına döndürdük. Bu şekilde main metodumuz içerisinde toplama, çıkarma, çarpma ve bölme metotlarımızı direk çağırarak sonuçları yazdırabildik. Daha öncede bahsettiğimiz gibi metotlar ile istediğimiz tipte nesneyi döndürebiliriz, String, long, int, float, double vs. hiç farketmez.
Overloading (Aşırı yükleme)
Java’nın güzel özelliklerinden bir tanesi de metotları aşırı yükleme özelliğidir. Aşırı yükleme bir metodun aynı isimle fakat parametrik olarak farklı veri tipleriyle çağrılması durumuna denilir. Yukarıda vermiş olduğumuz örnekler üzerinden gidersek, muhasebe programımızda toplama işlemleri tam sayılar üzerinden yani int veri tipleriyle gerçekleştirilmektedir. Fakat bu bazı sıkıntılara yol açabilir ve bu işlemlerin küsuratlı ve daha büyük sayıları yani double veri tiplerini desteklemesi gerekebilir. Bu gibi durumlarda metot aşırı yüklenir ve verilen iki tipi de kabul edecek şekle getirilir. Aşağıda bunun bir örneğini görebilirsiniz;
package com.mobilhanem.javaders; /** * Created by ErenBasaran on 04/10/16. */ public class MainClass { public static int toplama(int sayi1, int sayi2) { int sonuc = sayi1 + sayi2; return sonuc; } public static double toplama(double sayi1, double sayi2) { double sonuc = sayi1 + sayi2; return sonuc; } public static void main(String[] args) { int tamSayi = toplama(5, 6); System.out.println("5 + 6 = " + tamSayi); double kusurluSayi = toplama(5.5, 6.5); System.out.println("5.5 + 6.5 = " + kusurluSayi); } }
Daha önce öğrendiğimiz gibi metotları void döndürerek kendi içinde işlemlerin sonuçlarını da yazdırabilirdik. Dilersiniz bunu da kendi kendinize yapmaya çalışın ve sonuçları aşağıdaki yorum alanından paylaşın 🙂
Java metot yapısı hakkında anlatacaklarımız bu kadar. Metot Yapısı Java’da önemli bir yer tutmakta ve sonraki derslerimize bir alt yapı hazırlamaktadır.
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm Temel Java Dersleri için tıklayınız..
67
[…] anlattığımız/yayınladığımız Temel Java Dersleri serimize bu dersimizde , bir önceki metot dersinin devamı niteliğinde ve o derse ek bilgilerek vererek devam ediyoruz. Bu dersimizde metot […]
teşekkürler
Emeğinize sağlık ödev aşağıda olmuş mu?
package TemelJava;
public class Ders12MethodsOverLoading {
public static void toplama(int sayi1, int sayi2){
int sonucInt = sayi1+sayi2;
System.out.println(sayi1 + ” + ” + sayi2 + ” = ” + sonucInt);
}
public static void toplama(double sayi1, double sayi2){
double sonucDouble = sayi1+sayi2;
System.out.println(sayi1 + ” + ” + sayi2 + ” = ” + sonucDouble);
}
public static void main(String[] args){
System.out.println(“Tamsayı Toplama :”);
toplama(15,20);
System.out.println(“Küsüratlı Toplama :”);
toplama(20.52,20.49);
}
}