Halo, Sobat Filemagz! Buat kamu yang sering koding, pasti pernah kan dengar istilah OOP? Mimin yakin, kamu pasti pernah mengimplementasikannya setidaknya sekali dalam kodemu. Menurut mimin sendiri, OOP merupakan salah satu konsep programming yang susah-susah gampang. Namun, konsep ini sangat penting untuk dipelajari dan juga dikuasai karena merupakan salah satu dasar dalam programming. Nah, buat kamu yang bukan programmer dan gak tau apa itu OOP, mimin bakal jelasin panjang lebar di bawah dengan menganalogikannya pada kehidupan sehari-hari. Dengan itu, mimin harap kamu jadi lebih mudah untuk memahami konsep-konsep OOP. Jadi, baca sampai habis ya!
Apa sih OOP Itu?
OOP merupakan singkatan dari object-oriented programming atau jika diterjemahkan ke bahasa Indonesia, pemrograman berorientasi objek. Lawan dari object-oriented programming adalah procedural programming.
Lalu, apa sih maksudnya berorientasi objek? Jadi, saat kita menuliskan sebuah kode untuk sebuah sistem, tentu kita gak akan hanya bikin satu program saja, kan? Contohnya, saat kita membuat sistem kasir, kita harus membuat program main menu, pembayaran, database, dan lain-lainnya. Tanpa menggunakan OOP, kode yang dibuat akan terlampau panjang dan sulit untuk di-maintenance. Nah, dengan menggunakan OOP, program-program tersebut bisa kita bungkus dalam kelas dan objek. Ibaratnya seperti kamu memisahkan file di dalam folder berdasarkan jenisnya. Dengan itu, kode yang dibuat akan lebih mudah ditemukan, lebih rapi, mudah dibaca, dan mudah untuk diperbaiki apabila diperlukan.
Jika kamu masih belum terlalu paham mengenai konsep ini, kamu bisa definisikan OOP sebagai membuat beberapa program yang terpisah-pisah lalu menyatukannya menjadi sebuah sistem yang terintegrasi.
Istilah-Istilah Penting
Sebelum kita masuk ke konsep utama OOP, ada baiknya kita bahas dulu beberapa istilah penting yang akan berguna untuk memahami konsep OOP secara keseluruhan. Berikut merupakan istilah-istilah pentingnya:
- Class, merupakan sebuah kerangka atau blueprint dari object-object di dalamnya. Class menggambarkan kemiripan suatu sifat dari object secara umum.
- Object, merupakan segala sesuatu yang ada, baik berbentuk (konkrit) maupun tidak berbentuk (abstrak). Object merupakan keturunan dari class yang memiliki tingkah laku dan karakteristik tersendiri. Tingkah laku tersebut mendefinisikan method, sementara karakteristik mendefinisikan attribute.
- Method, merupakan perilaku dari objek.
- Attribute, merupakan karakteristik dari objek.
Jika kamu masih bingung, coba baca penggambaran di bawah.
- Class : Kendaraan
- Object : Motor, mobil, truk, bus
- Method : Berjalan, berhenti, berakselerasi, berbelok
- Attribute : Warna kendaraan, merek kendaraan
Konsep Utama OOP dan Analoginya pada Kehidupan Sehari-hari
1. Inheritance (Pohon Keluarga)
Inheritance atau pewarisan merupakan cara untuk membuat kelas turunan yang memiliki fungsi serupa dengan induknya. Di dunia programming, kelas turunan sering disebut sebagai kelas anak atau subkelas (child class atau subclass). Sementara itu, kelas induk sering disebut dengan kelas orang tua atau kelas super (parent class atau superclass). Konsep inheritance mengadopsi sistem struktural atau hierarki bertingkat, seperti pada pohon keluarga.
Untuk memvisualisasikannya, ambil contoh kakekmu dan ayahmu yang memiliki hubungan darah. Coba teliti lagi kemiripan antara mereka. Kakekmu bisa saja memiliki warna iris mata hijau yang diturunkan ke ayahmu. Namun, belum tentu kamu mewarisi sifat tersebut. Semakin jauh keturunan kakekmu di pohon keluarga tersebut, semakin jauh juga kemiripan yang diturunkan. Nah, dalam kasus ini, kamu merupakan subclass dari ayahmu yang juga subclass dari kakekmu. Kakekmu berperan sebagai superclass.
2. Encapsulation (Ibu-Ibu Kos)
Encapsulation atau pengkapsulan merupakan cara untuk membungkus sebuah informasi dengan memberikan batasan akses. Dari namanya saja, dapat disimpulkan bahwa fungsi utama encapsulation adalah untuk menjaga keamanan informasi. Namun, encapsulation juga berguna untuk modularitas kode. Modularitas yang dimaksud di sini adalah pembagian kode menjadi beberapa jenis berdasarkan aksesnya. Dengan itu, kode bisa dimodifikasi secara bebas karena tidak akan menyentuh kode sumber dan menyebabkan masalah secara keseluruhan.
Untuk memvisualisasikan encapsulation, bayangkan kamu memiliki sebuah kos. Kos tersebut tentu memiliki banyak ruangan, mulai dari kamar tidur, gudang, garasi, ruang elektronik, dan sebagainya. Setiap ruangan kamu sertai dengan kuncinya masing-masing. Sistem kunci tersebut yang kita sebut dengan encapsulation. Sebagai pemilik kos, kamu tentu akan memberikan kunci kamar tidur untuk penyewa kos, namun tidak memberikan kunci gudang. Dengan kata lain, penyewa kos berhak untuk melakukan apa saja di dalam kamar tidur mereka, tetapi tidak bisa mengakses gudang.
3. Abstraction (Cara Kerja Komputer)
Abstraction atau abstraksi merupakan konsep lanjutan dari polymorphism. Inti dari konsep ini adalah melakukan fungsi tanpa melihat proses berjalannya fungsi tersebut. Abstraction pada dasarnya menyembunyikan proses-proses di belakang layar dan hanya memperlihatkan proses-proses yang terlihat saja.
Untuk memvisualisasikan abstraction, coba lihat komputer kamu (atau device modern lain). Untuk menggunakan komputer tersebut, kamu hanya memberikan input perintah namun kamu tidak tahu proses di belakangnya. Proses tersebut akan dieksekusi secara “tersembunyi” di balik rumitnya sistem komputer dan komputer hanya akan memberikan outputnya saja.
4. Polymorphism (Sifat Diri)
Polymorphism atau polimorfisme merupakan cara untuk memproses sebuah data atau informasi dalam beberapa bentuk. Konsep polymorphism menghasilkan dua metode unik pada pemrograman yaitu overloading (polymorphism statis) dan overriding (polymorphism dinamis). Penjelasan mengenai perbendaan antara keduanya sebenarnya cukup panjang. Oleh karena itu, pembahasan tentang perbendaannya akan mimin bahas pada artikel lainnya, ya!
Jika mengacu pada ilmu biologi, polymorphism biasanya dikaitkan dengan keberagaman bentuk dari sebuah spesies. Pada ilmu programming, konsep polymorphism juga kurang lebih sama. Keberagaman bentuk yang dimaksud di sini terletak pada isi kode yang berasal dari kelas yang sama. Isi kodenya boleh berbeda, namun memiliki parameter dan tipe data yang sama.
Untuk memvisualisasikan polymorphism, cobalah lihat dirimu sendiri. Saat di sekolah, kamu berperan sebagai siswa. Saat di restoran, kamu berperan sebagai pelanggan. Saat di pesawat, kamu berperan sebagai penumpang. Nah, di sini kelasnya tetap satu, yaitu dirimu. Namun, kamu bisa memiliki beberapa bentuk (sifat) berdasarkan keadaan tertentu.
Cukup panjang ya penjelasannya, Sobat Filemagz. Nah, agar lebih seingkat dan jelas, mimin telah meringkas dengan menggunakan contoh kelas kendaraan seperti di atas. Berikut merupakan ringkasannya:
- Class : Kendaraan
- Subclass : Kendaraan darat (inheritance)
- Object : Motor, mobil, truk, bus
- Method : Berjalan, berhenti, berakselerasi, berbelok
- Attribute : Warna kendaraan, merek kendaraan
- Encapsulation : Sistem akses kendaraan (kunci dan sebagainya)
- Abstraction : Cara kerja mesin kendaraan
- Polymorphism : Melaju pelan di jalan sempit, melaju cepat di jalan lebar
Sekian saja penjelasan mimin pada artikel ini. Seperti yang mimin katakan sebelumnya, materi OOP memang susah-susah gampang. Oleh karena itu, kamu harus tekun untuk mempelajarinya, mengingat OOP merupakan salah satu konsep dasar dalam programming dan dipakai pada bahasa-bahasa populer seperti Java, C++, dan Python. Nah, jika kamu mau tips-tips seputar coding lainnya, kamu bisa cek Instagram Filetechno dan Filemagz ya! Selamat belajar, Sobat Filemagz!