0Pricing
Swift Academy · Ders

Protokol Odaklı Tasarım İlkeleri

Esnek tasarım için sınıf kalıtımı yerine protokol birleştirmeyi tercih edin.

Protokol Odaklı Tasarım İlkeleri, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Hoş Geldiniz

Protokol Odaklı Programlama (POP), esnek, test edilebilir ve yeniden kullanılabilir Swift kodu oluşturmak için sınıf kalıtımı yerine protokol bileşimini tercih eder.

Kalıtımla İlgili Sorun

Derin sınıf hiyerarşileri sorunlara yol açar: • Alt sınıflar, üst sınıfın TÜM durumunu ve davranışını devralır • Bir üst sınıfı değiştirmek, alt sınıfları bozabilir • İki sınıftan kalıtım alınamaz Protokoller bu üç sorunu da çözer.

Bir Protokolle Başlayın

```swift protocol Greetable { var greeting: String { get } func greet() } extension Greetable { func greet() { print(greeting) } // default implementation } ``` Protokol uzantıları, protokole uyum sağlayan her türün ücretsiz olarak edindiği varsayılan uygulamalar sağlar.

Davranışları Birleştirme

```swift protocol Persistable { func save() } protocol Networked { func fetch() async throws -> Data } protocol Loggable { func log(_ msg: String) } struct DataService: Persistable, Networked, Loggable { ... } ``` Davranışları LEGO parçaları gibi birleştirin; sınıf hiyerarşisine gerek yoktur.

Paylaşılan Mantık İçin Protokol Uzantıları

```swift extension Loggable { func log(_ msg: String) { print("[\(type(of: self))] \(msg)") } } // Every Loggable type gets this for free ```

Geriye Dönük Modelleme

Protokoller, sahibi olmadığınız türlere de uygulanabilir: ```swift protocol JSONConvertible { func toJSON() -> String } extension Int: JSONConvertible { func toJSON() -> String { "\(self)" } } ``` Alt sınıflara ayırma yapmadan standart kütüphane türlerine uyumluluk ekleyebilirsiniz.

Değer Türleri + Protokoller

Protokollere uyum sağlayan yapı türleri, size değer semantiğinin *yanı sıra* çok biçimlilik de sunar: ```swift protocol Shape { var area: Double { get } } struct Circle: Shape { var radius: Double; var area: Double { .pi * radius * radius } } struct Square: Shape { var side: Double; var area: Double { side * side } } let shapes: [any Shape] = [Circle(radius:3), Square(side:4)] shapes.map { $0.area } // [28.27, 16] ```

Protokol Aracılığıyla Bağımlılık Eklemleme

```swift protocol DataStore { func save(_ data: Data) } struct FileStore: DataStore { func save(_ d: Data) { /* disk */ } } struct MockStore: DataStore { func save(_ d: Data) { /* test log */ } } class Service { let store: DataStore init(store: DataStore) { self.store = store } } ```

Sınıflar Ne Zaman Kullanılmalı

Şu durumlarda sınıfları tercih edin: • Paylaşılan, değiştirilebilir bir duruma ihtiyacınız varsa (başvuru semantiği) • ObjC/UIKit API'leriyle tümleşme gerekiyorsa • Kalıtım doğru modelse (nadiren) Diğer tüm durumlarda varsayılan olarak protokolleri ve yapı türlerini kullanın.

Protokol Adlandırma Kuralları

• Yetenek protokolleri: `-able`, `-ible`, `-ing` son ekleri (Equatable, Hashable, Coding) • Temsilci protokolleri: `Delegate` veya `DataSource` son eki • Soyut rol: isim (`Store`, `Parser`, `Renderer`) İyi adlar, protokol odaklı kodun kendi kendini açıklamasını sağlar.

Hızlı Kontrol

Protokol uzantıları, protokole uyum sağlayan türlere ne sağlar?

Özet

Temel çıkarımlar: • Sınıf hiyerarşileri yerine protokolleri ve yapı türlerini tercih edin • Protokol uzantıları, paylaşılan varsayılan uygulamalar sağlar • Davranışları küçük ve tek amaçlı protokollerden birleştirin • Protokoller, test edilebilirlik için bağımlılık eklemlemeyi mümkün kılar • Sınıfları başvuru semantiği ve ObjC birlikte çalışabilirliği için ayırın Kurs tamamlandı! Sıradaki konu: Derinlemesine Değer Türleri ve Başvuru Türleri Karşılaştırması.

Sıkça Sorulan Sorular

“Protokol Odaklı Tasarım İlkeleri” dersi ücretsiz mi?

Evet — “Protokol Odaklı Tasarım İlkeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Protokol Odaklı Tasarım İlkeleri” dersinde ne öğreneceğim?

Esnek tasarım için sınıf kalıtımı yerine protokol birleştirmeyi tercih edin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Protokol Odaklı Tasarım İlkeleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. & ile Protokol Birleştirme
  2. Koşullu Uygunluk
  3. Self Gereksinimleri ve Equatable Tasarımı
  4. Protokol Odaklı Tasarım İlkeleri
← Swift Academy Sayfasına Dön