|
İÇİNDEKİLER
İçindekiler
Önsöz 5
Yazarlar 7
C++ TEMELLERİ
BÖLÜM 1: DEV C++ İLE BAŞLARKEN 19
1.1 Dev C++'a Giriş 19
1.2 Kurulum 20
1.3 Dev C++ Arayüzü 24
1.4 İlk Projenizi Oluşturma 25
1.5 Derleme ve Çalıştırma 26
1.6 Dev C++'da Hata Ayıklama 27
BÖLÜM 2: BİR C++ PROGRAMININ ANATOMİSİ 29
2.1 Başlık Dosyaları 29
2.1.1 Dahili Başlık Dosyaları 29
2.1.2 Kullanıcı Tarafından Tanımlanan Başlık Dosyaları 31
2.1.2.1. .h Uzantılı Kullanıcı Tanımlı Başlık Dosyaları 31
2.1.2.2. .hpp Uzantılı Kullanıcı Tanımlı Başlık Dosyaları 34
2.1.2.3. .h ve .hpp Karşılaştırma 36
2.1.3 Koşullu Derleme 36
2.2 Main (Ana) Fonksiyon 37
2.2.1 Main Fonksiyonun Temel Yapısı 37
2.2.2 Basit Main Foknsiyon Yapısı 38
2.2.3 Komut Satırı Argümanları 38
2.2.4 Main Fonskiyonun Dönüş Değeri 38
2.2.5 Hata Yakalama 39
2.3 İfadeler ve Deyimler 39
2.4 Yorumlar/Açıklamalar 40
2.4.1 Tek Satır Yorum/Açıklama 40
2.4.2 Çok Satırlı Yorumlar/Açıklamalar 41
2.4.3 Belge Yorumları/Açıklamaları 42
BÖLÜM 3: C++'DA DEĞİŞKENLERİ VE SABİTLERİ ANLAMA 43
3.1 Veri Türleri 43
3.2 Temel Veri Türleri 43
3.2.1 Tamsayı Türleri 43
3.2.2 Kayan Nokta Türleri 44
3.2.3 Karakter Türleri 44
3.2.4 Boole Türü 44
3.3 Değişken Bildirimi ve Başlatma 45
3.3.1 Değişken Beyanı 45
3.3.2 İlk Değer Atama/İlklendirme 45
3.4 Sabitler 46
3.5 Gelişmiş Kavramlar 47
3.5.1 extern Anahtar Kelimesi 47
3.5.2 Statik Anahtar Kelimesi 47
3.5.3 İşaretçiler 48
3.5.4 Diziler 48
3.5.5 Yapılar 48
3.5.6 Unions 49
3.5.7 Enums 50
3.6 Sayı Tabanları 50
3.6.1 İkili (Binary) Sistem (Taban–2) 51
3.6.2 Sekizli (Octal) Sistem (Taban–8) 51
3.6.3 Onluk (Decimal) Sistem (Base–10) 52
3.6.4 Onalatılık (Hexadecimal) Sistem (Base–16) 53
3.6.5 İkilik Tabandan Onaltılık Tabana Dönüşüm 53
3.6.6 Onaltılık tabandan Onluk tabana dönüşüm: 54
BÖLÜM 4: G/Ç (I/O) İŞLEMLERİ VE TEMEL BİLGİLER 57
4.1 cout ile Çıktı Üretme 58
4.2 cin ile Girdi 58
4.3 cerr: Standart Hata Akışı 59
4.4 clog: Standart Günlük (Log) Akışı 59
4.5 setw: Alan Genişliğini Ayarla 59
4.6 setprecision: Ondalık Hassasiyetini Ayarla 59
4.7 setfill: Doldurma Karakteri Ayarlama 60
4.8 left, right, internal: Hizalama 60
4.9 hex, oct, dec, bitset: Çıktı Sayı Tabanı 61
4.10 Diğer Veri Türlerinin Girdi ve Çıktı İşlemleri 61
4.11 std Ad Alanını(namespace) Kullanma 62
4.12 Dosya G/Ç İşlemleri 63
4.12.1 Dosyaları Açma ve Kapatma 64
4.12.2 Bir Dosyaya Yazma 64
4.12.3 Dosyadan Okuma 65
4.12.4 Dosyaya Ekleme Yapma 66
4.12.5 Hata İşleme 68
4.12.6 İkili (Binary) Dosya G/Ç 71
4.12.7 Rastgele Erişim Dosya G/Ç İşlemleri 72
BÖLÜM 5: KONTROL YAPILARI 75
5.1 Koşullu İfadeler 75
5.1.1 if İfadesi 75
5.1.2 else if İfadesi 76
5.1.3 else İfadesi 78
5.1.4 İç İçe if İfadesi 78
5.2 Döngü (loop) Yapıları 80
5.2.1 for Dögüsü 80
5.2.2 while Döngüsü 80
5.2.3 do–while Döngüsü 81
5.2.4 Sonsuz (Infinite) Döngüler 81
5.2.5 Ölü (Dead) Döngüler 82
5.2.6 Döngü Kontrol İfadeleri 83
5.2.6.1 break İfadesi 83
5.2.6.2 continue İfadesi 84
5.3 switch–case İfadesi 85
5.3.1 Temel Sözdizimi 85
5.3.2 Düşüş (Fall–Through) 86
BÖLÜM 6: FONKSİYONLAR 89
6.1 Fonksiyonların Temelleri 89
6.2 Fonksiyon Bildirim ve Tanımları 89
6.2.1 Fonksiyon Bildirimi 90
6.2.2 Fonksiyon Tanımı 91
6.2.3 Ayrı Derleme 92
6.3 Main veya Diğer Fonksiyonların İçinde Fonksiyon Kullanımı 94
6.4 Fonksiyonlarda Değer ile Çağrı 96
6.5 Fonksiyonlarda Referans ile Çağrı 97
6.6 Özyinelemeli (Kendini Çağıran) Fonksiyonlar 99
6.7 Küresel Değişkenler ve Fonksiyonlar 102
6.8 Yerel Değişkenler ve Fonksiyonlar 104
6.9 Statik Değişkenler ve Fonksiyonlar 105
BÖLÜM 7: DİZİLER 109
7.1 Bildirim, Tanımlama ve İlk Değer Atama 109
7.1.1 Dizilerin Bildirimi ve Kullanımı 109
7.1.2 Dizilerin Başlatılması (İlklendirilmesi) 109
7.2 Tek Boyutlu Dizilerin Kullanımı 110
7.2.1 Öğelere Erişim 110
7.2.2 Öğeleri Değiştirme 111
7.2.3 Öğeler Arasında Döngü 112
7.3 Çok Boyutlu Dizi ve Kullanımı 114
7.4 Dinamik Diziler ve Kullanımı 116
7.5 Dizi Sınır Kontrolü (Array Bounds Checking) 118
7.6 Diziler ve Fonksiyonlar 119
BÖLÜM 8: BİRLİK (UNION), NUMARALANDIRMA (ENUM) VE
YAPI (STRUCTURE) 123
8.1 Birlik (Union) 123
8.1.1 Birliklerin Bildirimi ve Kullanımı 123
8.2 Enumlar (Enumerations) 125
8.2.1 Enumların Bildirimi ve Kullanımı 126
8.3 Yapılar 127
8.3.1 Yapıların Bildirimi ve Kullanımı 128
8.3.2 Typedef Kavramı ve Yapılarla Kullanımı 130
8.3.3 Typedef Alternatifi Olarak Using Kullanımı 132
8.4 Diğer Konular ve Başlıklar 133
8.4.1 İç İçe Yapılar ve Birlikler 133
8.4.2 Birliklerin (Union) Yapılar ile Birlikte Kullanımı 135
8.5 İşaretçiler (Pointers) ve Yapılar 138
8.5.1 Yapılara İşaretçiler (Pointers to Structures) 138
8.6 Yapıların Fonksiyonlarla Kullanımı 141
8.6.1 Yapıları Fonksiyonlara Gönderme 141
8.7 Yapılar ile Dizilerin Birlikte Kullanımı 144
8.7.1 Tek Boyutlu Dizilere Olarak Yapılar 144
8.7.2 Çok Boyutlu Diziler ile Yapılar 145
BÖLÜM 9: VEKTÖR, KUYRUK, LİSTELER, KÜMELER, EŞLEMELER VE AĞAÇLAR 149
9.1. Dinamik Diziler: Vektörler (std::vector) 149
9.2. Kuyruk Yapıları (std::queue ve std::priority_queue) 152
9.3. Bağlı Listeler (std::list) 156
9.4. Kümeler (std::set) 159
9.5. Eşlemeler (std::map) 162
9.6. Ağaç Yapıları (Binary Trees) 166
BÖLÜM 10: İŞARETÇİLER 171
10.1 İşaretçi Nedir? 171
10.2 İşaretçiler Nasıl Kullanılır? 171
10.2.1 İşaretçi Oluşturma 171
10.2.2 İşaretçinin Gösterdiği Değere Erişim (Dereference) 171
10.3 İşaretçilerin Değiştirilmesi 172
10.4 Bellek Yönetimi 172
10.4.1 Adresleme ve İşaretçiler 173
10.4.2 Dinamik Bellek Ayırma ve İşaretçiler 173
10.5 İşaretçiler ve Fonksiyonlar 174
10.6 İşaretçiler ve Diziler 175
10.7 İşaretçiler ve Yapılar 176
10.8 İşaretçiler ve Bağlantılı Listeler 177
10.9 İşaretçiye İşaretçiler 178
10.10 Fonksiyonlara İşaretçiler 179
BÖLÜM 11: MODERN C++ STANDARTLARI (C++11 – C++20) 181
11.1 C++ Standartlarının Evrimi 181
11.2 C++11 Yenilikleri 181
11.2.1 auto Anahtar Sözcüğü 181
11.2.2 nullptr Kavramı 182
11.2.3 Aralık tabanlı for Döngüsü 182
11.2.4 Lambda İfadeleri 182
11.2.5 Akıllı İşaretçiler 182
11.3 C++14 Yenilikleri 183
11.3.1 std::make_unique 183
11.3.2 Lambda İyileştirmeleri 183
11.4 C++17 Yenilikleri 183
11.4.1 if constexpr 183
11.4.2 Structured Bindings 184
11.4.3 std::optional 184
11.4.4 std::variant 184
11.5 C++20 Yenilikleri 184
11.5.1 std::format 184
11.5.2 std::span 185
11.5.3 Concepts’e Kısa Giriş 185
11.6 Modern C++ ile Güvenli ve Temiz Kod Yazımı 185
11.7 Özet ve En İyi Uygulamalar 186
NESNEYE YÖNELİK PROGRAMLAMA
BÖLÜM 12: NESNEYE YÖNELİK PROGRAMLAMA KAVRAMLARI 187
12.1 Sınıf 187
12.2 Nesneler 187
12.3 Veri Soyutlama 187
12.4 Kapsülleme 188
12.5 Kalıtım 188
12.6 Çok Biçimlilik 188
12.7 Dinamik Bağlama 188
12.8 Mesaj Aktarımı 188
12.9 İstisnalar 188
BÖLÜM 13: SINIFA GENEL BAKIŞ 191
13.1 Bir Sınıfın Oluşturulması 191
13.2 Erişim Belirleyiciler: Public, Private, Protected 194
13.3 Üye Fonksiyonlar 198
13.4 Varsayılan Yapıcı 200
13.5 Yapıcı Fonksiyonlar 201
13.6 Yıkıcı Fonksiyon 202
13.7 Kopya Yapıcı 203
13.7.1 Yüzeysel (Shallow) ve Derin (Deep) Kopyalama 205
13.8 Operatör Aşırı Yükleme 207
13.8.1 Atama Operatörü (=) 207
13.8.2 Aritmetik Operatörler (+, –, , /) 207
13.8.3 Artırma ve Azaltma Operatörleri (++, ––) 208
13.8.4 Karşılaştırma Operatörleri (==, !=, <, >, <=, >=) 209
13.8.5 Parantez Operatörü () 210
BÖLÜM 14: NESNELER 211
14.1 Nesne Oluşturma 211
14.2 Nesne Dizileri 214
14.3 Nesnelerle İşaretçilerin Kullanımı 216
14.4 Kopya Yapıcı ve Nesne Kopyalama 219
14.5 Nesnelerin Fonksiyonlara Gönderilmesi 223
BÖLÜM 15: NESNELERİN BAŞKA BİR SINIFIN ÜYESİ OLARAK KULLANILMASI 229
15.1 Nesne Bileşimi Kavramı 229
15.2 Nesneler Arasındaki İlişki Türleri 230
15.3 Üye Nesnelerin Başlatılması 230
15.4 Üye Nesnelerin Yok Edilmesi 231
15.5 Dinamik Bellek Kullanan Sınıflarda Üye Nesneler 232
15.6 Nesneleri Üye Olarak Kullanmanın Avantajları 233
15.7 Uygulamalı Örnek. Öğrenci ve Adres Sınıfları 233
15.8 Hatırlanması Gereken Temel Noktalar 234
BÖLÜM 16: VERİ SOYUTLAMA (DATA ABSTRACTION) 235
16.1 Veri Soyutlamaya Giriş 235
16.2 Veri Soyutlamanın Temel Taşı: Kapsülleme (Encapsulation) 235
16.2.1 Kapsülleme İstisnaları 236
16.2.1.1 Arkadaş Sınıflar 236
16.2.1.2 Arkadaş Fonksiyonlar 238
16.3 Soyut Sınıflar ve Saf Sanal Fonksiyonlar 241
16.4 Veri Soyutlamasının Faydaları 242
16.4.1 Kodun Kolay Bakım Yapılabilir Olması 242
16.4.2 Kodun Yeniden Kullanılabilirliği 242
16.4.3 Azaltılmış Karmaşıklık 243
BÖLÜM 17: KAPSÜLLEME 245
17.1 Kapsüllemeye Giriş 245
17.2 Kapsüllemenin Temel Özelliği 245
17.3 Özel Üyelerle Bilgi Gizleme 247
17.4 Kapsüllemenin Faydaları 249
17.4.1 Veri Koruma 249
17.4.2 Daha İyi Modülerlik 249
17.4.3 Kod Esnekliği 249
17.5 Uygulamada Kapsülleme 250
BÖLÜM 18: KALITIM 251
18.1 Kalıtım’a Giriş 251
18.2 Kalıtımın Temelleri 251
18.3 Kalıtım Türleri 256
18.3.1 Tekli Kalıtım (Single Inheritance) 256
18.3.2 Çoklu Kalıtım 266
18.3.3 Çok Düzeyli Kalıtım 274
18.3.4 Hiyerarşik Kalıtım 278
18.3.5 Hibrit Kalıtım 283
18.4 Kalıtımda Erişim Kontrolü 287
18.4.1 Public Kalıtım 288
18.4.2 Protected Kalıtım 289
18.4.3 Private Kalıtım 291
18.4.4 Çok Düzeyli Kalıtımda Yetkilendirme 292
18.5 Ezme 294
18.5.1 Fonksiyon Ezme 294
18.6 Sanal Fonksiyonlar ve Soyut Sınıflar 296
18.6.1 Sanal Fonksiyonlar 296
18.6.2 Soyut Sınıflar 297
BÖLÜM 19: ÇOK BİÇİMLİLİK 301
19.1 Fonksiyon Aşırı Yükleme 301
19.2 Operatör Aşırı Yükleme 301
19.3 Çalışma Zamanı Çok Biçimlilik 302
19.4 Soyut Sınıflar 303
19.5 Arayüzler 304
19.6 Dinamik Bağlama 304
19.7 Çok Biçimli Konteynırlar 305
BÖLÜM 20: MESAJ GEÇİŞİ 307
20.1 Yöntem Çağrısı 307
20.2 Olay İşleme 307
20.3 Gözlemci Tasarım Deseni 308
20.4 Ağ Üzerinde Mesaj Geçişi 309
20.5 Uzak Prosedür Çağrısı (RPC) 310
BÖLÜM 21: İSTİSNALAR 313
21.1 İstisna İşlemenin Temelleri 313
21.2 Standart İstisnalar 313
21.3 Özel İstisna Sınıfları 314
21.4 İstisna Belirtimleri (Kullanımdan Kaldırıldı) 315
21.5 İç İçe İstisnalar 315
21.6 İstisna Güvenliği 316
21.7 RAII (Resource Acquisition Is Initialization) 317
BÖLÜM 22: BİRLEŞİK MODELLEME DİLİ (UML) 321
22.1 Sınıf (Class) Diyagramları 321
22.2 Nesne (Object) Diyagramları 323
22.3 Durum (State) Diyagramları 325
22.4 Ardıl Etkileşim (Sequence) Diyagramları 326
22.5 Etkinlik (Activity) Diyagramları 327
22.6 Kullanım Durumu (Use Case) Diyagramları 329
22.7 İş Birliği (Collaboration)Diyagramları 330
22.8 Bileşen (Component) Diyagramları 331
22.9 Dağıtım (Deployment) Diyagramları 332
22.10 Paket (Package) Diyagramları 333
NYP İLE MÜHENDİSLİK UYGULAMALARI
BÖLÜM 23: ARDUINO İLE NYP ÖRNEKLERİ 337
23.1 Arduino Programlamada NYP Neden Kullanılır? 337
BÖLÜM 24: STM İLE C++ VE NYP ÖRNEKLERİ 363
BÖLÜM 25: C++ VE NYP İLE UYGULAMA ÖRNEKLERİ 389
25.1 Çok İstemcili Mesajlaşma Sunucusu Uygulaması 389
25.2 Dosya Transfer Uygulaması 395
25.3 Elektronik Posta Gönderim Uygulaması (SMTP) 401
25.4 Banka Hesap Yönetim Uygulaması 405
25.5 Stok Takip Uygulaması 408
Kavram Dizini 413 |