Professional Documents
Culture Documents
Hatalarn sebepleri...
Hatalarn sebepleri
Bir nesnenin balang durumuna getirilme ilemi (initialization), bir sanatnn sahneye kmadan evvelki yapt son hazrlk gibi dnlebilir.
Oluturulacak olan nesne kullanma sunulmadan evvel baz bilgilere ihtiya duyabilir veya baz ilemleri gerekletirmesi gerekebilir (JDBC, konfigurasyon dosyas yklenmesi gibi).
Yaplandrclar (Constructor)
Yaplandrclar ierisinde nesne oluturulmadan nceki son hazrlklar yaplr. Yaplandrclar normal yordamlardan (method) farkldrlar. Yaplandrclar, Java tarafndan otomatik olarak arlrlar. Karmza kan iki problem Java Yaplandrcnn ismini nasl bilecektir ? Yaplandrcnn ismi baka yordamlarn isimleriyle akmamaldr.
Problemin zm
Bu problemlere ilk zm C++ dilinde bulunmutur. Yaplandrcnn ismi ile snf ismi bire bir ayn olmaldr. Bylece Java, yaplandrcnn ismini nceden tahmin edebilecektir. sim karkl minimuma indirgenmi olur.
YapilandirciBasitOrnek.java
Altu B. Altnta 2003 Java ve Yazlm Tasarm - Blm 3 6
Yaplandrclar (Constructor) - 2
Yaplandrclara parametreler aktarlabilir. Yaplandrc ierisinden herhangi bir ekilde return ifadesi ile deer dndrlemez. (return 5, return true gibi) Yaplandrclardan kmak istiyorsak sadece return yazlmas yeterlidir...
YapilandirciBasitOrnekVersiyon2.java
Altu B. Altnta 2003 Java ve Yazlm Tasarm - Blm 3 7
yi bir uygulama yazmak her zaman iyi bir takm almas gerektirir. Uygulamalardaki yordam (method) isimlerinin, yordam ierisinde yaplan i ile uyum gstermesi nemlidir. Bu sayade bir baka kii sadece yordam ismine bakarak, ierisinde oluan olaylar anlayabilme ansna sahiptir.
rnek - 1
Elimizde bulunan muzik resim text formatndaki dosyalar amak iin yordamlar yazmak istersek, bu yordamlarn isimlerinin ne olmas gerekir ?
rnek - 1 (devam)
Yordam isimleri olarak muzik dosyas iin muzikDosyasiAc() resim dosyas iin resimDosyasAc() text dosyas iin textDosyasAc()
10
rnek - 1 (devam)
MetodOverloadingDemo1.java
11
Java ayn isimde olan yordamlar (overloaded methods) nasl ayrt edebilmektedir ? Her yordamn kendisine zel/tek parametresi veya parametre listesi olmak zorundadr.
MetodOverloadingDemo2.java
12
Akllara yle bir soru gelebilir : "Ada yordamlar dn tiplerine gre ayrt edilebilir mi ? " void toplamaYap(); double toplamaYap(); double y = toplamayap() ; toplamayap() ;
Altu B. Altnta 2003
// sorun var
Java ve Yazlm Tasarm - Blm 3 13
Eer uygulamamza herhangi bir yaplandrc koymazsak Java bu ilemi kendi otomatik olarak yapmaktadr.
Varsaylan yaplandrclar (parametresiz yaplandrclar, default constructor veya "no-args" constructor) ii bo bir yordam olarak dnlebilir.
14
rnek - 2
class Kedi { int i; } public class VarsayilanYapilandirici { public static void main(String[] args) { //Varsaylan yaplandrc arld Kedi kd = new Kedi(); } }
15
rnek - 2 (devam)
class Kedi { int i; /* varsaylan yplandrc. Bu yaplandrcy eer biz koymasaydk Java bizim yerimize zaten koyard */ public Kedi() {} } public class VarsayilanYapilandirici { public static void main(String[] args) { // varsaylan yplandrc Kedi kd = new Kedi(); } }
16
Bynn Bozulmas
Eer kendimiz yaplandrc yazarsak, Java bizden varsylan yaplandrc desteini ekecektir. Kendimize ait zel yaplandrclar tanmlarsak Javaya "Ben ne yaptm biliyorum, ltfen karma" demi oluruz.
VarsayilanYapilandiriciVersiyon2.java
17
this anahtar kelimesi, iinde bulunulan nesneye ait bir referans dner. Bu referans sayesinde nesnelere ait global alanlara erime frsat buluruz.
TarihHesaplama.java
18
Yumurta.java
19
Yaplandrc ierisinden dier bir yaplandrcy arrken this ifadesi her zaman ilk satrda yazlmaldr. Her zaman yaplandrclar ierisinden this ifadesi ile baka bir yaplandrc arlr. Yaplandrclar iersinde birden fazla this ifadesi ile baka yaplandrc arlamaz.
Tost.java
Altu B. Altnta 2003 Java ve Yazlm Tasarm - Blm 3 20
Ekran kts
Tost(int sayi ,String malzeme) Tost(int sayi) parametresiz yapilandirici Tost sayisi =5 malzeme =Sucuklu
21
Sadece global olan alanlara statik zelliini verebiliriz. Yerel deikenlerin statik olma zellikleri yoktur. Statik alanlar, bir snfa ait olan tm nesneler iin ayn bellek alannda bulunurlar.
StatikDegisken.java
Altu B. Altnta 2003 Java ve Yazlm Tasarm - Blm 3 22
Ku bak grnt
23
Statik Yordamlar (methods) Statik yordamlar (snf yordamlar), nesnelerden bamsz yordamlardr. Statik bir yordam armak iin herhangi bir snfa ait nesne oluturma zorunluluu yoktur. Statik olmayan yordamlardan (nesneye ait yordamlar), statik yordamlar rahatlkla arlabilmesine karn statik yordamlardan nesne yordamlarn dorudan aramayz.
StatikTest.java
Altu B. Altnta 2003 Java ve Yazlm Tasarm - Blm 3 24
Bir yordamn statik mi yoksa nesne yordam m olacana neye gre karar vereceiz?
MutluAdam.java (*)
25
Statik yordamlar
Statik yordamlarlar atomik iler iin kullanlrlar. Uygulamalarnzda ok fazla statik yordam kullanyorsanz, tasarmnz batan bir kez daha gzden geirmeniz tavsiye olunur.
Toplama.java
26
Temizlik lemleri: finalize() ve p toplayc (Garbage Collector) Java dilinde, C++ dilinde olduu gibi oluturulan nesnelerimizi ileri bitince yok etme zgrl kodu yazan kiinin elinde deildir. deildir Bir nesnenin gerekten p olup olmadna karar veren mekanizma p toplaycsdr (garbage collector).
27
finalize() yordam Akllarda tutulmas gereken dier bir konu ise eer uygulamanz ok fazla sayda p nesnesi (kullanlmayan nesne) retmiyorsa, p toplaycs (garbage collector) devreye girmeyebilir. Bir baka nemli nokta; System.gc() ile p toplaycsn tetiklemezsek , p toplaycsnn ne zaman devreye girip p haline dnm olan nesneleri bellekten temizlenecei bilinemez.
28
System.gc()
Temizle.java Temizle2.java
29
30
p toplaycsnn temel grevi, kullanlmayan nesneleri bularak bunlar bellekten silmektir. Sun Microsystems tarafndan tantlan Java HotSpot VM (Virtual Machine) sayesinde heap blgesindeki nesneler nesillerine gre ayrlmaktadr. Eski Nesil Yeni Nesil
31
Nesnelerin bellekten silinmesi grevi kodu yazan kiiye ait deildir. Bu grev p toplaycsna aittir. Java 1.3.1 ve daha sonraki Java versiyonlar iki noktay garanti eder;
Kullanlmayan nesnelerin kesinlikle bellekten silinmesi. Nesne bellek alannn paralanmasn engellemek ve bellein sktrlmas.
32
p toplama teknikleri
Eski yntem
Referans Sayma Yntemi
Yeni Yntemler
Kopyalama yntemi (Copy) aretle ve spr yntemi (Mark and Sweep) Artan (sra) yntem (Incremental)
33
34
Heap blgesine minimum veya maksimum deerleri vermek iin -Xms veya -Xmx parametlerini kullanrz.
35
Birazdan gsterilecek olan eklimizde, canl nesneler krmz renk ile ifade edilmitir.
36
Aama 1
37
Aama 2
38
Aama 3
39
40
HeapGosterim.java
41
Uygulamann kts
42
Java uygulamalarnda tr deiken eiti bulunur: Yerel (local) deikenler. Nesneye ait global alanlar. Snfa ait global alanlar (statik alanlar).
43
rnek - 3
DegiskenGosterim.java
44
Yerel Deikenler
int i ; i++; // ! Hata ! ilk deger verilmeden zerinde ilem yaplamaz return i ;
}
45
IlkelTipler.java
46
NesneTipleri.java
47
nemli Nokta: Statik olan alanlara sadece bir kere deer atanr.
IlkelTiplerStatik.java
48
StatikNesneTipleri.java
49
KarisikTipler.java
50
Nesneye ait global alanlara ilk deer hemen verilir, hatta yaplandrcdan bile nce... Alanlarn konumu hangi srada ise ilk deer verme sralamas da ayn srada olur.
Defter.java
51
Statik alanlar snflara ait olan alanlardr ve statik olmayan (nesneye ait alanlar) alanlara gre ilk deerlerini daha nce alrlar.
Kahvalti.java
52
StatikTopluDegerAtama.java
53
NonStatikTopluDegerAtama.java
54
Diziler (Arrays)
Diziler nesnedir. Dizi nesnesi, iinde belli sayda eleman bulundurur. Dizi ierisindeki ilk elemann konumu 0 'dan balar, son elemann yeri ise n-1 'dir.
55
; ; ; ;
// // // //
double tipindeki dizi double tipindeki dizi float tipindeki dizi Object tipindeki dizi
56
Dizileri oluturmak
= new double[20] ; = new double[20]; = new float [14]; = new Object[17]; = new String[25] ;
57
58
DiziElemanlariGosterimBir.java
59
DiziSiralama.java
60
DizilerinKopyalanmasi.java
61
ok Boyutlu Diziler
int[][] t1 = { { 1, 2, 3, }, { 4, 5, 6, }, };
62
int [][] t1 = new int [3][4] ; int [][] t1 = new int [][4] ; //!Hata!
CokBoyutluDizilerOrnekBir.java
63
64
CokBoyutluDiziler.java
65
66
Sorular ...
67