Kelas & Objek C++: Panduan Praktis dengan Contoh Kode
Apa Itu Kelas?
Kelas C++ adalah tipe data yang ditentukan pengguna yang menggabungkan data dan fungsi yang beroperasi pada data tersebut ke dalam satu entitas. Bayangkan sebagai cetak biru: ia mendefinisikan bentuk dan perilaku objek yang dapat dibuat darinya.
Sama seperti cetak biru rumah yang menentukan letak pintu, jendela, dan kamar, kelas mendeskripsikan tata letak anggota datanya dan operasi yang dapat memanipulasinya. Banyak rumah (objek) dapat dibangun dari cetak biru yang sama.
Dalam ilustrasi di atas, satu prototipe tunggal menghasilkan dua rumah yang berbeda dengan fitur yang berbeda.
Dalam tutorial ini Anda akan mempelajari:
Apa itu kelas dan mengapa penting dalam C++
Contoh kelas konkret
Peran pengubah akses private dan public
Cara membuat objek (instantiasi)
Mengakses anggota data dengan aman
Fungsi anggota di dalam dan di luar definisi kelas
Konstruktor dan destruktor dalam aksi
Deklarasi Kelas
Mendeklarasikan kelas sederhana: gunakan kata kunci class diikuti dengan nama kelas dan tubung diapit dalam kurung kurawal.
Sintaks
class className { // data members // member functions };
className – pengidentifikasi untuk kelas Anda.
Anggota data biasanya dideklarasikan sebagai variabel.
Fungsi anggota menyediakan perilaku.
Pengubah Akses: private vs. public
Pengubah akses mengontrol visibilitas anggota kelas.
private – anggota hanya dapat diakses di dalam kelas atau temannya.
public – anggota dapat diakses dari mana saja tempat objek terlihat.
Membuat Objek (Instantiasi)
Objek adalah instance dari kelas. Mendeklarasikan objek mengikuti pola yang sama seperti mendeklarasikan variabel: className objectName;
Sintaks
className objectName;
className – kelas yang digunakan untuk membuat objek.
objectName – pengidentifikasi untuk objek baru.
Instantiasi mengalokasikan memori untuk objek dan dapat memicu konstruktornya.
Mengakses Anggota Data
Anggota data publik diakses menggunakan operator titik (.).
Contoh
#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; }
Output:
Menggunakan Getter dan Setter?
Mengakses atau memodifikasi data secara langsung dapat melanggar enkapsulasi. Menggunakan fungsi anggota getter dan setter memberikan akses yang terkontrol.
Contoh dengan Enkapsulasi
#include <iostream> using namespace std; class ClassA { public: void setA(int val); int getA() const; private: int a; }; int ClassA::getA() const { return a; } void ClassA::setA(int val) { a = val; } int main() { ClassA obj; obj.setA(20); cout << "Value of a is: " << obj.getA(); return 0; }
Output:
Anggota Terlindungi dan Pewarisan
Anggota terlindungi dapat diakses di dalam kelas dan oleh kelas turunan, memungkini pewarisan yang terkontrol.
Contoh
#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; }
Output:
Fungsi Anggota di Dalam vs. Di Luar Kelas
Fungsi anggota dapat didefinisikan secara inline di dalam kelas atau dideklarasikan di dalam dan didefinisikan nanti menggunakan operator resolusi cakupan ::.
Contoh
#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 guru; guru.tutorial_name = 'C++'; guru.id = 1001; guru.printName(); cout << endl; guru.printId(); return 0; }
Output:
Konstruktor dan Destruktor
Konstruktor menginisialisasi objek saat dibuat, sedangkan destruktor membersihpa tepat sebelum objek dihancurkan.
Contoh
#include <iostream> using namespace std; class ClassA { public: ClassA() { cout << "Class constructor called" << endl; } ~ClassA() { cout << "Class destructor called" << endl; } }; int main() { ClassA a; // constructor called int p = 1; if (p) { ClassA b; // constructor called, destructor called at end of block } // destructor for 'a' called here return 0; }
Output:
Kesimpulan Utama
C++ pada dasarnya berorientasi objek; kelas adalah blok pembangunnya.
Kelompokkan data dan fungsi terkait, menciptakan cetak biru yang dapat digunakan kembali.
Gunakan public, private, dan protected untuk menerapkan enkapsulasi.
Buat instance objek dengan nama kelas diikuti nama objek.
Akses anggota publik melalui operator titik; gunakan getter/setter untuk data privat.
Fungsi anggota dapat didefinisikan secara inline atau di luar kelas dengan ::.