Pengikatan Dinamis di C++: Penjelasan, Fungsi & Implementasi

Diterbitkan: 2021-02-04

Daftar isi

pengantar

Artikel ini akan memandu Anda melalui cara kerja pengikatan dinamis di C++ . Anda diharapkan memiliki pengetahuan dasar tentang cara kerja pewarisan dan pengikatan statis di C++. Ini karena beberapa batasan pengikatan statis dihilangkan dengan pengikatan dinamis. Kami akan menunjukkan kepada Anda, bersama dengan kode yang tepat dan sederhana, bagaimana pengikatan dinamis berguna.

Apa itu Pengikatan Dinamis?

Dengan mengikat, kami biasanya berarti menghubungkan satu objek dengan yang lain. Dalam hal bahasa pemrograman, binding tidak jauh berbeda. Ini adalah menghubungkan definisi fungsi dan panggilan fungsi. Tapi kenapa 'dinamis'? Dengan kata sederhana, dynamic binding hanya menunda pilihan atau pemilihan fungsi mana yang akan dijalankan hingga runtime-nya. Menggunakan pengikatan dinamis di C++ , kita memilih fungsi mana yang dapat kita jalankan berdasarkan jenis objek yang mendasarinya.

Fleksibilitas ini tidak diberikan kepada pemrogram dengan pengikatan statis. Pengikatan statis dulu terjadi pada waktu kompilasi dan bukan waktu berjalan. Selain itu, pengikatan statis membuat tautan panggilan fungsi dan definisi selama waktu kompilasi, sedangkan, seperti yang Anda ketahui sekarang, pengikatan dinamis tidak melakukannya sampai waktu berjalan.

Pengikatan dinamis memungkinkan kita untuk mengabaikan perbedaan tipe dengan memberikan kita fleksibilitas dalam memilih tipe fungsi yang kita butuhkan pada saat runtime. Saat memeriksa pernyataan ini, kita dapat memahami bahwa pengikatan dinamis memungkinkan kita untuk menangani objek yang berbeda hanya dengan menggunakan satu nama fungsi. Ini mengurangi kompleksitas kode dan juga memungkinkan programmer untuk memiliki waktu yang lebih mudah saat debugging.

Fungsi Virtual

Kami telah banyak berbicara tentang pengikatan dinamis dalam C++ . Tapi bagaimana melanjutkannya? Untuk menerapkan pengikatan dinamis dalam kode C++ Anda, Anda perlu menggunakan 'fungsi virtual'. Jadi apa fungsi virtual?

Artikel ini tidak akan membahas secara ekstensif fungsi virtual karena cukup penting untuk artikel terpisah. Tetapi Anda akan diberikan informasi yang cukup tentang fungsi virtual untuk memahami pengikatan dinamis dengan jelas.

Fungsi virtual adalah fungsi anggota khusus yang panggilannya dilakukan melalui pointer (atau referensi) diselesaikan pada saat run time, berdasarkan tipe objek dengan pointer. Dengan kata sederhana, jika Anda mendefinisikan fungsi virtual di kelas dasar, Anda bisa mengganti fungsi di kelas turunan.

Ini adalah kekuatan fungsi virtual. Di C++, Anda mendefinisikan fungsi virtual menggunakan kata kunci 'virtual' di awal definisi fungsi. Anda mungkin tidak perlu mengulang kata kunci virtual untuk setiap kelas turunan dari kelas dasar karena begitu suatu fungsi dideklarasikan 'virtual', ia akan tetap 'virtual' di semua kelas turunan.

Implementasi C++

Itu tentang fungsi virtual. Sekarang mari kita lihat program untuk memahami dynamic binding di C++ :

Program #1 :

Kita melihat dua kelas: - Kelas A adalah kelas 'dasar', sedangkan Kelas B adalah 'kelas turunan'. Di dalam kedua kelas, ada satu fungsi dengan nama 'tampilan' yang sama. Di kelas induk, ada fungsi lain bernama final_print() yang memanggil fungsi display(). Dalam fungsi main(), kita membuat dua objek berbeda untuk dua kelas berbeda, memanggil fungsi display() yang sama.

Mari kita lihat output dari program di atas.

Keluaran untuk Program #1:

Seperti yang diharapkan, output mengeksekusi fungsi display() kelas dasar dua kali seperti yang didefinisikan pada waktu kompilasi (pengikatan statis). Tapi ini bukan output yang kami inginkan.

Sekarang untuk mengubah kode di atas menjadi pengikatan dinamis, kita perlu menggunakan fungsi virtual. Mari kita lihat bagaimana melakukannya.

Program #2:

Kami hanya menambahkan kata kunci 'virtual' untuk kedua fungsi display() kami di Kelas A dan Kelas B, sehingga menjadikannya fungsi virtual. Itulah satu-satunya perubahan yang diperlukan. Sama seperti sebelumnya, kita memanggil fungsi final_print() yang sama menggunakan dua objek yang berbeda. Mari kita lihat output apa yang kita dapatkan sekarang.

Keluaran untuk Program #2 :

Ini adalah output yang kami inginkan, dan kami mendapatkannya menggunakan pengikatan dinamis fungsi.

Pelajari Kursus Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

Pada artikel ini, kami membahas konsep pengikatan dinamis dalam C++ . Untuk meringkas, pengikatan dinamis memungkinkan kita fleksibilitas dengan memanggil satu fungsi untuk menangani objek yang berbeda. Seperti yang terlihat dari kode kami, kami memanggil fungsi yang sama display() dengan membuat dua objek berbeda untuk memberi kami dua keluaran berbeda. Ini dimungkinkan karena pengikatan dinamis terjadi pada saat runtime, tidak seperti pengikatan statis yang terjadi pada waktu kompilasi.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang pengembangan tumpukan penuh, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh yang dirancang untuk para profesional yang bekerja dan menawarkan 500+ jam pelatihan ketat, 9+ proyek, dan tugas , Status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa itu bahasa pemrograman C++?

C++ adalah bahasa pemrograman tujuan umum. Ini adalah salah satu bahasa pemrograman yang paling banyak digunakan di dunia. C++ adalah versi bahasa C yang disempurnakan dan menyediakan fasilitas yang memfasilitasi pemrograman berorientasi objek. C++ adalah bahasa pemrograman tujuan umum sedangkan C adalah bahasa pemrograman tujuan khusus. C++ dibuat sebagai perpanjangan dari C untuk mendukung pemrograman berorientasi objek dan digunakan untuk mengembangkan aplikasi desktop, aplikasi untuk perangkat seluler, sistem tertanam dan waktu nyata, serta aplikasi dan layanan web. C++ adalah bahasa pemrograman yang imperatif, prosedural, multi-paradigma, dikompilasi, untuk tujuan umum. Ini mendukung pemrograman terstruktur, pemrograman berorientasi objek, dan pemrograman generik. Ini memiliki sistem tipe dinamis dan manajemen memori eksplisit.

Apa itu pemrograman berorientasi objek?

OOP adalah cara untuk membuat kode yang dapat digunakan kembali, mudah dirawat, dan dapat dibaca. Singkatnya, OOP adalah paradigma pemrograman yang didasarkan pada perancangan perangkat lunak di sekitar objek dunia nyata. Misalnya, di Java, jika Anda ingin merancang perangkat lunak yang berhubungan dengan buku, Anda membuat kelas yang disebut Buku dan kemudian membuat instance (objek) terpisah dari kelas ini yang mewakili satu buku. Hal yang sama berlaku untuk kelas lain yang perlu Anda buat dalam perangkat lunak.

Apa itu pengikatan dinamis dalam C++?

Pengikatan dinamis mengaitkan arti pengidentifikasi dalam teks program dengan definisi untuk pengidentifikasi yang ditemukan saat runtime. Asosiasi makna ini disebut mengikat. Ini adalah prinsip dasar pemrograman berorientasi objek. Pengidentifikasi yang terikat secara dinamis adalah cabang dan daun dari hierarki kelas berorientasi objek. Mereka dinamis karena diselesaikan pada saat run-time, bukan pada waktu kompilasi. Cabang dan daun dari hierarki kelas berorientasi objek bersifat dinamis karena terikat dengan kelas turunannya.