C++'da Kalıtım Türleri Ne Bilmelisiniz?
Yayınlanan: 2023-04-05Bazı popüler yazılım sistemlerinin nasıl oluşturulduğunu hiç merak ettiniz mi? Tüm bunlar, nesne yönelimli programlamada (OOP) kalıtım adı verilen güçlü bir mekanizma sayesindedir. Kalıtım, programcıların mevcut sınıflar üzerine inşa edilmiş yeni sınıflar oluşturmasına izin vererek kodun yeniden kullanılmasına ve verimli yazılım geliştirmesine olanak tanır. Her biri bazı ortak özellikleri ve davranışları paylaşan birkaç sınıf gerektiren bir sistem oluşturduğunuzu hayal edin.
Aynı kodu tekrar tekrar yazmak yerine, bir temel sınıf oluşturmak ve ondan yeni sınıflar türetmek için kalıtımı kullanarak zamandan ve emekten tasarruf edebilirsiniz.
Kalıtım yalnızca verimli değil, aynı zamanda çok yönlüdür. C++'da, her biri benzersiz faydalara ve kullanım durumlarına sahip çeşitli kalıtım türleri vardır.
Bu makalede, makale boyunca ilgili kodlar, açıklamalar ve gerçek hayattan örnekler sağlayarak C++'daki farklı kalıtım türlerine eksiksiz bir göz atacağız .
İçindekiler
C++'da Farklı Kalıtım Türleri
C++ programlama dili, programcılarına beş farklı kalıtım seçeneği sunar. Bağlama ve gereksinimlere bağlı olarak, geliştiriciler ve programcılar bu kalıtım türlerinden biriyle çalışabilir.
Tek Kalıtım
Tek kalıtım, C++'daki en yaygın kalıtım türüdür. Tek kalıtımda, türetilmiş bir sınıf, tek bir temel sınıftan miras alır. Bu, bir sınıfın, kendi veri üyelerini ve üye işlevlerini ekleme yeteneğine sahipken, temel sınıfın tüm genel ve korumalı veri üyelerini ve üye işlevlerini devraldığı anlamına gelir.
Tek kalıtımın sözdizimini ve anlayışını öğrenmek için aşağıdaki kod parçasını inceleyin:
// Temel Sınıf
sınıf Hayvan {
halk:
geçersiz yemek() {
std::cout << "Hayvan yemek yiyor" << std::endl;
}
};
// Türetilmiş sınıf
sınıf Köpek : genel Hayvan {
halk:
geçersiz havlama() {
std::cout << "Köpek havlıyor" << std::endl;
}
};
Bu örnekte, tek üye işlevli eat() ile Animaladında bir temel sınıfımız var. Daha sonra,Animal öğesinden genel olarak miras alan Dogtüretilmiş bir sınıf tanımlarız .Dog ayrıca bark() adlı kendi üye işlevine sahiptir .Dog , tek kalıtımı kullanarakAnimal sınıfınıneat() işlevineerişebilir ve bark() işleviyle kendi davranışını ekleyebilir.
C++'da Tek Kalıtım ne zaman kullanılır?
Programcılar, temel sınıfa işlevsellik ekleyen türetilmiş bir sınıf oluşturmak için tekli kalıtımı kullanabilir.
Örneğin, savaşçılar, büyücüler ve okçular gibi farklı karakterleri içeren bir oyun oluştururken tekli kalıtımı kullanabilirsiniz. Bu karakterlerin tümü, sağlık noktaları, saldırı gücü ve hareket hızı gibi bazı ortak özellikleri ve davranışları paylaşır. Tek kalıtımı kullanarak, ortak öznitelikleri ve davranışları içeren Karakter adında bir temel sınıf oluşturabilir ve benzersiz işlevselliklerini eklemek için her bir karakter sınıfını ondan türetebilirsiniz.
Çoklu kalıtımda, türetilmiş bir sınıf birden fazla temel sınıftan kalıtım alabilir. Bu, bir sınıfın birden fazla doğrudan ebeveyn sınıfına sahip olabileceği anlamına gelir. Sonuç olarak, türetilmiş sınıf, her temel sınıfın tüm genel ve korumalı veri üyelerini ve üye işlevlerini devralır.
İşte çoklu kalıtım örneği:
// Temel Sınıf 1
sınıf Şekli {
halk:
sanal çift alan() = 0;
};
// Temel Sınıf 2
sınıf Renk {
halk:
sanal std::string getColor() = 0;
};
// Türetilmiş sınıf
sınıf Dikdörtgen : genel Şekil, genel Renk {
halk:
çift alan() geçersiz kılma {
dönüş genişliği * yükseklik;
}
std::string getColor() geçersiz kılma {
dönüş rengi;
}
özel:
çift genişlik = 5.0;
çift yükseklik = 3.0;
std::string color = “mavi”;
};
Bu örnekte, her biri sanal işlevi olan Shape ve Color olmak üzere iki temel sınıfımız var .Daha sonra hem Shape hem de Color'dan miras alan türetilmiş birRectangle sınıfı tanımlarız .Dikdörtgen, kendi uygulamasını sağlamak için her iki temel sınıfın sanal işlevlerini geçersiz kılar.Rectangle , çoklu kalıtım kullanarak, belirli bir renk ve alana sahip bir dikdörtgen oluşturmak için hem temel sınıfların, hem de ShapeveColorözelliklerini devralabilir .
C++'da Çoklu Kalıtım ne zaman kullanılır?
Birden çok temel sınıftan işlevleri birleştirmek istediğinizde çoklu kalıtım kullanın. Örneğin, düğmeler, onay kutuları ve metin kutuları gibi farklı türde denetimler gerektiren bir GUI uygulamasını düşünün. Her denetim türünün kendi işlevi ve davranışı vardır, ancak kullanıcı olaylarını işleme ve metin görüntüleme gibi bazı ortak işlevleri de paylaşırlar.
Birden çok kalıtım kullanarak, ortak işlevleri içerenControl adlı bir temel sınıf oluşturabilir ve her denetim türünü ve kendi özel işlevlerini içeren diğer temel sınıfları ondan türetebilirsiniz.
Hiyerarşik kalıtımda, tek bir temel sınıf birden çok türetilmiş sınıf tarafından miras alınır. Çoklu kalıtım gibi, hiyerarşik kalıtımdaki türetilmiş sınıflar, temel sınıfın tüm genel ve korumalı veri üyelerini ve üye işlevlerini alır.
İşte C++'da hiyerarşik kalıtımın uygulanmasını anlamanıza yardımcı olacak bir kod parçacığı:
// Temel Sınıf
sınıf Hayvan {
halk:
sanal boşluk makeSound() = 0;
};
// Türetilmiş Sınıf 1
sınıf Kedi : genel Hayvan {
halk:
geçersiz makeSound() geçersiz kılma {
std::cout << “Miyav” << std::endl;
}
};
// Türetilmiş Sınıf 2
sınıf Köpek : genel Hayvan {
halk:
geçersiz makeSound() geçersiz kılma {
std::cout << "Hav" << std::endl;
}
};
Bu örnekte, makeSound() sanal işlevine sahip Animaladında bir temel sınıfımız var. Daha sonra her ikisi deAnimal öğesinden miras alan CatveDogolmak üzere iki türetilmiş sınıf tanımlarız . Her türetilmiş sınıf, kendi uygulamasını sağlamak içinmakeSound() işlevini geçersiz kılar.Hiyerarşik kalıtımı kullanarak, ses çıkarmak gibi ortak davranışları paylaşan farklı hayvan türleri yaratabiliriz.
C++'da Hiyerarşik Kalıtım ne zaman kullanılır?
Ortak işlevleri paylaşan birden çok türetilmiş sınıf oluşturmak istediğinizde hiyerarşik kalıtımı kullanın. Örneğin, tasarruf hesapları, çek hesapları ve kredi kartı hesapları gibi farklı türde hesaplar gerektiren bir bankacılık uygulamasını düşünün. Bu hesap türlerinin tümü, hesap numarası, bakiye ve faiz oranı gibi bazı ortak özellikleri ve davranışları paylaşır.
Hiyerarşik kalıtımı kullanarak, ortak öznitelikleri ve davranışları içeren Account adında bir temel sınıf oluşturabilir ve benzersiz işlevselliğini eklemek için her bir hesap türünü ondan türetebilirsiniz.
Çok Düzeyli Kalıtım
C++'daki çok düzeyli kalıtım, türetilmiş bir sınıfın başka bir türetilmiş sınıf tarafından miras alındığı bir kalıtım türüdür. Bu senaryoda, türetilmiş sınıf, kendi ana sınıfından miras alan ve bu şekilde devam eden en yakın üst sınıfının tüm genel ve korumalı veri üyelerini ve üye işlevlerini devralır.
C++'da çok düzeyli kalıtımı programlı olarak şu şekilde uygulayabilirsiniz :
// Temel Sınıf
sınıf Araç {
halk:
geçersiz başlangıç () {
std::cout << "Araç çalışıyor" << std::endl;
}
};
// Orta Sınıf
sınıf Araba : kamu Araç {
halk:
geçersiz sürücü () {
std::cout << "Araba gidiyor" << std::endl;
}
};
// Türetilmiş sınıf
sınıf SportsCar : halka açık Araba {
halk:
geçersiz hızlandırma() {
std::cout << “Spor araba hızlanıyor” << std::endl;
}
};
C++'da çok düzeyli kalıtım ne zaman kullanılır?
Başka bir türetilmiş sınıftan miras alan ve onun işlevselliğini ekleyen bir türetilmiş sınıf oluşturmak istediğinizde çok düzeyli kalıtımı kullanın. Örneğin, arabalar, kamyonlar ve motosikletler gibi farklı araç türleri gerektiren bir yazılım sistemini düşünün. Bu araç türleri, hız, hızlanma ve frenleme gibi bazı ortak özellikleri ve davranışları paylaşır.
Çok düzeyli kalıtımı kullanarak, ortak öznitelikleri ve davranışları içeren Araç adlı bir temel sınıf oluşturabilir ve kendi özel işlevlerini eklemek için bundan ArabaveKamyongibi ara sınıflar türetebilirsiniz. Ardından, benzersiz işlevselliğini eklemek içinSportsCar sınıfını Carsınıfından türetebilirsiniz .
Hibrit kalıtım, iki veya daha fazla kalıtım türünün birleşimidir. Sanal kalıtım olarak da adlandırılan hibrit kalıtımdaki türetilmiş bir sınıf, bazıları birden çok yoldan miras alınan birden çok temel sınıftan miras alır. Bu, karmaşık kalıtım hiyerarşileri oluşturabilir ve anlaşılması ve sürdürülmesi zor olabilir.
Kendinizi geliştirmek içinupGrad'ınYazılım Geliştirme Kurslarınagöz atın.
İşte C++'da bir hibrit kalıtım örneği:
// Temel Sınıf 1
sınıf Hayvan {
halk:
sanal boşluk makeSound() = 0;
};
// Temel Sınıf 2
sınıf CanFly {
halk:
sanal boşluk uçuşu() = 0;
};
// Temel Sınıf 3
sınıf CanSwim {
halk:
sanal geçersiz yüzme() = 0;
};
// Türetilmiş sınıf
Yarasa sınıfı: genel Hayvan, genel CanFly {
halk:
geçersiz makeSound() geçersiz kılma {
std::cout << "Çığlık!"<< std::endl;
}
geçersiz sinek () geçersiz kılma {
std::cout << "Yarasa uçuyor" << std::endl;
}
};
// Türetilmiş sınıf
sınıf Penguen : genel Hayvan, genel CanSwim {
halk:
geçersiz makeSound() geçersiz kılma {
std::cout << "Hooonk!"<< std::endl;
}
geçersiz yüzme () geçersiz kılma {
std::cout << "Penguen yüzüyor" << std::endl;
}
};
Popüler Yazılım Mühendisliği Kurslarımızı keşfedin
LJMU & IIITB'den Bilgisayar Bilimlerinde Bilim Ustası | Caltech CTME Siber Güvenlik Sertifika Programı |
Tam Yığın Geliştirme Eğitim Kampı | Blockchain'de PG Programı |
Tam Yığın Geliştirmede Yönetici PG Programı | |
Aşağıda Tüm Kurslarımızı Görüntüleyin | |
Yazılım Mühendisliği Kursları |
C++'da Karma Kalıtım ne zaman kullanılır?
Daha önce tartışılan dört kalıtım türüne ek olarak, birden fazla kalıtım türünün gerekli olduğu belirli senaryolarda hibrit kalıtım yararlı olabilir. Çoklu kalıtım türlerinin avantajlarını birleştirmek için hibrit kalıtımı kullanın.
Örneğin, bazıları uçabilen, bazıları yüzebilen farklı hayvan türleri gerektiren bir yazılım sistemini düşünün. Animal adında bir temel sınıf oluşturmak ve ondan CanFlyveCanSwimolmak üzere iki ara sınıf türetmek için hibrit kalıtımı kullanabilirsiniz . Son olarak, hibrit kalıtımı kullanarak her iki ara sınıftan daBat ve Penguinsınıflarını türetebilirsiniz . Bat sınıfıAnimal ve CanFly'denmiras alırken ,PenguinsınıfıAnimalveCanSwim'denmiras alır . Bu şekilde, benzersiz yetenek kombinasyonlarına sahip farklı hayvan türleri yaratabilirsiniz.
C++'da hibrit kalıtım, birden fazla kalıtım türünün gerekli olduğu karmaşık yazılım sistemlerinde faydalı olabilir. Ancak, anlaşılması ve sürdürülmesi zor olabilecek karmaşık kalıtım hiyerarşileri de oluşturabilir. Diğer kalıtım türlerinde olduğu gibi, özel yazılım geliştirme projesi gereksinimleriniz ve tasarım hedefleriniz için doğru türü seçmek çok önemlidir.
Yazılım Geliştirme ile ilgili Popüler Makalelerimizi okuyun
Rekabette avantaj elde etmek içinücretsiz teknoloji kurslarımızagöz atın.
Kalıtımı Kullanırken Akılda Tutulması Gereken Önemli Hususlar:
Kalıtım, C++'ta güçlü bir mekanizma olsa da, uygularken göz önünde bulundurulması gereken birkaç faktör vardır.
- Derin Kalıtım Hiyerarşilerinden Kaçının : Derin kalıtım hiyerarşileri, okunması, anlaşılması ve sürdürülmesi zor kodlara yol açabilir.Kod okunabilirliğini ve sürdürülebilirliği geliştirmek için devralma hiyerarşilerinizi olabildiğince sığ tutun.
- Erişim Değiştiricileri Akıllıca Kullanın: Erişim değiştiricileri (genel, korumalı ve özel), bir sınıftaki veri üyelerinin ve üye işlevlerinin görünürlüğünü kontrol eder.Sınıf dışında görünmemesi gereken uygulama ayrıntılarını ifşa etmekten kaçınmak için bunları akıllıca kullanın.
- Elmas Kalıtımından Kaçının: Elmas kalıtımı, bir sınıf aynı temel sınıftan miras alan iki sınıftan miras aldığında gerçekleşir.Bu, belirsizliğe yol açabilir ve genellikle en iyi şekilde kaçınılır.
- Kalıtımı Aşırı Kullanmaktan Kaçının: Kalıtım yararlı olsa da, aşırı kullanımından kaçınmak önemlidir.Bazı durumlarda, kompozisyon veya diğer tasarım desenleri daha iyi bir seçim olabilir.
Ücretsiz Yazılım Geliştirme Kurslarımızı Keşfedin
Bulut Bilişimin Temelleri | Sıfırdan JavaScript Temelleri | Veri Yapıları ve Algoritmalar |
Blockchain Teknolojisi | Yeni Başlayanlar İçin Tepki | Çekirdek Java Temelleri |
java | Yeni Başlayanlar İçin Node.js | Gelişmiş JavaScript |
Götürmek
Özetlemek gerekirse, kalıtım, C++ programlamasında her programlama öğrencisinin ustalaşması gereken çok önemli bir kavramdır. Farklı kalıtım türlerini ve bunların kullanım durumlarını anlayarak verimli, düzenli ve sürdürülebilir kodlar oluşturabilir ve böylece daha iyi bir yazılım geliştiricisi olabilirsiniz.
Bu makaleyi ilginç bulduysanız, IIIT Bangalore ile işbirliği içinde sunulan upGrad'ın DevOps Sertifikasyon Programına kaydolarak yazılım geliştirme bilginizi daha da geliştirebilirsiniz . Bu program, kodlama, test etme ve devreye alma dahil olmak üzere yazılım geliştirmenin çeşitli yönlerini kapsar ve sektörde yetenekli bir yazılım geliştiricisi olmanıza yardımcı olabilir.
C++ programlamasında kalıtım neden önemlidir?
Kalıtımın kullanılmasıyla programcılar, karmaşık yazılım sistemlerini organize bir şekilde oluşturmak için yazılım geliştirmede zamandan ve emekten tasarruf edebilirler. Programcılar daha okunabilir kodlar oluşturmak için çalışırken, kodlama süreci çok yönlü basitleşir.
C++ programlamasında kalıtımı kullanırken hatırlanması gereken önemli şeyler nelerdir?
C++ programlamasında kalıtımı kullanırken, derin kalıtım hiyerarşilerinden kaçınmak, erişim değiştiricileri akıllıca kullanmak, elmas kalıtımı önlemek ve kalıtımı aşırı kullanmamak gibi bazı önemli noktaları akılda tutmak önemlidir.
Yazılım geliştirme projem için ne tür bir miras kullanmalıyım?
Doğru devralma türünün seçilmesi, özel yazılım geliştirme projesi gereksinimlerinize ve tasarım hedeflerinize bağlıdır. Çeşitli kalıtım türleri arasından seçim yapmak tamamen proje gereksinimlerinize bağlıdır. Bu nedenle, devam etmeden önce ayrıntılı bir analiz yapın.