2 GELİŞTİRME ORTAMLARININ KURULUMU



Benzer belgeler
İÇİNDEKİLER VII İÇİNDEKİLER

1 PROGRAMLAMAYA GİRİŞ

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

2 ISINMA TURLARI - DERLEYİCİ VE DERLEME KAVRAMLARIYLA BİRLİKTE GCC DERLEYİCİSİNE BİR BAKIŞ

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Bu doküman Kâtip Çelebi tarafından 1632 de yazılan ve İbrahim Müteferrika nın eklemeleri ile Matbaa-ı Amire de basılan Kitabı-ı Cihannüma nın

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Göstericiler (Pointers)

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Pointer Kavramı. Veri Yapıları

Genel Programlama II

C++ Dersi: Nesne Tabanlı Programlama

ELN1001 BİLGİSAYAR PROGRAMLAMA I

BTEP243 Ders 3. class Yazım Kuralı:

BİL-142 Bilgisayar Programlama II

1 JAVASCRIPT NEDİR? 1

Öğr. Gör. Serkan AKSU 1

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

C++ Dersi: Nesne Tabanlı Programlama

BMH-303 Nesneye Yönelik Programlama

Pointers (İşaretçiler)

8. İŞARETCİLER (POINTERS)

C++ Dersi: Nesne Tabanlı Programlama

Nesne Yönelimli Programlama

// hataları işaret eden referans

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Lecture 11: Generics

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Yrd. Doç. Dr. Caner ÖZCAN

BİL-142 Bilgisayar Programlama II

Sunum İçeriği. Programlamaya Giriş

Dizi ( Array ) ve Dizgi ( String )

PROGRAMLAMAYA GİRİŞ DERS 2

Operator Aşırı Yükleme (Operator OverLoading)

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Diziler (Arrays) Çok Boyutlu Diziler

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Erişim konusunda iki taraf vardır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

YZM 2105 Nesneye Yönelik Programlama

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Karma C/C + + Kodlama

ALGORİTMA VE PROGRAMLAMA II

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

10/17/2007 Nesneye Yonelik Programlama 3.1

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Ç NDEK LER G R fi 1 Bafllamadan Önce 1 Kitab Kimler Okumal? 1 Kitap çerisindeki Örnekler 2 Örneklerin Kullan m 3 Çekinmeden Yaz n 7

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

PYTHON PROGRAMLAMA DİLİ

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

HSancak Nesne Tabanlı Programlama I Ders Notları

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

BİL-141 Bilgisayar Programlama I (Java)

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

C PROGRAMLAMA DİLİNE GİRİŞ

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Ders 8 Konu Özeti ve Problemler

4. Bölüm Programlamaya Giriş

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Genel Programlama II

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

Bölüm 2 - C ile Programlamaya Giriş

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Transkript:

İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Bu Kitap Kimler İçin? 1 Temel Kavramlar 6 ios İşletim Sistemi 6 ios Kısaltması Nereden Geliyor? 7 ios İşletim Sisteminin Katmanları 8 1. Çekirdek İşletim Sistemi Katmanı (Core OS) 8 Security Framework 8 Accelerate Framework 8 External Accessory Framework 9 LibSystem Kütüphanesi 9 2. Çekirdek Hizmetler Katmanı (Core Services) 9 3. Medya Hizmetleri Katmanı (Media Services) 13 4. Cocoa Touch Katmanı 14 ios Yazılım Geliştirme Kiti (ios SDK) 16 ios Yazılım Geliştirme Kiti Araçları 17 1. Xcode Entegre Geliştirme Ortamı (Xcode IDE) 17 2. ios Sımulator 18 3. Interface Builder 19 4. Instruments 20 5. Apple LLVM Derleyicisi 21 2 GELİŞTİRME ORTAMLARININ KURULUMU 23 ios SDK ve Geliştirme Ortamlarının İndirilme Yöntemleri 23 1. Mac OS X AppStore Uygulaması 24 Aracılığıyla Xcode un Son Stabil Sürümünü İndirmek 24 2. Apple Firmasının Geliştiriciler İçin Kullanıma Sunduğu developer.apple.com Sitesine Kaydolmak 25 3. ios Developer Program a Yıllık 99$ Karşılığında Üye Olmak 26 OBJECTIVE_C_ICINDEKILER.indd IX 27.02.2012 19:29

X OBJECTIVE-C ios SDK ve Geliştirme Ortamlarının Kurulumu 28 İlk Objective-C Programımız 30 3 OBJECTIVE-C PROGRAMLAMA DİLİNE GİRİŞ 35 Objective-C Dilinin Tarihçesi 35 Objective-C Dilinin Özellikleri 36 Objective-C = (ANSI C + SmallTalk) 36 Objective-C Programlama Ortamının Bileşenleri 38 Nesne Yönelimli Programlama 38 Temel Nesne Yönelimli Programlama Kavramları 40 Encapsulation (Sarmalama) 40 Inheritance (Kalıtım ve Miras) 42 Member Variables (Üye Değişken) 44 Polymorphism (Çok Biçimlilik) 46 Objective-C Diliyle C Tabanlı Diğer Programlama Dillerinin Karşılaştırılması 48 C ve Objective-C 48 C++ ve Objective-C 48 Java ve Objective-C 50 Özet 51 Bundan Sonrası 52 4 C PROGRAMLAMA DİLİNE ÖZET BİR BAKIŞ 53 Bu Bölüme Neden İhtiyaç Duyuldu? 53 Bölümde Kullanılacak Olan Görseller Hakkında 54 C Programlama Dilinin Tarihçesi 54 C Programlama Dilinin Standartları 56 1) Kernighan & Ritchie Standardı - K&R C 57 2) ANSI C Standardı (C89) 57 3) ISO C Standardı (C90) 57 4) ISO 99 C Standardı (C99) 58 C programlama Dili Neden Bu Kadar Yaygın? 58 OBJECTIVE_C_ICINDEKILER.indd X 27.02.2012 19:29

İÇİNDEKİLER XI Bir C Dosyasının Yapısı 60 Xcode ve C Programlama Dili 62 Bir C Programının Adım Adım İncelenerek Yürütülmesi 64 1. Adım (10. satır) 66 2. Adım (12. satır) 67 3. Adım (13. satır) 68 4. Adım (14. satır) 68 5. Adım (15. satır) 70 6. Adım (3. satır) 70 7. Adım (5. satır) 71 8. Adım (6. satır) 71 9. Adım (7. satır) 71 10. Adım (15. satır) 72 11. Adım (16. satır) 72 12. Adım (17. satır) 73 Giriş/Çıkış (I/O) Fonksiyonları ve #include <stdio.h> 73 Derleme ve Bağlama İşlemleri 74 Derleme İşlemi (Compile) 75 Bağlama İşlemi (Link) 75 Derleyici (Compiler) 75 Temel C Programlama Kavramları 76 Değişkenler ve Değerleri 76 Değişken Nedir? 76 Değişkenlerin Tanımlanması 76 Değişkenlerin İsimlendirilmesi 77 Veri Tipleri 78 Temel Veri Tipleri 78 Temel Veri Tiplerinin Türevleri 82 Özel Değişken Tipleri 85 Sabit Değişkenler ve const Anahtar Kelimesi 85 OBJECTIVE_C_ICINDEKILER.indd XI 27.02.2012 19:29

XII OBJECTIVE-C Statik Değişkenler ve static Anahtar Kelimesi 86 volatile Anahtar Kelimesi 88 extern Anahtar Kelimesi 89 register Anahtar Kelimesi 91 Temel Girdi Çıktı Komutları (printf ve scanf) 92 printf Fonksiyonu 93 Biçim Niteleyicilerinin printf Fonksiyonu İçindeki Kullanımı 97 Özel Karakterler (Escape Sequences) 98 4 C PROGRAMLAMA DİLİ - İLERİ KULLANIMLAR 189 Bu Bölüme Neden İhtiyaç Duyuldu? 189 Tip Dönüşümleri (Type Casting) 190 Dönüşüm (cast) Operatörü 190 main.c (Bölüm5 Örnek1) 190 Tip Çevrimleri (Type Conversıon) 193 main.c (Bölüm5 Örnek2) 194 #define Ön İşlemci Komutu 196 Fonksiyonlar 197 main.c (Bölüm5 Örnek3) 199 Fonksiyon Prototipi (İmzası) 200 main.c (Bölüm5 Örnek4) 201 main.c (Bölüm5 Örnek5) 201 Hiçbir Dönüş Tipi Olmayan (void) Fonksiyonlar 202 main.c (Bölüm5 Örnek6) 203 İç İçe Fonksiyonlar 203 main.c (Bölüm5 Örnek7) 205 Main Fonksiyonu ve Program Parametreleri 207 main.c (Bölüm5 Örnek8) 208 Fonksiyonlara Dizi Göndermek 209 main.c (Bölüm5 Örnek9) 209 Değişken Kapsamları (Scope) 211 OBJECTIVE_C_ICINDEKILER.indd XII 27.02.2012 19:29

İÇİNDEKİLER XIII Yerel Değişkenler 211 Global Değişkenler 212 main.c (Bölüm5 Örnek10) 212 İşaretçi (Pointer) Kavramı 214 İşaretçi Deklarasyonu 214 Adres Operatörü (&) 215 Erişim Operatörü (*) 215 main.c (Bölüm5 Örnek11) 216 Neden Tek Bir Tip İşaretçi Yok? (İşaretçi Aritmetiği) 218 main.c (Bölüm5 Örnek12) 219 İşaretçiler Aracılığıyla Dizi Yönetimi 221 main.c (Bölüm5 Örnek13) 221 Bir işaretçiyi Fonksiyona Parametre Olarak Göndermek 224 Değer Yöntemiyle Çağrı (Call By Value) 224 main.c (Bölüm5 Örnek14) 224 Referans Yöntemiyle Çağrı (Call By Reference) 225 main.c (Bölüm5 Örnek15) 225 Swap İşlemi 226 main.c (Bölüm5 Örnek16) 226 Ortalama Bulan Programın (Bölüm5 Örnek9) İşaretçi Notasyonu Kullanan Versiyonu 227 main.c (Bölüm5 Örnek17) 227 NULL Değeri ve İşaretçiler 228 main.c (Bölüm5 Örnek18) 229 Genel Amaçlı (void) İşaretçiler 229 main.c (Bölüm5 Örnek19) 230 Fonksiyon İşaretçileri 231 main.c (Bölüm5 Örnek20) 232 main.c (Bölüm5 Örnek21) 233 Dinamik Bellek Yönetimi 235 OBJECTIVE_C_ICINDEKILER.indd XIII 27.02.2012 19:29

XIV OBJECTIVE-C malloc() fonksiyonu 235 free() fonksiyonu 235 sizeof() fonksiyonu 235 main.c (Bölüm5 Örnek22) 236 İşaretçi Değişkenlerin Birbirine Atanması Durumu 238 main.c (Bölüm5 Örnek23) 238 Farklı Bellek Alanlarının 241 Farklı İşaretçiler Aracılığıyla Yönetimi 241 main.c (Bölüm5 Örnek24) 241 Dizilerde Dinamik Hafıza Yönetimi 244 Tek Boyutlu Dizilerde Dinamik Hafıza Yönetimi 244 main.c (Bölüm5 Örnek25) 245 İki Boyutlu Dizilerde Dinamik Hafıza Yönetimi 247 main.c (Bölüm5 Örnek26) 249 Diğer Hafıza Yönetimi Fonksiyonları (calloc ve realloc) 253 main.c (Bölüm5 Örnek27) 254 Veri Yapıları (Structs) 256 main.c (Bölüm5 Örnek28) 257 Veri Yapılarının İşaretçiler Aracılığıyla Kullanımı (Struct Pointers) 259 main.c (Bölüm5 Örnek29) 261 typedef Anahtar Kelimesi 262 main.c (Bölüm5 Örnek30) 262 Bundan Sonrası 264 6 OBJECTIVE-C PROGRAMLAMA DİLİ 265 Ne Durumdayız? 265 Objective-C ile C Programlama Diline Yapılan Eklentiler 266 Yeni Ön İşlemci (Preprocessor) Direktifleri 266 Sade Eklentiler 267 SmallTalk Söz Dizimi 268 Mesaj Kavramı 269 OBJECTIVE_C_ICINDEKILER.indd XIV 27.02.2012 19:29

İÇİNDEKİLER XV Runtime 270 Karakter Katarlarının Ele Alınış Biçimi ve NSString Sınıfı 270 NSLog 270 Bölüm6 Örnek1: main.m 271 Yeni Anahtar Kelimeler 273 #import 273 id 274 BOOL Veri Tipi 275 nil 276 sel 276 Özel Nümerik Veri Tipleri 277 NSInteger 278 NSUInteger 278 CGFloat 278 Objective-C Anahtar Kelimeleri 279 Sınıf, Nesne, Categori ve Protocol Tanımlarken Kullanılan Direktifler 279 Encapsulation (Sarmalama) İçin Kullanılan Anahtar Kelimeler 279 Hata Ayıklama (Exception Handling) İçin Kullanılan Anahtar Kelimeler 281 Protokol (Protocol) Tanımına Özel Anahtar Kelimeler 282 Kategori (Category) Tanımına Özel Anahtar Kelimeler 282 Dille İlgili Diğer Anahtar Kelimeler 282 Dikkat Etmeniz Gereken Diğer Anahtar Kelimeler 283 Metot ve Fonksiyon Kavramları Üzerine 284 Üye Değişkeni Kavramı Üzerine 284 Objective-C Uygulamalarının Genel Yapısı 284 Ogrenci.h 288 Ogrenci.m 288 Ogrenci.h 289 Ogrenci.m 290 main.m 291 OBJECTIVE_C_ICINDEKILER.indd XV 27.02.2012 19:29

XVI OBJECTIVE-C Bundan Sonrası 295 7 SINIFLAR, NESNELER VE KALITIM KAVRAMI 297 Ne Durumdayız? 297 Giriş 297 Nesne ve Sınıf Kavramları 298 Nesne (Object) Kavramı 298 Sınıf (Class) Kavramı 300 Sınıf ve Nesne Arasındaki İlişki 301 Nesne Yönelimli Programanın Temel Özellikleri 303 Kendi Nesnelerimizi Tasarlamak 305 Arayüz (Interface) Dosyasının Yapısı 309 @interface Anahtar Kelimesi 309 NSObject Sınıfı ve Kök (Root) Sınıflar 309 Üye Değişkenler 310 Metotlar 312 Sınıf Metotları ve Nesne (Instance) Metotları 313 Objective-C Sınıflarında Bulunan Metotların Genel Sözdizimi 314 1) Hiç Parametre Almayan Metotlar 315 2) Tek Parametre Alan Metotlar 315 3) Birden Fazla Parametre Alan Metotlar 317 Uygulama (Implementation) Dosyasının Yapısı 318 self Anahtar Kelimesi 324 alloc Metodu 326 Değer Atayıcı Metotlar (Inıtializers) 327 Kendi Değer Atayıcı Metotlarımızı 328 Tasarlamak (Designated Inıtializers) 328 dealloc Metodu 330 İsimlendirme Kuralları 331 Kalıtım Kavramı 332 Ogrenci Sınıfının Arayüz Dosyası (Ogrenci.h) 335 OBJECTIVE_C_ICINDEKILER.indd XVI 27.02.2012 19:29

İÇİNDEKİLER XVII Ogrencı Sınıfının Uygulama (Implementation) Dosyası (Ogrenci.m) 336 Personel Sınıfının Arayüz Dosyası (Personel.h) 340 Personel Sınıfının Uygulama (Implementation) Dosyası (Personel.m) 341 Uygulama Dosyası (main.m) 343 Metot Geçersiz Kılma (Override) İşlemi 347 Metotların Aşırı Yüklenmesi 348 Bundan Sonrası 349 8 OBJECTIVE-C DE HAFIZA YÖNETİMİ 351 Ne Durumdayız? 351 Giriş 352 Primitif Değişkenler ile Nesne Değişkenlerin Bellekteki Görünümü 359 Hafıza Yönetimi Yöntemleri 362 Hafızanın Elle Yönetilmesi (Manual Memory Management) ve Referans Sayma (Reference Counting) Yöntemi 363 Referans Sayma Yöntemi 364 Başıboş Refrans Kavramı (Dangling Pointer) 367 Ownership (Sahiplik) Kavramı 367 Elverişli Metotlar (Convenience Methods) 368 Bir Metottan Nesne Döndürmek 369 autorelease Mesajı 371 Nesneleri Oluşturduğumuz Anda autorelease Mesajı Göndermek 372 İleride Otomatik Olarak Silinecek Nesneler Havuzu (Autorelease Pool) 372 Yöntem 1: NSAutoreleasePool Sınıfını Kullanmak 372 Drain Mesajı 374 Yöntem 2: @autoreleasepool Direktifini Kullanmak 375 İç İçe Havuzlar (Nested Autorelease Pools) 376 Havuz Tanımlamadan autorelease Çağırmak 376 Retain Mesajı ve RetainCount Kavramı 376 Retain Mesajı 377 RetainCount 377 OBJECTIVE_C_ICINDEKILER.indd XVII 27.02.2012 19:29

XVIII OBJECTIVE-C Nesneleri Kopyalamak 379 Copy Metodunun Kullanımı 381 MutableCopy Metodu 385 Elle Hafıza Yönetiminde Dikkat Edilmesi Gereken Noktalar 386 Dengesiz Retain Release Çağrıları 386 Retain Döngüsü 386 Garbage Collection (Çöp Toplayıcı) 387 Memory Leak (Hafıza Sızıntısı) Kavramı 389 Automatic Reference Counting (Otomatik Referans Sayma) 389 Bundan Sonrası 394 9 SARMALAMA (ENCAPSULATION) KAVRAMI VE PROPERTY KULLANIMI 395 Ne Durumdayız? 395 Giriş 395 Sarmalama (Encapsulation) 395 Prensip 1: Tasarladığınız Sınıfın Durum Bilgisine Erişimi Mümkün Olduğunca Kısıtlamaya Çalışınız. 396 Prensip 2: Eğer başkasının tasarladığı bir sınıfı kullanıyorsanız ve bu sınıf size hem kendi durum bilgisine erişim imkanı hem de metotlar aracılığıyla durum bilgisine erişim imkanı sunuyorsa, mümkün olduğu kadar metot kullanımını tercih ediniz. 396 Üye Değişkenlere Erişimin Kısıtlanması - Erişim Direktifleri 400 @public Değişkenlere İşaretçi (Pointer) Yöntemiyle Erişilmesi 404 Üye Metotlara Erişimin Kısıtlanması 406 Değer Okuyucu (Accessor) ve Değer Atayıcı (Mutattor) Metotlar 406 Değer Okuyucu (Accessor) ve Değer Atayıcı (Mutattor) Metotların İsimlendirilmesi 407 Değer Okuyucu (Getter) Metotların Genel İçeriği 409 Değer Atayıcı (Setter) Metotların Genel İçeriği 409 Direkt Değer Atama (Assign) 409 Sahiplik Yoluyla Değer Atama (Retain) 411 OBJECTIVE_C_ICINDEKILER.indd XVIII 27.02.2012 19:29

İÇİNDEKİLER XIX Kopyalama Yoluyla Değer Atama (Copy) 411 Defansif Kopyalama 411 Hangi Yöntem Ne Zaman Kullanılmalı, Nelere Dikkat Edilmeli 412 Property (Özellik) Kavramı 416 Property ile Üye Değişken İsimlerinin Farklı Olması 418 @property Direktifinin Yapısı 420 @dynamic Anahtar Kelimesi 421 Dot Syntax (Nokta Notasyonu) Kullanımı 425 Bundan Sonrası 429 10 ÇOK BİÇİMLİLİK (POLYMORPHISM), DİNAMİK BAĞLAMA (DYNAMIC BINDING), HATA YÖNETİMİ VE PROTOKOL KAVRAMLARI 431 Ne Durumdayız? 431 Statik Tipleme (Static Typing) 431 Dinamik Tipleme (Static Typing) 432 Id Tipi 432 main.m (Bölüm10 Örnek1) 432 Dinamik Bağlama (Dynamic Binding) 433 main.m (Bölüm10 Örnek2) 434 Çok Biçimlilik (Polymorphism) 435 Statik Tipleme ve Dinamik Tipleme Arasındaki Fark 435 main.m (Bölüm10 Örnek2) - Yeni versiyon 437 Dinamik Bağlama Kullanılan Uygulamalarda Çalışma Zamanı Hatalarını Engellemek 439 Yöntem 1: NSObject Sınıfının Sağladığı Metotları Kullanmak 439 Class Nesnesi (Class Object) 440 Class Tipi 441 main.m (Bölüm10 Örnek3) 442 main.m (Bölüm10 Örnek4) 443 Selector (Seçici) Kavramı 446 Bölüm10 Örnek5 nesnebilgisiyazdır metodu (main.m) 448 OBJECTIVE_C_ICINDEKILER.indd XIX 27.02.2012 19:29

XX OBJECTIVE-C Yöntem 2: İstisna Yönetimini Kullanmak 449 İstisna (Exception) Kavramı 449 main.m (Bölüm10 Örnek6) 449 @try @catch @finally Bloğu 450 Yöntem 3: Protokol (Protocol) Kavramını Kullanmak 451 Protokol Kavramı 451 Yaklaşım 1: Aynı Mesaja Cevap Vermesini İstediğiniz Sınıfların O Mesajı İçeren Bir Protokolü Uygulamasını Sağlamak 454 Yaklaşım 2: Genel Amaçlı Metot Parametrelerinin 455 Bundan Sonrası 458 11 KATEGORİLER VE BLOKLAR 459 Giriş 459 Kategori (Category) Kavramı 459 main.m (Bölüm11 Örnek1) 461 Bloklar (Blocks) 462 main.m (Bölüm11 Örnek2) 464 typedef Anahtar Kelimesinin Bloklarla Beraber Kullanımı 465 main.m (Bölüm11 Örnek3) 465 Blok İçerisinde Yerel Değişkenlere Erişim 466 main.m (Bölüm11 Örnek4) 467 Blok Tarafından Değiştirilebilir Yerel Değişkenler Tanımlamak ve block İfadesinin Kullanımı 468 main.m (Bölüm11 Örnek5) 468 Blokların Fonksiyonlara Parametre Olarak Gönderilmesi 470 main.m (Bölüm11 Örnek6) 471 12 KOLLEKSİYONLAR (COLLECTIONS) 475 Giriş 475 C Dizilerinde Nesne Kullanımı 475 main.m (Bölüm12 Örnek1) 476 OBJECTIVE_C_ICINDEKILER.indd XX 27.02.2012 19:29

İÇİNDEKİLER XXI Objective-C ye Özel Veri Sınıfları 478 NSArray 478 main.m (Bölüm12 Örnek2) 479 Xcode İçinden Dokümantasyona Hızlı Ulaşım 480 Koleksiyonları Oluştururken Elverişli Metotların Kullanılması 482 main.m (Bölüm12 Örnek3) 483 Koleksiyonların Elemanlarına Döngü Yardımıyla Erişim 484 Dizinin Eleman Sayısını Bulma 484 Normal For Döngüsüyle Dizi Elemanlarına Erişim 484 Fast Enumeration Yöntemiyle Dizi Elemanlarına Erişim 484 main.m (Bölüm12 Örnek4) 485 Mutable / Immutable (Değiştirilebilir / Değiştirilemez Kavramları) 486 NSMutableArray 486 Diziye Farklı Veri Tipinde Bir Eleman Eklemek 487 main.m (Bölüm12 Örnek5) 488 Nesnelerin Yazdırılması 489 NSDictionary ve NSMutable Dictionary 491 Eleman Ekleme 493 Eleman Çıkarma 493 Eleman Değerini Güncelleme 494 Döngü Aracılığıyla NSDictionary 494 Nesnesinin Elemanlarına Erişim Sağlanması 494 main.m (Bölüm12 Örnek6) 495 NSSet 496 NSSet Sınıfının Sağladığı Yardımcı Metotların Kullanımı 497 main.m (Bölüm12 Örnek7) 498 NSMutableSet 501 Eleman Ekleme 501 Eleman Çıkarma 501 Yardımcı Metotların Kullanımı 501 OBJECTIVE_C_ICINDEKILER.indd XXI 27.02.2012 19:29

XXII OBJECTIVE-C main.m (Bölüm12 Örnek8) 502 NSCountedSet 504 main.m (Bölüm12 Örnek9) 505 NSData ve NSMutableData 506 main.m (Bölüm12 Örnek10) 507 Bundan Sonrası 508 13 DİĞER FOUNDATION SINIFLARI VE DOSYA İŞLEMLERİ 509 Giriş 509 NSString ve NSMutableString Kullanımı 509 main.m (Bölüm13 Örnek1) 513 NSNumber Sınıfı ve Kutulama Kavramı 516 main.m (Bölüm13 Örnek2) 517 NSDate ve NSCalendarDate Sınıflarının Kullanımı 519 main.m (Bölüm13 Örnek3) 520 Objective-C de Dosyaya Okuma ve Yazma 522 main.m (Bölüm13 Örnek4) 524 Bundan Sonrası 526 OBJECTIVE_C_ICINDEKILER.indd XXII 27.02.2012 19:29