Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanBirce Baybasin Değiştirilmiş 9 yıl önce
1
Java Programlama Dili - 02 Class'larla Programlama BU-SWE 510BU-SWE 510 Fall 2003Fall 2003 Dr. Haluk Bingöl BÜ - CmpE bingol@boun.edu.trmeraklisina.com © 2000-2003 Haluk Bingöl v2.23
2
2 meraklisina.comİçerik DerlemeDerleme Field, metodField, metod Nesneye dayalı programlamaNesneye dayalı programlama Uygulama ve AppletUygulama ve Applet
3
3 meraklisina.com Java’da Nesneye Dayalı Programlama
4
4 meraklisina.comTipleme
5
5 CRC Gösterimi HızHız vitesvites pedal çevirme hızıpedal çevirme hızı vites değiştirvites değiştir hızlanhızlan yavaşlayavaşla durdur Bisiklet Class, Responsibility, Collaborators (CRC)
6
6 meraklisina.comClass Nesnenin tanımı Class olarak yapılırNesnenin tanımı Class olarak yapılır –Class (Hesap) Nesneler Class’ı kopyalayarak elde edilirNesneler Class’ı kopyalayarak elde edilir –Instance (kasaHesabı) Class Nesne 1 instance 2 instance 1
7
7 meraklisina.com /** * Muhasebe hesabi */ public class Hesap { } Class... bakiyebakiyeHesapClass Hesap class’ıHesap class’ı
8
8 meraklisina.com /** * Muhasebe hesabi */ public class Hesap { private double bakiye; } Class... bakiyebakiyeHesapClass Hesap class’ıHesap class’ı veriveri –dışardan görünmez
9
9 meraklisina.com /** * Muhasebe hesabi */ public class Hesap { private double bakiye; public Hesap(double acilisBakiyesi) { bakiye = acilisBakiyesi; } Class... bakiyebakiyeHesapClass Hesap class’ıHesap class’ı veriveri –dışardan görünmez constructorconstructor –parametreli
10
10 10 meraklisina.com /** * Muhasebe hesabi */ public class Hesap { private double bakiye; /* default constructor */ public Hesap() { this(0.0); } public Hesap(double acilisBakiyesi) { bakiye = acilisBakiyesi; } Class... bakiyebakiyeHesapClass Hesap class’ıHesap class’ı veriveri –dışardan görünmez constructorconstructor –parametreli –default
11
11 11 meraklisina.comInstance // hesap ac Hesap kasa; kasa = new Hesap(); Değişken tanımıDeğişken tanımı instance yaratmainstance yaratma bakiyebakiye0.0Hesap kasa
12
12 12 meraklisina.com // hesap ac Hesap kasa; kasa = new Hesap(); // ikinci hesabi ac Hesap banka = new Hesap(9.0); Instance... beraberberaber kasa banka bakiyebakiye9.0Hesap 0.0Hesap
13
13 13 meraklisina.com Instance... // hesap ac Hesap kasa; kasa = new Hesap(); // ikinci hesabi ac Hesap banka = new Hesap(9.0); // degisken kullan Hesap kullanilanHesap; kullanilanHesap = kasa; Değişkene atamaDeğişkene atama bakiyebakiye9.0Hesap 0.0Hesap kullanilanHesap kasa banka
14
14 14 meraklisina.com Instance... // hesap ac Hesap kasa; kasa = new Hesap(); System.out.println("bakiye = " + kasa.getBakiye()); // ikinci hesabi ac Hesap banka = new Hesap(9.0); System.out.println("bakiye = " + banka.getBakiye()); // degisken kullan Hesap kullanilanHesap; kullanilanHesap = kasa; System.out.println("bakiye = " + kullanilanHesap.getBakiye()); Veri saklamaVeri saklama –getBakiye() ÇıktıÇıktı –System.out kullanilanHesap bakiyebakiye9.0Hesap kasa bakiyebakiye0.0Hesap bakiye = 0.0 bakiye = 9.0 bakiye = 0.0 banka out
15
15 15 meraklisina.com Instance... // hesap ac Hesap kasa; kasa = new Hesap(); System.out.println("bakiye = " + kasa.getBakiye()); // ikinci hesabi ac Hesap banka = new Hesap(9.0); System.out.println("bakiye = " + banka.getBakiye()); // degisken kullan Hesap kullanilanHesap; kullanilanHesap = kasa; System.out.println("bakiye = " + kullanilanHesap.getBakiye()); Bütün instance'larda ortak veriBütün instance'larda ortak veri –Hesap numarası kullanilanHesap kasa banka bakiyebakiye9.0Hesap idid2 bakiyebakiye0.0Hesap idid1
16
16 16 meraklisina.com public class Hesap { private double bakiye; private static int id = 0; public Hesap() { this(0.0); } public Hesap(double acilisBakiyesi) { id++; bakiye = acilisBakiyesi; } /* bakiye al */ public double getBakiye() { return (bakiye); } /* bakiye düzelt */ public void setBakiye(double yeniBakiye) { bakiye = yeniBakiye; } Class Veriye ulaşmakVeriye ulaşmak –getBakiye() Veriyi değiştirmekVeriyi değiştirmek –setBakiye(7.5) bakiyebakiyeHesap idid getBakiye()getBakiye() setBakiye()setBakiye()
17
17 17 meraklisina.com bakiye id Veri Saklama Veriye ulaşmakVeriye ulaşmak –getBakiye() Veriyi değiştirmekVeriyi değiştirmek –setBakiye(7.5) getBakiye() setBakiye() bakiyebakiyeHesap idid getBakiye()getBakiye() setBakiye()setBakiye()
18
18 18 meraklisina.com bakiye id Veri Saklama... DışarısıDışarısı –identity –arayüz getBakiye()getBakiye() İçerisiİçerisi –veriler bakiyebakiye –algoritma getBakiye() setBakiye() bakiyebakiyeHesap idid getBakiye()getBakiye() setBakiye()setBakiye() kasa
19
19 19 meraklisina.com public class Hesap { //private double bakiye; public double bakiye; private static int id = 0; public Hesap() { this(0.0); } public Hesap(double acilisBakiyesi) { id++; bakiye = acilisBakiyesi; System.out.println("hesap açıldı"); } /* bakiye al */ public double getBakiye() { return (bakiye); } /* bakiye düzelt */ public double setBakiye(double yeniBakiye) { bakiye = yeniBakiye; System.out.println("Bakiye düzeltildi: " + yeniBakiye); } Veri Saklama... public-privatepublic-private Veriye direkt ulaşmakVeriye direkt ulaşmak // hesap ac Hesap kasa; kasa = new Hesap(); kasa.bakiye = 20;
20
20 20 meraklisina.com Nesne Temizliği Garbage CollectorGarbage Collector –senkron / asenkron –mark-swap algoritması referansı kalmamış instance'ları toplareferansı kalmamış instance'ları topla – – System.gc() finalize() metod finalize() metod –garbage collection öncesi çağrılır
21
21 21 meraklisina.com AltSınıf
22
22 22 meraklisina.comHiyerarşi
23
23 23 meraklisina.com AltSınıf... Dörtgenler Dörtgen şekillerDörtgen şekiller Ortak özelliklerOrtak özellikler –4 köşe –4 kenar –çevre –alan Ortak olmayan özelliklerOrtak olmayan özellikler –dik açılar –kenar paralelliği –kenar eşitliği
24
24 24 meraklisina.com public class Kenar { Point pA; Point pB; public Kenar(Point pA, Point pB) { this.pA = pA; this.pB = pB; } public double length() { return(pA.distance(pB)); } AltSınıf... Yardımcı Nesneler PointPoint KenarKenar public class Point { double x; double y; public Point(double x, double y) { this.x = x; this.y = y; } public double distance(Point pA) { double xKare = (x - pA.x) * (x - pA.x); double yKare = (y - pA.y) * (y - pA.y); return(Math.sqrt(xKare + yKare)); }
25
25 25 meraklisina.com AltSınıf... Dörtgen DörtgenDörtgen –4 köşe ile belli C D A B public class Dörtgen { Point pA, pB, pC, pD; public Dörtgen(Point pA, Point pB, Point pC, Point pD) { this.pA = pA; this.pB = pB; this.pC = pC; this.pD = pD; } public double getÇevre() { double c = 0; c += pA.distance(pB); c += pB.distance(pC); c += pC.distance(pD); c += pD.distance(pA); return (c); }
26
26 26 meraklisina.com public class Dörtgen { Point pA, pB, pC, pD; public Dörtgen(Point pA, Point pB, Point pC, Point pD) { this.pA = pA; this.pB = pB; this.pC = pC; this.pD = pD; } public double getÇevre() { double c = 0; c += pA.distance(pB); c += pB.distance(pC); c += pC.distance(pD); c += pD.distance(pA); return (c); } AltSınıf... Özel Bir dörtgen: Dikdörtgen DörtgenDörtgen –4 köşe ile belli DikdörtgenDikdörtgen –2 köşe ile belli public class DikDörtgen { Point pA, pC; public DikDörtgen(Point pA, Point pC) { this.pA = pA; this.pC = pC; } DCABDCAB
27
27 27 meraklisina.com public class Dörtgen { Point pA, pB, pC, pD; public Dörtgen(Point pA, Point pB, Point pC, Point pD) { this.pA = pA; this.pB = pB; this.pC = pC; this.pD = pD; } public double getÇevre() { double c = 0; c += pA.distance(pB); c += pB.distance(pC); c += pC.distance(pD); c += pD.distance(pA); return (c); } AltSınıf... Özel Bir dörtgen: Dikdörtgen Dikdörtgen, dörtgenin özel bir durumudur.Dikdörtgen, dörtgenin özel bir durumudur. public class DikDörtgen extends Dörtgen{ public DikDörtgen(Point pA, Point pC) { super( pA, new Point(pC.x, pA.y), pC, new Point(pA.x, pC.y) ) } DCABDCAB
28
28 28 meraklisina.com DCABDCAB public class Dörtgen { Point pA, pB, pC, pD; public Dörtgen(Point pA, Point pB, Point pC, Point pD) { this.pA = pA; this.pB = pB; this.pC = pC; this.pD = pD; } public double getÇevre() { double c = 0; c += pA.distance(pB); c += pB.distance(pC); c += pC.distance(pD); c += pD.distance(pA); return (c); } AltSınıf... Özel Bir dörtgen: Dikdörtgen Metod OverrideMetod Override –yeniden tanımla public class DikDörtgen extends Dörtgen{ public DikDörtgen(Point pA, Point pC) { super( pA, new Point(pA.x, pC.y), pC, new Point(pC.x, pA.y) ) } public double getÇevre() { double c = 0; c += Math.abs(pA.x - pC.x); c += Math.abs(pA.y - pC.y); return (2 * c); }
29
29 29 meraklisina.com AltSınıf... Kalıtım Ağacı extends sadece bir sınıf özelleştirilirextends sadece bir sınıf özelleştirilir –bir baba –bir ağaç elde edilir. Gösterim:Gösterim: üstSınıf altSınıf
30
30 30 meraklisina.com AltSınıf... Kalıtım Çeşitleri Tekli kalıtımTekli kalıtım –bir baba –ağaç ? –"extends class" Çoklu kalıtımÇoklu kalıtım –bir çok baba –döngüsüz yönlü grafik –"implements interface"
31
31 31 meraklisina.com Interface
32
32 32 meraklisina.comInterface ProtokolProtokol Sınıf hiyerarşisiSınıf hiyerarşisi Farklı hiyerarşideki sınıflar için ortak yönlerFarklı hiyerarşideki sınıflar için ortak yönler Nesnenin programlama arayüz tanımıNesnenin programlama arayüz tanımı
33
33 33 meraklisina.com Interface... Interface - Çoklu Kalıtım Tam olarak çoklu kalıtım değilTam olarak çoklu kalıtım değil –değişkenler kalıtılmıyor –metodlar implementasyonu kalıtılmıyor –interface hiyerarşisi sınıf hiyerarşisinden farklı
34
34 34 meraklisina.com Interface... DeğişkenlerDeğişkenler –public –static –final MetodlarMetodlar –public –abstract public interface MouseListener extends EventListener { public void mouseClicked(MouseEvent e); public void mouseEntered(MouseEvent e); public void mouseExited(MouseEvent e); public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e); }
35
35 35 meraklisina.com Interface... public interface Sleeper { public void wakeUp(); public long ONE_SECOND = 1000;// in milliseconds public long ONE_MINUTE = 60000;// in milliseconds } // service provider public synchronized boolean letMeSleepFor(Sleeper theSleeper, long time) { int index = findNextSlot(); if (index == NOROOM) { return false; } else { sleepers[index] = theSleeper; sleepFor[index] = time; new AlarmThread(index).start(); return true; } class GUIClock extends Applet implements Sleeper {... public void wakeUp() { repaint(); clock.letMeSleepFor(this, ONE_MINUTE); }
36
36 36 meraklisina.com Interface Örnekler
37
37 37 meraklisina.com Interface … java.lang.Comparable SıralamaSıralama KarşılaştırmaKarşılaştırma public interface Comparable { public int compareTo(Object o); }
38
38 38 meraklisina.com Interface … java.lang.Runnable Bağımsız çalışabilmeBağımsız çalışabilme ThreadThread public interface Runnable { public abstract void run(); }
39
39 39 meraklisina.com Interface … java.io.Serializable Nesne byte stream haline gelebilmeNesne byte stream haline gelebilme Tekrar nesne haline gelebilmeTekrar nesne haline gelebilme KullanımKullanım –Bir JVM'den diğerine aktarılabilme –Durumu ile beraber saklanabilme public interface Serializable { }
40
40 40 meraklisina.com Interface … java.lang.Cloneable KopyalanabilmeKopyalanabilme public interface Cloneable { }
41
41 41 meraklisina.comÖzet Nesne - ClassNesne - Class InstanceInstance Veri saklamaVeri saklama Kalıtım - AltSınıfKalıtım - AltSınıf InterfaceInterface LabLab
42
42 42 meraklisina.comKaynaklar The Java Programming Language, 3e Arnold, Gosling, Holmes Addison-Wesley, 2000The Java Programming Language, 3e Arnold, Gosling, Holmes Addison-Wesley, 2000 The Java Tutorial Object-Oriented Programming for the Internet Campione, Walrath Addison-Wesley, 1996The Java Tutorial Object-Oriented Programming for the Internet Campione, Walrath Addison-Wesley, 1996 Java How to Program, 3e Dietel & Dietel Prentice Hall, 1999Java How to Program, 3e Dietel & Dietel Prentice Hall, 1999
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.