Java - Methodlar

Cumartesi, Mart 07, 2015 kustemura 0 Yorum


Bu yazımda bir önceki yazımda kullandığım yapıların devamı olarak Methodlar'ı anlatacağım.
" Java - Sınıflar " konulu yazıma bu adresten ulaşabilirsiniz.
Methodlar ;
  1 - Geriye değer döndürmeyen methodlar
    1.1 - Parametresiz geriye değer döndürmeyen methodlar
    1.2 - Parametreli geriye değer döndürmeyen methodlar
  2 - Geriye değer döndüren methodlar
    2.1 - Parametresiz geriye değer döndüren methodlar
    2.2 - Parametreli geriye değer döndüren methodlar
  olmak üzere ikiye ayrılırlar.

1-Geriye Değer Döndürmeyen Methodlar 
Daha önce tanımladığımız result değişkenine atadığımız değişkenleri başka işlemlerde kullanmak için tekrar toplama işlemini oluşturmamız gerekicektir.Bu işlemi mainClass sınıfının yerine Rectangle sınıfının yapması daha iyi olucaktır.
class Rectangle{
 double width;
 double height;
 double depth;
void volume (){
  System.out.println("Dikdörtgenin Hacmi  : "+(width * height * depth);
 }
}
Oluşturduğumuz her nesne için bu methodu çağırabiliriz.Böylelikle daha sade bir kullanım oluştu.
class mainClass {
 public static void main(String args[]) {
  Rectangle myRectangle = new Rectangle ();
  Rectangle myRectangle2 = new Rectangle ();
  double result;
  myRectangle.width = 5;
  myRectangle.height = 3;
  myRectangle.depth = 2;
  myRectangle2.width = 7;
  myRectangle2.height = 5;
  myRectangle2.depth = 4;
  myRectangle2.volume();
  myRectangle.volume();
 }
} 
Programın Çıktısı :
Dikdörtgenin Hacmi  için : 140 //myRectangle2
Dikdörtgenin Hacmi  için  : 30 //myRectangle

Bu şekilde programı çalıştırdığımızda bir önceki programda olduğu gibi sonucun aynı olduğunu görüyoruz.Böylelikle yapılan tekrarlardan kurtulup daha sade bir kullanım elde ettik.

Ama bu şekilde kullanımda yeterli değildir.Daha dinamik bir hale getirmek için geriye değer döndüren method şekilde kullanmamız gereklidir.

2 - Geriye Değer Döndüren Methodlar

Bir önceki programda çağırdımız volume methodunda sonucu ekrana yazdıran bir işlem yapıyorduk , bunu her zaman kullanmak mecburiyetinde değiliz.İstenildiği zaman programın çıktısı alınabilir.Bunun dışında diğer işlemler için kullanılmalıdır.Programı tekrar oluşturalım.

class Rectangle{
 double width;
 double height
 double depth;

 double volume (){
  return width * height * depth ;
 }
}

Burada volume methodunun önüne kullandığımız double ifadesi methodun geriye döndereceği değerin veri tipini belirtir.Eğer geriye bir boolean veri tipine sahip bir değer döndürmek istiyorsanız bu methodun tipini int olarak tanımlayamazsınız.Geriye değer döndüren methodlarda her zaman return ifadesi kullanılmak zorundadır.Aksi takdirde program derlenme esnasında hata vericektir.

class mainClass {
 public static void main(String args[]) {
  Rectangle myRectangle = new Rectangle ();
  Rectangle myRectangle2 = new Rectangle ();
  double result;
  myRectangle.width = 5;
  myRectangle.height = 3;
  myRectangle.depth = 2;
  myRectangle2.width = 7;
  myRectangle2.height = 5;
  myRectangle2.depth = 4;

  System.out.println("Dikdörtgenin Hacmi  myRectangle2 için :  "+myRectangle2.volume());
  System.out.println("Dikdörtgenin Hacmi  myRectangle için : "+myRectangle.volume());
 }
} 
Programın Çıktısı :
Dikdörtgenin Hacmi myRectangle2 için : 140 
Dikdörtgenin Hacmi myRectangle için  : 30

Bu programı çalıştırdığımızda ise çıktının yine aynı olduğunu görürüz.Eğer referans eden değişkenlere bir işlem yaptırmak istiyorsak bunu o sınıf içerisinde oluşturup gerekli işlem için çağrılmaya hazır hale getirmeliyiz.Yapı dinamik olursa eğer birçok işlemde kullanılabilir hale gelir.

Parametreli Methodlar

Yukarıda ki programlar parametresiz methodların kullanımını belirtiyordu.
Eğer kodu daha dinamik bir hale getirmek istiyorsak değişkenlere sadece sınıfın methodu içerisinde değer vermeliyiz.Bu durum hem güvenlik açısından hemde kodun sadeliği açısından oldukça önemlidir.Daha sonra bu konuya Sarmalama(Encapsulation) yazısında  ayrıntılı olarak değineceğiz.


class Rectangle{
 double width;
 double height;
 double depth;

 double setValues(double w , double h , double d){
  width = w;
  height = h;
  depth = d;
 }

 double volume (){
  return width * height * depth ;
 }
}

Kodumuzu bu şekilde düzenlediğimizde artık her nesne değişkeni için tek tek atama yapmak yerine aynı işlemi bir methodda topladık.
class mainClass {
 public static void main(String args[]) {
  Rectangle myRectangle = new Rectangle ();
  Rectangle myRectangle2 = new Rectangle ();
  myRectangle.setValues(5,3,2);
  myRectangle2.setValues(7,5,4);
  System.out.println("Dikdörtgenin Hacmi  myRectangle2 için :  "+myRectangle2.volume());
  System.out.println("Dikdörtgenin Hacmi  myRectangle için : "+myRectangle.volume());
 }
}
Programın Çıktısı :
Dikdörtgenin Hacmi myRectangle2 için : 140
Dikdörtgenin Hacmi myRectangle için  : 30
Bu programın çıktısı yine aynı şekildedir , fakat daha dinamik ve kullanışlı bir hale dönüşmüştür.

0 yorum :