java 5 nesneler metotlar

33
1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, “Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu, M. Özbayoğlu, M. Erten, O. Ergin” kitabı kullanılarak hazırlanmıştır . Konular Metotlarla Programlama Statik Metotlar ve Değişkenler Math Sınıfı Sarmalayan Sınıflar Fazladan Yükleme (Overloading) Nesne Kurucular

Upload: huseyin-g

Post on 30-Mar-2016

247 views

Category:

Documents


1 download

DESCRIPTION

Nesne Yönelimli Programlamaya Giriş

TRANSCRIPT

1

BİL-141 Bilgisayar Programlama I

(Java)

Hazırlayan: M.Ali Akcayol

Gazi Üniversitesi

Bilgisayar Mühendisliği Bölümü

Not: Bu dersin sunumları, “Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu, M.

Özbayoğlu, M. Erten, O. Ergin” kitabı kullanılarak hazırlanmıştır.

Konular

Metotlarla Programlama

Statik Metotlar ve Değişkenler

Math Sınıfı

Sarmalayan Sınıflar

Fazladan Yükleme (Overloading)

Nesne Kurucular

2

3

Metotlarla Programlama

Başka metotları çağıran metotlar

Java dilinde bir metodun gövdesinde başka metot çağırılabilir.

main() metodunun içinde başka nesnelere ait metotlar

nesne adıyla birlikte çağırılmaktadır.

Bir metot ait olduğu sınıfın içinde başka bir metodu doğrudan adıyla çağırabilir. (this işaretçisi de

kullanılabilir.)

4

Metotlarla Programlama

Başka metotları çağıran metotlar

Aşağıdaki örnekte oyunSorusu() metodunun içinden oyunOyna() metodu doğrudan adıyla çağırılmıştır.

public void oyunSorusu()

{

String cevap;

Scanner klavye = new Scanner(System.in);

do

{

oyunOyna();

System.out.print(“Bir kere daha ”);

System.out.println(“oynamak istiyor musun ? ”);

cevap = klavye.next();

} while (cevap.equalsIgnoreCase(“Evet”));

System.out.println(“iyi gunler”);

}

3

5

Metotlarla Programlama

Başka metotları çağıran metotlar – devam – örnek /**

* SayiOyunu sinifi bilgisayarin rasgele sectigi bir sayiyi

* bulmak icin kullanilir.

*/

import java.util.*;

public class SayiOyunu

{

int bulunacakSayi;

int girilenSayi;

boolean sayiBulundu;

private void buyukKucukGoster()

{

if (girilenSayi > bulunacakSayi)

{

System.out.print("Sayiniz buyuk. ");

System.out.println("Daha kucuk bir sayi girin.");

}

6

Metotlarla Programlama

Başka metotları çağıran metotlar – devam – örnek

else if (girilenSayi < bulunacakSayi)

{

System.out.print("Sayiniz kucuk. ");

System.out.println("Daha buyuk bir sayi girin.");

}

else

{

// Sayi bulundu.

System.out.println("Sayiyi buldunuz, tebrikler.");

sayiBulundu = true;

}

}

4

7

Metotlarla Programlama

Başka metotları çağıran metotlar – devam – örnek

public void oyunSorusu()

{

String cevap;

Scanner klavye = new Scanner(System.in);

do

{

oyunOyna();

System.out.print("Bir kere daha oynamak ");

System.out.println("istiyor musun ? (Evet-Hayir)");

cevap = klavye.next();

} while (cevap.equalsIgnoreCase ("Evet"));

System.out.println("iyi gunler");

}

private void oyunaBasla()

{

bulunacakSayi = (int) (Math.random() * 100 + 1);

sayiBulundu = false;

}

8

Metotlarla Programlama

Başka metotları çağıran metotlar – devam – örnek

private void sayiSor()

{

Scanner klavye = new Scanner(System.in);

do

{

System.out.print("1 ile 100 arasinda ");

System.out.println("bir sayi girin.");

girilenSayi = klavye.nextInt( );

} while ((girilenSayi < 1) && (girilenSayi > 100));

}

private void oyunOyna()

{

oyunaBasla();

do

{

sayiSor();

buyukKucukGoster();

} while (!(sayiBulundu));

}

}

5

9

Metotlarla Programlama

Başka metotları çağıran metotlar – devam – örnek

public class DeneSayiOyunu

{

public static void main(String [] args)

{

SayiOyunu oyun1 = new SayiOyunu();

oyun1.oyunSorusu();

}

}

Yukarıdaki örnekte SayiOyunu sınıfı içindeki metotlar

birbirlerini çağırabilmektedir. Bir metot kendi sınıfının dışından çağırılmak istendiğinde

nesneyle birlikte kullanılması gerekir. DeneSayiOyunu sınıfı SayiOyunu sınıfına ait oyunSorusu() metodunu çağırırken oyun1 adlı nesneyle

çağırmaktadır.

10

Metotlarla Programlama

Başka metotları çağıran metotlar – devam – örnek

Çıktı:

DeneSayıOyunu sınıfının örnek programda çalışması

1 ile 100 arasında bir sayı girin.

175

1 ile 100 arasında bir sayı girin.

87

Sayiniz buyuk. Daha kucuk bir sayi girin.

34

Sayiniz kucuk. Daha buyuk bir sayi girin.

67

Sayiniz buyuk. Daha kucuk bir sayi girin.

63

Sayiyi buldunuz. tebrikler.

Bir kere daha oynamak istiyor musun ?

Evet

1 ile 100 arasında bir sayı girin.

77

Sayiniz kucuk. Daha buyuk bir sayi girin.

90

Sayiniz buyuk. Daha kucuk bir sayi girin.

85

Sayiyi buldunuz. tebrikler.

Bir kere daha oynamak istiyor musun ?

Hayir

iyi gunler

6

Konular

Metotlarla Programlama

Statik Metotlar ve Değişkenler

Math Sınıfı

Sarmalayan Sınıflar

Fazladan Yükleme (Overloading)

Nesne Kurucular

12

Statik Metotlar ve Değişkenler

Bazı problemlerde nesne kullanmayan metotlar ve değişkenler gerekebilir.

Bir sınıftan oluşturulan tüm nesneler için bir değişken veya metot aynı olacaksa tanımlaması static yapılır.

Static üyelere erişim nesne ile değil sınıf adı ile yapılır. Nesne ile erişimde derleyici hata vermez ancak static üye olduğu kullanıldığı yerde anlaşılmaz.

Static üyelere this pointer’ı ile erişilemez. Derleyici hata verir. This pointer’ı bir üyeye erişen nesneyi işaret eder.

7

13

Statik Metotlar ve Değişkenler

Aşağıdaki örnekte Math sınıfının static üyesi sqrt()

fonksiyonu kullanılmıştır. Math.sqrt(2.5);

Static üyerle erişim aşağıdaki gibi yapılmalıdır.

Sınıf_adı.metot_adı();

Sınıf_adı.değişken_adı;

14

Statik Metotlar ve Değişkenler

Örnek1 public class StaticOrnek

{

public static int staticA; // Static data member

public int a;

public static void setStaticA(int deger)

{

staticA = deger;

}

public void setA(int deger)

{

a = deger;

}

8

15

Statik Metotlar ve Değişkenler

Örnek1 – devam public int getStaticA()

{

return staticA;

}

public int getA()

{

return a;

}

}

16

Statik Metotlar ve Değişkenler

Örnek – devam public class DeneStaticOrnek

{

public static void main(String [] args)

{

StaticOrnek s1 = new StaticOrnek();

StaticOrnek s2 = new StaticOrnek();

s1.setStaticA(5);

s1.setA(10);

s2.setStaticA(15);

s2.setA(20);

System.out.print("s1 nesnesinin staticA ");

System.out.println("degeri = " + s1.getStaticA());

System.out.print("s1 nesnesinin A ");

System.out.println("degeri = " + s1.getA());

System.out.print("s2 nesnesinin staticA ");

System.out.println("degeri = " + s2.getStaticA());

System.out.print("s2 nesnesinin A ");

System.out.println("degeri = " + s2.getA());

}

}

Çıktı:

s1 nesnesinin staticA degeri = 15

s1 nesnesinin A degeri = 10

s2 nesnesinin staticA degeri2= 15

s2 nesnesinin A degeri = 20

9

17

Statik Metotlar ve Değişkenler

Örnekte staticA değişkeni iki nesne içinde aynıdır. Ancak A değeri farklıdır.

staticA değişkeni static tanımlandığı için nesneden

bağımsızdır.

staticA değişkeni için setStaticA() ve getStaticA() isimli iki farklı static metot tanımlanması

erişimin bunlar ile yapılması tercih edilen yoldur.

Bu düzeltmelerin yapılmış hal devam eden sayfadadır. gibi yapılmalıdır.

18

Statik Metotlar ve Değişkenler

Örnek1 – Düzeltilmiş hali

public class StaticOrnekYeni

{

public static int staticA;

public int a;

public static void setStaticA(int deger)

{

staticA = deger;

}

public void setA(int deger)

{

a = deger;

}

10

19

Statik Metotlar ve Değişkenler

Örnek1 – Düzeltilmiş hali – devam

public static int getStaticA()

{

return staticA;

}

public int getA()

{

return a;

}

}

20

Statik Metotlar ve Değişkenler

Örnek1 – Düzeltilmiş hali – devam public class DeneStaticOrnek

{

public static void main(String [] args)

{

StaticOrnek s1 = new StaticOrnek ();

StaticOrnek s2 = new StaticOrnek ();

StaticOrnek.setStaticA(5);

s1.setA(10);

StaticOrnek.setStaticA(15);

s2.setA(20);

System.out.print("s1 nesnesinin staticA degeri = ");

System.out.println(StaticOrnek.getStaticA());

System.out.print("s1 nesnesinin A degeri = ");

System.out.println(s1.getA());

System.out.print("s2 nesnesinin staticA degeri = ");

System.out.println(StaticOrnek.getStaticA());

System.out.print("s2 nesnesinin A degeri = ");

System.out.println(s2.getA());

}

}

11

21

Statik Metotlar ve Değişkenler

Örnek2 – static metot kullanılarak faktöriyel

hesabı

import java.util.*;

public class DeneFaktoriyelToplami

{

public static void main(String [] args)

{

long n, toplam=0;

System.out.print("Bir tamsayi giriniz (n>2):");

Scanner klavye = new Scanner(System.in);

n = klavye.nextInt();

for (long k = 1; k <= n; k++)

toplam = toplam + faktoriyel(k);

System.out.println("1!+2!+...+" + n + "!=" + toplam);

}

22

Statik Metotlar ve Değişkenler

Örnek2 – static metot kullanılarak faktöriyel

hesabı - devam

public static long faktoriyel(long sayi)

{

long f = 1;

for (int i = 1; i <= sayi; i++)

f = f * i;

return f;

}

}

12

23

Statik Metotlar ve Değişkenler

Örnek3 – Nesne kullanılarak faktöriyel hesabı

import java.util.*;

public class DeneFaktoriyelToplamiYeni

{

public static void main(String [] args)

{

long n, toplam=0;

FaktoriyelToplami eleman = new FaktoriyelToplami ();

System.out.print("Bir tamsayi giriniz (n>2):");

Scanner klavye = new Scanner (System.in);

n = klavye.nextInt();

for (long k = 1; k <= n; k++)

toplam = toplam + eleman.faktoriyel(k);

System.out.println("1!+2!+...+" + n + "!=" + toplam);

}

}

24

Statik Metotlar ve Değişkenler

Örnek3 – Nesne kullanılarak faktöriyel hesabı - devam

public class FaktoriyelToplami

{

public long faktoriyel(long sayi)

{

long f = 1;

for (int i = 1; i <= sayi; i++)

f = f * i;

return f;

}

}

Çıktı:

Bir tamsayi giriniz (n>2):8

1!+2!+...+8!=46233

13

25

Statik Metotlar ve Değişkenler

Bir static metodun içinde static olmayan metodun

çağırılabilmesi için ait olduğu sınıftan bir nesne oluşturulup nesne adıyla çağırılması geekir.

Örnekte static bir metodun içinden static olmayan

metot çağrılmaktadır.

import java.util.*;

public class DaireHesabi

{

public static final double PI = 3.14159;

private double daireCapi;

public void setDaireCapi(double Cap)

{

daireCapi = Cap;

}

26

Statik Metotlar ve Değişkenler

public static double alan(double yaricap)

{

return (PI * yaricap * yaricap);

}

public void alaniGoster()

{

System.out.print("Dairenin alani ");

System.out.println(alan(daireCapi / 2));

}

public static void alanBulma()

{

System.out.println("Dairenin capini giriniz:");

Scanner klavye = new Scanner(System.in);

double cap1 = klavye.nextDouble();

DaireHesabi daire1 = new DaireHesabi();

daire1.setDaireCapi(cap1);

daire1.alaniGoster();

}

}

14

27

Statik Metotlar ve Değişkenler

public class DeneDaireHesabi

{

public static void main(String [] args)

{

DaireHesabi daire1 = new DaireHesabi();

daire1.setDaireCapi(2);

System.out.println("Eger dairenin capi 2 ise ");

daire1.alaniGoster( );

System.out.print("Simdi yeni bir daire ");

System.out.println("hesaplayalim.");

DaireHesabi.alanBulma( );

}

}

Çıktı:

Eger dairenin capi 2 ise

Dairenin alani 3,14159

Simdi yeni bir daire hesaplayalim.

Dairenin capini giriniz:

6

Dairenin alani 28.274309999999996

28

Statik Metotlar ve Değişkenler

static değişkenlerde nesneden bağımsızdır.

static metodun içinden static olmayan bir değişkene

de bir nesne oluşturularak erişilir.

Örnekte static bir metodun içinden static olmayan

değişken çağrılmaktadır.

// Static olmayan degiskenin static metodun içinde kullanimi

public class DaireHesabiYeni

{

public static final double PI = 3.14159;

private double daireCapi;

public void setDaireCapi(double Cap)

{

daireCapi = Cap;

}

15

29

Statik Metotlar ve Değişkenler

public static double alan(double yaricap)

{

return (PI * yaricap * yaricap);

}

public static void StaticOlmayanDaireCevresi(double cap)

{

double ornekDaireCevresi;

DaireHesabiYeni daire1 = new DaireHesabiYeni( );

daire1.daireCapi = cap;

ornekDaireCevresi = PI * daire1.daireCapi;

System.out.print("Ornek daire cevresi = ");

System.out.println(ornekDaireCevresi);

}

}

30

Statik Metotlar ve Değişkenler

public class DeneDaireHesabi

{

public static void main(String [] args)

{

DaireHesabiYeni daire1 = new DaireHesabiYeni();

daire1.setDaireCapi(2);

System.out.println("Eger dairenin capi 2 ise ");

DaireHesabiYeni.staticOlmayanDaireCevresi(2);

}

}

Çıktı:

Eger dairenin capi 2 ise

Ornek daire cevresi = 6.28318

16

31

Statik Metotlar ve Değişkenler

Örnek : Kitap sınıfı // Kitap sinifi

public class Kitap

{

//instance variables

private String kitapAdi;

private int basimYili;

private String ISBN;

private double satisFiyati;

public void setBaslik(String a)

{

kitapAdi = a;

}

public void setbasimYili(int b)

{

basimYili = b;

}

32

Statik Metotlar ve Değişkenler

Örnek : Kitap sınıfı – devam

public void setISBN(String c)

{

ISBN = c;

}

public void setsatisFiyati(double d)

{

satisFiyati = d;

}

public void kitapYazdir()

{

System.out.println("Kitap adi:" + kitapAdi);

System.out.println("ISBN:" + ISBN);

System.out.println("Basim yili:" + basimYili);

System.out.println("Fiyati:" + satisFiyati);

}

} // Kitap sinifi sonu

17

33

Statik Metotlar ve Değişkenler

Örnek : Kitap sınıfınını kullanılması /**

* main metodunun baska bir sinif (DeneKitap) içinde kullanimi

* Bu program 3 adet Kitap nesnesi kullanmaktadir.

* Sizin göreviniz, deneKitabi kullanarak, Kitap nesnesini

* tanimlamak ve metotlarini yazmak olacaktir.

*/

public class DeneKitap

{

public static void main (String [] args)

{

Kitap kitap1 = new Kitap();

kitap1.setBaslik("T.C. Anayasasi");

kitap1.setbasimYili(2001);

kitap1.setISBN("123-45678-9");

kitap1.setsatisFiyati(24.50);

// Kitap bilgilerini yazdir.

kitap1.kitapYazdir();

} // main metot sonu

} // DeneKitap sinifi sonu

Çıktı:

Kitap adi:T.C. Anayasasi

ISNB:123-45678-9

Basim yili:2001

Fiyati:24.5

34

Statik Metotlar ve Değişkenler

main() metodu aynı sınıf içinde de kulanılabilir. // main metodunun ayni sinif içinde kullanimi

public class Zar

{

private final int MAKSIMUM = 6;

private int zarDegeri;

public Zar()

{

zarDegeri = 1;

}

public int zarAt()

{

zarDegeri = (int)(Math.random() * MAKSIMUM) + 1;

return zarDegeri;

}

18

35

Statik Metotlar ve Değişkenler

public void zarDegeriVer(int deger)

{

zarDegeri = deger;

}

public int zarDegeriAl()

{

return zarDegeri;

}

public String toString()

{

String sonuc = Integer.toString(zarDegeri);

return sonuc;

}

36

Statik Metotlar ve Değişkenler

public static void main (String [] args)

{

Zar zar1 = new Zar();

int zarSonucu;

System.out.println("Zarda 6 atana kadar devam.");

do

{

zarSonucu = zar1.zarAt();

System.out.print("Atilan zar = ");

System.out.println(zar1.toString());

} while (zar1.zarDegeriAl() != 6);

}

}

Çıktı:

Zarda 6 atana kadar devam.

Atilan zar = 5

Atilan zar = 4

Atilan zar = 6

19

Konular

Metotlarla Programlama

Statik Metotlar ve Değişkenler

Math Sınıfı

Sarmalayan Sınıflar

Fazladan Yükleme (Overloading)

Nesne Kurucular

38

Math Sınıfı

Math sınıfı matematiksel işlemler için tanımlanmıştır. Tüm metotlar static olarak tanımlanmıştır.

Math.PI ve Math.E iki static değişmezdir.

Metot Parametre Sonuç

Math.pow(x,y) x,y: double double

Math.abs(x) x: int, long, float,

veya double

Parametreyle aynı

Math.max(x,y) x,y: int, long,

float, veya double

Parametreyle aynı

Math.min(x,y) x,y: int, long,

float, veya double

Parametreyle aynı

Math.sqrt(x) x: double Double

Math.round(x) x: float veya double int veya double

Math.ceil(x) x: double double

Math.floor(x) x: double double

20

Konular

Metotlarla Programlama

Statik Metotlar ve Değişkenler

Math Sınıfı

Sarmalayan Sınıflar

Fazladan Yükleme (Overloading)

Nesne Kurucular

40

Sarmalayan Sınıflar

Java’da veri türleri değerle metoda gönderilirler.

Java’da veri türlerini sınıf gibi kullanabilmek için sarmalayan sınıflar (wrapper classes) kullanılır.

Temel veri türü Sarmalayan sınıf

int Integer

double Double

float Float

char Character

boolean Boolean

long Long

byte Byte

short Short

21

41

Sarmalayan Sınıflar

Java’da sarmalayan sınıfların kullanımı diğer sınıflarla aynıdır.

Integer i = new Integer;

i = 10;

Sarmalayan veri türünün değeri bir değişkene aktarılabilir.

int j = i.intValue();

int j = i; // kullanılabilir

Sarmalayan sınıflar kullanıldığında çok sayıdaki metot kolaylıkla kullanılabilmektedir.

42

Sarmalayan Sınıflar

Integer sınıfı static değişkenleri ve değişmezleri

Integer i = new Integer;

i = 10;

Sarmalayan sınıflar kullanıldığında çok sayıdaki metot kolaylıkla kullanılabilmektedir.

int j = Integer.MAX_VALUE;

Değişken adı Açıklama

MAX_VALUE Java’da tamsayının alabileceği en büyük

değer (231-1)

MIN_VALUE Java’da tamsayının alabileceği en küçük

değer (-231)

22

43

Sarmalayan Sınıflar

Integer sınıfı static metotları

Metot Açıklama

Integer valueOf(String s) Metoda giren String nesnesini

Integer nesnesine çevirir.

int parseInt(String s) Metoda giren String nesnesini int

temel veri türüne çevirir.

String toString(int i) Metoda giren int temel veri

türünü String nesnesine çevirir.

44

Sarmalayan Sınıflar

Integer sınıfı static olmayan metotları

Metot Açıklama

int compareTo(Integer) İki adet Integer nesnesini sayısal

olarak karşılaştırır.

double doubleValue() Metodu çağıran Integer nesnesini

double temel veri türüne çevirir.

boolean equals(Object o) Metodu çağıran Integer nesnesini

metod giren nesneyle karşılaştırır.

float floatValue() Metodu çağıran Integer nesnesini

double temel veri türüne çevirir.

int intValue() Metodu çağıran Integer nesnesinin int

temel veri türü olarak değerini

verir.

long longValue() Metodu çağıran Integer nesnesini long

temel veri türüne çevirir.

short shortValue() Metodu çağıran Integer nesnesini

short temel veri türüne çevirir.

String toString() Metodu çağıran Integer nesnesinin

sayısal değerini String’e çevirir.

23

45

Sarmalayan Sınıflar

Char veri türünü sarmalayan Character sınıfının static değişkenleri ve değişmezleri

char j = Character.MAX_VALUE;

Değişken adı Açıklama

MAX_VALUE Java’da char veri türünün alabileceği

en büyük değer ‘\uFFFF’.

MIN_VALUE Java’da char veir türünün alabileceği

en büyük değer ‘\u0000’.

46

Sarmalayan Sınıflar

Character sınıfının bazı static metotları

Metot Açıklama

int getNumericValue(char ch) Metoda giren Unicode char temel

veri türünün rakamsal değerini

verir.

int getType(char ch) Metoda giren char temel veri

türünün Unicode gösterimi

içindeki genel kategorisini

verir.

Integer valueOf(String s) Metoda giren String nesnesini

Integer nesnesine çevirir.

boolean isDefined(char ch) Metoda giren char veri türünün

Unicode içinde tanımlı olup

olmadığını gösterir.

boolean isDigit(char ch) Metoda giren char veri türünün 0-

9 arası bir tamsayı olup

olmadığını gösterir.

boolean isLetter(char ch) Metoda giren char veri türünün

bir harf olup olmadığını

gösterir.

24

47

Sarmalayan Sınıflar

Character sınıfının bazı static metotları – devam

Metot Açıklama

boolean isLetterOrDigit(char ch) Metoda giren char veri türünün 0-

9 arası bir tamsayı veya harf

olup olmadığını gösterir.

boolean isLowerCase(char ch) Metoda giren char veri türünün

bir küçük harf olup olmadığını

gösterir.

boolean isUpperCase(char ch) Metoda giren char veri türünün

bir büyük harf olup olmadığını

gösterir.

boolean isWhiteSpace(char ch) Metoda giren char veri türünün

boşluk gösteren bir Unicode harf

olup olmadığını gösterir.

char toLowerCase(char ch) Metoda giren char temel veri

türünü küçük harfe çevirir.

char toUpperCase(char ch) Metoda giren char temel veri

türünü büyük harfe çevirir.

String toString(char ch) Metoda giren char temel veri

türünü String’e çevirir.

48

Sarmalayan Sınıflar

Character sınıfında bazı static olmayan metotları

Metot Açıklama

int compareTo(Character) İki adet Character nesnesini

sayısal olarak karşılaştırır.

boolean equals(Object o) Metodu çağıran Character

nesnesini metoda giren nesneyle

karşılaştırır.

Char charValue() Metodu çağıran character

nesnesinin char temel veri türü

olarak değerini verir.

String toString() Metodu çağıran Character

nesnesini String’e çevirir.

25

Konular

Metotlarla Programlama

Statik Metotlar ve Değişkenler

Math Sınıfı

Sarmalayan Sınıflar

Fazladan Yükleme (Overloading)

Nesne Kurucular

50

Fazladan Yükleme (Overloading)

Bir metod farklı sınıflar içinde aynı isimle yer alabilir.

Metod kullanılırken nesne adıyla birlikte yazılacağından karşıklık olmaz.

Bir sınıfta bir metodun birden fazla durum için kullanılabilmesi metodun fazla yüklenmesiyle gerçekleştirilir.

Örneğin Math sınıfındaki birçok metot int, long, float ve double kullanılabilecek şekilde falzadan

yüklenmiştir.

Math.max(x, y) yazıldığında aynı metoda int, long, float ve double türündeki veri gönderilebilir.

26

51

Fazladan Yükleme (Overloading)

Örnekte aynıSey() adlı metod fazla yüklenmiştir. //Fazladan yükleme örnegi için FazladanYukleme sinifi

public class FazladanYukleme

{

public void ayniSey()

{

System.out.println("Merhaba gencler...");

}

public boolean ayniSey(int sayi)

{

boolean yanit;

if (sayi % 2 == 0)

yanit = true;

else

yanit = false;

return yanit;

}

}

52

Fazladan Yükleme (Overloading)

// FazladanYukleme’nin çalistirilmasi

import java.util.*;

public class FazladanYuklemeDeneme

{

public static void main(String [] args)

{

boolean yanit;

int N;

System.out.print("Bir sayi giriniz:");

Scanner klavye = new Scanner(System.in);

N = klavye.nextInt();

FazladanYukleme fark = new FazladanYukleme();

yanit = fark.ayniSey(N);

if (yanit)

System.out.println(N + " cift sayidir.");

else

System.out.println(N + " tek sayidir.");

fark.ayniSey();

}

}

Çıktı:

Bir sayi giriniz:5

5 tek sayidir.

Merhaba gencler...

27

Konular

Metotlarla Programlama

Statik Metotlar ve Değişkenler

Math Sınıfı

Sarmalayan Sınıflar

Fazladan Yükleme (Overloading)

Nesne Kurucular

54

Nesne Kurucular

Bir nesne oluşturulduğu anda parametrelerine otomatik olarak veya kullanıcı tarafından değer atanmak istenebilir.

Bu tür başlangıç değer atamaları nesne kurucusu (constructor) tarafından yapılır.

Nesne kurucusu new Sınıf_adı(...) şeklinde

yapılır.

Nesne kurucusu da sınıfa ait bir metotdur ve falzadan yükleme yapılabilir.

28

55

Nesne Kurucular

//Fazladan yüklenen Nesne kuruculari

public class Araba

{

private String renk;

private int beygirGucu;

private int hiz;

public Araba(String renk, int guc, int hiz)

{

this.renk = renk;

this.beygirGucu = guc;

this.hiz = hiz;

}

public Araba(String renk)

{

this.renk = renk;

}

56

Nesne Kurucular public void veriGoster()

{

System.out.println("Renk = "+ this.renk);

System.out.println("Beygir Gucu = " + this.beygirGucu);

System.out.println("Hiz = " + this.hiz);

System.out.println();

}

public static void main(String [] args)

{

Araba ferrari = new Araba("kirmizi",450,320);

Araba fiat = new Araba("beyaz");

fiat.setBeygirGucu(70);

fiat.setHiz(155);

System.out.println("Ferrari Ozellikleri ");

ferrari.veriGoster();

System.out.println("Fiat Ozellikleri ");

fiat.veriGoster();

}

}

Çıktı:

Ferrari Ozellikleri

Renk = kirmizi

Beygir gucu = 450

Hiz = 320

Fiat Ozellikleri

Renk = beyaz

Beygir gucu = 70

Hiz = 155

29

57

Nesne Kurucular

Eğer bir nesne kurucusu tanımlanmamışsa Java otomatik olarak bir nesne kurucusunu var sayar.

public class Araba

{

private String renk;

private int beygirGucu;

private int hiz;

public static void main(String [] args)

{

Araba ferrari = new Araba(); // Varsayılan nesne kurucusu

}

}

58

Nesne Kurucular

Eğer programcı bir nesne kurucusu tanımlamışsa varsayılan kurucu kullanılamaz.

public class ArabaYeni

{

private String renk;

private int beygirGucu;

private int hiz;

public ArabaYeni (String renk, int guc, int hiz)

{

this.renk = renk;

this.beygirGucu = guc;

this.hiz = hiz;

}

30

59

Nesne Kurucular

public static void main(String [] args)

{

ArabaYeni ferrari = new ArabaYeni(); // derleyici hata

// verir.

}

}

60

Nesne Kurucular

Önceki örnekte nesne kurucu 3 parametreli bir şekilde tanımlanmıştır.

Hiç parametre gönderilmeden nesne kurucusu çağırıldığında derleyici hata verir.

Bu hata yeni bir nesne kurucu oluşturularak giderilebilir.

31

61

Nesne Kurucular

// Bir önceki programdaki hatanin düzeltilmis hali

public class ArabaYeni2

{

private String renk;

private int beygirGucu;

private int hiz;

public ArabaYeni2(String renk, int guc, int hiz)

{

this.renk = renk;

this.beygirGucu = guc;

this.hiz = hiz;

}

public ArabaYeni2()

{

}

62

Nesne Kurucular

public static void main(String [] args)

{

ArabaYeni2 ferrari = new ArabaYeni2(); // tanimli nesne

// kurucusu

}

}

32

63

Nesne Kurucular

Nesne kurucusu diğer metotları çağırabilir.

Nesne kurucusu bir nesne geri döndüren metottur. Ancak return kelimesi kullanmaz.

64

Nesne Kurucular

//Nesne kurucusunun diger metotlari çagirmasi

public class Araba3

{

private String renk;

private int beygirGucu;

private int hiz;

public Araba3 (String renk, int guc, int hiz)

{

System.out.print("Yeni bir Araba3 nesnesi");

System.out.println(" olusturuluyor.");

// nesne kurucusu baska metot çagiriyor.

this.set (renk, guc,hiz);

}

33

65

Nesne Kurucular public Araba3()

{

}

public void set(String renk, int guc, int hiz)

{

this.renk = renk;

this.beygirGucu = guc;

this.hiz = hiz;

}

public void veriGoster()

{

System.out.println("Renk = " + this.renk );

System.out.println("Beygir Gucu = " + this.beygirGucu);

System.out.println("Hiz = " + this.hiz);

System.out.println();

}

66

Nesne Kurucular

public static void main(String [] args)

{

Araba3 ferrari = new Araba3("kirmizi",500,335);

System.out.println("Ferrari ozellikleri");

ferrari.veriGoster();

ferrari.set("siyah",480,325);

System.out.println("Yeni Ferrari ozellikleri");

ferrari.veriGoster();

}

} Çıktı:

Yeni bir Araba3 nesnesi olusturuluyor.

Ferrari ozellikleri

Renk = kirmizi

Beygir gucu = 500

Hiz = 335

Yeni Ferrari ozellikleri

Renk = siyah

Beygir gucu = 480

Hiz = 325