Yapılandırıcı metodlar, nesneyi oluşturduğumuz anda çalıştıran metodlardır. Ayrı metodlar oluşturmamıza gerek kalmadan, yapmak istediğimiz işlemi kolayca halledebilmemizi sağlar.
Bir önceki yazımızda setter ve getter metodlarıyla tek tek özelliklerini belirtmeye çalışmıştık ancak yapılandırıcı kullanırsak bu iş çok daha kolay hale gelecektir.
Yapılandırıcıları oluştururken uymamız gereken bazı kurallar vardır. Bunlar:
- Yapılandırıcıların erişim belirleyicisi public olmalıdır.
- Yapılandırıcı ismi, o an çalışma yapılan sınıfın adıyla aynı olmalıdır.
- Yapılandırıcı metod çağırılırken new anahtar sözcüğü kullanılmalıdır.
Yapılandırıcılar, bellekte yeni bir nesne oluştururlar ve her çağrılışlarında farklı farklı nesneler oluşturacaklardır.
Daha iyi anlaşılması için bir örnek çözelim.
Küçük bir banka atm’si oluşturalım. Karşılaştırma yapabilmek adına ilk olarak setter getter metodlarıyla çözelim sorumuzu.
public class Hesap {
private String HesapNo;
private String isim;
private String TelefonNo;
private double bakiye;
public void ParaYatir(double tutar){
bakiye=bakiye+tutar;
System.out.println("Eklediğiniz Tutar : " + tutar);
System.out.println("Yeni Bakiyeniz : " + bakiye);
}
public void ParaCekme(double tutar){
if(tutar > 1500){
System.out.println("Tek Seferde 1500 TL'den Fazla Çekemezsiniz.");
}else if((bakiye-tutar)<0){
System.out.println("Yetersiz Bakiye. Lütfen Tekrar Deneyiniz. ");
}else{
bakiye=bakiye-tutar;
System.out.println("Toplam Bakiyenizden " + tutar + "TL Çekilmiştir.");
System.out.println("Yeni Bakiyeniz : " + bakiye);
}
}
public String getHesapNo() {
return HesapNo;
}
public void setHesapNo(String hesapNo) {
HesapNo = hesapNo;
}
public String getIsim() {
return isim;
}
public void setIsim(String isim) {
this.isim = isim;
}
public String getTelefonNo() {
return TelefonNo;
}
public void setTelefonNo(String telefonNo) {
TelefonNo = telefonNo;
}
public double getBakiye() {
return bakiye;
}
public void setBakiye(double bakiye) {
this.bakiye = bakiye;
}
}
Hesap sınıfındaki kod bloklarımızı bu şekilde oluşturduk. Deneme sınıfımızda da yazdırma işlemini gerçekleştirelim.
public class Deneme {
public static void main(String[] args) {
Hesap h = new Hesap();
h.setBakiye(100.0);
h.setHesapNo("54786614");
h.setIsim("Pelin");
h.setTelefonNo("0212547896");
h.ParaCekme(150);
h.ParaYatir(2500);
}
}
Bir çıktı elde edebilmek için de kodlarımızı yukarıdaki gibi yazmamız gerekecekti. Çıktımız:
Şimdi de aynı kod bloğunu constructor ile yani yapılandırıcı ekleyerek yapalım.
public class Hesap {
private String HesapNo;
private String isim;
private String TelefonNo;
private double bakiye;
public Hesap(String HesapNo, String isim, String TelefonNo, double bakiye){ // Yapılandırıcı Sınıfımız
this.HesapNo = HesapNo;
this.isim = isim;
this.TelefonNo = TelefonNo;
this.bakiye = bakiye;
}
public void ParaYatir(double tutar){
bakiye=bakiye+tutar;
System.out.println("Eklediğiniz Tutar : " + tutar);
System.out.println("Yeni Bakiyeniz : " + bakiye);
}
public void ParaCekme(double tutar){
if(tutar > 1500){
System.out.println("Tek Seferde 1500 TL'den Fazla Çekemezsiniz.");
}else if((bakiye-tutar)<0){
System.out.println("Yetersiz Bakiye. Lütfen Tekrar Deneyiniz. ");
}else{
bakiye=bakiye-tutar;
System.out.println("Toplam Bakiyenizden " + tutar + " TL Çekilmiştir.\n");
System.out.println("Yeni Bakiyeniz : " + bakiye);
}
}
public void BilgileriGoster(){
System.out.println("Bakiyeniz : " + bakiye);
System.out.println("Hesap Numaranız : " + HesapNo);
System.out.println("Telefon Numaranız : " + TelefonNo);
System.out.println("İsminiz : " + isim);
}
}
Bu durumda deneme sınıfımız:
public class Deneme {
public static void main(String[] args) {
Hesap h = new Hesap("562144789","Pelin","053647899",3600.0);
h.BilgileriGoster();
h.ParaCekme(150);
h.ParaYatir(2500);
}
}
Görüldüğü gibi set ve get metodlarımızı oluşturmamıza gerek kalmadan kolaylıkla halledebildik. Burada hata oluşmaması için dikkat etmemiz gereken şey, yapılandırıcıda hangi sırayla atama yaptıysak, okumasını istediğimiz değerler de aynı sıra ile yazılmalıdır.
Buradaki sıra: HesapNo, İsim, TelefonNo, bakiye
Çıktımız:
Java’da yapılandırıcıları oluşturabileceğimiz bir sekme geliştirilmiştir. Bu şekilde tek tek yazmak istemiyorsak bu sekmeyi kullanabiliriz.
Editör kısmında boş bir alana gelip sağa tıklıyoruz.
Source kısmına tıkladıktan sonra, generate constructor using fields adlı seçeneğe tıklıyoruz.
Şekilde gösterildiği gibi, yapılandırıcı oluşturmak istediğimiz değişkenlere tıkladıktan sonra OK’e tıklıyoruz.
public Hesap(String hesapNo, String isim, String telefonNo, double bakiye) {
super();
HesapNo = hesapNo;
this.isim = isim;
TelefonNo = telefonNo;
this.bakiye = bakiye;
}
Super anahtar sözcüğü, alt sınıf üst sınıfın değişkenlerine ulaşmak istediğinde kullanılan bir sözcüktür. Burada Java, super sözcüğünü otomatik olarak atadı ancak kendimiz oluşturduğumuzda kullanmamıza gerek kalmadı. Yine buradan silersek de bir hata oluşmayacaktır.
Yapılandırıcıların genel kullanımı bu şekilde. Soru çözümlerinde farklı kullanımlarına da değinmiş olacağız. İyi çalışmalar 🙂



Leave a Reply