Kalıtım ve Bileşim Ödünleşimleri
Kalıtım ile bileşimi karşılaştırın ve tasarım için doğru aracı seçin
Kalıtım ve Bileşim Ödünleşimleri, CoddyKit'te ücretsiz bir C++ 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, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Kodu Yeniden Kullanmanın İki Yolu
Kodu başka bir sınıftan kalıtım alarak veya onu bir üye olarak birleştirerek yeniden kullanabilirsiniz. Her iki yaklaşımın da yeri vardır.
Kalıtım: “-dir”
Türetilmiş sınıf gerçekten de temelin özel bir türüyse kalıtımı kullanın.
class Vehicle {};
class Car : public Vehicle {}; // a Car IS a Vehicle
class SportsCar : public Car {};Bileşim: “Sahiptir”
İlişki “sahiptir” veya “kullanır” ise bileşimi kullanın.
class Engine {};
class Car {
Engine engine_; // a Car HAS an Engine
};Bağımlılık Tercihi
Kalıtım sıkı bağımlılık oluşturur — türetilmiş sınıflar temel sınıfın iç işleyişine bağımlıdır. Bileşim, modülleri bağımsız ve değiştirmeyi daha kolay tutar.
Esneklik
Bileşim, çalışma zamanında davranışı değiştirmeye olanak tanır — birleştirilmiş nesneyi değiştirebilirsiniz. Kalıtım, davranışı derleme zamanında sabitler.
class Logger {
std::unique_ptr<LogSink> sink_; // can swap implementations
public:
void setSink(std::unique_ptr<LogSink> s) { sink_ = std::move(s); }
};Sınama
Birleştirilmiş nesneler, sınama amacıyla sahte nesnelerle değiştirilebilir. Kalıtımda kullanılan temel sınıfları sanal işlevler veya şablonlar olmadan sahte nesnelerle değiştirmek daha zordur.
Kırılgan Temel Sınıf Sorunu
Temel sınıftaki değişiklikler birçok türetilmiş sınıfı bozabilir. Bileşim, değişikliği birleştiren sınıfla sınırlar.
Kalıtımı Şu Durumlarda Seçin
Kalıtım şu durumlarda uygundur:
- Açık bir “-dir” ilişkisi varsa
- Temel arayüz üzerinden çok biçimlilik gerekiyorsa
- Temel sınıf özellikle kalıtım için tasarlanmışsa
Bileşimi Şu Durumlarda Seçin
Bileşim şu durumlarda uygundur:
- Gerçekleştirmeleri değiştirme esnekliği istiyorsanız
- İlişki “sahiptir” veya “kullanır” ise
- Düşük bağımlılık ve daha kolay sınama istiyorsanız
Strateji Deseni
Bileşimi çok biçimlilikle birleştirin: barındıran sınıfın birleştirdiği strateji nesnesine yönelik bir temel sınıf işaretçisi saklayın.
class Sorter {
std::unique_ptr<SortStrategy> strategy_;
public:
void sort(std::vector<int>& v) { strategy_->execute(v); }
};Karışımlar ve İlke Sınıfları
Derleme zamanı özelleştirme için şablonlu ilke sınıfları kullanın — tür düzeyinde bileşim. Güçlüdür ve çalışma zamanı ek yükü yoktur.
Arayüz + Bileşim
Yaygın bir modern desen: bir arayüz (soyut temel sınıf) tanımlayın ve bunu gerçekleştiren somut sınıfları birleştirin. Arayüz için kalıtım, gerçekleştirme için bileşim kullanın.
Hızlı Kontrol
Hangi yaklaşım genellikle daha fazla esneklik ve daha gevşek bağımlılık sağlar?
Özet
Kalıtım “-dir” ilişkisini; bileşim ise “sahiptir” ilişkisini modeller. Bileşim daha esnek ve daha az bağımlıdır — kodu yeniden kullanmak için onu tercih edin. Bir arayüz üzerinden çok biçimlilik için, çoğu zaman birleştirilmiş gerçekleştirmelerle birlikte kalıtımı kullanın.
Sıkça Sorulan Sorular
“Kalıtım ve Bileşim Ödünleşimleri” dersi ücretsiz mi?
Evet — “Kalıtım ve Bileşim Ödünleşimleri” 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 C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Kalıtım ve Bileşim Ödünleşimleri” dersinde ne öğreneceğim?
Kalıtım ile bileşimi karşılaştırın ve tasarım için doğru aracı seçin C++ 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.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ 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.
“Kalıtım ve Bileşim Ödünleşimleri” 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 C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ 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
- Tekli ve Çoklu Kalıtım
- Sanal İşlevler ve vtable
- Soyut Sınıflar ve Saf Sanal Metotlar
- Kalıtım ve Bileşim Ödünleşimleri