Java 017: Constructor Overload

Şimdiii.. Öncelikle constructor’ın ne işe yaradığından söz etmekte fayda görüyorum lakin kitaplardaki gibi teorik, lüzumsuz ve sıkıcı bir anlatım yerine direk ne gibi durumlarda kullanmamız gerektiğini betimlemek daha makul geliyor bana.

Constructor dediğimiz hede mevcut class’ın adıyla aynı olmalıdır. harf büyük/küçüklüğü de dahildir bu aynı olma koşuluna. Constructor dallanıp budaklanan yazılım mimarilerinde bir özelliği her method’un içerisinde tekrar tekrar çağırmamak, bu özelliği ayrı bir method olarak(yani neymiş? constructor dediğimiz şey bir methodmuş) kullanıp gerektiği yerde bunları çağırmak içindir.

Constructor overload’a gelince, sıradan bir methodun overload edilmesinden farklı bir durum değildir overloaded constructor yazmak. Tek yapmamız gereken argüman fasilitesini eklemek veyahut çıkarmaktır. Örnek bir kod vermek gerekirse Java’da Swing GUI’sini kullanarak oluşturduğum basit bir hesap makinesini aşağıda paylaşıyorum. Herhangibir sorunuz olursa Yorum olarak yazının alt kısmında belirtebilirsiniz :

import javax.swing.JOptionPane;
public class myClass {

public static void myClass(){ // constructor
myClass qwe = new myClass();
qwe.main(null);
}

public static void myClass(boolean ew){ // overloaded constructor
if (ew = true ){
myClass obje = new myClass();
obje.main(null);
}
}

public static void islemSec( String a ){
if (a.equals("+"))
topla();
if (a.equals("-"))
cikar();
if (a.equals("*"))
carp();
if (a.equals("/"))
bol();
if (a.equals("x"))
System.exit(0);
else{
JOptionPane.showMessageDialog(null, "Geçersiz bir işlem seçtiniz. \nAna menüye dönmek içi OK bas");
myClass(true); // true için main'i çağırabildiğin gibi,  false içinde başka bir method çağırılabilir.

/*
* eğer overloaded constructor boolean değilde string olsaydı 2 değil,
* sonsuz tane method'u çağırabiliyoruz.
**/
}
}

public static void topla(){

String a = JOptionPane.showInputDialog("1. sayıyı gir:");
int A = Integer.parseInt(a);

String b = JOptionPane.showInputDialog("2. sayıyı gir:");
int B = Integer.parseInt(b);

JOptionPane.showMessageDialog(null, A+B);

myClass();
}

public static void cikar(){
String a = JOptionPane.showInputDialog("1. sayıyı gir:");
int A = Integer.parseInt(a);

String b = JOptionPane.showInputDialog("2. sayıyı gir:");
int B = Integer.parseInt(b);

JOptionPane.showMessageDialog(null, A-B);

myClass();
}

public static void carp(){
String a = JOptionPane.showInputDialog("1. sayıyı gir:");
int A = Integer.parseInt(a);

String b = JOptionPane.showInputDialog("2. sayıyı gir:");
int B = Integer.parseInt(b);

JOptionPane.showMessageDialog(null, A*B);

myClass();
}

public static void bol(){
String a = JOptionPane.showInputDialog("1. sayıyı gir:");
double A = Double.parseDouble(a);

String b = JOptionPane.showInputDialog("2. sayıyı gir:");
double B = Double.parseDouble(b);

double c = A/B;

JOptionPane.showMessageDialog(null, c);

myClass();
}

public static void main(String[] args) {
// TODO Auto-generated method stub
String q=JOptionPane.showInputDialog("yapmak istediğiniz işlem sembolünü girin\n(x = exit)");
islemSec(q);
}
}

Yorum bırakın

Filed under Java

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s