Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bölüm 5 Nesneler ve Metotlar

Benzer bir sunumlar


... konulu sunumlar: "Bölüm 5 Nesneler ve Metotlar"— Sunum transkripti:

1 Bölüm 5 Nesneler ve Metotlar
Bil 102 Bölüm 5 Nesneler ve Metotlar Bil 102

2 Metotlarla Programlama
Bir metodun içinde başka bir metot çağrılabilir. Aynı sınıfın içinden çağrılıyorsa sadece metot adı ile çağrılır (veya this kullanılabilir  this.metotadı). Farklı bir sınıf içinden çağrılıyorsa, nesneadı.metotadı şeklinde çağrılmalıdır. Farklı bir sınıf içinden çağrılabilmesi için metodun public olarak tanımlanmış olması gerekir. Bil 102

3 Metotlarla Programlama
Başka sınıflar tarafından çağrılma gereksinimi olmayan metotlar private, diğer sınıflar tarafından çağrılması gereken metotlar public olarak tanımlanır. Bu şekilde private olarak tanımlanmış metotlara yardımcı metotlar denir. Bil 102

4 Sayı Oyunu Örneği Kod. Bil 102

5 Static Metotlar ve Değişkenler
Static olarak tanımlanan bir değişken veya metot, nesnenin türüne ve durumuna bağlı olmaksızın kullanılabilen bir yapıdadır. Bu durumda sınıf ismi nesne yerine kullanılır. Ayrıca bir nesne oluşturulmaz. Math.sqrt(25); Sınıf ismi Metot ismi Bil 102

6 Static Metotlar ve Değişkenler
Static olarak tanımlanan bir metot veya değişkenin değeri ya da kullanımı herhangi bir nesnenin durumundan bağımsız olmalıdır. Math.min(a,b) : Hangi nesne tarafından çağrılırsa çağrılsın verilen iki sayının küçüğünü hesaplar. Static olarak tanımlanabilir. Bil 102

7 Static Metotlar ve Değişkenler
Yalnızca sınıf değişkenleri ve metotlar static olabilir; static sınıf olmaz. Static nesne ve metotları çağırırken: Sınıfadı.metotadı(); Sınıfadı.değişkenadı(); Static olmayan nesne ve metotları çağırırken: Nesneadı.metotadı(); Nesneadı.değişkenadı(); Bil 102

8 Static Metotlar ve Değişkenler
Static olduğu halde nesneadı.metotadı() veya nesneadı.değişkenadı şeklinde çağrılması halinde derleyici hata vermez. Ancak static metot ve değişkenler, kaç tane nesne yaratılmış olursa olsun sadece tek bir adet değere ve referansa sahiptir. Static metot ve değişkenler this kullanılarak çağrılamaz  Derleyici Hatası Bil 102

9 Static Metotlar ve Değişkenler
public class StatikOrnek { public static int staticA; // statik degisken public int a; //statik olmayan degisken public static void setStaticA(int deger) { staticA = deger; } public void setA( int deger) { a = deger; } public int getStaticA() { return staticA; } public int getA() { return a; } } Bil 102

10 Static Metotlar ve Değişkenler
public class DeneStatikOrnek { 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 degeri: ”); System.out.println(s1.getStaticA); System.out.print(“s1 nesnesinin A degeri: ”); System.out.println(s1.getA); System.out.print(“s2 nesnesinin staticA degeri: ”); System.out.println(s2.getStaticA); System.out.print(“s2 nesnesinin A degeri: ”); System.out.println(s2.getA); }} s1 nesnesinin staticA degeri: 15 s1 nesnesinin A degeri: 10 s2 nesnesinin staticA degeri: 15 s2 nesnesinin A degeri: 20 Bil 102

11 Static – Düzeltmelerden Sonra
public class StatikOrnek { public static int staticA; // statik degisken public int a; //statik olmayan degisken public static void setStaticA(int deger) { staticA = deger; } public void setA( int deger) { a = deger; } public static int getStaticA() { return staticA; } public int getA() { return a; } } Bil 102

12 public class DeneStatikOrnek { public static void main(String [] args) StaticOrnek s1 = new StaticOrnek(); StaticOrnek s2 = new StaticOrnek(); StatikOrnek.setStaticA(5); s1.setA(10); StatikOrnek.setStaticA(15); s2.setA(20); System.out.print(“s1 nesnesinin staticA degeri: ”); System.out.println(StatikOrnek.getStaticA); System.out.print(“s1 nesnesinin A degeri: ”); System.out.println(s1.getA); System.out.print(“s2 nesnesinin staticA degeri: ”); System.out.print(“s2 nesnesinin A degeri: ”); System.out.println(s2.getA); } Bil 102

13 Örnekler C M,N için bir sınıf yazınız. Sınıfın metotları
verileriAl (ve hesapla) M, N parametrelerini main’den girerek CM,N ’i hesapla. Bil 102

14 public class kombinasyon { public static int verileriAl(int M, int N) int c; c=nFaktoriyel(M) / (nFaktoriyel(N) * nFaktoriyel(M-N)); // c=this.nFaktoriyel(M) / (nFaktoriyel(N) * nFaktoriyel(M-N)); // derleyici yukaridaki satir icin hata verir return c; } public static int nFaktoriyel(int K) int nFakt; nFakt=1; for(int i=1; i<=K; i++) nFakt*=i; return nFakt; Bil 102

15 Import java.util.*; public class KombinasyonDeneme { public static void main(String[]args) int M,N,sonuc,gecici; Scanner klavye = new Scanner(System.in); System.out.println("M ve N sayılarını giriniz (M>N):"); M=klavye.nextInt(); N=klavye.nextInt(); if(M<=N) gecici=M; M=N; N=gecici; } sonuc=kombinasyon.verileriAl(M,N); System.out.println("c="+sonuc); Bil 102

16 Örnekler 1!+2!+3!+…+N! Static metot kullanarak Nesne kullanarak
Bil 102

17 //static metot kullanarak yazilmis hali 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); } public static long faktoriyel(long sayi) long f=1; for(int k=1; k<=sayi;k++) f=f*k; return f; Bil 102

18 static metot static olmayan metot
//nesne kullanilarak yazilmis hali public class deneFaktoriyelToplami { 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); } public class faktoriyelToplami public long faktoriyel(long sayi) long f=1; for(int k=1; k<=sayi;k++) f=f*k; return f; static metot static olmayan metot Bir static metot içinde static olmayan bir metot çağrılabilmesi için, static olmayan metoda ait bir nesne yaratılıp bu nesneyle beraber kullanılması gerekir. Bil 102

19 Bir static metot içinde static olmayan bir metot çağrılabilmesi için, static olmayan metoda ait bir nesne yaratılıp bu nesneyle beraber kullanılması gerekir. import java.util.*; public class DaireHesabi { public static final double PI=3.1415; private double daireCapi; public void setDaireCapi(double Cap) { daireCapi = Cap; } public static double alan(double yaricap) { return (PI* yaricap * yaricap); } public void alanGoster() { System.out.println(“Dairenin alani “+ 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.alanGoster(); } public class DeneDaireHesabi { public static void main(String [] args ) { DaireHesabi daire1 = new DaireHesabi(); daire1.setDaireCapi(2); DaireHesabi.alanBulma(); } } Bil 102

20 Static Değişkenler Static değişkenler nesneden bağımsız kullanım için uygundur. Static değişkenler = Sınıf değişkenleri Bir static metot içinde static olmayan bir değişken çağrılabilmesi için, static olmayan metoda ait bir nesne yaratılıp bu nesneyle beraber kullanılması gerekir. Static bir metot static bir değişkeni kullanıyorsa herhangi bir nesneye bağlı olmadan sadece sınıf değişkeni adıyla kullanabilir. Bil 102

21 Static main() metodu static bir metottur.
Java programını çalıştırmak için kullanılır ve bir sınıf tanımının içinde yer almalıdır. main() metodu static olarak tanımlanmak zorundadır, aksi takdirde derleyici hata verir. Bil 102

22 Örnek public class DeneKitap { public static void main(String [] args) Kitap kitap1 = new Kitap(); kitap1.setBaslik(“TC Anayasasi”); kitap1.setBasimYili(2001); kitap1.setISBN(“ ”); kitap1.setSatisFiyati(24.50); kitap1.kitapYazdir(); } Kitap sinifini yazin. Bil 102

23 Math Sınıfı Math sınıfında kullanılan bütün metotlar static olarak tanımlanmıştır. Kullanırken nesne yaratmaya gerek yok. Sınıfadı.metotadı şeklinde kullanılır. Math.max(x,y) Bil 102

24 Fazladan Yükleme (Overloading)
Bir metodun birden fazla durum için kullanılabilmesi işlemi. Sınıfın içinde metodun kullanılması gereken her durumun tanımlanması gerekmektedir. Bu metot başka bir metot tarafından çağırıldığında metottaki tanım ve parametre dizilişine göre hangi tanımın geçerli olduğu belli olacaktır. Bir metodun fazladan yüklenmesi yapılırken sadece metoda girilen parametrelere bakılır. Metodun geri verdiği veri tipinin bir önemi yoktur. Bil 102

25 Fazladan Yükleme Örn. Math.max (x,y) yazıldığında aynı metota int, long, float veya double veri tipi girilebilir. Bu durumda max metodu aşırı yüklenmiştir ve hangi veri tipinin hangi max metodunu kullanacağı girilen parametrelere göre ayarlanır. Bil 102

26 public class fazladanYukleme { public void ayniSey() { System. out
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; } } public class fazladanYuklemeDeneme public static void main(String[]args) int N; Scanner klavye = new Scanner(System.in); System.out.print("Bir sayi giriniz:"); N=klavye.next(); fazladanYukleme fark=new fazladanYukleme(); yanit=fark.ayniSey(N); if(yanit) System.out.println(N+" cift sayidir."); System.out.println(N+" tek sayidir."); fark.ayniSey(); Bil 102

27 Fazladan Yükleme Metot fazladan yüklemesi yapıldığında veri tipi çevirimlerine dikkat etmek gerekir. Eğer double parametresi bekleyen bir metoda int veri tipi girildiğinde, eğer int veri tipi bekleyen aşırı yüklenmiş metot tanımı yoksa int otomatik olarak double’a çevrilir ve metot kullanılır. Bunun tersi durumda ise (double’ı int’e çevirmek gerektiğinde) derleyici bir hata verir. Bu durumda veri zorlaması yapılması gerekmektedir. public static void ornekMetot (double n1, int n2) public static void ornekMetot (int a1, double a2) ornekMetot (5,10); ornekMetot (5.0,10); Hata! Bil 102

28 Fazladan Yükleme Aynı parametrelere sahip, farklı veri tipi döndüren iki fazladan yüklenmiş metot Java’da aynı sınıf tanımı içinde kullanılamaz. public static int ornekMetot () public static char ornekMetot () Hata: Aynı parametreler girildiğinde hangi metodun kullanılacağı belli değil. Bil 102

29 Nesne Kurucular Bir nesne yaratıldığında nesnenin parametrelerine otomatik olarak veya kullanıcı vasıtasıyla çeşitli değerler atanabilir  Nesne kurucusu vasıtasıyla Nesne kurucusu: new SınıfAdı (…) şeklinde çağrılır. Nesne kurucularda aşırı yükleme yapılabilir. Eğer bir nesne kurucusu tanımlanmamışsa Java kendisi otomatik olarak bir nesne kurucusu tayin eder. Bu otomatik kurucu herhangi bir nesne parametresini değiştirmez, new SınıfAdı () şeklinde oluşturulur. Eğer programcı bir nesne kurucusu tanımlamışsa, herhangi bir otomatik kurucu kullanılmaz. Bil 102

30 Nesne Kurucular Nesne kurucusu da sınıfın diğer metotları gibi bir metottur. Bu metodun kullanımı istenilen şekilde ayarlanabilir. Fakat normal şartlarda nesne değişkenlerine ilk değerleri vermek için kullanılır. Eğer gerekirse nesne kurucusu diğer metotları da çağırabilir. Nesne kurucusu çağırıldığında metot sona erdiğinde o sınıfa ait yeni bir nesne oluşturulmuş olur. Bil 102

31 public static void main(String [] args) {
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; } public void veriGoster() { 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); } Bil 102

32 Sarmalayan Sınıflar Temel veri türleriyle (int, double, char, long, float) programcı veya Java tarafından hazırlanmış veri türleri (String, vs.) arasında fark vardır. Temel veri türlerinin herhangi bir sınıf gibi kullanılabilmesi için sarmalayan sınıflar adı verilen veri sınıfları oluşturulmuştur. Tablo 5.2 Bil 102

33 Sarmalayan Sınıflar Sarmalayan sınıfların kullanımı diğer sınıfların kullanımı ile aynıdır. Integer i = new Integer(); i = 10; Temel veri türlerinde atama nasıl yapılıyorsa sarmalayan sınıflarda da öyle yapılır. Kullanıcı tarafından yaratılan sınıflarda atama işlemi yapmak için bu amaca yönelik metotlar yazılması gerekir. Bil 102

34 Sarmalayan Sınıflar Sarmalayan sınıfa ait bir nesnenin değerini temel bir veri türüne atamak için: int j = i.intValue(); int j = i; Avantaj  Kullanıcıya kolaylık sağlayan çok sayıda metot ve değişkenler bulunuyor. Tablo 5.3, 5.4, 5.5 Bil 102

35 Referans : kadioğlu Bil 102


"Bölüm 5 Nesneler ve Metotlar" indir ppt

Benzer bir sunumlar


Google Reklamları