"Java ve 
Yazılım Tasarımı
"

 

Altuğ B. Altıntaş

Papatya Yayınevi
www.papatya.gen.tr

 

"Java ve Yazılım Tasarımı" kitabının ilk baskısı, mayıs 2003, ikinci baskısı ekim 2005 tarihinde yapılmıştır.
ISBN: 975-6797-40-1. 
Kitap içerisinde yer alan kaynak kodları indirmek için buraya tıklayınız...

Satın almayı düşünüyorsanız
www.kitapyurdu.com
http://www.ideefixe.com/  adresleri ziyaret edilebilir.

Sunumlar

Bölüm-1 Bölüm-2 Bölüm-3 Bölüm-4 Bölüm-5
Bölüm-6 Bölüm-7 Bölüm-8 Bölüm-9 Bölüm-10
Bölüm-11 Bölüm-12 Bölüm-13 Bölüm-14 -

 

 

İÇİNDEKİLER

 

 

 

 

Önsöz                                                                                                   15

Bölüm 1.  Java nedir?                                                                       17

1.1. Java ile Ne Yapılabilir?                                                                                                     18

1.2. Java Nasıl Çalışır?                                                                                                             18

1.3. Java Sınıflaması                                                                                                                 20

1.3.1. Standart Java                                                                                                               20

1.3.2. Komple Java                                                                                                                21

1.3.3. Gömülü Cihazlar İçin Java                                                                                          21

1.3.4. XML Teknolojileri                                                                                                       22

1.3.5. Diğer Teknolojiler                                                                                                       22

1.4. Java’nın Gelişim Evreleri                                                                                                  23

1.5. Java’nın Başarılı Olmasındaki Anahtar Sözcükler                                                        23

1.6. Çöp Toplayıcı                                                                                                                    24

1.7. Java’da Açıklama Satırı                                                                                                    24

1.8. Herşey Nesne                                                                                                                    24

1.9. Sınıf Nedir? Nesne Nedir?                                                                                               26

1.10. Depolanan Veriler Nerede Durmaktadır?                                                                     27

1.11. Temel Tipler                                                                                                                     27

1.12. Geçerlilik Alanı                                                                                                                28

1.13. Nesnelerin Geçerlilik Alanları                                                                                        29

1.14. Yeni Sınıf Oluşturma                                                                                                       29

1.15. Alanlar ve Yordamlar                                                                                                      30

1.16. İlk Java Programımız                                                                                                       35

1.17. Java Kurulumu, Derleme ve Çalıştırma                                                                        36

1.17.1. Java’nın Unix/Linux İşletim Sistemlerinde Kurulumu                                          37

1.17.2. Java’nın Windows İşletim Sisteminde Kurulumu                                                38

1.17.3. Java Kodlarını Derleme ve Çalıştırma                                                                     39

1.18. args[ ] Nedir? Ne İşe Yarar?                                                                                     39

1.19. Javadoc = Yorum İle Dokümantasyon Oluşturmak                                                   41

1.19.1. Söz Dizimi Kuralları                                                                                                   41

1.19.2. Gömülü HTML                                                                                                          41

1.19.3. Doc Tag                                                                                                                      42

1.19.3.1. Ortak Kullanılan Yorum Ekleri                                                                           42

1.19.3.2. Sınıflara Ait  JavaDoc Etiketleri                                                                       43

1.19.3.3. Global Değişkenlere Ait JavaDoc Etiketleri                                                   43

1.19.3.4. Yordamlara Ait JavaDoc Etiketleri                                                                   43

1.19.4. Dokümantasyon Örneği                                                                                           44

1.20. Sınıf İsimleri ve Yordam İsimleri                                                                                    45

1.21. Dosya İsimleri                                                                                                                  45

1.22. Özet                                                                                                                                   46

1.23. Sorular                                                                                                                              46

Bölüm 2.   JAVADA PROGRAM DENETİMİ VE OPERATÖRLER      47

2.1. Atamalar                                                                                                                             47

2.1.1. Temel Tiplerde Atama                                                                                                47

2.1.2. Nesneler ve Atamalar                                                                                                 48

2.2. Yordamların Çağrılması                                                                                                    50

2.3. Java Operatörleri                                                                                                               52

2.3.1. Aritmetik Operatörler                                                                                                  53

2.3.1.1. Dönüştürme İşlemi                                                                                               55

2.3.1.2. Bir Artırma ve Azaltma                                                                                         56

2.3.2. İlişkisel Operatörler                                                                                                     57

2.3.3. Mantıksal Operatörler                                                                                                59

2.3.4. Bit Düzeyinde Operatörler                                                                                         60

- VE İşlemi/Operatörü                                                                                                        61

- VEYA İşlemi/Operatörü                                                                                                  61

- YA DA İşlemi/Operatörü                                                                                               62

- TÜMLEME İşlemi/Operatörü                                                                                        62

- Öteleme Operatörleri                                                                                                       63

2.3.5. Atama Operatörleri                                                                                                     64

2.3.6. String Operatörü                                                                                                         66

2.3.7. Nesnelerin Karşılaştırılması                                                                                       66

2.4. Kontrol Deyimleri/İfadeler                                                                                               68

2.4.1. Döngü Deyimleri                                                                                                         68

- while Döngü Deyimi                                                                                                     68

- do-while Döngü Deyimi                                                                                              69

- for Döngü Deyimi                                                                                                          70

2.4.2. Karşılaştırma Deyimleri                                                                                              72

- if-else Deyimi                                                                                                              72

- switch Deyimi                                                                                                                75

2.4.3. Dallandırma Deyimleri                                                                                                77

- break Deyimi                                                                                                                  77

- continue Deyimi                                                                                                           79

- return Deyimi                                                                                                                80

2.5. Özet                                                                                                                                     81

2.6. Sorular                                                                                                                                81

 

Bölüm 3.   NESNELERİN BAŞLANGIÇ DURUMU VE TEMİZLİK           83

3.1. Başlangıç Durumuna Getirme İşlemi ve Yapılandırıcılar                                              83

3.1.1. Bir İsmin Birden Çok Yordam İçin Kullanılması-Adaş Yordamlar                        85

- Adaş Yordamlar Nasıl Ayırt Edilir?                                                                              86

- Dönüş Değerlerine Göre Adaş Yordamlar Ayırt Edilebilir mi?                                 87

3.1.2. Varsayılan Yapılandırıcılar                                                                                         88

- Büyünün Bozulması                                                                                                        88

3.1.3. this Anahtar Sözcüğü                                                                                              89

- Yordam Çağrımlarımda this Kullanımı                                                                        91

- Bir Yapılandırıcıdan Diğer Bir Yapılandırıcıyı Çağırmak                                            92

3.1.4. Statik Alanlar                                                                                                               93

3.1.5. Statik Yordamlar                                                                                                          94

3.1.6. Bir Yordamın Statik mi Yoksa Nesne Yordamı mı Olacağı

Neye Göre Karar Verilecek?                                                                                        95

3.2. Temizlik İşlemleri: finalize() ve Çöp Toplayıcı                                                      97

3.2.1. finalize() Yordamı                                                                                                97

3.2.2. Bellekten Hangi Nesneler Silinir?                                                                             100

3.2.3. finalize() Yordamına Güvenilirse Neler Olur?                                                  102

3.2.4. Çöp Toplayıcısı Nasıl Çalışır?                                                                                   103

- Eski Yöntem                                                                                                                     103

- Yeni Yöntemler                                                                                                                104

3.2.5. Heap Bölgesi                                                                                                               104

3.2.6. Yeni Nesil                                                                                                                     105

3.2.7. Eski Nesil                                                                                                                      105

3.2.8. Heap Bölgesi Boyutları Nasıl Denetlenir?                                                              105

3.2.9. Kopyalama Yönteminin Gösterimi                                                                            107

3.2.10. İşaretle ve Süpür Yönteminin Gösterimi                                                                108

3.2.11. İlk Değerlerin Atanması                                                                                           109

3.2.12. Yerel Değişkenler                                                                                                      110

3.2.13. Nesnelere Ait Global Alanlar                                                                                  110

3.2.13.1. Nesnelere Ait Global Alanların Temel Bir Tip Olması Durumunda             110

3.2.13.2. Nesnelere Ait Global Alanların Sınıf Tipi Olması Durumunda                     111

3.2.14. Sınıflara Ait Global Alanlar                                                                                      112

3.2.14.1. Sınıflara Ait Global Alanların Temel Bir Tip Olması Durumunda                112

3.2.14.2. Sınıflara Ait Global Alanların Sınıf Tipi Olması Durumunda                        113

3.2.15. İlk Değerler Atanırken Yordam Kullanımı                                                              113

3.2.16. İlk Değer Alma Sırası                                                                                                114

3.2.17. Statik ve Statik Olmayan Alanların Değer Alma Sırası                                        115

3.2.18. Statik Alanlara Toplu Değer Atama                                                                       117

3.2.19. Statik Olmayan Alanlara Toplu Değer Atama                                                      117

3.3. Diziler                                                                                                                                  118

3.3.1. Dizi Türündeki Referanslar                                                                                        118

3.3.2. Dizileri Oluşturmak                                                                                                      119

3.3.2.1. Temel Türlerden Oluşan Bir Dizi                                                                        119

3.3.2.2. Nesnelerden Oluşan Bir Dizi                                                                               120

3.3.3. Dizi Boyu/Uzunluğunun Değiştirilmesi                                                                   121

3.3.4. Dizi Elemanlarına Erişim                                                                                             121

3.3.5. Dizi Elemanlarını Sıralama                                                                                          123

3.3.6. Dizilerin Dizilere Kopyalanması                                                                                124

3.3.7. Çok Boyutlu Diziler                                                                                                     125

3.4. Özet                                                                                                                                     129

3.5. Sorular                                                                                                                                130

 

Bölüm 4.   Paket Erişimleri                                                                                  131

4.1. Paket                                                                                                                                   131

4.2. Varsayılan Paket                                                                                                                132

4.3. Paket Oluşturma                                                                                                                134

4.4. Classpath Ayarları                                                                                                           135

4.4.1. Önemli Nokta                                                                                                               137

4.5. Çakışma                                                                                                                              138

4.6. Paket İçerisindeki Tek Başına Yürütülebilir Uygulamaları Çalıştırmak                      139

4.7. JAR Dosyaları                                                                                                                   141

4.7.1. JAR Dosyası İçersindeki Bir Uygulamayı Çalıştırmak                                           143

4.8. Erişim Belirleyiciler                                                                                                            143

4.8.1. friendly                                                                                                                    143

4.8.1.1. Varsayılan Paketlerde Erişim                                                                               145

4.8.2. public                                                                                                                         146

4.8.3. private                                                                                                                       147

4.8.4. protected                                                                                                                  148

4.9. Kapsüllenme                                                                                                                      151

4.10. Genel Bir Bakış                                                                                                                152

4.11. Özet                                                                                                                                   154

4.12. Sorular                                                                                                                              154

 

Bölüm 5.   SINIFLARIN TEKRAR KULLANILMASI                                          155

5.1. Komposizyon                                                                                                                    155

5.2. Kalıtım                                                                                                                                 158

5.2.1 Gizli Kalıtım                                                                                                                   161

5.2.2. Kalıtım ve Başlangıç Değeri Alma Sırası                                                                 163

5.2.3. Parametre Alan Yapılandırıcılar ve Kalıtım                                                              164

5.3. Komposizyon mu? Kalıtım mı?                                                                                        166

5.4. İptal Etmek                                                                                                                         168

5.4.1. Sanki İptal Ettim Ama...                                                                                              171

5.4.2. İptal Etmek ve Adaş Yordamların Birbiriyle Karıştırılması                                    173

5.5. Yukarı Çevrim                                                                                                                    174

5.6. Final Özelliği                                                                                                                      175

5.6.1. Global Alanlar ve Final Özelliği                                                                              175

5.6.2. Final Parametreler                                                                                                     177

5.6.3. Boş Final                                                                                                                   177

5.6.4. Final Yordamlar                                                                                                        178

5.6.5. Private ve Final                                                                                                        179

5.6.6. Final Sınıflar                                                                                                              179

5.7. Kalıtım ve İlk Değer Alma Sırası                                                                                     180

5.8. Özet                                                                                                                                     181

5.9. Sorular                                                                                                                                182

 

Bölüm 6.   POLİMORFİZM                                                                                              183

6.1. Ayrıntılar                                                                                                                            183

6.2. Geç Bağlama                                                                                                                      185

6.3. Final Deyimi ve Geç Bağlama                                                                                       188

6.4. Neden Polimorfizm?                                                                                                          189

6.5. Genişletilebilirlik                                                                                                                192

6.6. Soyut Sınıflar ve Yordamlar                                                                                             195

6.6.1. Niye Soyut Sınıf ve Yordamlara İhtiyaç Duyulur?                                                 197

6.7. Yapılandırıcılar İçersindeki İlginç Durumlar                                                                  199

6.8. Kalıtım ve Yukarı Çevrim                                                                                                  201

6.9. Aşağıya Çevrim                                                                                                                 203

6.10. Özet                                                                                                                                   207

6.11. Sorular                                                                                                                              207

 

Bölüm 7.   Arayüzler ve Dahili Sınıflar                                      209

7.1. Arayüz                                                                                                                                209

7.1.1. Birleştiricilik                                                                                                                 209

7.1.2. Arayüz ve Soyut Sınıflar                                                                                            212

7.1.3. Arayüz İle Çoklu Kalıtım                                                                                            214

7.1.4. Arayüzlerin Kalıtım Yoluyla Genişletilmesi                                                             217

7.1.5. Çakışmalar                                                                                                                    219

7.1.6. Arayüzün İçerisinde Alan Tanımlama                                                                     220

7.6.1.1. Arayüzün İçerisinde Tanımlanmış Alanlara

 Başlangıç Değerleri Verilmesi                                                                             221

7.1.7. Genel Bakış                                                                                                                  222

7.1.8. Dahili Arayüzler                                                                                                          224

7.1.8.1. Sınıflarda Tanımlanan Dahili Arayüzler                                                             225

7.2. Dahili Sınıflar                                                                                                                     227

7.2.1. Dahili Üye Sınıflar                                                                                                       227

7.2.1.1. Dahili Üye Sınıflar ve Erişim                                                                                228

7.2.1.2. Dahili Üye Sınıflar ve Bunları Çevreleyen Sınıflar Arasındaki İlişki              230

7.2.1.3. Statik Dahili Üye Sınıflar                                                                                      232

7.2.1.4. Statik Dahili Üye Sınıflar ve Statik Yordamlar                                                  235

7.2.1.5. Statik ve Final Alanlar                                                                                          235

7.2.1.6. Dahili Üye Sınıflar ve Yapılandırıcılar                                                                236

7.2.1.7. İç İçe Dahili Üye Sınıflar                                                                                      237

7.2.1.8. Soyut Dahili Üye Sınıflar                                                                                     237

7.2.1.9. Türetilebilen Dahili Üye Sınıflar                                                                         240

7.2.2. Yerel Sınıflar                                                                                                                 241

7.2.3. İsimsiz Sınıflar                                                                                                              244

7.2.4. Fiziksel İfade                                                                                                                248

7.2.5. Neden Dahili Sınıflar?                                                                                                 249

7.3. Özet                                                                                                                                     251

7.4. Sorular                                                                                                                                251

 

Bölüm 8.   AYRICALIKLI (İSTİSNA)  DURUMLAR                                              253

8.1. İstisnalara Giriş                                                                                                                  253

8.1.1. İstisna Nasıl Oluşabilir?                                                                                             254

8.1.2. Başka İstisnalar Neler Olabilir?                                                                                 255

8.1.3. İstisna Yakalama Mekanizması                                                                                 255

8.1.4. İstisna İfadeleri                                                                                                            257

8.1.5. İstisna Tip Hiyerarşisi                                                                                                268

8.1.5.1. Diğer İstisna Tiplerini Yakalamak                                                                       269

8.1.5.2. RuntimeException İstisna Tipleri                                                                      269

8.1.6. İstisna Mesajları                                                                                                          270

8.1.7. Kendi İstisnalarımızı Nasıl Oluşturabiliriz?                                                              277

8.1.8. finally Bloğu                                                                                                           281

8.1.8.1. return ve finally Bloğu                                                                                285

8.1.8.2. Dikkat System.exit();                                                                                    286

8.1.9. İstisnanın Yeniden Fırlatılması                                                                                  287

8.1.10. printStackTrace() ve Hata Mesajlarının Kısaltılması                                  290

8.1.11. İlginç Gelişme                                                                                                            292

8.1.12. İptal Etme ve İstisnalar                                                                                             294

8.1.13. İstisnaların Sıralanması                                                                                            298

8.2. Özet                                                                                                                                     299

8.3. Sorular                                                                                                                                300

 

Bölüm 9.   JAVADA GİRİŞ/ÇIKIŞ İŞLEMLERİ                                                 301

9.1. Sekizli Irmakları                                                                                                                  302

9.1.1. InputStream Sınıfı                                                                                                       302

9.1.1.1. FilterInputStream Sınıfı                                                                                      312

9.1.1.2. BufferedInputStream Sınıfı                                                                                 312

9.1.1.3. CheckedInputStream Sınıfı                                                                                316

9.1.1.3.1. Checksum Arayüzü                                                                                        317

9.1.1.3.2. CRC                                                                                                                  317

9.1.1.3.3. CRC32 Sınıfı                                                                                                   317

9.1.1.3.4. Adler32 Sınıfı                                                                                                  318

9.1.1.4. DataInputStream Sınıfı                                                                                       319

9.1.1.5. PushbackInputStream Sınıfı                                                                              321

9.1.1.6. Standart Okuma                                                                                                    323

9.1.2. OutputStream                                                                                                              324

9.1.2.1. FilterOutputStream Sınıfı                                                                                   329

9.1.2.1.1. BufferedOutputStream Sınıfı                                                                        329

9.1.2.1.2. CheckedOutputStream Sınıfı                                                                       332

9.1.2.1.3. DataInputStream ve DataOutputStream Sınıfları                                    333

9.1.2.1.4. Printstream Sınıfı                                                                                           334

9.1.3. Önemli Noktalar                                                                                                           336

9.2. Karakter Irmakları                                                                                                              337

9.2.1. Reader                                                                                                                          338

9.2.1.1. InputStreamReader Sınıfı                                                                                   340

9.2.1.1.1. FileReader Sınıfı                                                                                            340

9.2.1.2. BufferedReader Sınıfı                                                                                           344

9.2.1.2.1. BufferedReader İle Standart Okuma                                                            347

9.2.1.3. PushbackReader Sınıfı                                                                                        348

9.2.2. Writer                                                                                                                            350

9.2.2.1. OutputStreamWriter ve FileWriter Sınıfı                                                         352

9.2.2.2. PrinterWriter Sınıfı                                                                                              356

9.2.2.3. BufferedWriter Sınıfı                                                                                            358

9.2.2.4. StringWriter Sınıfı                                                                                                 359

9.3. Başarım (Performans)                                                                                                       360

9.4. Unicode                                                                                                                              368

9.5. File Sınıfı                                                                                                                            373

9.5.1. Geçici Dosyalar                                                                                                           373

9.5.2. Listeleme                                                                                                                      375

9.6. Rasgele Erişimli Dosyalar                                                                                                377

9.7. Dönüşüm                                                                                                                            378

9.7.1. Externalizable                                                                                                            389

9.8. Sıkıştırma                                                                                                                            393

9.9. Bölümleyiciler                                                                                                                    400

9.9.1. StreamTokenizer Sınıfı                                                                                              401

9.9.2. StringTokenizer Sınıfı                                                                                                403

9.10. Özet                                                                                                                                   405

9.11. Sorular                                                                                                                              406

 

Bölüm 10.   JAVADA YENİ GİRİŞ/ÇIKIŞ ÖZELLİKLERİ                     407

10.1. Tamponlar                                                                                                                        408

10.1.1. hasRemaining(), flip(), get() Yordamları                                                   411

10.1.2. Bağıl ve Mutlak Operasyonlar                                                                                413

10.1.2.1. Bağıl Operasyonlar                                                                                             413

10.1.2.2. Mutlak Operasyonlar                                                                                         415

10.1.3. Sarmalama                                                                                                                  416

10.1.4. Doğrusal ve Doğrusal Olmayan Tamponlar                                                         417

10.1.5. compact() Yordamı                                                                                                420

10.1.6. duplicate()                                                                                                           422

10.1.7. slice() Yordamı                                                                                                     424

10.1.8.