C++'da Dinamik Bağlama: Açıklama, İşlevler ve Uygulama
Yayınlanan: 2021-02-04İçindekiler
Tanıtım
Bu makale, C++ 'da dinamik bağlamanın işleyişinde size yol gösterecek . C++'da kalıtım ve statik bağlamanın işleyişi hakkında temel bilgilere sahip olmanız beklenmektedir. Bunun nedeni, statik bağlamanın bazı sınırlamalarının dinamik bağlama tarafından kaldırılmasıdır. Doğru ve basit kodlarla birlikte dinamik bağlamanın ne kadar yararlı olduğunu size göstereceğiz.
Dinamik Bağlama nedir?
Bağlama ile, genellikle bir nesneyi diğerine bağlamayı kastediyoruz. Programlama dilleri açısından ciltleme çok farklı değildir. Bir işlev tanımı ve bir işlev çağrısının bağlanmasıdır. Ama neden 'dinamik'? Basit bir deyişle, dinamik bağlama, hangi işlevin çalıştırılacağı seçimini veya seçimini çalışma zamanına kadar geciktiriyor. C++ 'da dinamik bağlamayı kullanarak , nesnenin temel türüne göre hangi işlevi çalıştırabileceğimizi seçeriz.
Bu esneklik, statik bağlamaya sahip programcılara sağlanmadı. Statik bağlama, çalışma zamanında değil, derleme zamanında gerçekleşirdi. Ek olarak, statik bağlama, derleme süresi boyunca işlev çağrısı ve tanımının bağlantısını oluştururken, şimdi bildiğiniz gibi, dinamik bağlama bunu çalışma zamanına kadar yapmaz.
Dinamik bağlama, çalışma zamanında ihtiyaç duyduğumuz işlev türünü seçme esnekliği sağlayarak tür farklılıklarını yok saymamızı sağlar . Bu ifadeyi incelediğimizde, dinamik bağlamanın sadece tek bir fonksiyon adı kullanarak farklı nesneleri işlememize izin verdiğini anlayabiliriz. Bu, kod karmaşıklığını azaltır ve ayrıca programcının hata ayıklama sırasında daha kolay zaman geçirmesini sağlar.
Sanal Fonksiyonlar
C++'da dinamik bağlama hakkında çok konuştuk . Ama bununla nasıl devam edilir? C++ kodunuzda dinamik bağlama uygulamak için 'sanal işlevler' kullanmanız gerekir. Peki sanal fonksiyonlar nelerdir?
Bu makale, ayrı bir makale için yeterince önemli olduklarından, sanal işlevlere kapsamlı bir şekilde girilmeyecektir. Ancak dinamik bağlamayı net bir şekilde anlamanız için sanal işlevler hakkında yeterli bilgi verilecektir.

Sanal işlevler, bir işaretçi (veya başvuru) aracılığıyla yapılan çağrıların, nesnenin işaretçiyle türüne göre çalışma zamanında çözümlendiği özel üye işlevlerdir. Basit bir deyişle, bir temel sınıfta sanal bir işlev tanımlarsanız, işlevi türetilmiş sınıflarda geçersiz kılabilirsiniz.
Bu, sanal işlevlerin gücüdür. C++'da, işlev tanımının başındaki 'sanal' anahtar sözcüğünü kullanarak sanal bir işlev tanımlarsınız. Bir temel sınıfın türetilmiş her sınıfı için virtual anahtar sözcüğünü tekrarlamanız gerekmeyebilir, çünkü bir işlev 'sanal' olarak bildirildiğinde, türetilmiş tüm sınıflarda 'sanal' kalacaktır.
C++ Uygulaması
Bu sanal işlevlerle ilgili. Şimdi C++'da dinamik bağlamayı anlamak için bir programa bakalım :
Program #1 :
İki sınıf görüyoruz: - A Sınıfı 'temel' sınıf, B Sınıfı ise 'türetilmiş sınıf'. Her iki sınıfın içinde, aynı adı 'ekran' olan bir işlev vardır. Ebeveyn sınıfında, display() işlevini çağıran final_print() adında başka bir işlev vardır. main() işlevinde, aynı display() işlevini çağırarak iki farklı sınıf için iki farklı nesne oluşturuyoruz.

Yukarıdaki programın çıktısını görelim.
Program #1 için Çıktı:
Beklendiği gibi, çıktı, temel sınıfın display() işlevini derleme zamanında tanımlandığı gibi (statik bağlama) iki kez yürütür. Ama bu bizim istediğimiz çıktı değil.
Şimdi yukarıdaki kodu dinamik bir bağlama koduna dönüştürmek için sanal işlevleri kullanmamız gerekiyor. Bunu nasıl yapacağımızı görelim.
Program #2:
Class A ve Class B'deki her iki display() işlevimiz için de 'sanal' anahtar sözcüğünü ekleyerek onları sanal işlevler haline getiriyoruz. Tek gereken değişiklik budur. Daha önce olduğu gibi, iki farklı nesne kullanarak aynı final_print() işlevini çağırıyoruz. Şimdi hangi çıktıyı alacağımızı görelim.

Program #2 için Çıktı :
İstediğimiz çıktı bu ve bunu fonksiyonların dinamik bağlamasını kullanarak elde ettik.
Dünyanın En İyi Üniversitelerinden Online Yazılım Kursları Öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
Çözüm
Bu yazıda, C++ ' da dinamik bağlama kavramını inceledik . Özetlemek gerekirse, dinamik bağlama, farklı nesneleri işlemek için tek bir işlevi çağırarak bize esneklik sağlar. Kodumuzdan da anlaşılacağı gibi, bize iki farklı çıktı verecek iki farklı nesne yaparak aynı işlevi display() olarak adlandırdık. Bu mümkündür çünkü dinamik bağlama, derleme zamanında gerçekleşen statik bağlamadan farklı olarak çalışma zamanında gerçekleşir.
Full-stack geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saat zorlu eğitim, 9+ proje ve ödev sunan Full-stack Yazılım Geliştirmede Yönetici PG Programına göz atın , IIIT-B Mezun statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.
C++ programlama dili nedir?
C++ genel amaçlı bir programlama dilidir. Dünyada en çok kullanılan programlama dillerinden biridir. C++, C dilinin geliştirilmiş bir sürümüdür ve nesne yönelimli programlamayı kolaylaştıran olanaklar sağlar. C++ genel amaçlı bir programlama dilidir, C ise özel amaçlı bir programlama dilidir. C++, nesne yönelimli programlamayı desteklemek için C'nin bir uzantısı olarak oluşturulmuştur ve masaüstü uygulamaları, mobil cihazlar için uygulamalar, gömülü ve gerçek zamanlı sistemler ve web uygulamaları ve hizmetleri geliştirmek için kullanılır. C++ zorunlu, prosedürel, çok paradigmalı, derlenmiş, genel amaçlı bir programlama dilidir. Yapılandırılmış programlamayı, nesne yönelimli programlamayı ve genel programlamayı destekler. Dinamik bir tip sistemine ve açık bellek yönetimine sahiptir.
Nesne yönelimli programlama nedir?
OOP, yeniden kullanılabilir, bakımı kolay ve okunabilir kod oluşturmanın yoludur. Kısacası, OOP, yazılımı gerçek dünya nesneleri etrafında tasarlamaya dayanan bir programlama paradigmasıdır. Örneğin, Java'da, kitaplarla ilgilenen bir yazılım tasarlamak istiyorsanız, Kitap adında bir sınıf oluşturursunuz ve ardından bu sınıfın tek bir kitabı temsil eden ayrı örneklerini (nesnelerini) oluşturursunuz. Aynısı, yazılımda oluşturmanız gereken diğer sınıflar için de geçerlidir.
C++'da dinamik bağlama nedir?
Dinamik bağlama, bir program metnindeki bir tanımlayıcının anlamını, çalışma zamanında bulunan bu tanımlayıcının tanımıyla ilişkilendirir. Bu anlam ilişkilendirmesine bağlama denir. Nesne yönelimli programlamanın temel ilkesidir. Dinamik olarak bağlı tanımlayıcılar, nesne yönelimli sınıf hiyerarşisinin dalları ve yapraklarıdır. Dinamiktirler çünkü derleme zamanında değil, çalışma zamanında çözülürler. Nesne yönelimli sınıf hiyerarşisinin dalları ve yaprakları dinamiktir çünkü onlardan türetilen sınıflara bağlıdırlar.