Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Java Programlama Dili - 02 Class'larla Programlama BU-SWE 510BU-SWE 510 Fall 2003Fall 2003 Dr. Haluk Bingöl BÜ - CmpE

Benzer bir sunumlar


... konulu sunumlar: "Java Programlama Dili - 02 Class'larla Programlama BU-SWE 510BU-SWE 510 Fall 2003Fall 2003 Dr. Haluk Bingöl BÜ - CmpE"— Sunum transkripti:

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


"Java Programlama Dili - 02 Class'larla Programlama BU-SWE 510BU-SWE 510 Fall 2003Fall 2003 Dr. Haluk Bingöl BÜ - CmpE" indir ppt

Benzer bir sunumlar


Google Reklamları