Anak Males – Pemrograman Berbasis Objek (Object-Oriented Programming atau OOP) telah menjadi landasan penting dalam dunia pengembangan perangkat lunak modern termasuk dalam bahasa pemrograman c++.
Pendekatan ini memungkinkan pengembang untuk mengorganisir kode mereka dalam bentuk objek yang merepresentasikan entitas atau konsep dalam sistem yang mereka bangun.
Dengan paradigma OOP, program dapat dibangun dengan lebih terstruktur, mudah dimengerti, dan lebih mudah untuk dikelola.
Baca Juga : Belajar C++ #14 : Memahami Konsep Searching di C++
Apa Itu Object-Oriented Programming(OOP)?
Pada dasarnya, OOP adalah paradigma pemrograman yang berfokus pada pemodelan dunia nyata dalam bentuk objek yang memiliki atribut (data) dan metode (fungsi).
Objek dalam OOP merepresentasikan entitas tertentu dalam sistem yang ingin direpresentasikan secara komprehensif, seperti manusia, mobil, atau bahkan konsep yang lebih abstrak seperti transaksi keuangan.
Baca Juga : Latihan C++ # 58: Sequential Search
Konsep OOP
Berikut adalah konsep-konsep utama OOP dalam bahasa pemrograman C++ Beserta contoh penerapannya:
Kelas, Objek, Metode Dan Attribut
Dalam C++, kelas adalah blueprint untuk membuat objek. Sebuah kelas mendefinisikan data yang akan disimpan dan operasi yang dapat dilakukan pada data tersebut.
Objek adalah instansi dari kelas, yang merupakan entitas nyata yang ada dalam program.
Atribut adalah data yang terkait dengan objek dalam sebuah kelas. Mereka merepresentasikan karakteristik atau properti dari objek tersebut.
Baca Juga : Latihan C++ # 57: Deret Fibonacci
Metode adalah fungsi yang terkait dengan objek dalam sebuah kelas. Mereka digunakan untuk melakukan tindakan tertentu pada objek atau untuk memanipulasi data objek tersebut.
Berikut adalah contoh penerapan Kelas, Objek, Metode Dan Attribut Dalam c++:
class Mobil {
public:
string merek;
string warna;
int tahun;
void info() {
cout << "Merek: " << merek << ", Warna: " << warna << ", Tahun: " << tahun << endl;
}
};
int main() {
Mobil mobil1;
mobil1.merek = "Toyota";
mobil1.warna = "Hitam";
mobil1.tahun = 2022;
mobil1.info();
return 0;
}
Kode yang diberikan adalah contoh dari penggunaan kelas C++ yang disebut Mobil
. Kelas ini memiliki tiga atribut publik: merek
, warna
, dan tahun
, yang mewakili merek mobil, warna mobil, dan tahun pembuatan mobil.
Kelas Mobil
juga memiliki metode publik yang disebut info()
, yang digunakan untuk mencetak informasi tentang mobil, yaitu merek, warna, dan tahunnya.
Di dalam fungsi main()
, objek mobil1
dari kelas Mobil
dibuat. Nilai atribut-atributnya kemudian diatur: mereknya adalah “Toyota”, warnanya adalah “Hitam”, dan tahun pembuatannya adalah 2022.
Baca Juga : Latihan C++ # 55: Konversi Waktu
Selanjutnya, metode info()
dipanggil pada objek mobil1
untuk mencetak informasi tentang mobil tersebut, yang akan menampilkan teks “Merek: Toyota, Warna: Hitam, Tahun: 2022” di layar.
Kode ini memberikan contoh sederhana tentang bagaimana membuat kelas, mendefinisikan atribut dan metode, serta membuat objek dari kelas tersebut untuk mengakses dan menggunakan data yang disimpan di dalamnya.
Output dari program tersebut adalah:
Merek: Toyota, Warna: Hitam, Tahun: 2022
Ini adalah hasil dari pemanggilan metode info()
pada objek mobil1
yang menampilkan informasi tentang mobil dengan merek “Toyota”, warna “Hitam”, dan tahun pembuatan 2022.
Baca Juga : Belajar C++ #02 : Persiapan Belajar Program C++
Encapsulation (Pembungkusan)
Encapsulation mengacu pada konsep menyembunyikan detail implementasi objek dan hanya mengekspos fungsionalitas penting melalui antarmuka yang jelas. Ini membantu dalam menghindari perubahan tak terduga dan menyederhanakan penggunaan objek.
Berikut Contoh Penerapan Encapsulation Pada bahasa pemrograman c++:
class Karyawan {
private:
string nama;
int umur;
public:
void setNama(string nama) {
this->nama = nama;
}
void setUmur(int umur) {
this->umur = umur;
}
void info() {
cout << "Nama: " << nama << ", Umur: " << umur << endl;
}
};
int main() {
Karyawan karyawan1;
karyawan1.setNama("John");
karyawan1.setUmur(30);
karyawan1.info();
return 0;
}
Program yang diberikan adalah contoh implementasi kelas Karyawan
dalam bahasa pemrograman C++. Kelas Karyawan
memiliki dua variabel anggota pribadi yaitu nama
dan umur
, yang masing-masing bertipe data string
dan int
.
Dalam kelas ini, terdapat tiga fungsi anggota. Pertama, setNama(string nama)
digunakan untuk mengatur nilai dari variabel anggota nama
. Kedua, setUmur(int umur)
digunakan untuk mengatur nilai dari variabel anggota umur
.
Baca Juga : Latihan C++ # 51: Membuat Tree Sort
Dan ketiga, info()
berfungsi untuk mencetak informasi tentang karyawan ke layar, yang meliputi nama dan umur.
Pada fungsi main()
, objek karyawan1
dibuat dari kelas Karyawan
. Selanjutnya, fungsi setNama()
dan setUmur()
dipanggil untuk mengatur nilai nama
dan umur
untuk objek karyawan1
.
Terakhir, fungsi info()
dipanggil untuk mencetak informasi karyawan ke layar. Sehingga, output program akan menampilkan informasi karyawan dengan nama “John” dan umur 30, sesuai dengan nilai yang telah diatur sebelumnya.
Program ini menggunakan konsep enkapsulasi untuk menyembunyikan detail implementasi dari luar kelas, sehingga memungkinkan untuk memanipulasi data hanya melalui fungsi-fungsi anggota yang telah disediakan.
Output dari program tersebut adalah:
Nama: John, Umur: 30
Ini karena nilai nama telah diatur menjadi “John” dan umur menjadi 30 sebelum mencetak informasi karyawan menggunakan fungsi info()
.
Baca Juga : Belajar C++ #06 : Macam Macam Operator di C++
Inheritance (Pewarisan)
Pewarisan memungkinkan objek untuk mewarisi atribut dan metode dari objek lain yang sudah ada (kelas induk atau superclass). Ini memungkinkan untuk penggunaan kembali kode, mempromosikan fleksibilitas, dan memungkinkan hierarki yang jelas dalam struktur program.
class Kendaraan {
public:
void bergerak() {
cout << "Kendaraan bergerak" << endl;
}
};
class Mobil : public Kendaraan {
public:
void bunyiKlakson() {
cout << "Tin tin" << endl;
}
};
int main() {
Mobil mobil;
mobil.bergerak(); // Memanggil metode dari kelas dasar
mobil.bunyiKlakson();
return 0;
}
Program tersebut merupakan contoh penerapan konsep pewarisan (inheritance) dalam pemrograman berorientasi objek menggunakan bahasa pemrograman C++.
Dalam program tersebut, terdapat dua kelas yaitu Kendaraan
dan Mobil
.
Kelas Mobil
merupakan turunan dari kelas Kendaraan
, yang berarti kelas Mobil
mewarisi sifat dan perilaku dari kelas Kendaraan
.
Baca Juga : Latihan C++ #30 : Program C++ Mencari Nilai Mahasiswa
Di dalam kelas Kendaraan
, terdapat metode bergerak()
yang digunakan untuk menampilkan pesan bahwa kendaraan bergerak.
Sedangkan di dalam kelas Mobil
, terdapat metode bunyiKlakson()
yang digunakan untuk menampilkan pesan suara klakson mobil.
Dalam fungsi main()
, sebuah objek mobil
dari kelas Mobil
dibuat. Kemudian, dipanggil metode bergerak()
pada objek mobil
, yang akan menampilkan pesan bahwa kendaraan bergerak.
Selanjutnya, dipanggil metode bunyiKlakson()
pada objek mobil
, yang akan menampilkan pesan suara klakson mobil.
Dengan menggunakan konsep pewarisan, kelas Mobil
dapat mewarisi perilaku dari kelas Kendaraan
dan menambahkan perilaku tambahan yang unik untuk mobil.
Output program:
Kendaraan bergerak
Tin tin
Penjelasan:
- Baris pertama menampilkan output dari pemanggilan metode
bergerak()
pada objekmobil
, yang menghasilkan pesan “Kendaraan bergerak”. - Baris kedua menampilkan output dari pemanggilan metode
bunyiKlakson()
pada objekmobil
, yang menghasilkan pesan “Tin tin”.
Baca Juga : Latihan C++ #22 : Konvert Huruf Kapital
Polymorphism (Polimorfisme)
Polimorfisme memungkinkan objek untuk mengambil banyak bentuk. Ini dapat dicapai melalui konsep overloading (penumpukan) dan overriding (penggantian). Polimorfisme memungkinkan kode untuk lebih fleksibel dan dapat diubah, serta mempromosikan penggunaan yang lebih universal.
class Binatang {
public:
virtual void suara() {
cout << "Binatang mengeluarkan suara" << endl;
}
};
class Anjing : public Binatang {
public:
void suara() {
cout << "Guk guk" << endl;
}
};
int main() {
Binatang *binatang = new Anjing();
binatang->suara(); // Output: Guk guk
delete binatang;
return 0;
}
Program yang diberikan adalah contoh implementasi polimorfisme dalam pemrograman berorientasi objek menggunakan bahasa pemrograman C++.
Dalam contoh ini, terdapat dua kelas, yaitu Binatang
dan Anjing
. Kelas Anjing
adalah turunan dari kelas Binatang
, sehingga Anjing
mewarisi sifat dan perilaku dari kelas Binatang
.
Dalam kelas Binatang
, terdapat metode suara()
yang dideklarasikan sebagai virtual. Ini berarti bahwa metode ini dapat diimplementasikan kembali (override) oleh kelas turunannya.
Kemudian, kelas Anjing
mengimplementasikan ulang metode suara()
yang diwarisi dari kelas Binatang
, dengan mengganti pesan yang dicetak.
Baca Juga : Belajar C++ #10 : Memahami Konsep Dasar Array di C++
Di dalam fungsi main()
, kita membuat sebuah objek pointer binatang
dari tipe Binatang
, yang dialokasikan memori untuk objek Anjing
. Karena kita menggunakan polimorfisme, saat memanggil metode suara()
melalui pointer binatang
, metode yang dipanggil akan ditentukan oleh jenis objek yang sebenarnya, bukan oleh jenis pointer.
Oleh karena itu, meskipun pointer binatang
dideklarasikan sebagai pointer ke objek Binatang
, tetapi karena objek yang sebenarnya adalah Anjing
, maka metode suara()
yang akan dipanggil adalah versi yang diimplementasikan di kelas Anjing
.
Output program:
Guk guk
Hasil output dari program ini adalah “Guk guk”, karena saat metode suara()
dipanggil melalui pointer binatang
, metode yang dijalankan adalah versi yang diimplementasikan di kelas Anjing
, bukan yang di kelas Binatang
.
Hal ini menunjukkan konsep polimorfisme dalam pemrograman berorientasi objek di mana perilaku metode dapat berubah tergantung pada objek yang sesungguhnya.
Kemudian, program membebaskan memori yang dialokasikan untuk objek menggunakan delete binatang
untuk mencegah kebocoran memori.
Baca Juga : Latihan C++ #47: Menemukan Nilai ASCII
Penutup
Dalam pemrograman C++, Object-Oriented Programming (OOP) bukan sekadar paradigma, tetapi juga fondasi yang kuat bagi pengembang untuk menciptakan aplikasi yang kompleks dan terstruktur dengan lebih efisien.
Dengan memahami konsep kelas, objek, pewarisan, polimorfisme, dan encapsulation, pengembang dapat merancang solusi yang lebih elegan dan mudah dipelihara. OOP memungkinkan untuk penggunaan kembali kode, pengorganisasian yang logis, dan pembuatan sistem yang dapat disesuaikan dengan lebih baik.
Dengan demikian, pengetahuan tentang OOP dalam C++ bukan hanya merupakan keahlian yang berharga, tetapi juga menjadi kunci untuk menciptakan aplikasi yang berkualitas tinggi dalam lingkungan pengembangan perangkat lunak yang dinamis dan cepat berubah.