Advertisements
C++

Belajar C++ #15 : Memahami OOP

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 objek mobil, yang menghasilkan pesan “Kendaraan bergerak”.
  • Baris kedua menampilkan output dari pemanggilan metode bunyiKlakson() pada objek mobil, 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.

You may also like...

Popular Posts

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *