Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bil 102 Bölüm 5 Nesneler ve Metotlar Bil 1021. Metotlarla Programlama Bir metodun içinde başka bir metot ça ğ rılabilir. Aynı sınıfın içinden ça ğ rılıyorsa.

Benzer bir sunumlar


... konulu sunumlar: "Bil 102 Bölüm 5 Nesneler ve Metotlar Bil 1021. Metotlarla Programlama Bir metodun içinde başka bir metot ça ğ rılabilir. Aynı sınıfın içinden ça ğ rılıyorsa."— Sunum transkripti:

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

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 1022

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 1023

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

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 ismiMetot ismi Bil 1025

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 1026

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 1027

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 1028

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 1029

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); }} Bil s1 nesnesinin staticA degeri: 15 s1 nesnesinin A degeri: 10 s2 nesnesinin staticA degeri: 15 s2 nesnesinin A degeri: 20

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 10211

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.println(StatikOrnek.getStaticA); System.out.print(“s2 nesnesinin A degeri: ”); System.out.println(s2.getA); } Bil 10212

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

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 10214

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 10215

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

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 10217

18 //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; } Bil 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. static metot static olmayan metot

19 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); daire1.alanGoster(); DaireHesabi.alanBulma(); } } Bil 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.

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 10220

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 10221

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(); } Bil Kitap sinifini yazin.

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 10223

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 10224

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 10225

26 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) { boolean yanit; 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."); else System.out.println(N+" tek sayidir."); fark.ayniSey(); } Bil 10226

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); Bil Hata!

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 10228

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 10229

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 10230

31 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(…); … }} Bil public static void main(String [] args) { Araba ferrari = new Araba(“kirmizi”, 450, 320); Araba fiat = new Araba(“beyaz”); fiat.setBeygirGucu(70); fiat.setHiz(155); }

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 10232

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 10233

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 10234

35 Referans : kadio ğ lu Bil 10235


"Bil 102 Bölüm 5 Nesneler ve Metotlar Bil 1021. Metotlarla Programlama Bir metodun içinde başka bir metot ça ğ rılabilir. Aynı sınıfın içinden ça ğ rılıyorsa." indir ppt

Benzer bir sunumlar


Google Reklamları