C++ Kelas dan Objek dengan Contoh
Apa itu Kelas?
A C++ kelas menggabungkan data dan metode untuk memanipulasi data menjadi satu. Kelas juga menentukan bentuk-bentuk benda. Data dan metode yang terdapat dalam suatu kelas dikenal sebagai anggota kelas. Kelas adalah tipe data yang ditentukan pengguna. Untuk mengakses anggota kelas, kami menggunakan instance kelas. Anda dapat melihat kelas sebagai cetak biru suatu objek.
Kelas dapat menjadi prototipe rumah. Kelas menunjukkan lokasi dan ukuran pintu, jendela, lantai, dll. Dari deskripsi ini, kita dapat membangun rumah. Rumah menjadi objek. Banyak rumah dapat dibuat dari prototipe. Selain itu, banyak objek dapat dibuat dari kelas.
Pada gambar di atas, kita mempunyai prototipe rumah tunggal. Dari prototipe ini, kami membuat dua rumah dengan fitur berbeda.
Deklarasi Kelas
Di C+, kelas didefinisikan menggunakan kata kunci class. Ini harus diikuti dengan nama kelas. Badan kelas kemudian ditambahkan di antara kurung kurawal {}.
Sintaksis
class class-name { // data // functions };
- Nama kelas adalah nama yang akan ditetapkan ke kelas tersebut.
- Data adalah data untuk kelas, biasanya dinyatakan sebagai variabel.
- Fungsinya adalah fungsi kelas.
Kata Kunci Pribadi dan Publik
Anda pasti pernah menjumpai dua kata kunci tersebut. Mereka adalah pengubah akses.
- Pribadi:
Ketika kata kunci private digunakan untuk mendefinisikan suatu fungsi atau kelas, kata kunci tersebut menjadi private. Itu hanya dapat diakses dari dalam kelas.
- Publik:
Kata kunci public, sebaliknya, membuat data/fungsi menjadi publik. Ini dapat diakses dari luar kelas.
Definisi Objek
Objek dibuat dari kelas. Objek kelas dideklarasikan dengan cara yang sama seperti variabel dideklarasikan. Nama kelas harus dimulai, diikuti dengan nama objek. Objek dari tipe kelas.
Sintaksis
class-name object-name;
- Nama kelas adalah nama kelas tempat objek akan dibuat.
- Nama objek adalah nama yang akan diberikan pada objek baru.
Proses pembuatan objek dari suatu kelas dikenal sebagai instantiasi.
Mengakses Data Anggota
Untuk mengakses anggota publik suatu kelas, kami menggunakan operator (.)dot. Ini adalah anggota yang ditandai dengan pengubah akses publik.
Contoh 1
#include <iostream> using namespace std; class Phone { public: double cost; int slots; }; int main() { Phone Y6; Phone Y7; Y6.cost = 100.0; Y6.slots = 2; Y7.cost = 200.0; Y7.slots = 2; cout << "Cost of Huawei Y6 : " << Y6.cost << endl; cout << "Cost of Huawei Y7 : " << Y7.cost << endl; cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl; cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl; return 0; }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Menyertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Deklarasikan kelas bernama Phone.
- Menggunakan pengubah akses publik untuk menandai variabel yang akan kita buat sebagai dapat diakses publik.
- Nyatakan biaya variabel dari tipe data ganda.
- Deklarasikan variabel integer bernama slot.
- Akhir dari badan kelas.
- Memanggil fungsi main(). Logika program harus ditambahkan di dalam tubuhnya.
- Buat objek bernama Y6 dengan tipe Telepon. Ini disebut instantiasi.
- Buat objek bernama Y7 dengan tipe Telepon. Ini disebut instantiasi.
- Akses variabel/biaya anggota kelas Phone menggunakan objek Y6. Nilainya diatur ke 100.0. Biaya Y6 sekarang disetel ke 100.0.
- Akses variabel/slot anggota kelas Phone menggunakan objek Y6. Nilainya disetel ke 2. Slot untuk Y6 kini disetel ke 2.
- Akses variabel/biaya anggota kelas Phone menggunakan objek Y7. Nilainya diatur ke 200.0. Biaya Y7 sekarang disetel ke 200.0.
- Akses variabel/slot anggota kelas Phone menggunakan objek Y7. Nilainya disetel ke 2. Slot untuk Y7 kini disetel ke 2.
- Cetak biaya Y6 di konsol bersama teks lainnya.
- Cetak biaya Y7 di konsol bersama teks lainnya.
- Cetak jumlah slot untuk Y6 di samping teks lainnya.
- Cetak jumlah slot untuk Y7 di samping teks lainnya.
- Program harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Apa itu Kelas Privat?
Anggota kelas yang ditandai sebagai pribadi hanya dapat diakses oleh fungsi yang ditentukan dalam kelas tersebut. Objek atau fungsi apa pun yang didefinisikan di luar kelas tidak dapat mengakses anggota tersebut secara langsung. Anggota kelas privat hanya diakses oleh fungsi anggota dan teman.
Apa itu Kelas yang Dilindungi?
Anggota kelas yang ditandai sebagai dilindungi mempunyai keunggulan dibandingkan mereka yang ditandai sebagai pribadi. Mereka dapat diakses oleh fungsi-fungsi dalam kelas definisinya. Selain itu, mereka dapat diakses dari kelas turunan.
Contoh 2
#include <iostream> using namespace std; class ClassA { public: void set_a(int val); int get_a(void); private: int a; }; int ClassA::get_a(void) { return a; } void ClassA::set_a(int val) { a = val; } int main() { ClassA a; a.set_a(20); cout << "Value of a is: " << a.get_a(); return 0; }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Buat kelas bernama KelasA.
- Gunakan pengubah akses publik untuk menandai anggota kelas yang akan dibuat sebagai dapat diakses publik.
- Buat fungsi bernama set_a() yang mengambil satu nilai integer val.
- Buat fungsi bernama get_a().
- Gunakan pengubah akses privat untuk menandai anggota kelas yang akan dibuat sebagai dapat diakses secara privat.
- Deklarasikan variabel integer bernama a.
- Akhir dari badan kelas.
- Gunakan nama kelas dan operator resolusi cakupan untuk mengakses fungsi get_a(). Kami ingin mendefinisikan fungsi apa yang dilakukan ketika dipanggil.
- Fungsi get_a() harus mengembalikan nilai variabel a saat dipanggil.
- Akhir dari definisi fungsi get_a().
- Gunakan nama kelas dan operator resolusi cakupan untuk mengakses fungsi set_a(). Kami ingin mendefinisikan fungsi apa yang dilakukan ketika dipanggil.
- Menetapkan nilai variabel val ke variabel a.
- Akhir dari definisi fungsi set_a().
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat sebuah instance dari ClassA dan beri nama a.
- Gunakan instance kelas di atas dan fungsi set_a() untuk memberikan nilai 20 ke variabel a.
- Mencetak beberapa teks di samping nilai variabel a di konsol. Nilai variabel a diperoleh dengan memanggil fungsi get_a().
- Program harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Contoh 3
#include <iostream> using namespace std; class ParentClass { protected: int value; }; class ChildClass : public ParentClass { public: void setId(int x) { value = x; } void displayValue() { cout << "Value is: " << value << endl; } }; int main() { ChildClass c; c.setId(21); c.displayValue(); return 0; }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Buat kelas bernama ParentClass.
- Gunakan pengubah akses yang dilindungi untuk menandai anggota kelas yang akan dibuat sebagai dilindungi.
- Buat variabel integer bernama nilai.
- Akhir dari badan kelas.
- Buat kelas baru bernama ChildClass yang mewarisi ParentClass.
- Gunakan pengubah akses yang dilindungi untuk menandai anggota kelas yang akan dibuat sebagai dapat diakses oleh kelas anak.
- Buat fungsi bernama setId() yang mengambil satu nilai integer x.
- Menetapkan nilai variabel x ke nilai variabel.
- Akhir dari definisi fungsi setId().
- Buat fungsi bernama displayValue().
- Cetak nilai variabel bernama value di konsol bersama teks lainnya.
- Akhir dari isi fungsi displayValue().
- Akhir dari badan kelas bernama ChildClass.
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat sebuah instance dari ChildClass dan beri nama c.
- Gunakan instance kelas di atas dan fungsi setId() untuk menetapkan nilai 21 ke variabel x.
- Gunakan instance kelas di atas untuk memanggil fungsi bernama displayValue().
- Program harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Fungsi Anggota Kelas
Fungsi membantu kita memanipulasi data. Fungsi anggota kelas dapat didefinisikan dalam dua cara:
- Di dalam definisi kelas
- Di luar definisi kelas
Jika suatu fungsi ingin didefinisikan di luar definisi kelas, kita harus menggunakan operator resolusi cakupan (::). Ini harus disertai dengan nama kelas dan fungsi.
Contoh 2
#include <iostream> #include <string> using namespace std; class Guru99 { public: string tutorial_name; int id; void printname(); void printid() { cout << "Tutorial id is: "<< id; } }; void Guru99::printname() { cout << "Tutorial name is: " << tutorial_name; } int main() { Guru99 guru99; guru99.tutorial_name = "C++"; guru99.id = 1001; guru99.printname(); cout << endl; guru99.printid(); return 0; }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam program kami untuk menggunakan fungsinya.
- Sertakan file header string dalam program kami untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Buat kelas bernama Guru99.
- Gunakan pengubah akses publik untuk menandai anggota kelas yang akan kita buat sebagai dapat diakses publik.
- Buat variabel string bernama tutorial_name.
- Buat variabel integer bernama id.
- Buat fungsi bernama printname(). Fungsi ini tidak didefinisikan dalam definisi kelas.
- Buat fungsi bernama print(). Fungsi ini didefinisikan dalam definisi kelas. Badannya telah ditambahkan dalam definisi kelas.
- Cetak nilai id variabel bersama teks lain di konsol. Perhatikan ini telah ditambahkan di dalam isi fungsi printid(). Ini hanya akan dieksekusi ketika fungsi printid() dipanggil.
- Akhir dari isi fungsi printid().
- Akhir dari badan kelas Guru99.
- Awal definisi fungsi printname().
- Cetak nilai variabel tutorial_name di konsol bersama teks lainnya. Perhatikan ini telah ditambahkan di dalam isi fungsi printname(). Ini hanya akan dieksekusi ketika fungsi printname() dipanggil.
- Akhir dari definisi fungsi printname().
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat sebuah instance dari kelas Guru99 dan beri nama guru99.
- Gunakan contoh di atas untuk menetapkan nilai C++ ke variabel tutorial_name.
- Gunakan contoh guru99 untuk memberikan nilai 1001 ke variabel id.
- Gunakan contoh guru99 untuk memanggil fungsi printname() .
- Panggil perintah akhir (end line) untuk mencetak baris kosong baru di konsol.
- Gunakan instance guru99 untuk memanggil fungsi printid().
- Program harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
Konstruktor dan Destruktor
Apa itu Konstruktor?
Konstruksi adalah fungsi khusus yang menginisialisasi objek. Itu C++ kompiler memanggil konstruktor saat membuat objek. Konstruktor membantu memberikan nilai kepada anggota kelas. Tentu saja, ini setelah mereka diberi sejumlah ruang memori.
Apa itu Destructor?
Destruktor di sisi lain membantu menghancurkan objek kelas.
Nama konstruktor harus sama dengan nama kelas. Konstruktor tidak memiliki tipe pengembalian.
Konstruktor dapat didefinisikan di dalam atau di luar badan kelas. Jika didefinisikan di luar badan kelas, maka harus didefinisikan dengan nama kelas dan operator resolusi cakupan (::).
Contoh 3
#include <iostream> using namespace std; class ClassA { public: ClassA() { cout << "Class constructor called"<<endl; } ~ClassA() { cout << "Class destructor called"<<endl; } }; int main() { ClassA a; int p = 1; if (p) { ClassA b; } }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream ke dalam kode untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Buat kelas bernama KelasA.
- Gunakan pengubah akses publik untuk menandai anggota yang akan kita buat sebagai anggota yang dapat diakses publik.
- Buat konstruktor untuk kelas.
- Teks untuk dicetak di konsol saat konstruktor dipanggil. Ujungnya adalah a C++ kata kunci yang berarti garis akhir. Ini memindahkan kursor mouse ke baris berikutnya.
- Akhir dari badan konstruktor kelas.
- Buat destruktor untuk kelas.
- Teks untuk dicetak di konsol saat destruktor dipanggil. Ujungnya adalah a C++ kata kunci yang berarti garis akhir. Ini memindahkan kursor mouse ke baris berikutnya.
- Akhir dari badan destruktor.
- Akhir dari badan kelas.
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Buat objek kelas dan beri nama a. Konstruktor akan dipanggil.
- Buat variabel bilangan bulat bernama p dan berikan nilai 1.
- Buat blok pernyataan if menggunakan variabel p.
- Buat objek kelas dan beri nama b. Destruktor akan dipanggil.
- Akhir dari isi pernyataan if.
- Akhir dari isi fungsi main().
Kesimpulan
- C++ berorientasi objek.
- Kelas membentuk fitur utama C++ yang membuatnya berorientasi objek.
- A C++ kelas menggabungkan data dan metode untuk memanipulasi data menjadi satu.
- Kelas adalah cetak biru untuk suatu objek.
- Kelas menentukan bentuk suatu objek.
- Data dan metode yang terdapat dalam suatu kelas dikenal sebagai anggota kelas.
- Untuk mengakses anggota kelas, Anda harus menggunakan instance kelas.
- Untuk membuat kelas, kita menggunakan kata kunci class.
- Fungsi anggota kelas dapat didefinisikan di dalam atau di luar kelas.