java ile nesneye yönelik...
TRANSCRIPT
![Page 1: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/1.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 1
Javaile
Nesneye Yönelik Programlama
![Page 2: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/2.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 2
Bu Dönem Hakkında
Temel Kısım
Corba
JDBC
Servlet RMI
EJB
JSP
XML Y
![Page 3: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/3.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 3
Java ™ platformu , ağ(network) ‘ın önemi hesaba katılarak ve aynıyazılımın birçok değişik bilgisayar ortamında veya değişik türmakinalarda çalışması fikri ile geliştirilmiş yeni bir teknolojidir.
Java teknolojisi kullanılarak aynı uygulamayı değişik ortamlardaçalıştırabiliriz – örneğin Pc’lerde , Macintosh bilgisayarlarda, hatta ceptelefonlarında.
Java diğer programlama dilleri gibi başlı başına bir ürün değildir.
Java ve Java’ya bağlı alt teknolojiler, Sun Microsystems tarafındanverilmiş belirtimlerden (specifications) oluşmaktadır.Eğer bu belirtimlere sadık kalınmaz ise hukuki olarak suç işlenmiş olur.
Java Nedir?
![Page 4: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/4.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 4
Java İle Neler Yapılabilir?
Java Programlama dili ile projelerimizi diğer programlamadillerine göre daha kolay ve sağlıklı bir şekilde yapmamızmümkündür . Kısaca göz atacak olursak , Java ile ;
GUI (graphical user interface , grafiksel kullanıcı ara yüzü) uygulamaları , Appletler. Distributed components (ör . EJB, RMI, CORBA). Servlet, Jsp (web tabanlı uygulamalar). Veri tabanlarına erişim ile alakalı uygulamalar. Cep telefonları, Smart kartlar için uygulamalar . Ve daha niceleri… için uygulamalar yazmamızmümkündür.
![Page 5: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/5.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 5
Bir Kere Yaz Her Yerde Çalıştır
Java uygulamaları JVM (Java Virtual Machine) tarafındanyorumlanır( interpreted ).JVM , işletim sisteminin en tepesinde bulunurJava uygulamaları değişik işletim sistemlerinde , herhangibir değişiklik yapmadan çalışabilir, Java’nın felsefesi olan“bir kere yaz heryerde çalıştır” sözü gerçekleştirilmiştir.
![Page 6: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/6.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 6
Çalışma Evreleri
![Page 7: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/7.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 7
Çalışma Evreleri
![Page 8: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/8.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 8
Kategoriler
Java platformunun ana grupları. • Standart Java • Enterprise Java • Gömülü cihazlar için Java (embedded devices) • XML Teknolojileri• Diğer Teknolojiler
![Page 9: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/9.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 9
Standart Java
Java 2 SDK (J2SE) Java 2 Runtime Environment Java Plug-in Java Web Start Java HotSpot Server Virtual Machine Collections Framework Java Foundation Classes (JFC) Swing Components Pluggable Look & Feel Accessibility Drag and Drop Security Java IDL JDBC JavaBeans Remote Method Invocation (RMI) Java 2D
![Page 10: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/10.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 10
Enterprise JavaJ2EE (Java 2 Enterprise Edition)CORBA Teknolojisi ECperf TeknolojisiEnterprise JavaBeans Teknolojisi Kontaynerler için Java Yetkilendirme Kontratı (Java Authorization Contract for Containers) (Java ACC)Java IDL JavaMail APIJava Mesajlaşma Servisi (Message Service) (JMS) APIJavaServer FacesJavaServer Pages Java ServletsJDBC TeknolojisiJ2EE BağlayıcıMimarisi (Connector Architecture)Hareketler (Transactions)
![Page 11: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/11.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 11
Gömülü Cihazlar İçin Java (Embedded Devices)
Java 2 Platform, Micro Edition (J2ME technology) Java 2 Platform, Micro Edition (J2ME Teknolojisi)Bağlı Aygıt Konfigurasyonu (Connected Device Configuration) (CDC)Sınırlı Bağlanmış Aygıt Konfigurasyonu (Connected Limited Device Configuration) (CLDC)C Sanal Makinası (Virtual Machine) (CVM)K Sanal Makinası (Virtual Machine) (KVM)PersonalJava Java Card JavaPhone API Java TV API Jini Network Technology Mobil Bilgi Aygıt Profili (Mobile Information Device Profile) (MIDP)
![Page 12: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/12.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 12
XML Teknolojileri
XML İlişkilendirilmesi için Java Mimarisi (Java Architecture for XML Binding) (JAXB)
XML-Tabanlı RPC için JAVA API'si (Java API for XML-Based RPC) (JAX-RPC)
XML Mesajlaşması için JAVA API'si (Java API for XML Messaging) (JAXM)
XML İşlemleri için JAVA API'si (Java API for XML Processing) (JAXP)
XML Kayıtları için JAVA API'si (Java API for XML Registries) (JAXR)
![Page 13: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/13.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 13
Diğer Teknolojiler
• Araç Ürünlero MIF Docleto Sun ONE Stüdyo (Studio)
• Ağ (NetWork) Ürünleri o Sertifikalı JAIN API Ürünleri (JAIN API Certified Products)o Java Dynamic Management Kito Java Yönetim Uzantısı (Java Management Extensions) (JMX)o Java MetaData Arabirimi (Java Metadata Interface) (JMI)o Java Paylaşılan Veri Araç Takımı Java Shared Data Toolkito Java Spaces Teknolojisio Servis Sağlıyıcılar için Java Teknolojisi (Java Technology for Service
Providers)o Jini Ağ Teknolojisi (Network Technology)o JXTA Projesio J2ME Platformu için JXTA Projesi (Project JXTA for J2ME Platform)o Sun Chili!Soft ASP
![Page 14: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/14.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 14
•2003 yılının sonuna doğru JDK v1.5 versiyonun çıkarılması planlanmaktadır (Tiger projesi).2003
•JDK v1.4 versiyonu çıkarıldı (Merlin projesi). •Java API for XML binding yayınlandı.
2002
•JDK v1.3 çıkartıldı . •Java APIs for XML teknolojisi yayınlandı .
2000
•Java teknolojisi J2SE, J2EE ve J2ME olarak 3’e bölündü . •Java HotSpot (performans arttırıcı) yayınlandı . •JavaServer Pages (JSP) teknolojisi yayınlandı. •J2EE platform’u yayınlandı . •Linux üzerinde J2SE platformu yayınlandı .
1999
•JDK 1.2 çıkartıldı . •JFC/Swing yayınlandı- aynı sene içersinde http://java.sun.com internet adresinden 500,000+ adetindirme(download) gerçekleştirildi.
1998
•JDK 1.1 çıkartıldı. Bu sürümde Java GUI , veritabanı erişimi için JDBC , dağınık nesneler için RMI ve daha birçok yeni gelişmeler eklendi .
1997
•Java Development Kit (JDK) v1.0 çıkartıldı. Temel seviyeli işlevleri içeren bir versiyon (ör. soketprogramlama, Girdi/Çıktı (Input/Output), GUI (Graphical User Interface- Grafik KullanıcıArabirimi)
1996
•Java teknolojisinin ilk çıkış yılı ; ilk olarak Applet teknolojisinin dikkat çektiği seneler. 1995
Java’nın Gelişim Evreleri
![Page 15: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/15.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 15
Java’nın Başarılı Olmasındaki Sebepler
Nitelikli bir programlama dili olmasıC++ da olduğu gibi bellek problemlerinin olmaması .Nesneye yönelik (Object - Oriented) olmasıC/C++/VB dillerinin aksine dinamik olması . Güvenli olması .Internet uygulamaları için elverişli (Applet, JSP, Servlet, EJB, Corba, RMI).
Platform bağımsız olması : bir kere yaz her yerde çalıştır
![Page 16: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/16.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 16
Çöp Toplayıcı (Garbage Collector)
Bir programın çalışma durumunda ortaya çıkan vesonradan kullanılmayan (gereksiz) nesneleri bulur veonları yok eder (destroy).Bellek yönetiminin (memory management) yükü, koduyazan kişiden Java’ya geçmiş olurDiğer dillerde, örneğin C++ da , oluşturulan nesnelerin yokedilme sorumluluğu kodu yazan kişiye aittir.Çöp toplayıcısı(garbage collector) JVM’in yazılışına(implementation) göre değişkenlikler gösterebilir.
![Page 17: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/17.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 17
Java’da Yorum Satırı
Java kaynak kodunun içerisine istediğiniz yorumlarıyazabilmeniz için belli yol izleminiz gerekmektedir.
Java’da yorum satırlarını belirtme iki şekilde mümkün olur
1. /* yorum */ , slash - yıldızdan , diğer yıldız-slash arasına kadar istediğiniz yorumu yazabilirsiniz . Uzunsatırlı yorumlarda bu yöntemi kullanabilirsiniz.
2. // yorum , tek satırlık yorum yapmak için idealdir. Kısa yorumlarınız için bu yöntemi kullanabilirsiniz.
![Page 18: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/18.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 18
Herşey Nesne - 1
Java’da herşeye nesne olarak davranırız. Herseyinnesne olmasına rağmen nesneleri yönetmek için “ referanslar”kullanılır .
Örnek : Diyelim ki elimizde bir maket uçak (nesne olarak düşünün) vebu maket uçağa ait bir de kumanda (referans) olduğunu düşünelim. Bu maket uçağı havada sağa sola döndürmek için elimizdeki kumanda cihazını kullanmak zorundayızdır; benzer şekilde havalandırmak veya yere indirmek için de kumanda cihazından faydalanırız. Burada dikkat edilmesi gereken unsur kumanda cihazından çıkan emirlerin maket uçağı tarafından yerine getirilmesidir.
![Page 19: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/19.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 19
Herşey Nesne - 2
- Elimizde uzaktan kumandanın (referans) olması, maket uçağımızın (nesne) olduğu anlamına gelmez . - Uzaktan kumandamız (referans) da tek başına hayatısürdürebilir.
String kumanda ; // kumanda referansı şu an için//String bir nesneye bağlı değil.
![Page 20: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/20.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 20
Herşey Nesne - 3
Bir referansa mesaj göndemek istiyorsak onu bir nesneye bağlamamız gerekir.
•String kumanda= new String("Selamlar") ;
•String kumanda="Selamlar" ;
![Page 21: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/21.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 21
Sınıf Nedir? Nesne Nedir?
Sabun s = new Sabun();
![Page 22: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/22.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 22
Java’da Depolanan Veriler Nerede Durur - 1
Stack : Bulunduğu nokta RAM’dır... Stack üzerindereferansların kendileri bulunur.
Heap : Burası genel amaçlı bir havuzdur . Nesnelerinkendisi bu alanda durur.
Statik Alan : Bu alan RAM’de bulunur. Statik alanda yeralan veriler , programın çalışması süresince orada yaşarlar. Nesnelerin kendileri bu alanda yer almazlar.
![Page 23: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/23.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 23
Java’da Depolanan Veriler Nerede Durur - 2
Non-RAM Bellek : Bazı durumlarda uygulamalarıniçerisinde oluşturduğumuz nesnelerin,uygulamasonlandıktan sonra bile varlıklarını sürdürmelerini isteriz.
1. Akışkan Nesneler (streamed objects) : Bu nesneler, genellikle ağ(network) üzerindeki başka bir makineyegönderilmek üzere bayt ırmaklarına dönüştürülürler.
2. Kalıcı Nesneler (persistent objects) : Bu nesnelerkendi durumlarını(state) saklarlar ve diskimizdesaklanırlar. Kendi durumlarını saklamaktan kasıt iseözelliklerinin (attribute) değerlerinin korunmasıdır.
![Page 24: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/24.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 24
Temel (Primitive) Tipler
Temel tipler stack alanında saklanırlar.
Temel tip Boyut Minimum Maximum Sarmalıyıcı Sınıf Tipi
boolean — — — Boolean
char 16- bit Unicode 0 Unicode 216- 1 Character
byte 8- bit -128 +127 Byte
short 16- bit -2 15 +2 15—1 Short
int 32- bit -2 31 +2 31—1 Integer
long 64- bit -2 63 +2 63—1 Long
float 32- bit IEEE754 IEEE754 Float
double 64- bit IEEE754 IEEE754 Double
void — — — Void
![Page 25: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/25.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 25
Sarmalayıcı (Wrapper) Sınıflar
Temel tiplerin birer adet sarmalıyıcı (wrapper) sınıflarıbulunur.
char c = 'x' ; // temel tip
Character C = new Character(c); // sarmalayıcı sınıf
![Page 26: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/26.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 26
Geçerlilik Alanı (Scope) - 1
{int a = 177;
/* sadece a mevcut*/
{int b = 196;
/* a ve b mevcut */
}/* sadece a mevcut */
/* b “geçerlilik alanının dışına çıktı ” */
}
![Page 27: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/27.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 27
Geçerlilik Alanı (Scope) - 2
C ve C++ doğru ama Java’da yanlış olan bir ifade
{ // dış alan
int a = 12;
{ // iç alan
int a = 96; /* java’da yanlış ama C ve C++ doğru */
} // iç alanın sonu
} //dış alanın sonu
![Page 28: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/28.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 28
Nesneler İçin Geçerlilik Alanı (Scope of Objects)
if (true){
String s = new String("Selamlar");
} /* geçerlilik alanının sonu*/
• Geçerlilik alanının sonunda String nesnesi “Çöp Toplayıcısı” (Garbage Collector) tarafından bellekten silinececektir.
![Page 29: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/29.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 29
Yeni Sınıf Oluşturma
public class YeniBirSinif {
.....
}
![Page 30: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/30.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 30
Alanlar - 1
Alanlar, temel bir tip veya sınıf tipinde olabilir.
public class YeniBirSinif {
public int i;
public double d;
public boolean b;
}
![Page 31: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/31.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 31
Alanlar - 2
Temel (primitive) Tip Mevcut değer (Default value)
boolean false
char ‘\u0000’ (null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
![Page 32: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/32.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 32
Alanlar - 3
public class YeniBirSinif { public int i = 5 ; public double d = 3.23; public boolean b = true ;
}
![Page 33: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/33.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 33
Alanlar - 4
![Page 34: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/34.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 34
Alanlara Ulaşım
Nesnenin alanlarına ulaşmak için “.” (nokta) kullanılır.Bu alanların erişim belirleyicileri
publicprivateprotectedfriendly
olabilir.
YeniBirSinif ybs = new YeniBirSinif();ybs.i ;ybs.d ; ybs.b ;
![Page 35: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/35.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 35
Alanlara Değer Atama
YeniBirSinif ybs = new YeniBirSinif();ybs.i = 5;ybs.d = 5.3;
ybs.b = false;
![Page 36: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/36.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 36
Sınıf Tipindeki Alanlar - 1
public class YeniBirSinif {
public int i; public double d; public boolean b; public String aciklama = new String("aciklama");
}
![Page 37: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/37.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 37
Sınıf Tipindeki Alanlar - 2
![Page 38: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/38.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 38
Yordamlar (Methods) - 1
dönüşTipi YordamIsmi( /* parametre listesi */ ) {/* Yordamın gövdesi */
}
![Page 39: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/39.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 39
Yordamlar (Methods) - 2
dönüşTipi= Yordamların iki şansı vardır:
Değer döndürürlerTemel (primitive) bir tipde değer (int, double, short vb..)Sınıf tipinde bir değer (String, Double, Short vb...)
Değer döndürmezler = void
![Page 40: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/40.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 40
yordamIsmi = Java’nın kendisine ait olan sözcükler (if , else , import , class , return..vb) ve Türkçe karakterlerharicinde istenilen isim kullanılabilir. Ancak, yordamlar bireylem içerdikleri için, yordam isimlerinin de bir eylemibelirtmesi tercih edilir.
Örneğin: sayiSirala() enBuyukSayiBul()sqlCalistir()
Yordamlar (Methods) - 3
![Page 41: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/41.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 41
Yordamlar (Methods) - 4
parametre listesi= Yordam içerisinde işlemleryapabilmek için gerekli olan parametreler. Bu parametreler temel tipte veya sınıf tipinde olabilirler.
![Page 42: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/42.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 42
Yordamlar (Methods) - 5
Yordam gövdesi = Bu kısım kodu yazan kişininyaratıcılığına bağlı olarak değişir.
![Page 43: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/43.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 43
Yordam (Method) Örneği - 1
int boyutDondur(String kelime) {return kelime.length() ;
} // yordamın sonu
![Page 44: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/44.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 44
Yordam (Method) Örneği - 2
String elmaHesapla(int elmasayisi) {return new String("elma sayisi = "
+ elmasayisi*2);} // yordamın sonu
![Page 45: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/45.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 45
Yordam İçindeki Yerel Değişkenlerin İlk Değerlerini Alması
void hesapla(String kelime , int kdv ) {int sondeger = 0;int kelimeboyut = 0 ;int toplamboyut ; // Hatalı !!toplamboyut++ ; // Hatalı !!kelimeboyut = kelime.length();sondeger = kelimeboyut + kdv ;
}
![Page 46: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/46.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 46
İlk Java Programı - 1
public class Selam {public static void main(String args[]) {
System.out.println("Selamlar !"); }
}
![Page 47: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/47.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 47
İlk Java Programı - 2
public class Selam : Bu kısım da yeni bir sınıfoluşturuyor...
![Page 48: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/48.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 48
İlk Java Programı - 3
public static void main(String args[])
Java’da bir sınıfın tek başına çalışması isteniyorsa(standalone) bu yordam yazılmak zorundadır . Bu yordamsınıflar için bir başlagıç noktasıdır.static yordamlar nesneye bağımlı olmayan yordamlardır. Bu yordamı kullanmak için, ilgili sınıfa ait bir nesne oluşturma zorunluluğu yoktur.
![Page 49: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/49.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 49
Diziler (Arrays)
main() yordamı parametre olarak String sınıfı tipinde dizialır, bu String sınıfı tipindeki dizinin içerisinde, konsoldanJava uygulamasına gönderilen parametreler bulunur .
args[0] : konsoldan girilen 1. parametre değerini taşır …args[1] : konsoldan girilen 2. parametre değerini taşır …args[n-1] : konsoldan girilen n. parametre değerini taşır …
Java’da diziler sıfır’dan başlarlar. Diziler ilerleyen bölümlerdeyoğun bir şekilde incelenecektir.
![Page 50: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/50.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 50
İlk Java Programı - 4
System.out.println("Selamlar !")Bu komut satırı, bilgileri konsola (ekrana) basmamızısağlar. Java’nın dokümanlarına bakarsak;System sınıfı altında static bir alan olan out alanınınmevcut olduğunu görüyoruz. Bu yüzden System sınıfınıoluşturmak zorunda değiliz (new System() ). out alanı bize PrintStream nesnesi oluşturur vePrintStream nesnesinin println() methodu ile bilgilerikonsola(ekrana) bastırırız.
![Page 51: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/51.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 51
Kurulum
Kurulumlar dökümanlardan incelenebilir.
![Page 52: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/52.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 52
Dizin Yapısı
![Page 53: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/53.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 53
Nedir bu args[]? Ne İşe Yarar?
public class ParametreUygulamasi { public static void main(String[] args) {
System.out.println("Girilen Parametre = "+args[0]); }
}
bash# javac ParametreUygulamasi.java
bash# java ParametreUygulamasi test
Girilen Parametre = test
![Page 54: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/54.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 54
Hata Durumu
public class ParametreUygulamasi { public static void main(String[] args) {
System.out.println("Girilen Parametre = "+args[0]); }
}
bash# javac ParametreUygulamasi.java
bash# java ParametreUygulamasi
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException at ParametreUygulamasi2.main(ParametreUygulamasi.java:3)
![Page 55: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/55.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 55
Javadoc – Yorum İle Dökümantasyon Oluşturmak
Dökümantasyon oluşturma yükünü ortadan kaldırır.
Oluşturulan dökümanlar HTML formatında olur.
![Page 56: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/56.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 56
/** Ilk Java Kodumuzun DokumantasyonuEkrana Selamlar diyen bir uygulama* @author Altug B. Altintas ([email protected]) * @version 1.0* @since 09.01.2002*/ public class SelamDoc { /**sayiyi artirmak icin ,
*degiskenler icin bir ornek*/ public int sayac = 0 ; /** siniflarda & uygulumalarda giris
* noktasi olan yordam* @param args disaradan girilen* parameterler dizisi* @return donen deger yok* @exception Hic istisna firlatilmiyor*/
public static void main(String[] args) { System.out.println("Selamlar !");
} }
![Page 57: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/57.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 1 57
Sorular ...
![Page 58: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/58.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1
Java’da Program Denetimi
veOperatörler
![Page 59: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/59.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 2
int a ;a=4 ; // doğru bir atama4=a ; // yanlış bir atama!
Atamalar
![Page 60: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/60.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 3
Sonuç : a=5, b=5
int a, b ;a=4 ;b=5 ;a=b ;
Temel (Primitive) Tiplerde Atama
![Page 61: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/61.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 4
Nesneler ve Atamalar
NesnelerdeAtama.java
![Page 62: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/62.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 5
Sonuç
• 1: s1.i: 9, s2.i: 47• 2: s1.i: 47, s2.i: 47• 3: s1.i: 27, s2.i: 27
![Page 63: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/63.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 6
Şekil
![Page 64: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/64.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 7
Dosya İsimleri
• Fiziksel dosya ismi ile public sınıfın ismi aynı olmalı.
![Page 65: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/65.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 8
Yordam (Method) Çağırımları
• Yordamlar parametre alırlar.• Alınan bu paremetreler ile yordam içerisinde işlemler
gerçekleşir.• Peki yordamlara parametre olarak ne gitmektedir ?
– Nesnenin kendisi mi ? – Yoksa nesneye bağlı referans mı ?
IlkelPas.java Pas.java
![Page 66: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/66.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 9
java Operatörleri
• Operatörler programlama dillerinin en temel işlem yapma yeteneğine sahip simgesel isimlerdir.
– Aritmetik Operatör– İlişkisel Operatör– Mantıksal Operatörler– Bit düzeyinde (bitwise) Operatörler
![Page 67: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/67.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 10
java Operatörleri
• Operatörler bir veya daha fazla değişken üzerindenişlemler gercekleştirirler.
– İşlem gerçekleştirmek için tek bir değişkene ihtiyaçduyan operatörlere tekli operatör (unary operator)
– İşlem gerçekleştirmek için iki değişkene ihtiyaç duyanoperatörlere ikili operatör (binary operator)
– İşlem gerçekleştirmek için üç adet değişkene ihtiyaçduyan operatörlere ise üçlü operatör (ternary operator) denir (bir adet var).
![Page 68: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/68.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 11
Aritmetik Operatörler
Operatör Kullanılış Açıklama
+ değişken1 + değişken2 değişken1 ile değişken2 yitoplar
- değişken1 - değişken2 değişken1 ile değişken2 yiçıkarır
* değişken1 * değişken2 değişken1 ile değişken2 yiçarpar
/ değişken1 / değişken2 değişken1 ,değişken2 tarafından bölünür
% değişken1 % değişken2değişken1 in değişken2 tarafından bölümündenkalan hesaplanır.
AritmetikOrnek.java
![Page 69: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/69.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 12
“+” ve “–” Operatörleri
Operatör
KullanılışŞekli Açıklama
+ + değişkenEğer değişken char, sekizli (byte)veya short tipinde ise int tipine
dönüştürür.
- - değişken Değişkenin değerini negatif yapar(-1 ile çarpar).
OperatorTest.java
![Page 70: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/70.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 13
Dönüştürme (Casting) İşlemi
• Bir temel (primitive) tip, diğer bir temel tipe dönüştürülebilir, fakat oluşacak değer kayıplarından kodu yazan kişisorumludur .
IlkelDonusum.java
![Page 71: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/71.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 14
String (+) Operatörü
• “+” operatörü String tiplerde birleştirme görevi görür.
• Eğer bir ifade String ile başlarsa , onu takip eden tiplerdeotomatik olarak String nesnesine dönüştürülür.
OtomatikCevirim.java
![Page 72: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/72.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 15
Uygulamanın Çıktısı
• Sonuc = 012
• String bir ifadeden sonra gelen tamsayılar görüldüğü üzeretoplanmadı.
• Direk String nesnesine çevrilip ekrana çıktı olarakgönderildiler.
![Page 73: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/73.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 16
Bir Arttırma ve Azaltma
• Java dilinde C dilinde olduğu gibi birçok kısaltmalar vardır.
• Bu kısaltmalar hayatı bazen daha güzel bazen ise çekilmezkılabilir.
![Page 74: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/74.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 17
Bir Arttırma ve Azaltma Tablosu
Operatör KullanılışŞekli Açıklama
++ değişken++ Önce değişkenin değerini hesaplar sonradeğişkenin değerini bir arttırır.
++ ++değişken Önce değişkenin değerini arttırır sonradeğişkenin değerini hesaplar.
-- değişken-- Önce değişkenin değerini hesaplar sonradeğişkenin değerini bir azaltır.
-- --değişken Önce değişkenin değerini azaltır sonradeğişkenin değerini hesaplar.
![Page 75: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/75.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 18
Uygulama
OtomatikArtveAz.java
![Page 76: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/76.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 19
Uygulamanın Çıktısı
i : 1++i : 2i++ : 2i : 3--i : 2i-- : 2i : 1
![Page 77: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/77.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 20
İlişkisel Operatörler
• İlişkisel operatörler iki değeri karşılaştırarak bu değerlerarasındaki mantıksal ilişkiyi hesaplarlar.
• Örneğin iki değer birbirine eşit değilse “5==8“
• Bu ilişki çerçevesinde hesaplanan değer false olacaktır.
![Page 78: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/78.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 21
İlişkisel Operatörler Tablosu
Operatör Kullanılışı true değeridöner eğer ki...
> değişken1 > değişken2değişken1 , değişken2'den büyükse
>= değişken1 >= değişken2 değişken1 , değişken2'den büyükse veya eşitse
< değişken1 < değişken2değişken1 , değişken2'den küçükse
<= değişken1 <= değişken2değişken1 , değişken2'den küçükse veya eşitse
== değişken1 == değişken2 değişken1 , değişken2'ye eşitse
!= değişken1 != değişken2değişken1 , değişken2'ye eşitdeğilse
![Page 79: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/79.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 22
Uygulama
IliskiselDeneme.java
![Page 80: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/80.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 23
Nesnelerin Karşılaştırılması
• Nesnelerin eşit olup olmadığı (= =) veya (! =) operatörleri iletest edilebilir mi ?
Denklik.java (*)
![Page 81: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/81.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 24
Uygulamanın Çıktısı
• false
• true
![Page 82: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/82.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 25
Uygulama
• Peki bir önceki örneği Integer nesneleri yerine temel tip olanint tipini kullansaydık sonuç nasıl olurdu?
IntIcinDenklik.java
![Page 83: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/83.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 26
Mantıksal Operatörler
• Mantıksal operatörler birden çok karşılaştırma işleminin birleştirip tek bir koşul ifadesi haline getirilmesi için kullanılır.
![Page 84: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/84.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 27
Eğer değişken1 ve değişken2birbirlerinden farklı ise; ör: değişken1true ,değişken2 false ise*
değişken1 ^ değişken2 ^
değişken1'in veya değişken2'intrue olması ;
değişken1 | değişken2 |
Eğer hem değişken1 hemdedeğişken2 true ise ;
değişken1 & değişken2 &
Eğer değişken false ise! değişken!
değişken1'in veya değişken2'intrue olması ;( değişken2'yi durumagöre hesaplar*)
değişken1 || değişken2 ||
Eğer hem değişken1 hemdedeğişken2 true ise ; (değişken2'yi duruma görehesaplar*)
değişken1 && değişken2&&
true değeri döner eğer ki........Kullanılış ŞekliOperatör
Mantıksal Operatörler Tablosu
![Page 85: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/85.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 28
Uygulama
KosulOp.java
![Page 86: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/86.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 29
Uygulamanın Çıktısı
(a < b) && (c < d) --> false(a < b) || (c < d) --> true! (a < b) --> false(a < b) & (c < d) --> false(a < b) | (c < d) --> true(a < b) ^ (c < d) --> true
![Page 87: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/87.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 30
Kısa Yollar
• i = i + 1 ; yerine.• i += 1 ; kullanılabilir.
• i = i * 1 ; yerine• i *= 1 ; kullanılabilir.
• ......
![Page 88: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/88.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 31
Kontrol İfadeleri
• Kontrol ifadeleri bir uygulamanın hangi durumlarda neyapması gerektiğini belirtir.
• Java programlama dilinde toplam 4 adet kontrol ifade çeşidi bulunur.
![Page 89: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/89.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 32
Kontrol İfadeleri Tablosu
İfade Tipi Anahtar Kelime
Döngü while, do-while , for
Karar verme if-else, switch-case
Dallandırmabreak, continue, label, return
İstisna yakalama try-catch-finally, throw
![Page 90: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/90.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 33
Döngü - while
• while ifadesi, çalışması istenen kod bloğunu, durum trueifadesini bulana kadar devamlı olarak çalıştırır.
while (koşul) {...
çalışması istenen kod bloğu}
koşul
İşlem 1
İşlem N
DöngüdenÇıkış
DöngüyeGiriş
![Page 91: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/91.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 34
Uygulama
WhileOrnek.java
![Page 92: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/92.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 35
Uygulamanın Çıktısı
i = 0i = 1i = 2i = 3i = 4i = 5i = 6i = 7i = 8i = 9Sayma islemi tamamlandi.
![Page 93: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/93.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 36
Döngüleme – do while
• do-while ifadesi, koşulu en yukarıda değil de en aşağıdahesaplar.
• Böylece do-while ifadesinde durum false olsa bile çalışması istenen kod bloğuna en az bir kere girilir.
k o şu l
D ö n g ü d e nÇ ık ış
D ö n g ü y eG ir iş
İş le m N
İş le m 1
WhileDoOrnek.java
![Page 94: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/94.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 37
while Döngüsü Kullanırken Dikkat Edilmesi Gereken Hususlar
1. Döngü kontrol değişkenine uygun bir şekilde değeratandığına dikkat edilmeli.
2. Döngü durumunun true ile başlamısına dikkat edilmeli.3. Döngü kontrol değişkeninin uygun bir
şekilde güncellendiğinden emin olunması gerekir (sonsuz döngüye girmemesi için) .
![Page 95: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/95.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 38
Döngüleme – for ifadesi
• Döngünün ne zaman başlayacağı ve ne zaman biteceği en başta belirtilmiştir.
DöngüdenÇıkış
DöngüyeGiriş
başlangıç
koşulİşlem 1
İşlem N
artım
for (başlangıç; koşul; artış) {çalışması istenen kod bloğu
}
![Page 96: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/96.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 39
Uygulama
ForOrnek.java
![Page 97: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/97.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 40
for İle Sonsuz Döngü
for ( ; ; ) { // sonsuz döngü...
}
![Page 98: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/98.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 41
Uygulamanın Çıktısı
i = 0i = 1i = 2i = 3i = 4i = 5i = 6i = 7i = 8i = 9
![Page 99: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/99.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 42
public class ForOrnekVersiyon2 {
public static void main(String args[]) {
for ( int i = 0 , j = 0 ; i < 20 ; i++ , j++ ) {
i *= j ;System.out.println("i = " + i + " j = " + j);
} }
}
for - Çoklu Değişken
i = 0 j = 0i = 1 j = 1i = 4 j = 2i = 15 j = 3i = 64 j = 4
![Page 100: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/100.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 43
Karar Verme - if
if (koşul) {durum true olduğunda çalışması istenen kod bloğu
} else { durum false olduğunda çalışması istenen kod bloğu
}
koşul?
İşlem 2İşlem 1
EvetHayır
![Page 101: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/101.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 44
Uygulama
IfElseTest.java
![Page 102: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/102.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 45
Üçlü if-else
boolean-ifade ? deger0 : deger1
• Eğer boolean ifade true ise değer0 hesaplanır , eğerboolean ifade false ise deger1 hesaplanır.
![Page 103: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/103.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 46
Kısa Devre
• if ifadesinde eğer VE(&&) işlemi kullanılmış ise ve ilk değerden false dönmüş ise ikinci değer kesinlikle hesaplanmazçünkü bu iki değerin sonucunun VE(And) işlemine göre truedönmesi imkansızdır.
• Kısa devre özelliği sayesinde uygulamalar gereksizhesaplamalardan kurtulmuş olur.
KisaDevre.java
![Page 104: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/104.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 47
Karar Verme - switch
switch(tamsayı) {case uygun-tamsayı-deger1 : çalışması istenen kod bloğu; break; case uygun-tamsayı-deger2 : çalışması istenen kod bloğu; break;case uygun-tamsayı-deger3 : çalışması istenen kod bloğu; break;case uygun-tamsayı-deger4 : çalışması istenen kod bloğu; break;case uygun-tamsayı-deger5 : çalışması istenen kod bloğu; break;
// ...default: çalışması istenen kod bloğu ;
}
![Page 105: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/105.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 48
Uygulama 1
public class AylarSwitchTest {
public static void main(String[] args) {
int ay = 8;switch (ay) {
case 1: System.out.println("Ocak"); break;case 2: System.out.println("Subat"); break;case 3: System.out.println("Mart"); break;case 4: System.out.println("Nisan"); break;case 5: System.out.println("Mayis"); break;case 6: System.out.println("Haziran"); break;case 7: System.out.println("Temmuz"); break;case 8: System.out.println("Agustos"); break;case 9: System.out.println("Eylul"); break;case 10: System.out.println("Ekim"); break;case 11: System.out.println("Kasim"); break;case 12: System.out.println("Aralik"); break;
}}
}
![Page 106: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/106.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 49
Uygulama 2
public class AylarSwitchTestNoBreak {
public static void main(String[] args) {
int ay = 8;switch (ay) {
case 1: System.out.println("Ocak");case 2: System.out.println("Subat");case 3: System.out.println("Mart");case 4: System.out.println("Nisan");case 5: System.out.println("Mayis");case 6: System.out.println("Haziran");case 7: System.out.println("Temmuz");case 8: System.out.println("Agustos");case 9: System.out.println("Eylul");case 10: System.out.println("Ekim");case 11: System.out.println("Kasim");case 12: System.out.println("Aralik");
}}
}
![Page 107: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/107.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 50
Uygulama 2 - Ekran Çıktısı
AgustosEylulEkimKasimAralik
![Page 108: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/108.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 51
Uygulama 3public class AylarSwitchDefaultTest {
public static void main(String[] args) {
int ay = 25;switch (ay) {case 1: System.out.println("Ocak"); break;case 2: System.out.println("Subat"); break;case 3: System.out.println("Mart"); break;case 4: System.out.println("Nisan"); break;case 5: System.out.println("Mayis"); break;case 6: System.out.println("Haziran"); break;case 7: System.out.println("Temmuz"); break;case 8: System.out.println("Agustos"); break;case 9: System.out.println("Eylul"); break;case 10: System.out.println("Ekim"); break;case 11: System.out.println("Kasim"); break;case 12: System.out.println("Aralik"); break;default: System.out.println("Heyoo,Aranilan Kosul" +
"Bulunamadi!!");}
}}
![Page 109: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/109.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 52
Dallandırma İfadeleri
• Java programlama dilinde dallandırma ifadeleri toplam 3 adettir.
– break ifadesi
– continue ifadesi
– return ifadesi
![Page 110: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/110.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 53
break İfadesi - Etiketsiz
BreakTest.java
![Page 111: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/111.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 54
Uygulama Çıktısı
i =0i =1i =2i =3i =4i =5i =6i =7i =8
Donguden cikti
![Page 112: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/112.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 55
break İfadesi - Etiketli
BreakTestEtiketli.java
![Page 113: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/113.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 56
Uygulama Çıktısı
i =0i =1i =2i =3i =4i =5i =6i =7i =8
![Page 114: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/114.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 57
continue İfadesi - Etiketsiz
ContinueTest.java
![Page 115: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/115.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 58
Uygulama Çıktısı
• i =0i =1i =2i =3i =4i =5i =6i =7i =8 9 yok i =10i =11i =12i =13i =14i =15i =16i =17i =18i =19i =20i =21i =22i =23i =24i =25i =26i =27i =28i =29
Donguden cikti
![Page 116: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/116.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 59
continue İfadesi - Etiketli
ContinueTestEtiketli.java
![Page 117: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/117.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 60
Uygulama Çıktısı
• i =0i =1i =2i =0i =1i =2i =0i =1i =2i =0i =1i =2i =0i =1i =2i =0i =1i =2
![Page 118: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/118.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 61
return İfadesi - Etiketli
• Sadece return anahtar kelimesi kullanarak yordamların içerisini tavizsiz bir şekilde terk edelebilir.
![Page 119: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/119.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 62
Sorular ...
![Page 120: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/120.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1
Başlangıç Durumuna Getirme ve Temizlik
![Page 121: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/121.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 2
Hataların sebepleri...
• Nesnelerin yanlış biçimde başlangıç durumlarınagetirilmesi
– Uygulamayı yazan kişi bilmediği kütüphaneye aitnesneleri yanlış şekilde başlangıç durumuna getirmesinedeniyle hatalarla karşılaşabilir.
![Page 122: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/122.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 3
Hataların sebepleri
• Temizlik işleminin doğru bir şekilde yapılmaması
– Oluşturulmuş ve kullanılmayan nesnelerin, sistemkaynaklarında gereksiz yere var olması ile bellek problemleri ortaya çıkabilir.
![Page 123: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/123.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 4
Başlangıç durumuna getirme işlemi ve yapılandırıcılar
• Bir nesnenin başlangıç durumuna getirilme işlemi(initialization), bir sanatçının sahneye çıkmadan evvelkiyaptığı son hazırlık gibi düşünülebilir.
• Oluşturulacak olan nesne kullanıma sunulmadan evvel bazıbilgilere ihtiyaç duyabilir veya bazı işlemlerigerçekleştirmesi gerekebilir (JDBC, konfigurasyon dosyası yüklenmesi gibi).
![Page 124: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/124.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 5
Yapılandırıcılar (Constructor)
• Yapılandırıcılar içerisinde nesne oluşturulmadan önceki son hazırlıklar yapılır.
• Yapılandırıcılar normal yordamlardan (method) farklıdırlar.• Yapılandırıcılar, Java tarafından otomatik olarak çağrılırlar.• Karşımıza çıkan iki problem
– Java Yapılandırıcının ismini nasıl bilecektir ?– Yapılandırıcının ismi başka yordamların isimleriyle
çakışmamalıdır.
![Page 125: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/125.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 6
Problemin Çözümü
• Bu problemlere ilk çözüm C++ dilinde bulunmuştur.• Yapılandırıcının ismi ile sınıf ismi bire bir aynı olmalıdır.• Böylece Java, yapılandırıcının ismini önceden tahmin
edebilecektir.
• İsim karışıklığı minimuma indirgenmiş olur.
YapilandirciBasitOrnek.java
![Page 126: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/126.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 7
Yapılandırıcılar (Constructor) - 2
• Yapılandırıcılara parametreler aktarılabilir.• Yapılandırıcı içerisinden herhangi bir şekilde return ifadesi ile değer döndürülemez. (return 5, return true gibi)
• Yapılandırıcılardan çıkmak istiyorsak sadecereturn yazılması yeterlidir...
YapilandirciBasitOrnekVersiyon2.java
![Page 127: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/127.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 8
Adaş Yordamlar (Overloaded Methods)
• İyi bir uygulama yazmak her zaman iyi bir takım çalışmasıgerektirir.
• Uygulamalardaki yordam (method) isimlerinin, yordam içerisinde yapılan iş ile uyum göstermesi önemlidir.
• Bu sayade bir başka kişi sadece yordam ismine bakarak, içerisinde oluşan olayları anlayabilme şansına sahiptir.
![Page 128: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/128.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 9
Örnek - 1
• Elimizde bulunan–muzik–resim–text
formatındaki dosyaları açmak için yordamlar yazmakistersek, bu yordamların isimlerinin ne olması gerekir ?
![Page 129: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/129.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 10
Örnek - 1 (devam)
Yordam isimleri olarak
• muzik dosyası için muzikDosyasiAc()
• resim dosyası için resimDosyasıAc()
• text dosyası için textDosyasıAc()
![Page 130: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/130.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 11
Örnek - 1 (devam)
• Sonuçta işlem sadece dosya açmaktır, dosyanın türü sadecebir ayrıntıdır.
MetodOverloadingDemo1.java
![Page 131: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/131.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 12
Adaş yordamlar nasıl ayırt edilir ?
• Java aynı isimde olan yordamları (overloaded methods) nasıl ayırt edebilmektedir ?
• Her yordamın kendisine özel/tek parametresi veyaparametre listesi olmak zorundadır.
MetodOverloadingDemo2.java
![Page 132: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/132.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 13
Adaş yordamlar dönüş değerlerine göre ayırt edilebilir mi ?
• Akıllara şöyle bir soru gelebilir : "Adaş yordamlar dönüştiplerine göre ayırt edilebilir mi ? "
void toplamaYap();
double toplamaYap();
double y = toplamayap() ;
toplamayap() ; // sorun var
![Page 133: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/133.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 14
Varsayılan yapılandırıcılar (Default constructors)
• Eğer uygulamamıza herhangi bir yapılandırıcı koymazsakJava bu işlemi kendi otomatik olarak yapmaktadır.
• Varsayılan yapılandırcılar (parametresiz yapılandırcılar, default constructor veya "no-args" constructor) içi boş biryordam olarak düşünülebilir.
![Page 134: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/134.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 15
Örnek - 2
class Kedi {int i;
}
public class VarsayilanYapilandirici {public static void main(String[] args) {
//Varsayılan yapılandırıcı çağrıldıKedi kd = new Kedi();
}}
![Page 135: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/135.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 16
Örnek - 2 (devam)
class Kedi { int i;/* varsayılan yıpılandırıcı.
Bu yapılandırıcıyı eğer biz koymasaydık Java bizim yerimize zaten koyardı
*/public Kedi() {}
}
public class VarsayilanYapilandirici {public static void main(String[] args) {// varsayılan yıpılandırıcıKedi kd = new Kedi();
}}
![Page 136: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/136.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 17
Büyünün Bozulması
• Eğer kendimiz yapılandırıcı yazarsak, Java bizdenvarsıyılan yapılandırıcı desteğini çekecektir.
• Kendimize ait özel yapılandırıcılar tanımlarsak Java’ya"Ben ne yaptığımı biliyorum, lütfen karışma" demişoluruz.
VarsayilanYapilandiriciVersiyon2.java
![Page 137: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/137.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 18
this anahtar kelimesi
• this anahtar kelimesi, içinde bulunulan nesneye ait birreferans döner.
• Bu referans sayesinde nesnelere ait global alanlara erişmefırsatı buluruz.
TarihHesaplama.java
![Page 138: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/138.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 19
Yordam cağrımlarında this kullanımı - 2
Yumurta.java
![Page 139: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/139.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 20
Bir yapılandırıcıdan diğerini çağırmak
• Yapılandırıcı içerisinden diğer bir yapılandırıcıyıçağırırken this ifadesi her zaman ilk satırda yazılmalıdır.
• Her zaman yapılandırıcılar içerisinden this ifadesi ilebaşka bir yapılandırıcı çağrılır.
• Yapılandırıcılar içersinde birden fazla this ifadesi ilebaşka yapılandırıcı çağrılamaz.
Tost.java
![Page 140: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/140.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 21
Ekran çıktısı
Tost(int sayi ,String malzeme)
Tost(int sayi)
parametresiz yapilandirici
Tost sayisi =5 malzeme =Sucuklu
![Page 141: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/141.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 22
Statik Alanlar (Sınıf Alanları)
• Sadece global olan alanlara statik özelliğini verebiliriz.
• Yerel değişkenlerin statik olma özellikleri yoktur.
• Statik alanlar, bir sınıfa ait olan tüm nesneler için aynıbellek alanında bulunurlar.
StatikDegisken.java
![Page 142: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/142.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 23
Kuş bakışı görüntü
![Page 143: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/143.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 24
Statik Yordamlar (methods)
• Statik yordamlar (sınıf yordamlar), nesnelerden bağımsızyordamlardır.
• Statik bir yordamı çağırmak için herhangi bir sınıfa aitnesne oluşturma zorunluluğu yoktur.
• Statik olmayan yordamlardan (nesneye ait yordamlar), statik yordamları rahatlıkla çağırılabilmesine karşın statikyordamlardan nesne yordamlarını doğrudan çağıramayız.
StatikTest.java
![Page 144: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/144.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 25
Bir yordamın statik mi yoksa nesne yordamı mıolacağına neye göre karar vereceğiz?
• Nesnelerin durumları (state), uygulamanın gidişine göre değişebilir.
MutluAdam.java (*)
![Page 145: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/145.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 26
Statik yordamlar
• Statik yordamlarlar atomik işler için kullanılırlar.
• Uygulamalarınızda çok fazla statik yordam kullanıyorsanız, tasarımınızı baştan bir kez daha gözden geçirmeniz tavsiyeolunur.
Toplama.java
![Page 146: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/146.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 27
Temizlik İşlemleri: finalize() ve çöp toplayıcı (Garbage Collector)
• Java dilinde, C++ dilinde olduğu gibi oluşturulannesnelerimizi işleri bitince yok etme özgürlüğü kodu yazankişinin elinde değildirdeğildir.
• Bir nesnenin gerçekten çöp olup olmadığına karar verenmekanizma çöp toplayıcısıdır (garbage collector).
![Page 147: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/147.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 28
finalize() yordamı
• Akıllarda tutulması gereken diğer bir konu ise eğeruygulamanız çok fazla sayıda çöp nesnesi (kullanılmayannesne) üretmiyorsa, çöp toplayıcısı (garbage collector) devreye girmeyebilir.
• Bir başka önemli nokta;– System.gc()
ile çöp toplayıcısını tetiklemezsek , çöp toplayıcısının nezaman devreye girip çöp haline dönüşmüş olan nesneleribellekten temizleneceği bilinemez.
![Page 148: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/148.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 29
System.gc()
Temizle.java
Temizle2.java
![Page 149: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/149.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 30
![Page 150: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/150.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 31
Çöp toplayıcısı (Garbage Collector) nasıl çalışır?
• Çöp toplayıcısının temel görevi, kullanılmayan nesneleribularak bunları bellekten silmektir.
• Sun Microsystems tarafından tanıtılan Java HotSpot VM (Virtual Machine) sayesinde heap bölgesindeki nesnelernesillerine göre ayrılmaktadır.
– Eski Nesil – Yeni Nesil
![Page 151: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/151.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 32
Çöp toplayıcısı (Garbage Collector) nasıl çalışır?
• Nesnelerin bellekten silinmesi görevi kodu yazan kişiye aitdeğildir.
• Bu görev çöp toplayıcısına aittir. Java 1.3.1 ve daha sonraki Java versiyonları iki noktayı garanti eder;
– Kullanılmayan nesnelerin kesinlikle bellekten silinmesi. – Nesne bellek alanının parçalanmasını engellemek ve belleğin
sıkıştırılması.
![Page 152: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/152.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 33
Çöp toplama teknikleri
• Eski yöntem
– Referans Sayma Yöntemi
• Yeni Yöntemler
– Kopyalama yöntemi (Copy)– İşaretle ve süpür yöntemi (Mark and Sweep)– Artan (sıra) yöntem (Incremental)
![Page 153: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/153.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 34
Heap Bölgesine Bakış
![Page 154: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/154.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 35
Heap bölgesinin boyutları nasıl kontrol edilir.
• Heap bölgesine minimum veya maksimum değerleri vermekiçin -Xms veya -Xmx parametlerini kullanırız.
java -Xms32mb Temizle
![Page 155: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/155.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 36
Kopyalama yönteminin gösterimi
• Birazdan gösterilecek olan şeklimizde, canlı nesnelerkırmızı renk ile ifade edilmiştir.
![Page 156: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/156.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 37
Aşama – 1
![Page 157: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/157.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 38
Aşama – 2
![Page 158: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/158.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 39
Aşama – 3
![Page 159: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/159.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 40
İşaretle ve süpür yönteminin gösterimi
![Page 160: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/160.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 41
Kopyala yöntemin ve işaretle ve süpür yöntemi
HeapGosterim.java
java -verbosegc HeapGosterim
![Page 161: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/161.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 42
Uygulamanın Çıktısı
![Page 162: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/162.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 43
Alanlara ilk değerleri atama
• Java uygulamalarında üç tür değişken çeşiti bulunur:
– Yerel (local) değişkenler.
– Nesneye ait global alanlar.
– Sınıfa ait global alanlar (statik alanlar).
![Page 163: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/163.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 44
Örnek - 3
DegiskenGosterim.java
![Page 164: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/164.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 45
Yerel Değişkenler
public int hesapla () { // yerel değişkenlere ilk değerleri her zaman//verilmelidir.
int i ;
i++; // ! Hata ! ilk deger verilmeden üzerinde işlem yapılamaz
return i ;
}
![Page 165: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/165.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 46
Nesneye ait global alanlar – ilkel tipler
IlkelTipler.java
![Page 166: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/166.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 47
Nesneye ait global alanlar - sınıf tipleri
NesneTipleri.java
![Page 167: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/167.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 48
Sınıflara ait global değişkenler - ilkel tipler
• Önemli Nokta: Statik olan alanlara sadece bir kere değer atanır.
IlkelTiplerStatik.java
![Page 168: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/168.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 49
Sınıflara ait global değişkenler – sınıf tipleri
StatikNesneTipleri.java
![Page 169: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/169.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 50
İlk değerleri atarken yordam kullanımı
KarisikTipler.java
![Page 170: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/170.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 51
İlk değer verme sıralaması
• Nesneye ait global alanlara ilk değer hemen verilir, hattayapılandırıcıdan bile önce...
• Alanların konumu hangi sırada ise ilk değer vermesıralaması da aynı sırada olur.
Defter.java
![Page 171: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/171.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 52
Statik ve statik olmayan alanların değer alma sıralaması
• Statik alanlar sınıflara ait olan alanlardır ve statik olmayan(nesneye ait alanlar) alanlara göre ilk değerlerini daha öncealırlar.
Kahvalti.java
![Page 172: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/172.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 53
Statik alanlara toplu değer atama
• Statik alanlarımıza toplu olarak değer atama.
StatikTopluDegerAtama.java
![Page 173: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/173.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 54
Statik olmayan alanlara toplu değer atama
NonStatikTopluDegerAtama.java
![Page 174: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/174.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 55
Diziler (Arrays)
• Diziler nesnedir.
• Dizi nesnesi, içinde belli sayıda eleman bulundurur.
• Dizi içerisindeki ilk elemanın konumu 0 'dan başlar, son elemanın yeri ise n-1 'dir.
![Page 175: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/175.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 56
Dizi tipindeki değişkenler
double[] dd ; // double tipindeki dizidouble dd[] ; // double tipindeki dizifloat [] fd ; // float tipindeki diziObject[] ao ; // Object tipindeki dizi
![Page 176: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/176.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 57
Dizileri oluşturmak
double[] d = new double[20] ; double dd[] = new double[20]; float [] fd = new float [14];
Object[] ao = new Object[17]; String[] s = new String[25] ;
![Page 177: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/177.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 58
Dizilerin tekrardan boyutlandırılması
int liste[] = new int[5] ;
// yeni bir dizi nesnesine bağlandı
liste = new int[15] ;
![Page 178: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/178.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 59
Dizi içerisindeki elemalara ulaşım
DiziElemanlariGosterimBir.java
![Page 179: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/179.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 60
Diziler içerisinde elemanların sıralanması
DiziSiralama.java
![Page 180: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/180.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 61
Dizilerin dizilere kopyalanması
DizilerinKopyalanmasi.java
![Page 181: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/181.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 62
Çok Boyutlu Diziler
Dizi içerisinde dizi tanımlanabilir.
int[][] t1 = {
{ 1, 2, 3, },
{ 4, 5, 6, },
};
![Page 182: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/182.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 63
Çok boyutlu dizileri oluşturmanın diğer bir yolu
int [][] t1 = new int [3][4] ;
int [][] t1 = new int [][4] ; //!Hata!
CokBoyutluDizilerOrnekBir.java
![Page 183: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/183.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 64
![Page 184: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/184.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 65
Değişik boyuta sahip diziler
CokBoyutluDiziler.java
![Page 185: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/185.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 66
![Page 186: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/186.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 67
Sorular ...
![Page 187: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/187.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1
Paket Erişimleri
![Page 188: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/188.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 2
Erişim
• Erişim konusunda iki taraf vardır:– Kütüphaneyi kullanan kişiler (client)– Kütüphaneyi yazan kişiler
![Page 189: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/189.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 3
Paket (package)
• Paketler kütüphaneyi oluşturanelemanlardır.
• PaketKullanim.java
![Page 190: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/190.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 4
Varsayılan Paket (Default Package)
• Test1.java
• Test3.java
![Page 191: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/191.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 5
![Page 192: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/192.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 6
Paket Oluşturma
• Alan Adı Sistemi (Domain Name System)
• tr/edu/kou/util/Test1.java
![Page 193: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/193.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 7
![Page 194: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/194.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 8
![Page 195: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/195.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 9
CLASSPATH Ayarları
C:\kodlar\bolum4\tr\edu\kou\math\
import tr.edu.kou.math.*;
CLASSPATH="C:\kodlar\bolum4\;."
![Page 196: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/196.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 10
![Page 197: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/197.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 11
Örnek
• tr/edu/kou/math/DortIslem.java
• Aşağıdaki örnek işletim sisteminin herhangi bir yerine yerleştirilebilir.
• Hesaplama.java
![Page 198: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/198.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 12
Önemli nokta
• Varsayılan paketlerin birbirini görmesi için:
![Page 199: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/199.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 13
Çakışma
• tr/edu/kou/util/ArrayList.java
• Cakisma.java
• Çakışmayı önlemek için
• Cakisma2.java
![Page 200: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/200.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 14
Paket içerisindeki uygulamaları çalıştırmak
• tr/edu/kou/math/Hesaplama.java
• Çalıştırma İşlemleri– java Hesaplama– java tr.edu.kou.math.Hesaplama
![Page 201: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/201.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 15
JAR Dosyaları (The JavaTM Archive File)
• Güvenlik• Sıkıştırma• İndirme (download) zamanını azaltması• Paket mühürleme(versiyon 1.2)
– Versiyon uyumluluğu açısından
• Paket versiyonlanma (versiyon1.2)– Versiyon bilgilerinin gösterimi
• Taşınabilirlik
![Page 202: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/202.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 16
jre -cp jar-dosya-ismiMainClass
JAR olarak paketlenmiş uygulayıçalıştırmak için
jar -xf jar-dosya-ismiarşivlenmiş dosya(lar)
Belli bir dosyayı JAR dosyasındandışarı çıkartmak için
jar -xf jar-dosya-ismiJAR dosyasının içeliğini toptan dışarı çıkartmak için
jar -tf jar-dosya-ismiJAR dosyasının içeriğini bakmak için
jar -cf jar-dosya-ismi içeriye-atılacak-dosya(lar)
JAR dosyası oluşturmak için
KomutAçıklama
![Page 203: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/203.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 17
jar -cf kou.jar tr/
![Page 204: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/204.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 18
![Page 205: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/205.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 19
CLASSPATH AYARLARI
CLASSPATH="C:\kodlar\bolum4\;."
Yukarıdaki ifade yerine artık aşağıdaki ifadeyi kullanabiliriz.
CLASSPATH="C:\muzik\kou.jar;."
![Page 206: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/206.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 20
Erişim Belirleyiciler
• friendly• public• protected• private
![Page 207: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/207.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 21
Erişim Belirleyiciler
• Erişim belirleyiciler tüm global alanlar ve yordamlar için kullanılabilir.
• Global Alanlar– Statik veya değil
• Yordamlar (methods)– Statik veya değil
![Page 208: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/208.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 22
Friendly
• Aynı paket içerisinde erişilebilmeyi sağlar.– Sınıflar– Global alanlar– Yordamlar (methods)
friendly erişim belirleyicisine sahip olabilirler.
![Page 209: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/209.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 23
![Page 210: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/210.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 24
Örnek
• tr/edu/kou/gerekli/Robot.java
• tr/edu/kou/gerekli/Profesor.java
• Başka bir paket
• tr/edu/kou/util/Asistan.java
![Page 211: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/211.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 25
Varsayılan Paketlerde (Default Package ) Erişim
class AltKomsu {public static void main(String[] args) {UstKomsu uk = new UstKomsu();uk.merhaba();
}}
class UstKomsu {void merhaba() {
System.out.println("Merhaba");}
}
![Page 212: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/212.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 26
public
• Heryerden erişilebilmeyi sağlar.– Sınıflar– Global alanlar– Yordamlar (methods)
public erişim belirleyicisine sahip olabilirler• tr/edu/kou/util/Makine.java
• Makine sınıfını kullanan UstaBasi.java
![Page 213: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/213.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 27
private (Özel)
• private erişim belirleyicisine sahip olan – Global değişkenler– Yordamlar (methods)dışarıdan erişilemezler.
• Sınıflar private olamazlar...
![Page 214: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/214.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 28
private -2
• Aynı paket içersindeki iki sınıf
• tr/edu/kou/gerekli/Kahve.java
• tr/edu/kou/gerekli/Musteri.java
![Page 215: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/215.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 29
![Page 216: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/216.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 30
protected
• protected erişim belirleyicisine sahip olan – Global alanlar– Yordamlar (methods)
• Erişim ancak bu sınıftan türeyen sınıflar ve aynı paket içerisindeki sınıflar tarafından erişilebilir.
• Sınıflar protected olamaz.
![Page 217: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/217.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 31
Kalıtım (Inheritance)
class Kedi extends Hayvan {..........
}
![Page 218: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/218.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 32
Örnek
• tr/edu/kou/util/Hayvan.java
• tr/edu/kou/gerekli/Kedi.java
![Page 219: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/219.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 33
![Page 220: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/220.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 34
Sorular ...
![Page 221: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/221.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1
Sınıfların TekrardanKullanılması
![Page 222: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/222.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 2
İki Yöntem
• Komposizyon (Composition)• Kalıtım (Inheritance)
![Page 223: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/223.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 3
Komposizyon(Composition)
class Meyva {
//... }
class Elma {
private Meyva m = new Meyva();//...
}
![Page 224: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/224.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 4
Komposizyon - UML
![Page 225: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/225.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 5
Örnek
• Motor.java
• AileArabasi.java
![Page 226: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/226.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 6
Şekil
![Page 227: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/227.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 7
Kuş Bakışı
![Page 228: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/228.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 8
Örnek
• Voltran.java
![Page 229: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/229.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 9
![Page 230: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/230.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 10
Kalıtım (Inheritance)
class Kedi {//..
}
class Kaplan extends Kedi {//..
}
![Page 231: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/231.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 11
Kalıtım - UML
![Page 232: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/232.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 12
Örnek
• KediKaplan.java
![Page 233: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/233.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 13
Gizli Kalıtım
• YeniBirSinif.java
![Page 234: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/234.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 14
Gizli Nokta
public class YeniBirSinif extends Object {
![Page 235: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/235.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 15
Nesne yordamları (methods)
• clone() : Bu nesnenin aynısını klonlar.• equals(Object obj) : obj nesnesi , bu nesneye eşit mi kontrolü yapar.• finalize() : İlgili nesne bellekten silinmeden hemen önce çağrılan yordam.• getClass() : Bu nesnenin çalışma anında sınıf bilgilerini geri döner .• hashCode() : Bu nesnenin hash kodunu geri döner .• notify() : Bu nesnenin bekleme havuzunda olan tek iş parçacığını (thread) uyandırır.
(ilerleyen bölümlerde inceleyeceğiz)• notifyAll() : Bu nesnenin bekleme havuzundaki tüm iş parçacıklarını uyandırır.
(ilerleyen bölümlerde inceliyeceğiz)• toString() : Bu nesnenin String tipinden ifadesini geri döner .• wait() : O andaki iş parçacığının (thread) beklemesini sağlar; bu bekleme
notify() veya notifyAll() yordamları sayesinde sona erer.• wait (long timeout) : O andaki iş parçacığının belirtilen süre kadar beklemesini
sağlar; bu bekleme notify()veya notifyAll() yordamları sayesinde de sonaerebilir.
• wait (long timeout , int nanos) : O andaki iş parçacığının belirtilen gerçek sürekadar beklemesini sağlar ; bu bekleme notify() veya notifyAll() yordamlarısayesinde de sona erebilir.
![Page 236: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/236.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 16
Kalıtım-UML
![Page 237: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/237.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 17
Kalıtım ve ilk değer alma sırası
• IlkDegerVermeSirasi.java
![Page 238: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/238.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 18
Kalıtım-UML
![Page 239: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/239.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 19
Paremetre alan yapılandırıcılar ve kalıtım
• IlkDegerVermeSirasiParametreli.java
![Page 240: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/240.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 20
IlkDegerVermeSirasiParametreli.java-hatalı
class Insan {public Insan(int par) {
System.out.println("Insan Yapilandiricisi " + par);}
}class ZekiInsan extends Insan {
public ZekiInsan(int par) {System.out.println("ZekiInsan Yapilandiricisi " + par);super(par+1); // ! hatalı !
}}class Hacker extends ZekiInsan{
public Hacker(int par) {System.out.println("Hacker Yapilandiricisi " + par);super(par+1); // ! hatalı !
}public static void main(String args[]) {
Hacker hck = new Hacker(5);}
}
![Page 241: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/241.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 21
Kompozisyon mu ? Kalıtım mı ?
• Hangi yöntemi ne zaman tercih etmeliyiz ?– Kompozisyon(Composition)– Kalıtım (Inheritance)
![Page 242: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/242.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 22
Komposizyon
• Araba.java
![Page 243: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/243.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 23
Kalıtım
• Sınıflar arasında bir ilişkisi olmalıdır.– UçanYarasa bir Yarasadır.– Yarasa bir Hayvandır .– O zaman UçanYarasa da bir Hayvandır.– Hayvan da bir Nesnedir.
![Page 244: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/244.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 24
![Page 245: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/245.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 25
İptal etmek (Overriding)
• Türemiş sınıfların, ana sınıflar içerisindeki yordamları (methods) iptal edilebilir.
• KitapEvi.java (düz)
• KitapEvi2.java (iptal eden)
![Page 246: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/246.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 26
Erişim Belirleyiciler ve İptal etme (Override)
• public• protected• friendly• private
– Telefonlar.java (Yanlış)
– Hesap.java (Doğru)
![Page 247: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/247.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 27
İptal etmek(Overriding) ve adaş yordamların(Overload) birbirlerine karıştırılması
• Bu iki kavram birbirlerine kolaylıkla karıştırılabilir.
• CalisanMudur.java
![Page 248: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/248.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 28
Yukarı Çevirim (Upcasting)
• Spor.java
![Page 249: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/249.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 29
Yukarı Çevirim (Upcasting)-UML
![Page 250: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/250.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 30
Final Kavramı
• Final kelimesinin sözlük anlamı"son" demektir .
• Java programlama dilinde final anahtarkelimesi değiştirilemezliği simgeler.
![Page 251: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/251.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 31
Global Alanlar ve Final Kavramı
• Derleme anında değerlerini bilebildiğimizfinal global alanlar.
• Çalışma anında değerlerini bilebildiğimizfinal global alanlar.
![Page 252: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/252.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 32
Örnek
• FinalOrnek.java
![Page 253: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/253.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 33
Final parametreler
• FinalParametre.java
![Page 254: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/254.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 34
Boş (Blank) Final
• BosFinal.java
![Page 255: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/255.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 35
Final Yordamlar
• final yordamlar türetilmiş sınıflar tarafından iptal edilemezler (override).
• FinalMetod.java
![Page 256: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/256.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 36
private ve final
• final ve private erişim belirleyicisinesahip olan bir yordam, başka bir yordamtarafından iptal ediliyormuş gibigözükebilir.
• SivilPolis.java
![Page 257: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/257.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 37
Final Sınıflar
• final sınıflardan türetilme yapılamaz!
• Tv.java
![Page 258: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/258.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 38
Kalıtım (Inheritance ) ve ilk değer alma sırası
• Bocekcik.java
![Page 259: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/259.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 39
Sorular ...
![Page 260: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/260.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 1
Polimorfizm
![Page 261: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/261.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 2
Polimorfizm
• Polimorfizm, nesneye yönelikprogramlamanın (OOP) önemliözelliklerinden biridir.
• Eski Yunanca bir sözcük olup "bir çokşekil" anlamına gelmektedir .
• Polimorfizm ile kalıtım konusu iç içedir.
![Page 262: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/262.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 3
Örnek
PolimorfizmOrnekBir.java
![Page 263: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/263.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 4
Asker
Er Yuzbasi
![Page 264: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/264.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 5
Polimorfizm
• Asker a = new Asker() ;• Asker a = new Er();• Asker a = new Yuzbasi();
![Page 265: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/265.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 6
Geç bağlama (late binding) - I
• Polimorfizm olmadan geç bağlamaözelliğinden bahsedilemez.
PolimorfizmOrnekIki.java
![Page 266: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/266.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 7
![Page 267: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/267.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 8
java PolimorfizmIki
Kartal avYakalaHayvan avYakalaKartal avYakala
java PolimorfizmIki
Timsah avYakalaTimsah avYakalaHayvan avYakala
java PolimorfizmIki
Timsah avYakalaHayvan avYakalaKartal avYakala
![Page 268: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/268.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 9
Geç bağlama (late binding) - II
• Derleme anında (compile-time) hangi nesneye ait yordamın çağrılacağını bilinemiyorsa buna geçbağlama denir.
• Geç bağlamanın diğer isimleri– Dinamik bağlama (Dynamic binding)– Çalışma anında bağlama (Run-time binding)
• Bunun tam tersi ise erken bağlamadır (early binding).
![Page 269: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/269.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 10
final ve Geç bağlama
• final özelliğinin kullanılmasının ikisebebi olabilir.– tasarım .– verimlilik .
![Page 270: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/270.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 11
Cevap
• Uygulama içerisinde herhangi bir nesneye ait normal biryordam (final olmayan) çağrıldığında :– Java, acaba doğru nesnenin uygun yordamımı
çağrılıyor diye bir kontrol yapar.
• Daha doğrusu geç bağlamaya (late-binding) ihtiyaç varmı kontrolü yapılır.
![Page 271: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/271.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 12
Örnek
KediKaplan.java (on)
KediKaplan2.java (off)
![Page 272: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/272.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 13
Neden Polimorfizm ?
• Polimorfizm olmasaydı neler olurdu ?
IsYeriNon.java
![Page 273: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/273.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 14
![Page 274: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/274.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 15
Neden Polimorfizm ?
• IsYeriNon.java örneğimizi nesneye yönelikprogramlama çerçevesinde tekrar yazarsak :
IsYeri.java
![Page 275: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/275.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 16
Nesnelerden oluşan bir dizi
![Page 276: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/276.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 17
Genişletilebilirlik (Extensibility)
• Genişletilebilirlik, mevcut kalıtımsal hiyerarşiyi genişletmektir.
• Polimorfizm özelliği sayesinde genişletebilirlikçok basite indirgenmiş bulunmaktadır .
![Page 277: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/277.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 18
Sınıf hiyerarşisi – IsYeri.java
![Page 278: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/278.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 19
Sınıf hiyerarşisi – BuyukIsYeri.java
![Page 279: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/279.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 20
Genişletilebilirlik (Extensibility)-2
• Polimorfizm sayesinde, mevcut hiyerarşik yapı ne kadar genişletilirse genişletilsin, yordam (method) çağırma yapısı hep aynı kalır.
BuyukIsyeri.java
![Page 280: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/280.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 21
Soyut sınıflar ve Yordamlarlar(Abstract Classes and Methods )
![Page 281: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/281.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 22
![Page 282: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/282.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 23
Örnek
BuyukIsyeri.java
![Page 283: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/283.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 24
class Calisan { public String pozisyon = "Calisan"; public void calis() {}
}
![Page 284: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/284.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 25
Soyut Sınıflar (Abstract classes)
• Soyut sınıfların içerisinde en az bir tane gövdesiz (soyut) yordam bulunur.
• Soyut sınıfları direk new() anahtar kelimesi ile oluşturamayız.
![Page 285: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/285.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 26
abstract void calis(); // gövdesi olmayan soyut yordam
![Page 286: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/286.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 27
![Page 287: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/287.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 28
Örnek
AbIsYeri.java
![Page 288: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/288.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 29
Niye soyut sınıf ve yordamlara ihtiyaç duyarız ?
• Eğer bir işlem değişik verilere ihtiyaç duyup aynıişi yapıyorsa, bu işlem soyut (abstract) sınıflarıniçerisinde tanımlanmalıdır.
![Page 289: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/289.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 30
![Page 290: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/290.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 31
Örnek
CizimProgrami.java
![Page 291: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/291.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 32
Yapılandırıcılar içerisindeki ilginç durumlar...
Spor.java
![Page 292: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/292.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 33
Ekran Çıktısı
calis() cagrilmadan evvelFutbolcu calis() 0 dikkatcalis() cagrildiktan sonraFutbolcu yapilandiriciFutbolcu calis() 4
![Page 293: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/293.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 34
![Page 294: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/294.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 35
Örnek
Televizyon.java
![Page 295: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/295.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 36
![Page 296: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/296.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 37
Aşağıya Çevirim (Downcasting)
• Aşağıya çevirim tehlikelidir.– Daha genel bir tipden daha özellikli bir tipe
doğru çevirim vardır.– Yanlış bir çevirim yapıldığında, çalışma
anından (run-time) istisna (exception) fırlatılır.
Televizyon2.java
![Page 297: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/297.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 38
Sınıf tiplerinin çalışma anından tanımlanması (RTTI : Run Time Type Identification)
Televizyon3.java
![Page 298: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/298.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 39
Sorular ...
![Page 299: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/299.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1
Arayüz(Interface)
![Page 300: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/300.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 2
Arayüz (Interface)
• Arayüzler, soyut sınıfların bir üst modeli gibi düşünülebilir.
• Arayüzler tamamen birleştirici bir roloynamaları için tasarlanmışlardır.
![Page 301: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/301.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 3
Arayüz (Interface)
• Arayüzlerin içerisindeki gövdesiz (soyut) yordamlar (methods) otomatik olarak public erişim belirleyicisine sahip olurlar.
![Page 302: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/302.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 4
![Page 303: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/303.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 5
Örnek
BuyukIsYeri.java
![Page 304: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/304.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 6
class Mudur implements Calisan {public void calis() { // iptal etti (override) System.out.println("Mudur Calisiyor");
}}
![Page 305: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/305.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 7
Arayüz(Interface) ve Soyut sınıflar(Abstract classes)
interface Hayvan {public void avlan() ;
}
abstract class Kedi implements Hayvan {
}
Bu örnek derlenir mi ?
![Page 306: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/306.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 8
![Page 307: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/307.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 9
Örnek
Karisim2.java
![Page 308: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/308.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 10
Arayüz(Interface) ile çoklu kalıtım(Multiple inheritance)
• Java Programlama dili çoklu kalıtımı (multiple inheritance) desteklemez.
![Page 309: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/309.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 11
![Page 310: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/310.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 12
Örnek - Hatalı
Spor.java
![Page 311: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/311.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 13
Sebep
Sporcu s = new SportmenMehmet(); // yukari cevirims.calis(); // ??
![Page 312: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/312.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 14
Arayüz (Interface) ile çoklu kalıtıma destek
![Page 313: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/313.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 15
Örnek
• SportmenMehmet belki hem BuzPatencihem de Basketbolcu olamayabilir ama bunlara ait özellikleri alabilir.
Spor2.java
![Page 314: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/314.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 16
Arayüzlerin kalıtım (inheritance) yoluyla genişletilmesi
• Bir arayüz başka bir arayüzündentüretilebilir.
• Böylece arayüzler kalıtım yoluylagenişletilmiş olur.
![Page 315: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/315.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 17
![Page 316: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/316.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 18
Yakından bakılırsı
interface Avlanabilme extends DahaHizliKosabilme,Kosabilme {//..
}
![Page 317: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/317.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 19
Örnek
Jaguar.java
![Page 318: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/318.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 20
Çakışmalar
• Arayüzlerin içerisinde dönüş tipleriharicinde herşeyleri aynı olan gövdesiz(soyut) yordamlar varsa bu durum beklenmedik sorunlara yol açabilir.
Cakisma.java (derlemeye çalışılırsa...)
![Page 319: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/319.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 21
public void hesapla(); // A1 arayüzüne ait
public int hesapla(); // A3 arayüzüne ait
![Page 320: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/320.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 22
Arayüzün(Interface) içerisinde alan tanımlama
• Arayüzlerin içerisinde gövdesiz (soyut) yordamların dışında alanlar da bulunabilir.
• Bu alanlar, diğer uygulamalarda sabit olarakkullanılabilir.
• Arayüzün içerisinde tanımlanan bir alan (ilkeltipte veya sınıf tipinde olsun) otomatik olarak hem public erişim belirleyicisine hem de final ve static özelliğine sahip olur.
![Page 321: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/321.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 23
Örnek
AyBul.java
![Page 322: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/322.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 24
Arayüzün içerisinde tanımlanmış alanlara ilk değerlerinin verilmesi
• Arayüzlerin içerisinde tanımlanmışalanların ilk değerleri, çalışma anında (run-time) da verilebilir.
Test.java
![Page 323: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/323.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 25
Genel Bakış
• Arayüzler (interface) ve soyut (abstract) sınıfların bizlere sağlamak istedigifayda nedir ?
![Page 324: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/324.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 26
Genel Bakış
• Aslında ulaşılmak istenen amaç çokluyukarı çevirimdir (upcasting).
GenelBakis.java
![Page 325: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/325.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 27
Yakından bakarsak
class A extends Soyut1 implements Arayuz1, Arayuz2 {
//......}
![Page 326: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/326.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 28
![Page 327: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/327.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 29
Soyut1 soyut_1 = new A();Arayuz1 arayuz_1 = (Arayuz1) soyut_1; // tip degisimiArayuz2 arayuz_2 = (Arayuz2) soyut_1; // tip degisimi
![Page 328: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/328.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 30
Veya
Soyut1 soyut_1 = new A();Arayuz1 arayuz_1 = new A();Arayuz2 arayuz_2 = new A();
![Page 329: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/329.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 31
Dahili Sınıflar (Inner Classes)
• Dahili üye sınıflar• Yerel sınıflar (Local classes) • İsimsiz sınıflar (Anonymous classes)
![Page 330: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/330.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 32
Dahili Üye Sınıflar
class CevreliyiciSinif {
class DahiliSinif {//....
}
//...}
![Page 331: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/331.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 33
Örnek
Hesaplama.java
![Page 332: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/332.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 34
Dahili Üye Sınıflar ve Erişim
• Dahili üye sınıflara– public– friendly– protected– privateerişim belirleyicileri atanabilir.
Hesaplama1.java
Hesaplama2Kullan.java
![Page 333: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/333.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 35
Türetilebilen Dahili Üye Sınıflar
• Dahili üye sınıflar, aynı normal sınıflar gibi başka sınıflardan türetilebilirler.
• Böylece çoklu kalıtım desteğinin bir benzerini (güvenli), Java programlama dilinde de bulabiliriz.
![Page 334: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/334.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 36
![Page 335: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/335.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 37
Örnek
YarisArabasi.java
![Page 336: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/336.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 38
Yerel Sınıflar (Local Classes)
• Yerel sınıflar– Yapılandırıcıların (constructor)– Sınıf yordamlarının (statik yordam)– Nesne yordamlarının– Statik alanlara toplu değer vermek için kullandığımız
statik bloğun – Statik olmayan alanlara toplu değer vermek için
kullandığımız bloğun içerisinde tanımlanabilir.
![Page 337: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/337.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 39
public class Sinif { public void yordam() {
public class YerelSinif { //...
} }
}
Yerel Sınıflar
![Page 338: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/338.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 40
Yerel sınıflara ait ilk özellikler
• Yerel sınıflar tanımlandıkları yordamın veya bloğun dışından erişilemezler.
• Yerel sınıflar başka sınıflardan türetilebilir veya arayüzlere (interface) erişebilir.
• Yerel sınıfların yapılandırıcıları olabilir.
Hesaplama6.java
![Page 339: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/339.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 41
Yerel Sınıflara Ait İlk Özellikler - Devam
• Yerel sınıflar, içinde bulundukları yordamın sadece final olan değişkenlerine ulaşabilirler.
• Yerel sınıflar, statik veya statik olmayanyordamların içerisinde tanımlanabilirler.
• Yerel sınıflar, private, protected ve public erişim belirleyicisine sahip olamazlar sadece friendly erişim belirleyicisine sahip olabilirler.
• Yerel sınıflar, statik olarak tanımlanamaz.Hesaplama7.java
![Page 340: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/340.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 42
İsimsiz Sınıflar (Anonymous Classes)
• Diğer dahili sınıf çeşitlerinde olduğu gibi, isimsiz sınıflar direk extends ve implements anahtar kelimelerini kullanarak diğer sınıflardan türetilemez ve arayüzlere erişemez.
• İsimsiz sınıfların herhangi bir ismi olmadığı için yapılandırıcısı da (constructor) olamaz.
Hesaplama8.java
![Page 341: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/341.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 43
Yakından bir bakış
return new Toplayici() { public int hesaplamaYap() {
// final olan yerel degiskenlere ulasabilir. return a + b ; }
}; // noktali virgül sart
![Page 342: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/342.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 44
Neden Dahili sınıflar?
• Arayüzler ile çoklu kalıtım (multiple inheritance)desteğini kısmen bulabiliyorduk ama bu tam değildi.
• Dahili sınıfların var olmasındaki neden çoklu kalıtıma tam desteği sağlamaktır.
![Page 343: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/343.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 45
![Page 344: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/344.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 46
Örnek
TuretilmisSinif.java
![Page 345: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/345.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 47
Sorular ...
![Page 346: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/346.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 1
İstisnalar (Exceptions)
![Page 347: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/347.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 2
İstisna deyince aklınıza ne geliyor ?
• “Diğerlerinin yazdığı programda hataolabilir ama benim yazdığım programdahata olmaz... “ - Anonim
![Page 348: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/348.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 3
Tam bir uygulama yazmak nasıl olur ?
• Bir uygulamanın, üzerine düşen işleri yapması onu tam bir uygulama yapar mı ?
![Page 349: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/349.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 4
Tam bir uygulama
• Doğruluk• Sağlamlık
![Page 350: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/350.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 5
Doğruluk- ilk şart
• İki sayıyı bölmeye yarayan bir uygulama geliştirmeniz istendi.
• A / B = Sonuç çok kolay
![Page 351: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/351.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 6
Sağlamlık-unutulan şart
• Dışarıdan istenmeyen veriler girildiği zaman uygulamanız nasıl bir davranış sergiliyecektir ?– 5 / 0 = ?– 10 / elma = ? – armut / erik = ?
• Uygulamanız aniden kapanacak mı ? Yoksa bunları bölmeye mi kalkacak ?
![Page 352: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/352.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 7
Java ve sağlamlık şarttı
• Java Programlama dili oluşabilecek olan istisnalara karşı önlem alınmasını ister.– Açılmak istenen dosya yerinde olmayabilir.– Ağ (network) bağlantısı kopmuş olabilir.– Okunmak istenen dosyanın içi boş olabilir.
![Page 353: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/353.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 8
İstisna nasıl oluşabilir ?
DiziErisim.java
![Page 354: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/354.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 9
İstisna yakalama mekanizması
try {// istisnaya sebebiyet verebilecek olan kod
} catch(Exception1 e1) {//Eğer Exception1 tipinde istisna firlatılırsa buraya
} catch(Exception2 e2) {//Eğer Exception2 tipinde istisna firlatılırsa buraya
}
![Page 355: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/355.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 10
Örnekler
DiziErisim2.java
DiziErisim3.java
![Page 356: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/356.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 11
İstisna İfadeleri
• Bir yordamın iki seçeneği vardır– Oluşan istisnayı yakalayabilir (hata yakalama
mekanizması kullanarak)– Oluşan istisnayı bir üst kısma fırlatabilir.
![Page 357: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/357.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 12
Örnek-1
IstisnaOrnek1.java
![Page 358: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/358.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 13
Örnek-2
IstisnaOrnek2.java
![Page 359: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/359.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 14
![Page 360: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/360.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 15
Örnek-3
IstisnaOrnek3.java
![Page 361: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/361.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 16
![Page 362: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/362.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 17
Örnek-4
IstisnaOrnek4.java
![Page 363: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/363.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 18
![Page 364: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/364.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 19
Örnek-5
IstisnaOrnek5.java
![Page 365: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/365.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 20
![Page 366: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/366.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 21
İstisna tip hiyerarşisi
• Nasıl olur da java.io.IOException istisnatipi, java.io.FileNotFoundException istisnatipini kapsayabilir ?
![Page 367: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/367.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 22
![Page 368: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/368.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 23
Üç ana tip
• Error• RuntimeException• Ve diğer Exception tipleri (önceden tedbir
alınmaları gerekir)
![Page 369: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/369.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 24
Error
• Error istisna tipi ölümcül bir hatayı işarettir ve telafisi çok zordur; neredeyse imkansızdır.
• Örneğin OutOfMemoryError istisna tipi, bellekten dolayı bir istisna meydana gelmiş iseuygulamanın buna müdahale edip düzeltmesiimkansızdır.
![Page 370: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/370.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 25
RuntimeException
• RuntimeException istisna tipleri, eğer uygulamanormal seyrinde giderse ortaya çıkmamasıgereken istisna tipleridir.
• ArrayIndexOutOfBoundsException istisna tipi, birdizinin olmayan elemanına eriştiğimiz zaman ortayaçıkan bir istisnadır.
• RuntimeException istisna tipleri, yanlış kodlamadandolayı ortaya çıkan bir istisnadır.
![Page 371: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/371.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 26
Ve diğer Exception tipleri
• Bu istisna tipleri çevresel koşullardan dolayı meydanagelebilir.
• Örneğin erişilmeye çalışılan dosyanın yerindeolmaması (FileNotFoundException) veya ağ (network) bağlantısının kopması sonucu ortayaçıkabilecek olan istisnalardır. Bu istisnalar içinönceden tedbir alınması şarttır.
![Page 372: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/372.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 27
Tüm diğer Exception istisna tiplerini yakalamak
catch (Exception ex) {// ......
}
![Page 373: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/373.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 28
RuntimeException istisna tipleri
• DiziErisim.java uygulama örneğimiziçerisinde istisna oluşma riski olmasınarağmen nasıl oldu da Java buna kızmayarakderledi ? Peki ama IstisnaOrnek1.javauygulamasını niye derlemedi ?
![Page 374: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/374.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 29
RuntimeException istisna tipleri
• Java Programlama Dili, RuntimeExceptionistisna tiplerini yakalamak için bir baskı yapmaz.
![Page 375: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/375.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 30
RuntimeException istisna tipleri nelerdir ?
• AritmeticException• NullPointerException• NegativeArraySizeException• ArrayIndexOutOfBoundsException• SecurityException
![Page 376: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/376.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 31
AritmeticException
• Bir sayının sıfıra bölünmesiyle ortayaçıkabilecek olan RuntimeException istisna tipi.
int i = 16 / 0 ; // AritmeticException ! hata !
![Page 377: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/377.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 32
NullPointerException
• Bir sınıf tipindeki referansı, o sınıfa ait birnesneye bağlamadan kullanmaya kalkıncaalınabilecek bir istisna tipi.
String ad ;System.out.println("Ad = " + ad.trim() ); // ! hata !
Bu hatayı almamak için ;
String ad = " Java Kitap Projesi "; // bağlama işlemiSystem.out.println("Ad = " + ad.trim() ); //dogru
![Page 378: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/378.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 33
NegativeArraySizeException
• Bir diziyi negatif bir sayı vererek oluşturmayaçalışırsak bu istisna tipi ile karşılaşırız.
int dizi[] = new dizi[ -100 ]; //! hata !
![Page 379: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/379.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 34
ArrayIndexOutOfBoundsException
• Bir dizinin olmayan elemanına ulaşmakistendiği zaman karşılaşılan istisna tipi
• Daha detaylı bilgi için DiziErisim.javauygulama örneğini incelenebilir.
![Page 380: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/380.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 35
SecurityException
• Genellikle tarayıcı (browser) tarafından fırlatılan biristisna tipidir. Bu istisnaya neden olabilecek olansebepler aşağıdaki gibidir ; – Applet içerisinden, yerel bir dosyaya erişmek istedendiği
zaman. – Applet’in indirildiği sunucuya değil de değişik bir
sunucuya ağ (network) bağlantısı kurulmaya çalışıldığızaman.
– Applet’in kendi içerisinde başka bir uygulama başlatmayaçalıştığı zaman.
![Page 381: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/381.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 36
İstisna Mesajları
• Bir istisna nesnesinden bir çok veri eldeedilebilir.
• Örneğin istisna oluşumunun yol haritasıizlenebilir veya istisna oluşana kadar hangiyordamlar çağrılmış gibi değerli bilgilergörülebilir.
![Page 382: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/382.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 37
İstisna Mesajları
• String getMessage() : Oluşan istisnaya aitbilgileri String tipinde geri döner.
• String getLocalizedMessage(): Bu yordam, Exception sınıfından türetilmiş alt sınıflartarafından iptal edilebilir (override).
• String toString(): Oluşan istisna hakkındakısa bir açıklamayı String tipinde geri döner. – Oluşan istisna nesnesinin tipini ekrana basar– ": " iki nokta üst üste koyar ve bir boşluk bırakır. – Son olarak getMassege() yordamı çağrılır ve
buradan - eğer bilgi varsa ekrana basılır.
![Page 383: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/383.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 38
Örnek-1
IstisnaMetodlari.java
![Page 384: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/384.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 39
İstisna Mesajları - Java 1.4
• Throwable getCause(): Bu yordamınişe yaraması için istisna sınıfına aityapılandırıcının içerisine bu istisnaya sebebiyetvermiş olan istisna tipini yerleştirmekgerekmektedir.
IstisnaMetodlari2.java
![Page 385: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/385.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 40
İstisna Mesajları - Java 1.4
• Throwable initCause( Throwable cause) :İki yarı istisna tipini birleştirmeye yarar. Eğer biristisna Throwable(Throwable) veyaThrowable(String, Throwable) ile oluşturulmuşise initCause() yordamı çağırılamaz.
IstisnaMetodlari3.java
![Page 386: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/386.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 41
İstisna Mesajları
• printStackTrace() : Throwable sınıfının bu yordamısayesinde oluşan bir istisnanın yol haritasını görebiliriz.
• printStackTrace( PrintStream s ) : PrintStreamsınıfına ait nesne kullanılarak oluşan istisnanın yolharitasını konsol yerine başka bir yere bastırmanızmümkündür.
• printStackTrace( PrintWriter s ) : PrintWritersınıfına ait nesne kullanılarak, oluşan istisnanın yolharitasını konsol yerine başka bir yere bastırmanızmümkündür. JSP ve Servlet lerde kullanılabilir.
IstisnaMetodlari4.java
![Page 387: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/387.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 42
Kendi İstisnalarımızı Nasıl Oluşturabiliriz?
• Java’nın kendi içerisinde tanımlanmış istisna tiplerinin dışında bizler de kendimize özgü istisna tiplerini oluşturup kullanabiliriz.
• Sonuçta istisnalar da birer nesnedir ve kendilerine has durumları olabilir.
BenimHatam.java
SeninHatan.java
![Page 388: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/388.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 43
Örnek
Kobay.java
![Page 389: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/389.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 44
Ekran Çıktısı
----------------------Hata Olustu-1:sonuc eksi! onemli hata !2----------------------Hata Olustu-2:SeninHatan: b parametresi sifir geldi
----------------------Hata Olustu-2:SeninHatan
![Page 390: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/390.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 45
finally Bloğu
• Bir işlemin her koşulda ( istisna olsun ya da olmasın ) kesin olarak yapılmasını istiyorsak finally bloğu kullanmalıyız.
FinallyOrnek1.java
FinallyOrnek2.java
![Page 391: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/391.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 46
return ve finally Bloğu
• finally bloğu her zaman çalıştırılır.• Örneğin bir yordam hiçbir şey döndürmüyorsa
(void) ama bu yordamın içerisinde return ifadesi kullanılmış ise, finally bloğu, bu return ifadesi devreye girmeden hemen önce çalıştırılır.
ReturnOrnek.java
![Page 392: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/392.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 47
Dikkat System.exit();
• Eğer System sınıfının statik bir yordamı olan exit() çağrılırsa finally bloğuna hiç girilmez.
SystemExitOrnek.java
![Page 393: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/393.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 48
İstisnanın Tekrardan Fırlatılması
• Oluşan bir istisnayı catch bloğunda yakaladıktan sonra tekrardan bir üst kısma fırlatmanız mümkündür.
![Page 394: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/394.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 49
Gösterim
try {// riskli kod
} catch (Exception ex){System.out.println("istisna yakalandi: " + ex);throw ex; // dikkat
}
![Page 395: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/395.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 50
Örnek
TekrarFirlatimOrnek1.java
![Page 396: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/396.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 51
İlginç Gelişme
• Oluşan bir istisna her zaman fırlatılamayabilir.
FirlatimOrnek1.java
FirlatimOrnek2.java
![Page 397: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/397.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 52
Çözüm
FirlatimOrnek3.java
![Page 398: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/398.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 53
İptal Etme (Overrride) ve İstisnalar
• İptal etme şartları– İptal eden yordamın, iptal edilen yordam ile aynı
parametrelere,– Aynı isme,– Üst sınıfa ait yordamın erişim belirleyicisinden
daha erişilebilir veya aynı erişim belirleyicisinesahip olması gerekir.
![Page 399: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/399.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 54
Örnek
AB.java
CD.java
EF.java
![Page 400: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/400.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 55
İstisnaların Sıralanması
• Bir istisna catch bloğunda veya catchbloklarında yakalanırken, istisnaların hiyarerşik yapılarına dikkat edilmelidir.
IstisnaSiralamasi.java
IstisnaSiralamasi2.java
IstisnaSiralamasi3.java
![Page 401: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/401.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 56
Sorular ...
![Page 402: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/402.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 1
JAVA’DA GİRİŞ/ÇIKIŞİŞLEMLERİ
![Page 403: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/403.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 2
G/Ç işlemleriyle uygulamalara neler yaptırabiliriz...
• Dosya işlemleri – Dosyadan okuma– Dosyaya yazma
• Verilerin Aktarılması – Ağ (network) üzerinden
• Nesnelerin kalıcı ortama yazılması (Serialization)
• Rasgele erişimli dosyalar (Random access file)
![Page 404: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/404.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 3
Irmak (Stream)
• Uygulama ile kaynak arasındaki yol/bağlantı – Sekizli (byte) ırmakları– Karakter ırmakları
![Page 405: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/405.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 4
Gelen sekizli(byte) ırmakları
• Gelen: Kaynaktan uygulamaya doğru bir akışı belirtir.
• Sekizli (byte): Kurulan bağlantı içerisinden sekizli(byte) tipinde verilerin akacağını belirtir.
• Irmak:Kaynak ile uygulama arasında kurulan bağlantı.
![Page 406: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/406.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 5
Sekizli Irmakları (Byte Streams)
• Sekizli(byte) ırmakları üzerinde iş yapabilmek için tasarlanmış sınıflar Java 1.0'dan itibaren mevcuttur.– java.io.InputStream (Gelen sekizli ırmakları)– java.io.OutputStream (Giden sekizli ırmakları)
![Page 407: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/407.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 6
Önemli bir nokta
• java.io paketinin altındaki bir sınıfın ismi eğer InputStream veya OutputStream ile bitiyorsa o zaman;– “Bu sınıf, sekizli ırmakları (byte streams) üzerinde
işlem yapması için tasarlanmıştır” sonucu çıkartılabilir.
– FileInputStream sınıfı– BufferedOutputStream sınıfı– gibi...
![Page 408: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/408.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 7
InputStream soyut sınıfı ve bu soyut sınıfdan türemişalt sınıflar
![Page 409: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/409.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 8
InputStream soyut sınıfına ait yordamlar (methods) - I
Gelen sekizli ırmağı için mark() ve reset() yordamlarının çalışabilirliğini test eden yordamdır. Eğer bu yordamlar, okunan sekizli(byte) ırmağı üzerinde çalışabilir ise true, değilse false döner.
markSupported()
İçsel dizi kullanılarak tamponlanmış olan veriler içerisinde istenilen pozisyona işaret koyar.
mark( int okumalimiti )
Kaynak ile uygulama arasında kurulmuşolan bağlantıyı kapatır.close()
Gelen sekizli (bayt) ırmağı içerisindeki okunabilecek olan verilerin sayısını belirtir. Bu yordam alt sınıflar tarafından iptal edilmelidir.
available()
![Page 410: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/410.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 9
InputStream soyut sınıfına ait yordamlar (methods) – II
Gelen sekizli ırmağı içerisinden n uzunluğunda atlama yapar. skip( int n )
mark() ile İşaretlenen pozisyona geri döndüren yordam. reset()
Gelen sekizli ırmağı içerisinden, parametre olarak gönderilen dizi uzunluğu kadar veriyi okur ve bunu ilgili diziye verilen ölçülerde (off, len) yerleştirir.
read( byte[] b, int off, int len )
Gelen sekizli ırmağı içerisinden, parametre olarak gönderilen dizi uzunluğu kadar veriyi okur ve bunu ilgili dizinin sıfırıncı indeksinden itibaren yine o diziye yerleştirir.
read( byte[] )
Gelen sekizli ırmağı içerisinden tek bir veriyi okuyan yordam. Bu yordamın türemiş alt sınıflar tarafından iptal edilmesi (override)gerekir.
read()
![Page 411: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/411.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 10
read() yordamı
• InputStream sınıfı soyut bir sınıftır ve bu sebepten dolayı read() yordamının kullanılışını görmek için InputStream soyut sınıfından türemiş olan FileInputStream sınıfı kullanılacaktır.
DosyaOkumaBir.java
![Page 412: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/412.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 11
read() yordamı
![Page 413: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/413.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 12
read(byte[] b) ve read(byte[] b, int off, int len)
Irmak içerisindeki gelen verileri tek tek okumak yerine, bloklar (tamponlama-buffering) halinde okuyabiliriz...
DosyaOkumaIki.java
DosyaOkumaUc.java
![Page 414: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/414.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 13
FilterInputStream Sınıfı
• FilterInputStream sınıfı InputStream soyut sınıfından türemiştir.
• FilterInputStream sınıfının ve bu sınıftan (FilterInputStream) türemiş diğer alt sınıfların amacı, kaynaktan gelen sekizli (byte) ırmağınaekstra özellikler katmaktır.
• Örneğin gelen ırmağın tamponlanarakperformansın artırılması gibi.
![Page 415: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/415.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 14
BufferedInputStream Sınıfı- I
• BufferedInputStream sınıfı, FilterInputStream sınıfından türemiştir.
• BufferedInputStream nesnesinin içerisinde içsel bir dizi bulunur.
• İçsel bir diziden kasıt edilen, fiziksel dosya veya soket gibi bir kaynaktan okunan sekizli verileri ilk olarak bu içsel dizinin içerisine yerleştirilmesidir.
![Page 416: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/416.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 15
BufferedInputStream Sınıfı - II
BufferedOrnekBir.java
![Page 417: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/417.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 16
PushbackInputStream Sınıfı
• PushbackInputStream sınıfı, FilterInputStream sınıfından türemiştir.
• Bu sınıfı kullanarak sekizli (byte) ırmağı içerisinde okunmuş olan bir sekizliyi (byte) tekrardan okumak mümkündür.
PushbackOrnekBir.java
![Page 418: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/418.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 17
Standart Okuma
• Kullanıcı ile uygulama arasında etkileşimi nasıl sağlanabilir?
Etkilesim.java
![Page 419: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/419.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 18
OutputStream Soyut (Abstract) Sınıfı
• Şu ana kadar bir kaynaktan uygulamamıza verilerin nasıl alınıp işlendiğini inceledik
• Şimdi sıra uygulamadan kaynağa doğru (ör: dosya) veri yazdırma işlemlerinde...
![Page 420: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/420.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 19
OutputStream soyut (Abstract) sınıfı ve bu soyut sınıfdan türemiş alt sınıflar
• Bağlantı kurup yazma işlemleri için tasarlanmış sınıflar
• Giden sekizli (byte) ırmaklarına özellik katmak için tasarlanmış sınıflar.
![Page 421: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/421.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 20
OutputStream sınıfına ait yordamlar
Belirtilen veriyi giden bayt ırmağına yazan yordam. Bu yordamın türemiş alt sınıflar tarafından iptal edilmesi gerekir.
write(int b)
Giden sekizli (bayt) ırmağı içerisine belirtilen parametrelere göre yazma yapan yordam. •byte[] b: Yazılacak olan veri dizisi.•int off: Yazılacak olan veri dizisinin kaçıncı elemanından başlanması gerektiğini belirten parametre.•int len: Veri dizisinden kaç elemanın giden sekizli ırmağına yazılacağını belirten parametre.
write(byte[] b, int off, int len)
Giden sekizli (bayt) ırmağı içerisine belirtilen sekizli (byte) tipindeki diziyi aktarır.write(byte[] b)
Tamponlanmış (buffered) olan verileri giden sekizli (byte) ırmağına yazdıran yordam.flush()
Kaynak ile uygulama arasında kurulmuş olan bağlantıyı kapatır.close()
![Page 422: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/422.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 21
write(int b) yordamı
• Sekizli (byte) ırmağının yönü uygulamadan kaynağa doğrudur.
DosyaYazmaBir.java
![Page 423: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/423.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 22
write(byte[] b) ve write(byte[] b, int off, int len)
• DosyaYazmaIki.java
• DosyaYazmaUc.java
![Page 424: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/424.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 23
FilterOutputStream sınıfı
FilterOutputStream ve bu sınıftan türemiş alt sınıfların görevi,giden sekizli (bayt) ırmağı yazılacak olan sekizli (byte) verilerine yeni özellikler katmaktır.
![Page 425: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/425.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 24
BufferedOutputStream sınıfı - I
• Bu sınıfı kullanarak, giden sekizli (bayt) ırmağına yazılacak olan byte’ları önceden tamponlayabiliriz.
• BufferYazmaBir.java
![Page 426: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/426.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 25
BufferedOutputStream sınıfı - II
Sekizli(byte) bilgileri ne zaman giden sekizli ırmağına yazılırlar ?
![Page 427: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/427.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 26
Önemli Noktalar
• JDK 1.1 'den önce sadece 8-bit'lik sekizli (bayt) ırmakları destekleniyordu.
• 16 bit'lik Unicode sistemi JDK 1.1 ile birlikte gelmiştir.
• Oysa; sekizli (bayt) ırmakları sadece ISO8859-1 karakter kümesini (charset) destekler.
• Karakter ırmakları Unicode sistemini destekler ve Unicode sayesinde uluslararasılaştırma (i18n = internationalization ) daha kolay sağlanır.
![Page 428: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/428.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 27
Karakter Irmakları (Character Streams)
• Karakter ırmakları üzerinde işlem yapabilen sınıfların en tepesinde iki soyut sınıf (abstract class) bulunur. – Reader– Writer
• java.io paketinin altında eğer bir sınıfın ismi Reader ile veya Writer ile bitiyorsa bu sınıf karakter ırmakları üzerinde işlem yapması için tasarlanmış.
![Page 429: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/429.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 28
Reader soyut sınıfı
![Page 430: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/430.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 29
Gelen karakter ırmağı
• Gelen karakter ırmağının açılımını bir kez daha yaparsak:– Gelen ifadesi, kaynaktan (dosya, soket... gibi)
uygulamaya doğru bir hareket olduğunu belirtir. – Karakter ifadesi, uygulama ile kaynak arasında
kurulmuş olan bağlantının içerisinde temel (primitive) char tipinde verilerin akacağına işarettir.
– Irmak ise uygulama ile kaynak arasında kurulan bağlantıyı ifade eder.
![Page 431: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/431.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 30
Reader soyut sınıfına ait yordamlar.
Gelen karakter ırmağı içerisinden n baytlık veriyi atlar
skip(int n)
İşaretlenen pozisyona geri döndüren yordam.reset()
Gelen karakter ırmağının okunabilecek durumda olup olmadığını belirten yordam.
ready()
Gelen karakter ırmağı içerisinden belirtilen parametrelere göre okuma yapan yordam.
read(char[] cbuf, int off, int len)
Gelen karakter ırmağı içerisinden belirtilen karakter (char) dizisi kadar okuma yapan yordam.
read(char[] cbuf)
Gelen karakter ırmağı içerisinden tek bir karakter (char) okuyan yordam.
read()
Gelen karakter ırmağı için mark() ve reset()yordamlarının çalışabilirliğini test eden yordam.
markSupported()
İçsel dizi kullanılarak tamponlanmış (buffered) olan veriler içerisinde istenilen pozisyona işaret koyar.
mark(int okumalimiti)
Uygulama ile kaynak arasında kurulmuş olan bağlantıyı kapatır.
close()
![Page 432: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/432.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 31
InputStreamReader Sınıfı (Köprü)
• Bu sınıfın rolü köprü görevi görmektir. • Bu sınıf, gelen sekizli (bayt) ırmakları ile gelen
karakter ırmakları arasında köprü vazifesi görür.
import java.io.*;public class ISROrnek {
public static void main(String args[]) throws IOException {InputStream in = System.in;InputStreamReader unicode = new InputStreamReader( in );//...
}}
![Page 433: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/433.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 32
FileReader sınıfı
• FileReader sınıfı InputStreamReadersınıfından türemiştir. Bu sınıfın rolü dosyadaki verileri karakter ırmağışeklinde uygulamaya taşımaktır.
yazi3.txt
FileReaderOrnekBir.java
![Page 434: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/434.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 33
Ekran Çıktısı
-- Tek tek okuma i$lemi --encoding:Cp1254toplamSatirSonu:10
-- Bloklar halinde okuma i$lemi –encoding:Cp1254toplamSatirSonu:10
-- Blok halinde belirtilen cercevede okuma i$lemi -encoding:Cp1254toplamSatirSonu:10
ISO8859-9==
ISO8859-9==
ISO8859-9==
![Page 435: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/435.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 34
BufferedReader Sınıfı
• BufferedReader sınıfını kullanmak performansı ciddi bir şekilde artırmaktadır.
BufferedReaderOrnekBir.java
![Page 436: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/436.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 35
Writer soyut sınıfından türemiş diğer alt sınıflara ait şema
![Page 437: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/437.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 36
Writer soyut sınıfına ait yordamlar
String nesnesinin belirtilen kısımlarını giden karakter ırmağınayazan yordam.
write(String str, int off, int len)
String nesnesini giden karakter ırmağına yazan yordam.write(String str)
Belirtilen karakteri giden karakter ırmağını yazan yordam.write(int c)
Giden karakter ırmağı içerisine belirtilen parametrelere göre yazma yapan yordam. • char[] cbuf: Yazılacak olan veri dizisi. • int off: Yazılacak olan veri dizisinin kaçıncıelemanından başlanması gerektiğini belirten parametre. • int len: Veri dizisinden kaç elemanın giden karakter ırmağına yazılacağını belirten parametre.
write(char cbuf[], int off, int len)
Giden karakter ırmağı içerisine belirtilen karakter (char) dizisini yazar
write(char cbuf[])
Tamponlanmış (buffered) olan verileri giden karakter ırmağına yazdıran yordam.
flush()
Kaynak ile uygulama arasında kurulmuş olan bağlantıyıkapatır. Kapama işleminin hemen öncesinde veriler giden karakter ırmağına yazılır.
close()
![Page 438: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/438.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 37
OutputStreamWriter ve FileWriter Sınıfı
• FileWriter sınıfı, bölgesel ayarları kullanarak dosyaya yazmaktadır.
FileWriterOrnek.java
![Page 439: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/439.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 38
Önemli Nokta
• UnicodeBulucu.java; bir String nesnesinin veya tek tek karakterlerin Unicode karşılıklarını bulması için tasarlanmıştır.
• Unicode nedir ?
UnicodeBulucu.java
\u011F
\u0041
Java’daki Unicode karşılığıKarakter
![Page 440: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/440.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 39
PrintWriter Sınıfı
• Bu sınıfı kullanarak verileri giden karakter ırmağına aktarmamız mümkündür.
• Bu sınıfın içerisinde sekizli (byte) tipindeki verileri giden karakter ırmağına aktaran bir yordam(method) yoktur.
PrintWriterOrnek.java
![Page 441: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/441.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 40
BufferedWriter Sınıfı
• Bu sınıfın rolü, karakter verilerini giden karakter ırmağına aktarılmalarından evvel tamponlayarak performansın artırılmasını sağlamaktır.
• FileWriter ve BufferedWriter nesnelerini beraber kullanmak performans açısından daha iyi bir sonuç verecektir.
BufferedWriterOrnek.java
![Page 442: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/442.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 41
Performans - I
• Performans bölümünde 4 adet örnek uygulama incelenecektir.• Bu uygulamaların yaptıkları işler hep aynı olacak, dosyaları
kopyalamak... • Kopyalanması için seçilen dosya ise 361K boyutundaki bir
GIF dosyası olsun...
Test1.java
![Page 443: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/443.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 42
Performans - II
• Kopyalanması için seçilen dosya yine 361K boyutundaki bir GIF dosyası olsun...
• Bu yeni yaklaşımımızda BufferedInputStream ve BufferedOutputStream sınıfları kullanılacaktır; bu yaklaşım acaba performansı nasıl etkileyecek?
Test2.java
![Page 444: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/444.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 43
Performans - III
• Her zaman BufferedInputStream ve BufferedOutputStream sınıflarını kullanmak zorunda değiliz.
• Bunun yerine kendi oluşturduğumuz dizileri, tampon vazifesi görmesi için kullanabiliriz.
Test3.java
Test4.java
![Page 445: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/445.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 44
Performans Sonuçları
• Test1.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 13088 ms
• Test2.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 121 ms
• Test3.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 30 ms
• Test4.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 20 ms
![Page 446: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/446.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 45
Unicode
• Unicode, platformu ve programlama dili ne olursa olsun dünya üzerindeki herbir karaktere ayrı ayrı tekil numaralar atanarak geliştirilmiş bir standarttır.
• Java programlama dilinde kullanılan Stringnesnelerinin içerisindeki veriler Unicodesistemine uygun olarak tutulur.
• Uluslararasılaştırma = Internationalization (i18n)
![Page 447: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/447.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 46
ISO8859-9 Tablosu
![Page 448: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/448.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 47
Detaylı Bakış
• ISO8859-9 tablosundaki "ğ" karakteri yakından incelenirse;
![Page 449: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/449.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 48
ISO8859-1 Tablosu
![Page 450: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/450.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 49
ISO8859-4 Tablosu
![Page 451: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/451.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 50
Örnek
UnicodeTest.java
![Page 452: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/452.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 51
File Sınıfı
• File sınıfı fiziksel dosyaları temsil ederler.
FileTestBir.java
import java.io.*;public class FileTestBir {
public static void main(String[] args) throws IOException {File dosya = new File("Test1.txt");
}}
Soru : Bu uygulama çalıştırılırsa Test1.txt dosyası oluşur mu ?
![Page 453: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/453.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 52
Dönüşüm (Serialization)
• Dönüşüm bir nesnenin durum bilgisini saklanabilecek ve taşınabilecek şekle dönüştürme işlemidir.– Dönüşüm işlemini kullanarak nesneleri ağ üzerinden başka
bir makinaya gönderilebilir– Sabit diske kayıt edilebilir.
• Dönüşüm sayesinde nesnelerin ömürleri, uygulamanın ömrüne bağlı olmaktan çıkar.
DonusumTest1.java
![Page 454: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/454.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 53
Bölümleyiciler (Tokenizer)
• Bölümleyiciler, kendilerine gelen karakterleri bölerek parçalara ayırır.
• Bu parçaların tipi sayı veya harf olabilir.– StreamTokenizer sınıfı– StringTokenizer sınıfı
![Page 455: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/455.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 54
StreamTokenizer sınıfı
Bolumleyici.java
![Page 456: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/456.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 55
StringTokenizer sınıfı
• Bu sınıf, java.util paketinin içerisinde bulunmaktadır.
• Bu sınıfın StreamTokenizer sınıfından farkı ise, bölümlediği parçaları String tipinde geri döndürmesidir.
StringTokenOrnekBir.java
![Page 457: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/457.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 56
Sorular ...
![Page 458: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/458.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 1
Yeni G/Ç (new I/O)
![Page 459: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/459.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 2
YENİ G/Ç (NEW I/O)
• Yeni G/Ç (nio) paketi içerisindeki sınıfları kullanarak dosya işlemleri (okuma/yazma) ve ağ üzerinden okuma/yazma işlemleri gerçekleştirebilir.
• Buradaki fark, dosya işlemlerinin her zaman engellemeli (blocking) ama ağ işlemlerinin ise opsiyonel olmasıdır.
• Yani ağ işlemleri isteğe bağlı olarak engellemeli ve engellemesiz (non-blocking) olabilir.
![Page 460: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/460.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 3
Tamponlar (Buffers)
![Page 461: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/461.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 4
ByteBuffer Sınıfı
• Tamponun kapasitesi : Kapasite parametresinin değeri bir kere ve en başta belirtilir ve bir daha değiştirilemez. Bu parametre, tamponun kaç adet eleman alacağını belirler.
• Tamponun limiti : Tampon içerisindeki okunamayacak veya yazılamayacak olan elemanın indeksini belirtir. Limit, negatif veya tamponun kapasitesinden büyük olamaz.
• Tamponun pozisyonu : Tampon içerisindeki okunabilecek veya yazılabilecek olan elemanın indeksini belirtir. Pozisyon, negatif veya limit değerinden büyük olamaz. NIOTestBir.java
![Page 462: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/462.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 5
Yeni oluşturulan ByteBuffer nesnesi
Kapasite = 10Limit = 10Pozisyon =10
![Page 463: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/463.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 6
İçersine veri atılmış ByteBuffer nesnesi
Kapasite = 10Limit = 10Pozisyon =7
Pozisyon değerinin 7 olmasındaki sebep, okunabilecek ve yazılabilecek olan hücrenin indeksinin 7 olmasından kaynaklanır.
NIOTestIki.java
![Page 464: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/464.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 7
hasRemaining(), flip(), get() Yordamları
• hasRemaining() yordamı, mevcut pozisyon ile limit arasındaki eleman sayısını bildirir.
• flip() yordamı çağrıldığında, ByteBuffer nesnesinde tanımlı olan pozisyonun değeri sıfıra eşitlenir. Limitdeğeri okunamayacak veya yazılamayacak olan son elemanın üzerine getirilir ve biraz ileride göreceğimiz mark() yordamının kullanılmasıyla işaretlenmiş olan yer silinir.
• get() yordamı, belirtilen elemanı okur.
NIOTestUc.java
![Page 465: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/465.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 8
ByteBuffer nesnesinin, flip() yordamı çağrıldıktan sonraki hali
• Limit değeri neden 7 oldu?• Daha doğrusu limit diye bir değer niye var?
![Page 466: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/466.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 9
Relatif ve Mutlak Operasyonlar (Relative and absolute operations)
• Verileri içeri yerleştirme veya içerideki verileri çekme işlemleri Buffer soyut sınıfından türemiş her alt sınıf için 2 kategori bulunur.– Relatif Operasyonlar– Mutlak Operasyonlar
![Page 467: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/467.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 10
Relatif Operasyonlar
• Relatif operasyon kullanılarak içeri atılan her veri için mevcut pozisyon değeri bir artar.
• Atılan verileri çekmek için kullanılan get() yordamını çağırmadan evvel, pozisyon değerinin sıfırlanacağını düşünürsek (flip() yordamını kullanarak), içeriden çekilen her eleman için pozisyonun değeri bir artacaktır.
• put() yordamını kullanırken limit aşımı oluşursa BufferOverflowException istisnası oluşur.
• get() yordamını kullanırken bir limit aşımı oluşursa da BufferUnderflowException istisnası oluşur.
RelatifOrnek.java
![Page 468: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/468.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 11
Mutlak Operasyonlar
• Mutlak operasyon kullanılarak içeri atılan verilerde veya mevcut verileri çekiş işlemlerinde belirli bir indeks numarası kullanılır.
• Mutlak operasyonlarda mevcut pozisyonundeğerinde bir artış olmaz.
MutlakOrnek.java
![Page 469: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/469.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 12
Sarmalama
• İlkel tipte olan bir dizi, java.nio paketi içerisindeki tampon sınıflarını kullanarak sarmalanabilir.
• Bu işlem için wrap() yordamını kullanmamız yeterli olacaktır.
Sarmaliyici.java
![Page 470: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/470.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 13
Doğrusal ve Doğrusal Olmayan Tamponlar (Direct and non-direct buffers)
• Doğrusal ve doğrusal olmayan tamponlar sadece ByteBuffer sınıfına ait olan özelliklerdir. – Doğrusal ByteBuffer nesnesi oluşturmak için
allocateDirect() yordamını çağırmak yeterlidir.– Doğrusal olmayan ByteBuffer nesnesi oluşturmak
için allocate() yordamını çağırmak yeterlidir.
DogrusalOrnekBir.java
DogrusalOlmayanOrnekBir.java
![Page 471: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/471.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 14
ByteOrder Sınıfı
• Bir verinin tipi sekizli (byte) tipinden büyükse, bu verinin bölünüp sekizli tipindeki verilere dönüştürülerek saklanması gerekir.
• Örneğin ilkel int tipindeki bir veri, 4 sekizlik (32 bit) verilere bölünerek saklanır veya ilkel short tipindeki bir veri 2 sekizlik (16 bit) verilere dönüştürülerek saklanır.
• Verilerin bu saklanma işlemi CPU mimarilerinin geçmişten gelen farklılıklarından dolayı değişiklik gösterebilir.
![Page 472: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/472.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 15
Çevirim
• Bir tipteki tampon nesnesini başka bir tipteki tampon nesnesine çevirebiliriz.
• Örneğin ByteBuffer nesnesini, DoubleBuffernesnesine kolaylıkla çevirebiliriz.
CeviriciOrnek.java
![Page 473: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/473.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 16
Tampon Nesneler ve Diziler
• Tampon nesnelerin, arka planda bildiğimiz dizileri kullanması için doğrusal olmayan (non-direct) bir şekilde oluşturulmuş olmaları gerekir.
DiziOrnek.java
![Page 474: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/474.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 17
İşaretleme İşlemleri
• java.nio paketinin altındaki tampon sınıflarını kullanarak yapılan işaretleme ve işaretlenen yere geri dönme işlemleri gayet kolaydır.
IsaretlemeOrnek.java
![Page 475: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/475.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 18
Kanallar
• Kanal özelliğini kullanarak, uygun bir cihaz, bir dosya, ağ üzerinden bir soket veya uygun bir uygulama ile bağlantı kurabilirler.
• Java programlama diline versiyon 1.4'de katılmış olan bu özellik, geçen bölümde incelediğimiz InputStreamve OutputStream soyut sınıflarının (bunlardan türemiş olan alt sınıfların) sağladıkları özelliklerin pabuçlarını biraz da olsa dama atmaktadır.
• Bu bölümümüzde sadece FileChannel sınıfını inceleyeceğiz.
![Page 476: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/476.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 19
FileChannel Sınıfı
• Bu sınıf sayesinde mevcut fiziksel bir dosya ile bağlantı kurup okuma, yazma, eşleme (mapping) ve dosya yönetim işlemlerini gerçekleştirebiliriz.
ChannelOrnekBir.java
![Page 477: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/477.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 20
Sorular ...
![Page 478: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/478.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 1
İş Parçacıkları (Threads)
Bir elin nesi var iki elin sesi var -Atasözü-
![Page 479: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/479.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 2
İŞ PARÇACIKLARI (THREADS)
• Geçen bölümlerde yapılan uygulama örnekleri hep sıralıydı.
• Program başlar, belli bir yolu izleyerek işlemler yapar ve biterdi.
Selam.java
![Page 480: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/480.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 3
Çoklu İş Parçacıklarına ne zaman ihtiyaç duyulur ?
• Bu durumlara en iyi örnek tarayıcılardır (browser).
– İstenilen sayfanın indirilmesi için bir iş parçacığı – İndirilmiş olan GIF dosyalarını oynatmak için bir iş
parçacığı
![Page 481: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/481.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 4
Sohbet – I
• Şimdi öyle bir uygulama düşünelim ki: – Bu uygulama bir dosyadan okuma yapsın, – Okuduğu veri üzerinde hesaplama yapıp, – Hesaplamanın sonucunu başka bir dosyaya yazsın.
• Burada kaç işlemden bahsediyoruz?
1. Dosyadan okuma yapma (G/Ç)2. Okunan veri üzerinde hesaplama yapma (CPU çalışıyor)3. Hesaplama sonucunu başka bir dosyaya yazma (G/Ç)
![Page 482: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/482.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 5
Sohbet – II (Tek bir iş parçacığından oluşmuşuygulamanın aşamaları )
![Page 483: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/483.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 6
Sohbet – III ( 1. Tasarım)
• Bu uygulamanın gerçekleştirmesi gereken 3 ana işlem (okuma-hesaplama-yazma) olduğunu biliyoruz.
• Bu üç işlemi tek bir iş parçacığında yapmaktansa, üç ayrı işparçacığı içerisinde yaparsak sonuç nasıl değişir?
![Page 484: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/484.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 7
Sohbet – IV (2. Tasarım)
• İş parçacıkları ile aşağıdaki gibi bir tasarım da yapılabilir.
![Page 485: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/485.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 8
İş Parçacıklarının Başlatılması
• Tek başına çalışabilen (standalone)uygulamaların başlangıç yeri statik main()yordamı (methods) olduğunu daha evvelden belirtmiştik.
• Uygulama çalışmaya başladığında, ana işparçacığı oluşturulup olayların akışı başlatılır.
• Java programlama dili ile yazdığımız uygulamaların içerisinde çoklu iş parçacıklarınıkullanmak için java.lang.Thread sınıfını veya java.lang.Runnable arayüzünü kullanmamız gerekir.
OrnekBir.java
![Page 486: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/486.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 9
ÖrnekBir.java uygulamasının çalışması
![Page 487: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/487.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 10
Haller
![Page 488: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/488.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 11
Öncelik Sırası
• Aynı öncelik sırasına sahip olan iş parçacıkları aynıhazır durum havuzunda bulunurlar.
Thread.MIN_PRIORITY = 1 Thread.NORM_PRIORITY = 5Thread.MAX_PRIORITY = 10
OrnekIki.java
![Page 489: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/489.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 12
İş Parçacıklarının Sonlandırılması
• Bir iş parçacığının sonlanması onun ölmesi anlamına gelir.
• Peki bir iş parçacığı nasıl öldürebiliriz?– Birinci yol ilgili iş paçacığının stop() yordamını
çağırarak gerçekleştirilebilir ama bu tavsiye edilmiyen bir yoldur.
– İkinci yol nasıl olabilir ?
OrnekUc.java
![Page 490: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/490.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 13
İş Parçacıklarının Kontrolü
• sleep() : Çalışan iş parçacığının belirli bir süre uyumasını sağlar. Bu statik bir yordamdır; yani bu sleep() yordamını çağırmak için java.lang.Thread sınıfından türemiş alt bir sınıfın new() anahtar kelimesi ile oluşturulması gerekmez.
• interrupt() : Uyuyan bir iş parçacığını uyandırmanın yolu onu rahatsız etmektir. Bu rahatsızlık verme olayını interrupt() yordamını çağırarak başarabiliriz.
UykuTest.java
UyanmaVakti.java
![Page 491: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/491.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 14
sleep() yordamı
• Elimizde 3 adet iş parçacığı olduğunu ve bu üç iş parçacığının da aynı anda başlatıldıklarını hayal edelim...
UyurGezer.java
![Page 492: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/492.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 15
UyurGezer.java uygulamasının ekran çıktısı
![Page 493: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/493.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 16
yield() Yordamı
• Bir iş parçacığı çalıştırılıyor halinde iken, bu iş parçacığı ile aynı öncelik sırasına sahip başka bir iş parçacığına çalıştırılma fırsatı vermek istiyorsak yield() yordamını kullanmamız gereklidir.
Normal bir şekilde çalıştıralım...
YieldOrnek.java
Şimdi 9. satırındaki yorum satırını açalım, derleyelim ve çalıştıralım...
![Page 494: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/494.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 17
join() Yordamı
• join() yordamı, bir iş parçacığının diğer bir iş parçacığını beklemesi için kullanılır.
• join() yordamının üç adaş yordamı (overloaded) bulunur.
Belirtilen iş parçacığını, verilen milisaniye + nano saniye kadar bekletir.
join(long milisaniye, int nanosaniye)
Belirtilen iş parçacığını, verilen milisaniye kadar bekletir.join(long milisaniye)
Belirtilen iş parçacığı bitene (ölü haline gelene kadar) kadar bekletir.
join()
JoinTest.java
![Page 495: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/495.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 18
Tasarım - Thread Sınıfından Kalıtım
• Bir sınıfa ait nesneyi iş parçacığına dönüştürmek için iki tasarım modeli bulunmaktadır.
• Bunlardan ilki, şu ana kadar yaptığımız gibi ilgili sınıfı java.lang.Thread sınıfından türetmektir.
public class OrnekSinif extends Thread {
public void run() {// ...
}}
![Page 496: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/496.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 19
Tasarım - Thread Sınıfından Kalıtımın Avantajları
• Bu tasarımın avantajı daha kolay kodlama denilebilir.
• Örneğin run() yordamının içerisinde getName() yordamını direk çağırabiliriz.
![Page 497: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/497.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 20
Tasarım - Thread Sınıfından Kalıtımın Dezavantajları
• Java programlama dilinde bir sınıf ancak ve ancak tekbir diğer sınıftan türetilebildiği için (single inheritance) bu model kullanılarak tasarlanan iş parçacıklarında belirli kısıtlamalar gündeme gelebilir.
Tasarımı bozmak gerekli !!
![Page 498: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/498.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 21
Tasarım - Runnable Arayüzü
• Runnable arayüzü sayesinde bir sınıfı iş parçacığına dönüştürmek mümkündür.
• Runnable arayüzünü kullanmanın dezavantajları olarak daha uzun kodlama denilebilir.
ArayuzTest1.java
![Page 499: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/499.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 22
Nesnenin Kilidi
• Her nesnesin kendisine ait bir kilidi bulunur.• Bir sınıfa ait bir nesne oluşturulunca bu kilit
otomatik olarak oluşur. • Bu kilidi eline geçiren iş parçacığı, kritik alan
üzerinde işlem yapmaya hak kazanır. • Kritik alan, birden fazla iş parçacığının aynı
anda üzerinde işlem yapmaması gereken bölgedir.
![Page 500: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/500.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 23
Kritik Alan
![Page 501: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/501.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 24
synchronized Anahtar Kelimesi - I
• Bir yordam veya yordamın içerisindeki kritik bir bölge synchronized anahtar kelimesi ile korunma altına alınabilir.
• Korunma altına alınmaktan kasıt, aynı anda iki veya daha fazla iş parçacığının bu kritik bölgeye veya yordamın komple kendisine erişmesini engellemektir.
public synchronized void veriKoy(int gelenVeri) {// tum yordam koruma altinda// ayni anda bir tek is parcacigi erisebilir
}
public void veriKoy(int gelenVeri) {synchronized(this) {
// sadece belirli bir kisim koruma altinda}
}
![Page 502: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/502.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 25
synchronized Anahtar Kelimesi - II
![Page 503: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/503.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 26
synchronized Anahtar Kelimesi - III
FotokopiMakinasi.java
![Page 504: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/504.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 27
wait(), notify() ve notifyAll() Yordamları
• Her nesnenin bir kilidi olduğu gibi bir de bekleme havuzu (object's monitor) bulunur.
• Bu bekleme havuzuna iş parçacıkları atılır -wait()-veya bu havuzdan dışarı çıkartılır -notify()/notifyAll() -
• Bu beş yordam (wait() yordamının iki de adaş yordamı bulunur), java.lang.Object nesnesinin içerisinde bulunur.
![Page 505: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/505.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 28
Semafor (Semaphore)
• Kaynağın az olduğu durumlarda bir çok iş parçacığı arasında bir düzen sağlamak gereklidir.
Semaphore.java
SemaphoreTest.java
![Page 506: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/506.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 29
Kilitlenme (Deadlock) - I
• Kilitlenme, ilgili iş parçacıklarının sonsuza kadar beklemesi anlamına gelir.
• Bunun sebeplerinden biri, iki iş parçacığının karşılıklı nesne kilitlerini beklemesinden kaynaklanır.
![Page 507: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/507.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 30
Kilitlenme (Deadlock) - II
Kilitlenme.java
![Page 508: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/508.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 31
![Page 509: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/509.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 32
Sorular ...
![Page 510: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/510.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 1
Nesneler için torbalar(Collections)
![Page 511: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/511.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 2
NESNELER İÇİN TORBALAR
• Torbalar birden çok nesneyi aynı çatı altında toplamak için kullanılır.
• Bunun faydası torba içerisinde bulunan nesnelerin daha kolay taşınmasıdır.
• En basit torba dizilerdir.
DiziOrnekBir.java
![Page 512: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/512.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 3
Torba Sistemleri
• Bir uygulama yazarken çoğu zaman ne kadarlık bir verinin dizi içerisine konacağı kestirilemez.
• Bu probleme çözüm olarak java.util paketinin altındaki arayüzler ve sınıflar kullanılabilir.
![Page 513: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/513.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 4
Collection Arayüzü
• Collection arayüzüne erişen sınıfların bir kısmı kendisine gelen tüm nesneleri (aynı olsalar dahi) kabul ederken, kimisi tamamen ayrı nesneler kabul etmektedir.
• Yine bu arayüze erişen bazı sınıflar, içerisindeki elemanları sıralı şekilde tutarken kimisi sırasız bir şekilde tutmaktadır.
CollectionTest.java
![Page 514: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/514.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 5
Detaylı Şema
![Page 515: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/515.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 6
Collection arayüzüne erişen diğer arayüzler ve sınıflar –Detaysız Şema (Soyut sınıflar çıkartılmış)
![Page 516: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/516.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 7
List Arayüzüne Erişen Sınıflar – ArrayList Sınıfı
• Genel olarak List arayüzüne erişen sınıflara ait nesnelerin kullanımı basittir.
• List arayüzüne erişen sınıflar, aynı diziler gibi sıfırıncı indeksten başlarlar.
• ArrayList nesnesinin içerisine eleman atmak için add(), içerideki bir elemanı almak için ise get() yordamı kullanılır.
yeniBoyut=(eskiBoyut*3) / 2 +1
![Page 517: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/517.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 8
ArrayList Sınıfı ve Iterator Arayüzü
• ArrayList sınıfı denince akla hemen Iteratorarayüzüne erişmiş nesneler gelir.
• Iterator arayüzü tipindeki nesneler gerçekten çok basit ve kullanışlıdır.
next() yordamı ile çağrılmış olan elemanısiler. Bu yordam next() yordamından sonra çağrılmalıdır.
void remove()
Bir sonraki elemanı çağırır.Object next()
İçeride hala eleman var ise true cevabını geri döner.
boolean hasNext()
AçıklamaYordam İsmi
NufusCalismasi.java
![Page 518: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/518.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 9
Acaba Torbaya Ne Koymuştum?
• ArrayList nesnesinin içerisine atılan nesneleri almak için get() yordamı kullanılır.
• Bu yordam, içerideki nesneleri Object sınıfı tipinde bizlere geri döner.
• Gerçek tipi Object sınıfı tipinde olmayan bu nesnelerimizi daha sonradan aşağıya çevirim(downcasting) ile gerçek tiplerine çevirmemiz gereklidir.
SuperMarket.java
![Page 519: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/519.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 10
Garantili Torbalar
![Page 520: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/520.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 11
LinkedList Sınıfı
• List arayüzüne erişen bir başka sınıf ise LinkedList sınıfıdır.
• Bu sınıf da aynı ArrayList sınıfı gibi nesnelerin toplu olarak taşınmasında görev alır.
• LinkedList sınıfının ArrayList sınıfına göre bazı gelişmiş özellikleri bulunur.
LinkedListTestBir.java
![Page 521: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/521.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 12
LinkedList Sınıfı Kullanarak Yığın Yapısı Oluşturmak
• LinkedList sınıfı tipindeki nesneye ait olan addFirst() ve removeFirst() yordamları kullanılarak veri yapılarındaki yığın yapısını tasarlamak mümkündür. (LIFO- Last in first out).
Yigin.java
![Page 522: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/522.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 13
LinkedList Sınıfı ile Kuyruk Yapısı Oluşturmak
• Kuyruk yapılarındaki kural, içerisine atılan ilk elemanın yine ilk olarak çıkmasıdır (FIFO-First in first out).
Kuyruk.java
![Page 523: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/523.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 14
Collections Sınıfı
• Collections sınıfının Collection arayüzü ile kalıtımsal herhangi bir bağı yoktur.
• Collections sınıfının içerisinde bir çok faydalı statik yordam bulunur.
• Bu yordamlar sayesinde Collection veya Maparayüzüne erişmiş sınıflara ait nesnelerin içerinde bulunan elemanları sıralama, arama, en büyük elemanı ve en küçük elemanı bulma, v.b. işlemleri gerçekleştirmemiz mümkün olur.
![Page 524: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/524.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 15
Collections.sort
• Bir torba (ör : ArrayList nesnesi) içerisindeki elemanları küçükten büyüğe doğru sıralamak(veya tam ters sırada) için Collections sınıfına ait statik sort() yordamını kullanabiliriz.
SiralamaBir.java
TerstenSiralama.java
NesneSiralama.java
![Page 525: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/525.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 16
Soru ?
• Peki String veya Integer sınıf tipindeki nesnelere referansları ArrayList nesnesinin içerisine atmasak da bunun yerine kendi oluşturduğumuz ayrı bir sınıfa ait nesnenin referanslarını ArrayListnesnesinin içerisine atsak ve Collections.sort() yordamı ile sıralatmaya çalışırsak ne olur?
Kitap.javaNesneSiralama.java
OzgunSiralama.java
![Page 526: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/526.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 17
java.lang.Comparable
• compareTo() yordamının döndürmesi gerekensonuçlar.
pozitif tamsayıO anki nesne (this), parametre olarak gelen nesneden büyükse
sıfırO anki nesne (this), parametre olarak gelen nesneye eşitse
O anki nesne (this), parametre olarak gelen nesneden küçükse
O anki nesne (this), parametre olarak gelen nesneden küçükse
Döndürülen sonuçDurum
OzgunSiralama2.javaKitap2.java
![Page 527: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/527.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 18
Collections.min() ve Collections.max()
• Torba (ör:ArrayList) içerisindeki elemanların en büyüğünü ve en küçüğünü bulan Collections sınıfının statik olan max() ve min() statik yordamlarıdır.
MinMaxBulma.java
![Page 528: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/528.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 19
Collections.binarySearch()
• Collections sınıfı içerisinde bulunan statik binarySearch() yordamı ile arama işlemleri kolaylıkla yapılabilir.
• binarySearch() yordamı iki adet parametre alır.
1. Birincisi arama yapılacak olan torba (ör: ArrayList)nesnesine ait referans.
2. İkincisi ise aratılan nesneye ait referans.
AramaTestBir.java
![Page 529: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/529.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 20
Hangisi Daha Hızlı ArrayList Sınıfı mı, LinkedList Sınıfı mı?
• Şu ana kadar olan örneklerimizin bazılarında ArrayList sınıfı bazılarında ise LinkedListsınıfı kullanılmıştır.
• Bu iki sınıfın amacı diğer nesnelerin toplanması için torba görevi görmektir.
HizTesti1.java HizTesti2.java
![Page 530: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/530.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 21
Sonuç
• Arama işlemlerinde ArrayList sınıfı en iyi performası verir.– ArrayList sınıfı, RandomAccess arayüzüne erişir ama
LinkedList erişmez ve bu yüzden Collections.binarySearch() yordamı ArrayListüzerinde en iyi performası verir.
• LinkedList sınıfınında iyi olduğu yerler vardır.– Örneğin ters çevirme işlemi -ki bu işlem için Collections.reverse() yordamı kullanılır;
– Ayrıca elemanlar arasında baştan sona veya sondan başa doğru sıralama (iteration) işlemlerinde de
– Eleman ekleme çıkartma işlemlerinde LinkedList sınıfı kullanılır
![Page 531: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/531.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 22
Set Arayüzü
• Set arayüzü Collection arayüzünden türetilmiş.• Set arayüzüne erişen sınıflara ait nesnelerin
içerisine aynı elemanı iki kere atamayız. • Birbirine eşit iki nesneye ait referansı, Set
arayüzüne erişen bir nesnenin içerisine atamayız.
![Page 532: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/532.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 23
Collection arayüzüne erişen diğer arayüzler ve sınıflar –Detaysız Şema
![Page 533: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/533.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 24
HashSet Sınıfı
• HashSet sınıfı Set arayüzüne erişmiştir.• Bunun doğal sonucu olarak da Set arayüzü
içerisindeki gövdesiz yordamlara gövde yazmıştır.
HashSetTestBir.java
![Page 534: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/534.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 25
TreeSet Sınıfı
• TreeSet sınıfı SortedSet arayüzüne erişmiştir.• TreeSet sınıfına ait bir nesnenin özelliği,
içerisindeki elemanları sıralı (artan sırada) bir şekilde tutmasıdır.
• TreeSet sınıfına ait nesnenin içerisine atılacak olan referanslara bağlı nesnelere ait sınıfların kesin olarak Comparator arayüzüne erişmiş ve bu arayüzün içerisindeki gövdesiz yordamları iptal etmeleri gerekmektedir.
TreeSetTestBir.java
![Page 535: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/535.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 26
Map Arayüzü
• Uygulama yazarken ihtiyaç duyulan en büyük ihtiyaçlardan biri de anahtar-değer (key-value)ilişkisidir.
• Bu anahtar-değer ilişkisini ufak bir veritabanıgibi düşünebilirsiniz.
![Page 536: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/536.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 27
Map arayüzüne erişen arayüz, soyut sınıflar ve sınıflar
![Page 537: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/537.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 28
HashMap Sınıfı
• HashMap sınıfıMap arayüzüne erişen sınıflarımızdan bir tanesidir.
• Bu sınıfın rolü, kodu yazan kişiye anahtar-değer ilişkisi oluşturabileceği bir ortam sunmaktır.
HashMapTestBir.java
HashMapTestIki.java
![Page 538: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/538.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 29
HashMap sınıfına ait bir nesneyi bir çok iş için kullanabiliriz.
• Bu tablodan Müşteri1, Müşteri2 ve Müşteri3'ünyaptıkları ödemelerin toplamını kolayca nasıl bulabiliriz ?
Musteri.java
Kasa.java
![Page 539: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/539.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 30
Hangisi Daha Hızlı ArrayList Sınıfı mı, HashMap Sınıfı mı?
• ArrayList ve HashMap her ne kadar farklıyapıda olsalar da biri diğerinin yerine kullanılabilir.
HizTesti3.java
![Page 540: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/540.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 31
TreeMap Sınıfı
• TreeMap sınıfı SortedMap arayüzüne erişir.• TreeMap sınıfına ait bir nesne kullanılarak
aynı HashMap sınıfına ait nesnelerde olduğu gibi anahtar-değer ilişkilerini saklamak mümkündür.
• TreeMap sınıfına ait bir nesne kullanmanın avantajı anahtar-değer ilişkisindeki anahtarın sıralı bir biçimde tutulmasıdır.
TreeMapTestBir.java
![Page 541: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/541.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 32
Hangisi Daha Hızlı: HashMap Sınıfı mı, TreeMap Sınıfı mı?
• Bu sorunun cevabı şu şekilde olabilir:"anahtar-değer ilişkisindeki anahtarın sıralıolmasını istiyorsam TreeMap, aksi takdirde HashMap sınıfını kullanırım."
• Olaylara bu iki sınıfa ait nesnelerin içerisindeki anahtarın aratılma hızlarıaçısından bakarsak, acaba olaylar nasıl değişir?
HizTesti4.java
![Page 542: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/542.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 33
Iterator Arayüzü ve Dikkat Edilmesi Gereken Hususlar
• Bu arayüz tipinde bir nesne elde etmek için Collection arayüzüne erişen sınıflara ait nesnelerin iterator() yordamını çağırmak yeterlidir.
• Iterator arayüzüne erişen bir nesnenin kullanılmasının sebebi kolaylıktır.
• Iterator arayüzüne ait nesneler ilgili torbanın elemanların belli bir andaki fotoğrafını çekip daha sonradan bu elemanları başka bir yere kopyalayıp, onların üzerinde mi işlem yapıyor?
IterationOrnek.java
![Page 543: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/543.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 34
Senkronize Torbalar
• Şu ana kadar incelediğimiz sınıflara ait nesnelerin hiç biri senkronize değildi.
• Bunun anlamı bu nesnelere (ArrayList, LinkedList, HashSet, HashMap...) aynı anda iki veya daha fazla sayıdaki iş parçacığının(threads)erişip istedikleri eklemeyi veya silme işlemini yapabileceğidir.
SenkronizeListTestBir.java
SenkronizeListTestIki.java
![Page 544: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/544.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 35
Sorular ...
![Page 545: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/545.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 1
Ağ programlama(Network programming)
![Page 546: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/546.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 2
Giriş
• Ağ programlama, uygulamaların ağ ortamı üzerinden iletişimde bulunarak veri alış-verişi yapılmasına olanak verir; bu nedenle ağ programlama uygulamalarda önemli bir yer tutar.
• Ağ üzerinde uygulama geliştiren tasarımcı, ağsisteminin yapısını bilmesi gerekir; bu yüzden, Java programlama diliyle ağ programlama nasıl yapılır sorusu sorulmadan önce ağ sistemine bir bakmak yararlı olacaktır.
![Page 547: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/547.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 3
Kullanıcı/Sunucu (Client/Server) Nedir? - I
• Kullanıcı, adından da anlaşılacağı gibi bir yerlerden veri almak isteyen uygulamalara/sistemlere verilen isimdir. Örneğin, ağ tarayıcısı en çok bilinen kullanıcı uygulamasıdır.
• Kullanıcı uygulamalarının karşı tarafında bulunan ve aynı bir garson gibi hizmet veren uygulamalara sunucu denir.
• Sunucu uygulamasına örnek olarak, yılların efsanevi ağ sunucu uygulaması olan Apacheverilebilir (http://www.apache.org).
![Page 548: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/548.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 4
Kullanıcı/Sunucu (Client/Server) Nedir? - II
• Ağ sunucusu (Web server)• FTP (File Transfer Protocol) sunucusu• Telnet sunucusu
![Page 549: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/549.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 5
IP Adresi ve Port Kavramları - I
• İnternet’e bağlı her sistemin kendisine ait özel bir numarası vardır -ki bu numaraya IP adresi denilmektedir.
• Örneğin http://www.kodcu.com sitesini barındıran sunucu sistemin IP adresi 212.115.21.14’tür.
• İnsan belleği sayısal IP adresleri anımsamakta zorluk çeker; dolayısıyla, ayrıca alan adı sistemi mevcuttur (Domain Name System). Alan adlarına örnek olarak www.kodcu.com veya www.riskturk.com isimleri verilebilir.
• Bir IP adresine birden çok alan adı bağlanabilmektedir.
![Page 550: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/550.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 6
IP Adresi ve Port Kavramları - II
• Birçok sunucu uygulamalarının aynı sistem üzerinde çalışmaları, onların aynı IP adresinden hizmet verdiklerini gösterir; ancak, bu sunucu uygulamalarının birbirinden farkı herbirinin farklı port numaralarından hizmet vermeleridir...
= 80
= 23
= 21
![Page 551: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/551.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 7
Ağ sunucusu 8080. port numarasından hizmet verebilir mi ?
![Page 552: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/552.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 8
Soket Nedir?
• Soket, IP adresi ve port numarasının birleşiminden oluşan ve uygulama yazılırken ağ içerisindeki altdüzeydeki ayrıntılardan kurtulup, iki sistemin birbirine kolayca bağlanmasını sağlayan bir tanımlama/kavramdır.
![Page 553: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/553.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 9
Sihirli Numara 127.0.0.1 (Local Loopback)
• Ağ üzerinde çalışan uygulama geliştirilebilmesi için geliştirme aşamasında belirli bir IP adresine sahip sistem üzerinde çalıştırılması gerekir.
• Peki ağ üzerinde çalışacak bir uygulama yazılması için her seferinde İnternet’e/ağa bağlı olunması mı gerekiyor?
IPTest.java
![Page 554: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/554.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 10
IPv4 ve IPv6 Uyarlamaları - I
• Şimdilerde ortada IP adres yetmezliği gündeme gelmiştir.
• Eski sistem yani aslında şu an için kullandığımız IP adres sistemine IPv4 denilmektedir.
• Bu sistemde IP adresleri ondalık 32-bit işaretsiz sayılardan oluşmaktadır, IPv4 sisteminin iskeleti aaa.bbb.ccc.ddd şeklinde oluşmaktadır.
• Biraz önce incelenen örnekte bahsi geçen IP adresi IPv4 sistemindeydi, 195.155.246.159gibi...
![Page 555: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/555.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 11
IPv4 ve IPv6 Uyarlamaları - II
• IPv6 sistemi yönlendirme (routing), otomatik adres konfigürasyonu, doğrulama (authentication), gizlilik (privacy) ve taşınır IP (IP mobility) gibi bir çok yeniliği de beraberinde getirmektedir.
• IPv6 sistemi ise onaltılık (hexadecimal) 128-bit işaretsiz sayılardan oluşmaktadır.
3ffe:1700:4242:7:500:f8cf:fe21:67cf
Ör:
![Page 556: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/556.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 12
Adres Gösterimi
• Java Programlama dilinde IP adresini ifade etmek için InetAddress sınıfı kullanılır.
• Bu sınıf J2SE 1.4’te (Java 2 Standart Edition)bir çok değişikliğe uğramıştır.
• İşin aslı, Java programlama dilini kullanarak uygulama yazan bir kişi için IP adresinin IPv4 veya IPv6 sistemine göre olmasının fazla bir önemi yoktur çünkü InetAddress sınıfı arka planda tüm işleri bizim yerimize halleder.
![Page 557: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/557.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 13
IPv4 veya IPv6 sistemleri - I
InetAddress ipAdresi =InetAddress.getByName("www.obje7.com");Socket s = new Socket(ipAdresi, 80 );
![Page 558: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/558.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 14
IPv4 veya IPv6 sistemleri - II
• Bu ifademiz ise bir sunucu uygulamaya aittir. Bu uygulamamız 8080. port numarasından devamlı olarak dinleme yapıp gelen istekleri karşılamak için tasarlanmıştır.
ServerSocket sunucu = new ServerSocket(8080);for(;;) {Socket istemci = sunucu.accept;// kimin baglandigini ogrenelim......
InetAddress istemcininAdresi = istemci.getInetAddress; }
![Page 559: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/559.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 15
Sunucu/İstemci Uygulamalar - I
• Java programlama dilini kullanarak yapacağımız ilk ağ uygulamalar, basit bir sunucu ve istemci üzerine olacaktır.
SunucuOrnekBir.java
![Page 560: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/560.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 16
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
Sorun var, çünkü 8080. port numarasıdolu.
startup.sh (Linux/Unix için), startup.bat (windows için)
8080Tomcat Servlet/JSP container
3.
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
Sorun var, çünkü 8080. port numarasıdolu.
java SunucuOrnekBir8080SunucuOrnekBir.java2.
Sorun yok, 8080. port numarasından dinlemeye başlar.
java SunucuOrnekBir8080SunucuOrnekBir.java1.
Original Hata (Eğer oluşmuş ise)
AçıklamaÇalışmasıDinlediği
port numarası
Uygulamanın adıSıra
![Page 561: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/561.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 17
Sunucu/İstemci Uygulamalar – II
• Java programla dilini kullanarak basit bir istemci uygulaması yazmak için sadece java.netpaketinin altındaki Socket sınıfını kullanmak yeterli olacaktır.
IstemciOrnekBir.java
![Page 562: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/562.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 18
Detaylar
baglanti kabul edildi: Socket[addr=/127.0.0.1,port=1267,localport=8080]
soket = Socket[addr=localhost/127.0.0.1,port=8080,localport=1267]
Aşağıdaki dörtlünün bir tekillik (uniqie) oluşturması gerekir.
• İstemcinin IP adresi• İstemcinin port numarası• Sunucunun IP adresi• Sunucunun port numarası
![Page 563: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/563.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 19
SunucuOrnekBir.java ve IstemciOrnekBir.java uygulamalarıarasındaki ilişki
![Page 564: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/564.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 20
Bloke Bağlantılar - I
• Bloke bağlantılar, G/Ç (Girdi/Çıktı-I/O-Input/Output) işlemi gerçekleştiği anda uygulamayı havada asılı bırakan bağlantılardır; bir başka deyişle uygulamayı bekleten bağlantılardır.
• SunucuOrnekBir.java ve IstemciOrnekBir.javaarasındaki ilişkinin yönlendiricisi istemci uygulamaydı çünkü istemci uygulama verileri 300ms yerine 1 saatte gönderirse sunucu uygulama böyle bir hareketin karşında boyun eğmek zorundadır.
SunucuOrnekIki.java
![Page 565: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/565.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 21
Bloke Bağlantılar - II
• SunucuOrnekIki.java uygulamamızın eksikliği ise kendisine gelen tüm istemcilere teker teker hizmet vermesidir.
• Örneğin iki istemci uygulama bu sunucuya bağlanmak isterlerse, bu istemci uygulamalardan önce biri, daha sonra ise öteki kabul edilecektir.
• Şimdi IstemciOrnekBir.java içerisindeki Thread.sleep yordamına 300 yerine 10000 yazıp bu istemci uygulamamızı baştan derleyip çalıştırırsak, istemci uygulamalarımız verileri 10000ms bekleterek sunucuya gönderecektir.
![Page 566: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/566.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 22
İş Parçacıkları (threads) İş Başında
• Sunucu uygulamalarının aynı anda birçok isteğe cevap verebilmesi için işin içerisine iş parçacıklarının da dahil edilmesi gerekir.
SunucuOrnekUc.java
![Page 567: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/567.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 23
![Page 568: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/568.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 24
Havuz
• Her istemci isteği için ayrı bir iş parçacığının oluşturulması çok lükse kaçar.
SunucuOrnekDort.javaIstemciOrnekIki.java
![Page 569: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/569.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 25
URL ve URLConnection Sınıfları
• URL sınıfının yaptığı başlıca görevlerden biri aynı tarayıcı(browse) gibi çalışmasıdır.
1. mini kurs notlarını bu adresten okuyabilirsiniz : http://www.firmaninadresi/minikurs/ders1250.html
2. mini kurs notlarını bu adresten okuyabilirsiniz :http://www.firmaninadresi/minikurs/ders559.html
SayfaBulucu.java
![Page 570: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/570.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 26
Veritabanı sunucularına bağlantı
• Veritabanı sunucularına hangiorganizasyonların ihtiyacı olabilir ?• Bankalar• Hastaneler• Üniversiteler• Devlet Daireleri
• Bankalar, müşteri bilgileri• Hastaneler, hasta kayıtlarını• Üniversiteler, öğrenci bilgilerini• Devlet Daireleri, planlama bilgileri, vatandaş bilgileri..gibi
![Page 571: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/571.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 27
SQL
• SQL (Standart Query Language- Standart Sorgulama Dili), veritabanlarını oluşturmak, kontrol etmek ve yönetmek için kullanılan ve 1992 yılında standart hale getirilmiş olan bir dildir.
• Veritabanı, kalıcı verileri tablo şeklinde saklayan sistem• Tablo, satırlardan oluşan yapı• Satır, kolonlardan oluşan yapı• Kolon, isim, tip ve değere sahip olan tek bir veri yapısı.
![Page 572: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/572.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 28
JDBC (Java DataBase Connectivity-Java VeritabanıBağlanılabilirliği)
• Her veritabanı sunucusunun belli bir üreticisi vardır. • Şu an için kullanılan en yaygın veritabanı sunucularından
bir kaçı aşağıdaki gibidir.
1. MySQL : 3306 port numarasından hizmet verir.2. Oracle : 1521 port numarasından hizmet verir.3. MSSQL : 1433 port numarasından hizmet verir.
![Page 573: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/573.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 29
Genel Bakış
![Page 574: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/574.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 30
MySQL için gerekli olanlar...
• MySQL açık kaynaklı bir projedir. Bu veritabanı sunucusu GPL (GNU General Public License) lisansı altında bedava kullanılabileceği gibi, belirli bir ücret karşılığında ticari lisans altında da kullanılabilir.
• Sadece MySQL değil tüm veritabanı sunucularına ait sürücüleri (driver) bulabilmek için http://www.java.sun.com/products/jdbc/ adresi ziyaret edilebilir.
![Page 575: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/575.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 31
CLASSPATH ayarları
• Java uygulamalarının MySQL veritabanına sunucusuna bağlanabilmesi için sistemimizde iki şeyin olması gerekir. – MySQL veritabanı– MySQL sürücüsü
Linux
$ setenv CLASSPATH /kurulum/dizini/mm.mysql.jdbc-[versiyon]:$CLASSPATH
Windows
C:\> set CLASSPATH=\kurulum\dizini\mm.mysql.jdbc-[versiyon];%CLASSPATH%
VeritabaniBaglantiTestBir.java
![Page 576: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/576.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 32
Sürücünün(Driver) yapısı
• > jar -xvf mm.mysql-2.0.10-bin.jar
![Page 577: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/577.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 33
Bağlantı
VeritabaniBaglantiTestIki.java
![Page 578: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/578.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 34
MUSTERI tablosuna yeni bir kayıtın eklenmesi
• executeUpdate() ve executeQuery()yordamlarının arasındaki farklar nelerdir ?
VeritabaniBaglantiTestUc.java
#> java VeritabaniBaglantiTestUc ONUR AY "BUYUK SITE B BLOK KAT 5 NO 18" "0 262 11112222" "6606645" "[email protected]" "IZMIT" "KURUCESME"
![Page 579: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/579.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 35
MUSTERI tablosundaki mevcut kayıtların değiştirilmesi ve silinmesi
VeritabaniBaglantiTestDort.java
VeritabaniBaglantiTestBes.java
![Page 580: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/580.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 36
Sorular ...
![Page 581: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/581.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1
Hata Ayıklamanın Ötesi...(Assertion)
![Page 582: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/582.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 2
Assertion
• Assertion kelimesinin Türkçe karşılığı iddia, birşeylerin doğruluğunu ispat etmek anlamlarına gelir.
• Assertion özelliği, J2SE 1.4 versiyonu ile birlikte gelen yeni bir özelliktir.
• Bu yeni gelen özellik sayesinde hata ayıklama(debugging) ve yazılan kodların doğruluğunuispat etme süreçleri çok daha basiteindirgenmektedir.
![Page 583: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/583.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 3
Hata Ayıklama (Dubugging) - I
• Hata ayıklamak (debugging) ne demek ? • Hata ayıklama işlemi, hatanın
algılanmasından sonra gelen bir süreçtir ve süreci uygulamak için bir çok yöntem bulunur.
• En bilindik yöntemlerden biri hatalı olduğuna inanılan kod yığınlarının arasına System.out.println() komutları serpiştirilerek uygulamanın akışı takip edilmeye çalışılır.
![Page 584: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/584.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 4
Hata Ayıklama (Dubugging) - II
![Page 585: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/585.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 5
Hata Ayıklama (Dubugging) - III
• Diğer yöntem ise "Java Platform Debugger Architecture" mimarisini kendi içerisine entegre etmiş bir editör ile çalışmaktır.– Eclipse – VisualSlickEdit – JBuilder – CodeGuide – gibi...
![Page 586: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/586.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 6
Assertion özelliğini kullanmak
• Assertion özelliğini yazılan kodların içerisine yerleştirmek çok kolaydır.
• Assertion, koşullar gerçekleşmediği zaman hata fırlatan bir mekanizmadır.
• Assertion özelliğini kullanmanın iki yolu vardır.
![Page 587: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/587.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 7
Assertion özelliğini kullanmak – Birinci Yol
• Birinci yol sadece basit bir ifadeden oluşur.
assert ifade ;
Yukarıda belirtilen ifade true ise sorun çıkmaz ama şayet bu ifade false ise sorun var demektir ve hata (AssertionError) fırlatılır.
![Page 588: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/588.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 8
Örnek - Birinci Yol
Yukarıdaki assert ifadesinin kullanılmasındaki amaç, Asinifisınıfı tipindeki a referasının acaba Asinifi sınıfına ait bir nesneye mi bağlandığını kontrol etmekdir.
![Page 589: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/589.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 9
Assertion özelliğini kullanmak – İkinci Yol
assert ifade_1 : ifade_2;
Yukarıdaki ifadenin anlamı şudur: Eğer ifade_1 false değeri geri dönerse, ifade_2 deki değeri hata olarak fırlat.
![Page 590: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/590.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 10
Örnek - İkinci Yol
• Bu gösterimimizde a referansı eğer Asinifi tipinde bir nesneye bağlanmamış ise yeni bir AssertionError tipinde bir hata fırlatılacaktır.
• Yanlız buradaki fark, bu AssertionError sınıfının yapılandırıcısına bizim bazı bilgiler gönderiyor olmamızdır.
![Page 591: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/591.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 11
Assertion ve derleme (compile) - I
• Assertion özelliği Java programlama diline yeni bir anahtar kelime kazandırmıştır.
• Java programlama dili daha evvelden yazılmışdiğer uygulamalar için bir tehlike oluşturabilir.
• Bu tehlike geriye doğru uyumluluğun kalkması(backwards compatibility) yönündedir.
![Page 592: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/592.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 12
Assertion ve derleme (compile) - II
• Yukarıdaki örneğimiz henüz assertion özelliği ortalarda yokken yazılmış olsun.
• Bu uygulamamızda, kullanıcıdan gelen ilk değeri Stringtipinde olan ve assert isimli bir referansa bağlanmaktadır.
• Yazılan Java kodlarının içerisinde assert anahtar kelimesi referans adı olarak geçiyorsa ve assertion özelliğini kullanmak istemiyorsanız, kısacası ben eski usül çalışmak istiyorum diyorsanız bazı ayrıntılara dikkat etmeniz gerekir.
![Page 593: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/593.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 13
Assertion ve derleme (compile) - III
Assertion özelliğini kullanmamak için...> javac -source 1.3
Assertion özelliğini kullanmak için...> javac -source 1.4
![Page 594: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/594.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 14
Assertion özelliğini nasıl kontrol ederim ? - I
• Assertion özelliğinin kıymetli kılan en önemli faktör, bu özelliğin çalışma esnasında kapatılıp açılabiliyor olmasıdır.
• Örneğin bir uygulamanın geliştirilmesi esnasında assertion özelliği açık tutulabilir.
• Tahmin edilebileceği üzere assertion özelliğin açık tutulması belli bir performans kaybına sebebiyet verecektir.
• Fakat uygulamanın gelişimi tamamlandığı zaman assertion özelliği çalışma anında kapıtılarak (biraz sonra gösterilecek) bu performans kaybı engellenmiş olur.
![Page 595: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/595.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 15
Assertion özelliğini nasıl kontrol ederim ? - II
• AssertTestBir.java uygulamasını javac -source 1.4komutu ile derledikten sonra aşağıdaki gibiçalıştırılırsa...
> java AssertTestBir
> java -ea AssertTestBir
![Page 596: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/596.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 16
Assertion özelliğini nasıl kontrol ederim ? - III
> javac -source 1.4 AssertTestIki.javaÖnce derleme (compile) aşaması
Sonra çalıştırma (run) aşaması
> javac -ea AssertTestIki 5
![Page 597: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/597.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 17
Paket kontrolleri
• Şimdi aşağıdaki gibi bir yapımız olsun.
![Page 598: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/598.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 18
Tüm paketler için assertion özelliği açık
• AssertPaketTest sınıfının içerisindeki tüm paketve bunlar içerisindeki sınıflar için assertionözelliğinin açık (etkin) olması isteniyorsaaşağıdaki komutun yazılması yeterli olacaktır.
> java -ea AssertPaketTest
![Page 599: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/599.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 19
Toplama işlemlerinde bir hata var sanki....
• Assertion özelliğinin sadece com.kodcu.math.Toplama sınıfı için açılmak istenirse.
> java -ea:com.kodcu.math.Toplama AssertPaketTest
![Page 600: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/600.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 20
Sadece com.kodcu.math.* altındaki tüm sınıflar içinassertion özelliği açmak istersek....
> java -ea:com.kodcu.math AssertPaketTest
> java -ea:com.kodcu.math... AssertPaketTest
![Page 601: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/601.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 21
Assertion özelliği açık mı ? Kapalı mı ?
Yukarıdaki sınıfımızın yapılandırıcısındaki assertanahtar kelimesinin olduğu satıra yakından bakacak olursak, burada bir karşılaştırma değil bir atama olduğunu görürüz.
![Page 602: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/602.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 22
AssertionError istisnalarını yakalamak
![Page 603: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/603.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 23
Kural : Komut satırından girilmiş olan verilerin kontrolü içinassertion özelliği kullanılmamalıdır.
• Assertion özelliği, uygulamanın kendi içerisindetutarlılığını sağlamak için kullanılmalıdır; kullanıcınınuygulama ile olan tutarlılığını sağlamak için değil.
![Page 604: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/604.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 24
Kural : Assertion özelliği, if ( koşul )..... yerinekullanılmamalıdır.
• Kritik nokta, çalışma anında assertion özelliğinin kapatılması ile göz ardı edilir.
![Page 605: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/605.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 25
Kural : public erişim belirliyicisine sahip olan yordamlara gönderilen parametreleri düz şekilde kontrol etmekamacıyla assertion özelliği kullanılmamalıdır.
![Page 606: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/606.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 26
Kural : Kullanıcıdan gelen verilerin mantık çercevesindeolup olmadığı assertion özelliği ile kontrol edilmemelidir.
![Page 607: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/607.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 27
Kural : Uygulamanın genel akışında assertion özelliğinin bir rolü olmamalıdır.
![Page 608: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/608.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 28
Kural : private erişim belirliyicisine sahip olan yordamlaragönderilen parametrelerin kontrolünde assertion özelliğikullanılabilir.
• private erişim belirleyicisine sahip olanyordamlar dışarıdan ulaşılamaz.
• Bu tip yordamlar işlerin esas yapıldığı veyanlış parametre gelmesinin affedilemeyeceğiyerlerdir.
![Page 609: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/609.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 29
Kural : Olmaz ise olmaz durumlarını yakalamak içinassertion özelliği kullanılabilir.
![Page 610: Java ile Nesneye Yönelik Programlamaw3.balikesir.edu.tr/~ikucukkoc/lectures/EMM3115/JAVA_altintas.pdf · JavaMail API Java Mesajlaşma ... JavaServer Faces JavaServer Pages Java](https://reader033.vdocuments.site/reader033/viewer/2022052305/5a99c30c7f8b9ad96f8d8833/html5/thumbnails/610.jpg)
© Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 30
Sorular ...