Panduan Pemula tentang Warisan C++
Halo para jagoan C++ masa depan! Hari ini, kita akan melakukan perjalanan yang menarik ke dalam dunia warisan C++. Jangan khawatir jika Anda masih baru di bidang pemrograman – saya akan menjadi pemandu yang ramah, dan kita akan melakukannya langkah demi langkah. Pada akhir tutorial ini, Anda akan kaget betapa banyak hal yang telah Anda pelajari!
Apa Itu Warisan?
Sebelum kita melompat masuk, mari kita mulai dengan analogi yang sederhana. Bayangkan Anda membuat pohon keluarga. sama seperti anak-anak yang mewarisi sifat dari orang tua mereka, di C++, kelas juga dapat mewarisi properti dan perilaku dari kelas lain. Keren, bukan?
Warisan adalah konsep pokok dalam pemrograman berorientasi objek yang memungkinkan kita untuk membuat kelas baru berdasarkan kelas yang sudah ada. Hal ini mempromosikan penggunaan kembali kode dan membantu dalam mengorganisir kode kita dalam struktur hirarki.
Kelas Dasar dan Turunan
Dalam dunia warisan C++, kita memiliki dua pemain utama: kelas dasar dan kelas turunan.
Kelas Dasar
Kelas dasar (juga dikenal sebagai kelas orang tua atau superclass) adalah kelas yang dari mana kelas lain mengwarisi. Ini seperti leluhur dalam analogi pohon keluarga kita.
Mari kita membuat kelas dasar sederhana:
class Hewan {
public:
void makan() {
cout << "Hewan ini sedang makan." << endl;
}
void tidur() {
cout << "Hewan ini sedang tidur." << endl;
}
};
Dalam contoh ini, Hewan
adalah kelas dasar kita. Dia memiliki dua metode: makan()
dan tidur()
. Ini adalah perilaku umum yang banyak hewan milikinya.
Kelas Turunan
Kelas turunan (juga disebut kelas anak atau subclass) adalah kelas yang mewarisi dari kelas dasar. Ini seperti keturunan dalam pohon keluarga kita.
Mari kita membuat kelas turunan:
class Anjing : public Hewan {
public:
void gonggong() {
cout << "Woof! Woof!" << endl;
}
};
Di sini, Anjing
adalah kelas turunan kita. Dia mewarisi dari Hewan
, jadi secara otomatis memiliki metode makan()
dan tidur()
. Kita juga menambahkan metode baru gonggong()
yang spesifik untuk anjing.
Sekarang, mari kita lihat bagaimana kita dapat menggunakan kelas ini:
int main() {
Anjing anjingku;
anjingku.makan(); // Output: Hewan ini sedang makan.
anjingku.tidur(); // Output: Hewan ini sedang tidur.
anjingku.gonggong();// Output: Woof! Woof!
return 0;
}
Apakah itu keren? Kelas Anjing
kita dapat menggunakan metode dari kelas Hewan
tanpa harus menulis ulang mereka!
Kontrol Akses dan Warisan
Sekarang, mari kita berbicara tentang siapa yang dapat melihat apa di dalam keluarga C++ kita. sama seperti di keluarga nyata, beberapa hal adalah wajib bagi publik, beberapa hanya untuk anggota keluarga, dan beberapa adalah rahasia pribadi.
Di C++, kita memiliki tiga tingkat akses:
- Publik
- Terperlindung
- Pribadi
Mari kita lihat bagaimana hal ini bekerja dengan warisan:
class Hewan {
public:
int umur;
protected:
string nama;
private:
int kodeRahasia;
};
class Anjing : public Hewan {
public:
void setNama(string n) {
nama = n; // OK, 'nama' adalah terperlindung di Hewan
}
void setKodeRahasia(int kode) {
// kodeRahasia = kode; // Error! 'kodeRahasia' adalah pribadi di Hewan
}
};
Dalam contoh ini:
-
umur
adalah publik, jadi dapat diakses dari mana saja. -
nama
adalah terperlindung, jadi dapat diakses diHewan
dan setiap kelas yang mewarisiHewan
. -
kodeRahasia
adalah pribadi, jadi hanya dapat diakses dalam kelasHewan
.
Tipe Warisan
C++ menawarkan berbagai jenis warisan untuk memenuhi kebutuhan yang beragam. Mari kita jelajahi mereka!
Warisan Tunggal
Ini adalah bentuk terpendek, di mana kelas mengwarisi hanya satu kelas dasar. Kita sudah melihat ini dengan contoh Anjing
kita.
Warisan Multilevel
Ini seperti garis keturunan: cucu mewarisi dari ayah, yang mewarisi dari kakek.
class Hewan {
public:
void makan() { cout << "Makan..." << endl; }
};
class Mamalia : public Hewan {
public:
void bernafas() { cout << "Bernafas..." << endl; }
};
class Anjing : public Mamalia {
public:
void gonggong() { cout << "Gonggong..." << endl; }
};
int main() {
Anjing anjingku;
anjingku.makan(); // Dari Hewan
anjingku.bernafas(); // Dari Mamalia
anjingku.gonggong(); // Dari Anjing
return 0;
}
Warisan Hierarki
Ini ketika beberapa kelas mengwarisi dari satu kelas dasar. Bayangkan ini seperti saudara kandung dalam keluarga.
class Hewan {
public:
void makan() { cout << "Makan..." << endl; }
};
class Anjing : public Hewan {
public:
void gonggong() { cout << "Gonggong..." << endl; }
};
class Kucing : public Hewan {
public:
void miang() { cout << "Miang..." << endl; }
};
Warisan Campuran
Warisan campuran adalah ketika kelas mengwarisi dari lebih dari satu kelas dasar. Ini seperti memiliki sifat dari kedua orang tua Anda!
classCreaturePenerbangan {
public:
void terbang() { cout << "Terbang..." << endl; }
};
classCreatureRenang {
public:
void renang() { cout << "Renang..." << endl; }
};
class Bebek : publicCreaturePenerbangan, publicCreatureRenang {
public:
void kwek() { cout << "Kwek..." << endl; }
};
int main() {
Bebek bebekku;
bebekku.terbang(); // DariCreaturePenerbangan
bebekku.renang(); // DariCreatureRenang
bebekku.kwek(); // Dari Bebek
return 0;
}
Hati-hati, meskipun! Warisan campuran dapat menyebabkan masalah yang terkenal "masalah permata" jika tidak digunakan dengan hati-hati.
Tabel Metode Warisan
Berikut adalah tabel ringkasan tentang jenis warisan yang kita diskusikan:
Tipe Warisan | Deskripsi | Contoh |
---|---|---|
Tunggal | Kelas mengwarisi dari satu kelas dasar | Anjing : public Hewan |
Multilevel | Kelas mengwarisi dari kelas turunan | Anjing : public Mamalia, Mamalia : public Hewan |
Hierarki | Beberapa kelas mengwarisi dari satu kelas dasar | Anjing : public Hewan, Kucing : public Hewan |
Campuran | Kelas mengwarisi dari beberapa kelas dasar | Bebek : publicCreaturePenerbangan, publicCreatureRenang |
Dan itu adalah semua, teman-teman! Kita telah membahas dasar-dasar warisan C++. Ingat, praktek membuat perfect, jadi jangan takut untuk bereksperimen dengan konsep ini. Selamat coding, dan semoga warisan bersama dengan Anda!
Credits: Image by storyset