Ekim 18, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?
java

Metotlara Yakından Bakış

Paylaşım , Takip İçin

Metotların Bindirilmesi (Overloading)

  • Java’da parametreleri farklı olduğu sürece aynı sınıfta aynı ismi paylaşan metotlar tanımlanabilir. Buna Methods Overloading denir.
  • Metot Bindirme Java’nın Çok Biçimlilik (Polymorphism) özelliğinden kaynaklanmaktadır.
  • Java’da iki tip çok biçimlilikten bahsedebiliriz:
  • Aşırı Yükleme (Overloading)
  • Devre Dışı Bırakma (Overriding)
  • Devre Dışı Bırakma konusu kalıtım ile beraber ele alınacaktır.
  • Java’da bindirilmiş bir metot çağrıldığında, hangi metodun seçileceğini parametre sayısı ve tipi belirler.

Örnek

public void test() {

  System.out.println("Hiç parametre yok");

}

public void test(int a) {

  System.out.println("a= "+a);

}

public void test(int a,int b) {

  System.out.println("a= "+ a + " b= "+ b);

}

public double test(double a) {

  System.out.println("double a= "+a);

  return a*a;

}

Nesneleri Parametre Olarak Kullanmak

  • Şimdiye kadar metotlarda parametre olarak basit veri tipleri kullanıldı.
  • Ancak metotlara nesne aktarımı yaygın bir kullanımdır.
  • Bunu bir örnek ile açıklayalım:

Örnek

class Test{

  public int a, b;

  public Test( int i, int j) {

  a=i;

  b=j;

  }

 

  boolean equals(Test obj) {

  if(a==obj.a && b==obj.b)

  return true;

  else

  return false;

  }

}
public class objectPass {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

    Test ob1=new Test(100, 200);

    Test obj2=new Test(100, 200);

    Test obj3= new Test(1, 1);

    System.out.println("ob1 == ob2: "+     ob1.equals(obj2));

    System.out.println("ob1 == ob3: "+     ob1.equals(obj3));

  }

}

—————————————–

ob1 == ob2: true

ob1 == ob3: false

  • Örneği incelediğinizde Test sınıfı içerisinde equals() metodu çağrılmaktadır.
  • equals() metodu parametre olarak içinde bulunduğu sınıftan bir nesne alır ve çağrıldığı nesne ile parametre olarak alınan nesnelerin üye değişkenlerinin eşit olup olmadığını kontrol eder.
  • Eğer iki nesne değişkenleri eşit ise true değilse false döner.

Yapılandırıcı Metot İçerisinde Nesne Aktarımı

  • Nesne parametrelerinin yaygın kullanımı yapılandırıcı metotları da içerir.
  • Örneğin sıkı sık ilk haliyle var olan bir nesneyi aynısını inşa etmek istersek, kendi sınıfının bir nesnesini parametre olarak alan yapılandırıcı bir metoda ihtiyaç duyarız.
  •  
  • Bu durumu bir nevi o nesneden bir klon yaratmak gibi düşünebilirsiniz.

Örnek

class Box{

  double width;

  double height;

  double depth;

  //Bir nesnenin kopyasını yaratmak(Klon)

  public Box(Box obj) {

  width=obj.width;

  height=obj.height;

  depth=obj.depth;

  }

  //İlk değer vermeden kullanılan yapılandırıcı

  public Box() {

  width=0.0;

  height=0.0;

  depth=0.0;

  }

  //değer ataması yapan yapılandırıcı

  public Box(double w,double h,double d){

  width=w;

  height=h;

  depth=d;

  }
public double volume() {

  return width*height*depth;

  }

}

public class paramObjBox {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

     Box myBox=new Box();

     Box myBox2=new Box(10, 15, 20);

     // myBox2 nesnesinden bir klon yaratalım

     Box myClone=new Box(myBox2);

     double vol=myBox.volume();

     System.out.println("myBox Hacmi="+vol);

     double vol2=myBox2.volume();

     double volClone=myClone.volume();

     System.out.println("myBox2 vol="+vol2+" myClone        vol="+volClone);

  }

}

Parametre Aktarımına Yakından bir Bakış

  • Genelde bir Java programının bir alt program yada metoda parametre aktarmasının iki yolu vardır.
    • Değer ile çağırma (Call-byvalue) Primitive tipler için kullanılır.
    • Referans ile Çağrıma (Call-byreference) Referans tiplerde kullanılır.
  • Primitive tiplerde bir değişkenin değerini o metoda gönderdiğimizde, değerin bir kopyası gönderilir ve orijinal değer bozulmaz.
  • Referans tiplerde ise, direk olarak parametre aktırılmaz onun yerine referans argüman aktarılır. Parametrenin değerine referans değişken üzerinden erişilir.

Örnek

class refTest{

  int a, b;

  refTest(int i, int j){

  a=i;

  b=j;

  }

  void transVar(int a, int b) {

  this.a=a*2;

  this.b=b*2;

  }

  void transRef(refTest obj) {

  obj.a *=2;

  obj.b *=2;

  }

}
public class transferParam {

  public static void main(String[] args) {

    // TODO Auto-generated method stub

    int a=10, b=20;

    refTest ob=new refTest(10, 20);

    System.out.println("metottan Önce a="+a+" b="+b);

    System.out.println("metottan Önce obj.a="+ob.a+"       obj.b="+ob.b);

    ob.transVar(a, b);

    ob.transRef(ob);

    System.out.println("metottan Sonra a="+a+" b="+b);

    System.out.println("metottan Önce obj.a="+ob.a+"   obj.b="+ob.b);

  }

}

——————————————

metottan Önce a=10 b=20

metottan Önce obj.a=10 obj.b=20

metottan Sonra a=10 b=20

metottan Önce obj.a=40 obj.b=80

Nesne Döndürme

  • Bir metot yarattığımız sınıflarda dahil olmak üzere bir nesne döndürebilir.
class refTest{

  int a, b;

  refTest(int i, int j){

  a=i;

  b=j;

  }

  public refTest inc() {

  refTest temp=new refTest(a+1,b+1);

  return temp;

  }

}
public class transferParam {

 public static void main(String[] args) {

   refTest ob1=new refTest(2, 3);

   refTest ob2=ob1.inc();

   System.out.println("a= "+ob1.a+ " b= "+ob1.b);

   System.out.println("a= "+ob2.a+ " b= "+ob2.b);

 }

}

—————————-

a= 2 b= 3

a= 3 b= 4

Özyinelemeli (Recurisive) Metotlar

  • Özyinelemeli (Recurisive) metotlar kendi kendilerini çağıran metotlar olarak ifade edilir.
  • Bir dönüş kriteri belirlenene kadar bu metot kendi kendini çağırmaya devam eder.
  • Java özyinelemeyi (recurision) destekler.
  • Bunu faktöriyel örneği ile açıklayalım.

Örnek

import java.util.Scanner;

public class recurisive {

  public static int fact(int i) {

  if(i==1) {

  return 1;

  }

    int result =i * fact(i-1);

    return result;

  }
  public static void main(String[] args) {

    // TODO Auto-generated method stub

    Scanner s=new Scanner(System.in);

    System.out.print("Bir sayı giriniz:");

    int sayi=s.nextInt();

    int i=recurisive.fact(sayi);

    System.out.println("faktoryel="+i);

  }

}

Paylaşım , Takip İçin
0 0 votes
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: