Jenis Warisan di C++ Apa yang Harus Anda Ketahui?

Diterbitkan: 2023-04-05

Pernahkah Anda bertanya-tanya bagaimana beberapa sistem perangkat lunak populer dibuat? Itu semua berkat mekanisme kuat yang disebut pewarisan dalam pemrograman berorientasi objek (OOP). Warisan memungkinkan pemrogram untuk membuat kelas baru yang dibangun di atas yang sudah ada, memungkinkan penggunaan kembali kode dan pengembangan perangkat lunak yang efisien. Bayangkan Anda sedang membangun sebuah sistem yang membutuhkan beberapa kelas, yang masing-masing memiliki beberapa atribut dan perilaku yang sama.

Alih-alih menulis kode yang sama berulang kali, Anda dapat menggunakan pewarisan untuk membuat kelas dasar dan mendapatkan kelas baru darinya, sehingga menghemat waktu dan tenaga Anda.

Warisan tidak hanya efisien tetapi juga serbaguna. Di C++, ada beberapa jenis pewarisan, masing-masing dengan manfaat dan kasus penggunaan yang unik.

Dalam artikel ini, kita akan melihat secara lengkap berbagai jenis pewarisan dalam C++ , memberikan kode yang relevan, penjelasan, dan contoh kehidupan nyata di seluruh artikel.

Daftar isi

Berbagai Jenis Warisan di C++

Bahasa pemrograman C ++ menawarkan lima jenis opsi pewarisan yang berbeda untuk pemrogramnya. Bergantung pada konteks dan persyaratannya, pengembang dan pemrogram dapat bekerja dengan salah satu dari jenis pewarisan ini.

Warisan Tunggal

Pewarisan tunggal adalah jenis pewarisan yang paling umum di C++. Dalam pewarisan tunggal, kelas turunan mewarisi dari kelas dasar tunggal. Ini berarti bahwa suatu kelas mewarisi semua anggota data publik dan dilindungi serta fungsi anggota dari kelas dasar sambil memiliki kemampuan untuk menambahkan anggota data dan fungsi anggotanya sendiri.

Lihat cuplikan kode di bawah ini untuk mendapatkan sintaks dan pemahaman tentang pewarisan tunggal:

// Kelas Dasar

kelas Hewan {

publik:

batal makan() {

std::cout << “Hewan sedang makan” << std::endl;

}

};

// Kelas Turunan

kelas Anjing : Hewan publik {

publik:

batal kulit() {

std::cout << "Anjing menggonggong" << std::endl;

}

};

Dalam contoh ini, kami memiliki kelas dasar yang disebut Hewan dengan satu anggota fungsi makan().Kami kemudian mendefinisikanDog kelas turunan yang mewarisi secara publik dari Animal.Dog juga memiliki fungsi anggotanya sendiri bark().Dengan menggunakan pewarisan tunggal,Dog dapat mengakses fungsi eat()darikelas Animaldan menambahkan perilakunya sendiri denganfungsi bark().

Kapan menggunakan Warisan Tunggal di C++

Pemrogram dapat menggunakan pewarisan tunggal untuk membuat kelas turunan yang menambahkan fungsionalitas ke kelas dasar.

Misalnya, Anda dapat menggunakan pewarisan tunggal saat membuat game yang melibatkan karakter berbeda, seperti prajurit, penyihir, dan pemanah. Semua karakter ini memiliki beberapa atribut dan perilaku yang sama, seperti poin kesehatan, kekuatan serangan, dan kecepatan gerakan. Dengan menggunakan pewarisan tunggal, Anda dapat membuat kelas dasar yang disebut Karakter yang berisi atribut dan perilaku umum dan memperoleh setiap kelas karakter darinya untuk menambahkan fungsionalitas uniknya.

Dalam pewarisan berganda, satu kelas turunan dapat mewarisi dari banyak kelas dasar. Ini berarti bahwa suatu kelas dapat memiliki lebih dari satu kelas induk langsung. Akibatnya, kelas turunan mewarisi semua anggota data publik dan dilindungi serta fungsi anggota dari setiap kelas dasar.

Berikut adalah contoh pewarisan berganda:

// Kelas Dasar 1

kelas Bentuk {

publik:

luas ganda maya() = 0;

};

// Kelas Dasar 2

kelas Warna {

publik:

virtual std::string getColor() = 0;

};

// Kelas Turunan

kelas Rectangle : Bentuk publik, Warna publik {

publik:

double area() timpa {

kembali lebar * tinggi;

}

std::string getColor() menimpa {

warna kembali;

}

pribadi:

lebar ganda = 5,0;

tinggi ganda = 3,0;

std::string warna = "biru";

};

Dalam contoh ini, kita memiliki dua kelas dasar, Shape dan Color , masing-masing dengan fungsi virtualnya.Kami kemudian mendefinisikanRectangle kelas turunan yang mewarisi dari Bentuk dan Warna.Rectangle menimpa fungsi virtual dari kedua kelas dasar untuk menyediakan implementasinya sendiri. Dengan menggunakan pewarisan berganda,Persegi Panjang dapat mewarisi properti dari kedua kelas dasar, BentukdanWarna, untuk membuat persegi panjang dengan warna dan luas tertentu.

Kapan menggunakan Multiple Inheritance di C++

Gunakan banyak pewarisan saat Anda ingin menggabungkan fungsionalitas dari beberapa kelas dasar. Sebagai contoh, pertimbangkan aplikasi GUI yang membutuhkan berbagai jenis kontrol, seperti tombol, kotak centang, dan kotak teks. Setiap tipe kontrol memiliki fungsi dan perilakunya sendiri, tetapi mereka juga berbagi beberapa fungsi umum, seperti menangani peristiwa pengguna dan menampilkan teks.

Dengan menggunakan pewarisan berganda, Anda dapat membuat kelas dasar yang disebutKontrol yang berisi fungsi umum, dan memperoleh setiap jenis kontrol darinya, serta kelas dasar lain yang berisi fungsi khusus mereka.

Dalam pewarisan hierarkis, satu kelas dasar diwarisi oleh beberapa kelas turunan. Seperti pewarisan berganda, kelas turunan dalam pewarisan hierarki mendapatkan semua anggota data publik dan dilindungi serta fungsi anggota dari kelas dasar.

Berikut cuplikan kode untuk membantu Anda memahami implementasi pewarisan hierarkis di C++:

// Kelas Dasar

kelas Hewan {

publik:

virtual void makeSound() = 0;

};

// Turunan Kelas 1

kelas Kucing : Hewan publik {

publik:

membatalkan makeSound() menimpa {

std::cout << "Meong" << std::endl;

}

};

// Turunan Kelas 2

kelas Anjing : Hewan publik {

publik:

membatalkan makeSound() menimpa {

std::cout << "Guk" << std::endl;

}

};

Dalam contoh ini, kita memiliki kelas dasar bernama Animal dengan fungsi virtual makeSound().Kami kemudian mendefinisikan dua kelas turunan,Cat dan Dog, yang keduanya diwarisi dariAnimal. Setiap kelas turunan menimpa fungsimakeSound() untuk menyediakan implementasinya sendiri.Dengan menggunakan pewarisan hierarkis, kita dapat membuat berbagai jenis hewan yang memiliki perilaku yang sama, seperti mengeluarkan suara.

Kapan menggunakan Hierarchical Inheritance di C++

Gunakan pewarisan hierarki saat Anda ingin membuat beberapa kelas turunan yang berbagi fungsionalitas umum. Misalnya, pertimbangkan aplikasi perbankan yang memerlukan berbagai jenis rekening, seperti rekening tabungan, rekening giro, dan rekening kartu kredit. Semua jenis akun ini memiliki beberapa atribut dan perilaku yang sama, seperti nomor akun, saldo, dan suku bunga.

Dengan menggunakan pewarisan hierarkis, Anda dapat membuat kelas dasar yang disebut Akun yang berisi atribut dan perilaku umum dan memperoleh setiap jenis akun darinya untuk menambahkan fungsionalitas uniknya.

Warisan Bertingkat

Warisan bertingkat di C++ adalah jenis warisan di mana kelas turunan diwarisi oleh kelas turunan lainnya. Dalam skenario ini, kelas turunan mewarisi semua anggota data publik dan dilindungi serta fungsi anggota dari kelas induk langsungnya, yang pada gilirannya mewarisi dari kelas induknya sendiri, dan seterusnya.

Inilah cara Anda dapat mengimplementasikan pewarisan bertingkat secara terprogram dalam C++:

// Kelas Dasar

kendaraan kelas {

publik:

batal mulai() {

std::cout << "Kendaraan mulai" << std::endl;

}

};

// Kelas Menengah

Kelas Mobil : Kendaraan umum {

publik:

drive kosong() {

std::cout << "Mobil sedang mengemudi" << std::endl;

}

};

// Kelas Turunan

kelas SportsCar : mobil umum {

publik:

batal mempercepat() {

std::cout << “Mobil sport melaju kencang” << std::endl;

}

};

Kapan menggunakan pewarisan bertingkat di C++

Gunakan pewarisan bertingkat saat Anda ingin membuat kelas turunan yang mewarisi dari kelas turunan lain dan menambahkan fungsionalitasnya. Misalnya, pertimbangkan sistem perangkat lunak yang memerlukan berbagai jenis kendaraan, seperti mobil, truk, dan sepeda motor. Jenis kendaraan ini memiliki beberapa atribut dan perilaku yang sama, seperti kecepatan, akselerasi, dan pengereman.

Dengan menggunakan pewarisan bertingkat, Anda dapat membuat kelas dasar yang disebut Kendaraan yang berisi atribut dan perilaku umum dan menurunkan kelas perantara seperti MobildanTrukdarinya untuk menambahkan fungsionalitas khusus mereka. Kemudian, Anda dapat menurunkankelas SportsCar dari kelas Mobiluntuk menambahkan fungsionalitas uniknya.

Warisan hibrida adalah kombinasi dari dua atau lebih jenis warisan. Juga disebut sebagai pewarisan virtual, kelas turunan dalam pewarisan hibrid mewarisi dari banyak kelas dasar, beberapa di antaranya diwariskan melalui banyak jalur. Ini dapat menciptakan hierarki pewarisan yang kompleks dan dapat menjadi tantangan untuk dipahami dan dipertahankan.

LihatKursus Pengembangan Perangkat Lunak upGraduntuk meningkatkan keterampilan Anda.

Berikut adalah contoh pewarisan hibrid di C++:

// Kelas Dasar 1

kelas Hewan {

publik:

virtual void makeSound() = 0;

};

// Kelas Dasar 2

kelas CanFly {

publik:

virtual void fly() = 0;

};

// Kelas Dasar 3

kelas CanSwim {

publik:

virtual void swim() = 0;

};

// Kelas Turunan

kelas Kelelawar : Hewan umum, CanFly umum {

publik:

membatalkan makeSound() menimpa {

std::cout << "Pekikan!"<< std::endl;

}

batal terbang() timpa {

std::cout << "Kelelawar sedang terbang" << std::endl;

}

};

// Kelas Turunan

kelas Penguin: Hewan publik, CanSwim publik {

publik:

membatalkan makeSound() menimpa {

std::cout << "Hooonk!"<< std::endl;

}

batal berenang() menimpa {

std::cout << "Penguin sedang berenang" << std::endl;

}

};

Jelajahi Kursus Rekayasa Perangkat Lunak Populer kami

Master of Science dalam Ilmu Komputer dari LJMU & IIITB Program Sertifikat Keamanan Siber Caltech CTME
Kamp Pelatihan Pengembangan Tumpukan Penuh Program PG di Blockchain
Program PG Eksekutif dalam Pengembangan Stack Penuh
Lihat Semua Kursus kami Di Bawah Ini
Kursus Rekayasa Perangkat Lunak

Kapan menggunakan Hybrid Inheritance di C++

Selain keempat jenis pewarisan yang telah dibahas sebelumnya, pewarisan hibrid dapat berguna dalam skenario tertentu di mana beberapa jenis pewarisan diperlukan. Gunakan pewarisan hibrid untuk menggabungkan manfaat dari berbagai jenis pewarisan.

Misalnya, pertimbangkan sistem perangkat lunak yang membutuhkan berbagai jenis hewan, beberapa di antaranya dapat terbang sementara yang lain dapat berenang. Anda bisa menggunakan pewarisan hibrid untuk membuat kelas dasar bernama Animal dan mendapatkan dua kelas perantara, CanFlydanCanSwim, darinya. Terakhir, dengan menggunakan pewarisan hibrid, Anda dapat menurunkan kelasBat dan Penguindari kedua kelas perantara. Kelas Bat akan mewarisi dariAnimal dan CanFly, sedangkan kelasPenguinakan mewarisidariAnimal danCanSwim. Dengan demikian, Anda dapat membuat berbagai jenis hewan dengan kombinasi kemampuan yang unik.

Pewarisan hibrid dalam C++ dapat berguna dalam sistem perangkat lunak kompleks yang memerlukan banyak jenis pewarisan. Namun, hal itu juga dapat menciptakan hierarki pewarisan yang rumit yang dapat menjadi tantangan untuk dipahami dan dipertahankan. Seperti jenis pewarisan lainnya, memilih jenis yang tepat untuk persyaratan proyek pengembangan perangkat lunak khusus dan tujuan desain Anda sangatlah penting.

Baca Artikel Populer kami yang terkait dengan Pengembangan Perangkat Lunak

Lihatkursus teknologi gratis kami untuk mendapatkan keunggulan dalam persaingan.

Hal Penting yang Perlu Diingat Saat Menggunakan Warisan:

Meskipun pewarisan adalah mekanisme yang ampuh dalam C++, ia juga memiliki beberapa faktor yang perlu dipertimbangkan saat menerapkannya.

  1. Hindari Hierarki Inheritansi Mendalam : Hirarki pewarisan mendalam dapat menyebabkan kode yang sulit dibaca, dipahami, dan dipelihara.Pertahankan hierarki pewarisan Anda sekecil mungkin untuk meningkatkan keterbacaan dan pemeliharaan kode.
  2. Gunakan Pengubah Akses dengan Bijak: Pengubah akses (publik, dilindungi, dan pribadi) mengontrol visibilitas anggota data dan fungsi anggota di kelas.Gunakan dengan bijak untuk menghindari paparan detail implementasi yang seharusnya tidak terlihat di luar kelas.
  3. Hindari Warisan Berlian: Warisan berlian terjadi ketika suatu kelas mewarisi dari dua kelas yang mewarisi dari kelas dasar yang sama.Hal ini dapat menyebabkan ambiguitas dan umumnya sebaiknya dihindari.
  4. Hindari Penggunaan Warisan Secara Berlebihan: Meskipun warisan dapat bermanfaat, penting untuk menghindari penggunaan yang berlebihan.Dalam beberapa kasus, komposisi atau pola desain lainnya mungkin merupakan pilihan yang lebih baik.

Jelajahi Kursus Gratis Pengembangan Perangkat Lunak Kami

Dasar-dasar Cloud Computing Dasar-dasar JavaScript dari awal Struktur Data dan Algoritma
Teknologi Blockchain Bereaksi untuk Pemula Dasar-Dasar Inti Java
Jawa Node.js untuk Pemula JavaScript tingkat lanjut

Membawa pergi

Singkatnya, pewarisan adalah konsep penting dalam pemrograman C++ yang harus dikuasai oleh setiap siswa pemrograman. Dengan memahami berbagai jenis pewarisan dan kasus penggunaannya, Anda dapat membuat kode yang efisien, teratur, dan dapat dipelihara, sehingga menjadi pengembang perangkat lunak yang lebih baik.

Jika Anda menemukan artikel ini menarik, Anda dapat lebih meningkatkan pengetahuan Anda tentang pengembangan perangkat lunak dengan mendaftar di Program Sertifikasi DevOps upGrad yang ditawarkan bekerja sama dengan IIIT Bangalore. Program ini mencakup berbagai aspek pengembangan perangkat lunak, termasuk pengkodean, pengujian, dan penerapan, dan dapat membantu Anda menjadi pengembang perangkat lunak yang terampil di industri ini.

Mengapa pewarisan penting dalam pemrograman C++?

Dengan pemanfaatan warisan, pemrogram dapat menghemat waktu dan tenaga dalam pengembangan perangkat lunak untuk membangun sistem perangkat lunak yang kompleks secara terorganisir. Saat pemrogram bekerja untuk membuat kode yang lebih mudah dibaca, proses pengkodean disederhanakan menjadi bermacam-macam.

Apa hal penting yang harus diingat saat menggunakan pewarisan dalam pemrograman C++?

Saat menggunakan pewarisan dalam pemrograman C++, penting untuk mengingat beberapa hal penting, seperti menghindari hierarki pewarisan yang dalam, menggunakan pengubah akses dengan bijak, menghindari pewarisan berlian, dan tidak menggunakan pewarisan secara berlebihan.

Jenis warisan apa yang harus saya gunakan untuk proyek pengembangan perangkat lunak saya?

Memilih jenis pewarisan yang tepat bergantung pada persyaratan proyek pengembangan perangkat lunak spesifik dan tujuan desain Anda. Memilih dari berbagai jenis warisan sepenuhnya bergantung pada persyaratan proyek Anda. Oleh karena itu, buat analisis terperinci sebelum melanjutkannya.