Java OOP günlükleri - 3 Constructorlar (Yapıcı, Yapılandırıcı Metodlar)

Bir çok dili temel ve orta seviyede biliyorum. Java da temel bildiğim dillerden bir tanesi. Java'yı yıllardır bilmeme rağmen OOP konusunda takılıp/kendimi çok geliştirmeden kaldım. Bu blog'da bildiğim ve yeni öğrendiğim şeyleri kodları ile beraber sizlerle paylaşacağım.

Bundan önceki yazımda set ve get metodlarını ve kapsüllemeyi anlatmıştım. Bu iki yöntem işin içine fazla değişken girince pratikliğini yitirebiliyor. Bu yazımda Constructorlar(Yapıcı, yapılandırıcı Metodlar)'dan bahsedeceğim.

Bildiğiniz üzere bir sınıf'a bağlı nesne tanımlarken;

<sınıf ismi> <nesne> = new <sınıfismi>();

şeklinde bir yapı kullanıyoruz. Gördüğünüz üzere en sonda bir parantez var. Parantezin olduğu yere biz parametre yazıp nesne oluştuğu anda değer almasını sağlayabiliriz.

Bunun için şu şekil bir yapı kullanıyoruz.

Java:
class sinifismi{
public sinifismi( parametre ){

}
}

Sınıfın içine sınıf ismi ile aynı bir fonksiyon yazıyoruz. Bu yöntem ile bundan önceki insan örneğimizi biraz daha pratikleştirelim. Bundan önceki kod:
Java:
class insan{

    int boy;
    int kilo;
    String isim;


    public void setBoy(int boy) {
        this.boy = boy;
    }
    public int getBoy() {
        return boy;
    }
}
public class Furkaninkosesi {
public static void main(String[] args) {

  insan ali = new insan();
  insan fatma = new insan();

  ali.setBoy(175);
  fatma.setBoy(170);

  System.out.println(ali.getBoy());
  System.out.println(fatma.getBoy());

}

Bu kodu şu şekilde de yapabiliriz:
Java:
class insan{

    private int boy;
    private int kilo;
    private String isim;
    public insan(int boy, int kilo, String isim) { //sınıf ismi ile aynı isme sahip fonksiyon yazdım ve parametreleri değerlere eşitledim.
        this.boy = boy;
        this.kilo = kilo;
        this.isim = isim;
    }
    public int getBoy() {
        return boy;
    }
    public int getKilo() {
        return kilo;
    }
    public String getIsim() {
        return isim;
    }
}
public class Furkaninkosesi {
public static void main(String[] args) {

  insan ali = new insan(175,65,"Ali"); //Obje oluşturulurken değerleri girdim.
  insan fatma = new insan(170,60,"Fatma"); //Obje oluşturulurken değerleri girdim.

  System.out.println(ali.getBoy());
  System.out.println(fatma.getKilo());

}
}

Bundan önceki örneklerde kilo ve isim değişkenlerini girmemiştim bu sefer bütün değişkenler obje oluşturulurken giriliyor ardından biz de get metodları ile verilere erişiyoruz. Program çıktı olarak 175 60 verdi.

Constructorları overloading de yapabiliriz. Overloading işlemi bir metodun farklı parametrelerle farklı şekillerde çalışmasıdır. Temel java biligisidir.

Örnek:

Java:
class insan{

    private int boy;
    private int kilo;
    private String isim;
    public insan(int boy) {
        this.boy = boy;
   
    }
    public insan(int boy, int kilo, String isim) {
        this.boy = boy;
        this.kilo = kilo;
        this.isim = isim;
    }
    public int getBoy() {
        return boy;
    }
    public int getKilo() {
        return kilo;
    }
    public String getIsim() {
        return isim;
    }
}
public class Furkaninkosesi {
public static void main(String[] args) {

  insan ali = new insan(175);
  insan fatma = new insan(170,60,"Fatma");

  System.out.println(ali.getBoy());
  System.out.println(fatma.getKilo());

}
}

Aynı metodu farklı parametrelerle yazdım ve obje oluşurken ali objesine bir parametre girdim. Ali objesinin boy değişkeni obje oluşturulurken girildi. Fatma objesinin de bütün değişkenleri obje oluşturulurken girilmiş oldu. Çıktı olarak 175 60 verdi.

İşleri biraz daha geliştirip varsayılan değerlerle birlikte obje oluşturmak istersek şu yapıyı da kullanabiliyoruz:

Java:
class sinifismi{

int degisken_1;
String degisken_2;
String degislen_3;

public sinifismi(int degisken_1){

this(degisken_1,"varsayılan","varsayılan"); //Burada sınıfın kendi metodunu çağırdık ve parametrelerini girdik. Bu işlemle bilinmeyen değişkenlere varsayılan olarak bir değer atayabilirsiniz.

}

public sinifismi(int degisken_1, String degisken_2, String degisken_3){

this.degisken_1 = degisken_1;
this.degisken_2 = degisken_2;
this.degisken_3 = degisken_3;

}

}

Sınıfın kendi metodunu çağırıp varsayılan değerleri atayan bir fonskiyon yazdık. Bunu örneklendirecek olursak:

Java:
class insan{

    private int boy;
    private int kilo;
    private String isim;
    public insan(int boy) {
        this(boy, 0 , "Bilinmiyor.");
    }
    public insan(int boy, int kilo, String isim) {
        this.boy = boy;
        this.kilo = kilo;
        this.isim = isim;
    }
    public int getBoy() {
        return boy;
    }
    public int getKilo() {
        return kilo;
    }
    public String getIsim() {
        return isim;
    }
}
public class Furkaninkosesi {
public static void main(String[] args) {

  insan ali = new insan(175);
  insan fatma = new insan(170,60,"Fatma");

  System.out.println(ali.getBoy());
  System.out.println(ali.getIsim());
  System.out.println(fatma.getKilo());

}
}

Program sıra ile 175 Bilinmiyor. 60 çıktılarını verdi.

Bu yazımın da sonuna geldim, araştırıp yeni bilgiler öğrenip yazı yazmaya devam edeceğim.
Yazar hakkında
Furkaninkosesi
Bilgisayar ile 2 yazılım ile 10 yaşında tanışan biri.

Yorumlar


Blog girdisi detayları

Ekleyen
Furkaninkosesi
Okuma süresi
3 dakika okuma
Görüntüleme
540
Yorumlar
2
Son güncelleme

Yazılım kategorisindeki diğer girdiler

Furkaninkosesi adlı kullanıcının diğer girdileri

Bu girdiyi paylaş

Geri
Yukarı