Pemrograman Berorientasi Objek (PBO) atau Object Oriented Programming (OOP) merupakan salah satu paradigma pemrograman yang berorientasi terhadap objek nyata daripada ide atau gagasan umum yang abstrak. Misalnya, jika kita akan mengembangkan perangkat lunak manajemen perkuliahan, maka pemrograman berorientasi objek akan lebih memperhatikan objek-objek yang ada dalam perkuliahan itu sendiri, seperti: dosen, mahasiswa, materi kuliah, jadwal, dsb. Sementara itu paradigma pemrograman lain mungkin akan memperhatikan fungsi yang dibutuhkan seperti fitur perkuliahan, absensi, dll. Itulah mengapa paradigma ini disebut sebagai berorientasi objek, karena lebih mengutamakan objeknya dibandingkan dengan ide general dari fitur yang ingin dibuat seperti “modul perkuliahan”.

Mengapa kita harus lebih memerhatikan manajemen objeknya? karena hal ini akan memberikan banyak kelebihan seperti kode yang tak lekang oleh waktu karena berurusan langsung dengan objek nyata yang dibutuhkan, pengembangan aplikasi yang dinamis karena fungsi dapat disesuaikan berdasarkan objek yang akan diolah, fungsi atau fitur dapat digunakan berulang kali tanpa harus menulis kode baru karena tinggal diarahkan ke objek lain yang dibutuhkan saja, dan masih banyak keunggulan lainnya.

Hingga kini, masih dapat dikatakan bahwa paradigma OOP adalah paradigma pemrograman yang paling banyak diaplikasikan, disusul oleh Pemrograman Terstruktur dan Functional Programming. Hal tersebut tentunya bukan tanpa alasan, karena paradigma ini memang menyajikan banyak keunggulan terutama dalam mengembangkan perangkat lunak dan aplikasi yang dibutuhkan oleh industri, baik dari segi fitur, maupun jangka waktu pengerjaan. Selain itu, bahasa pemrograman yang dapat menyokong paradigma OOP ini amatlah banyak dan memiliki pengguna yang tidak sedikit pula. Beberapa bahasa pemrograman yang mendukung paradigma OOP meliputi bahasa Java, PHP, Python, C++, dll.

Oleh karena itu, penting bagi kita untuk mempelajari paradigma ini secara seksama. Berikut adalah berbagai pemaparan mengenai Pemrograman Berorientasi Objek mulai dari definisi, keunggulan, pengenalan kelas dan objek, dsb.

Pengertian Pemrograman Berorientasi Objek

Menurut Sukamto dan Shalahuddin (2014, hlm. 100) Pemrograman Berorientasi Objek atau Object Oriented Programming (OOP) adalah suatu strategi pembangunan perangkat lunak yang mengorganisasikan perangkat lunak sebagai kumpulan objek yang berisi data dan operasi yang diberlakukan terhadapnya. Pemahaman ini mengacu pada teknis dari pemrograman OOP, yakni menyusun, mengolah objek-objek berisi data dan operasi yang dibutuhkan melalui Class dan Method yang dibutuhkan dalam suatu perangkat lunak.

Sementara itu menurut Tim Wahana Komputer (2010, hlm. 88) Pemrograman Berorientasi Objek atau Object Oriented Programming (OOP) adalah suatu cara mengorganisassi program dengan memodelkan objek-objek dunia nyata (seperti benda, sifat, sistem dan lainnya) ke dalam sebuah bahasa pemrograman. Di sinilah fokus utama OOP, yakni memodelkan objek-objek dunia nyata pada setiap fitur atau fungsi yang disusun di dalamnya.

Selanjutnya, menurut Supardi (2010, hlm. 320) OOP adalah  cara berpikir, pandangan atau paradigma baru untuk membuat program atau merancang sistem dengan memperhatikan objek dan ciri objek dari perilakunya. Dengan demikian setiap objek dan cirinya diklasifikasikan serta disusun dengan aturan tertentu agar tetap menyerupai objek dunia nyata namun dapat diolah dan direkayasa oleh berbagai algoritma perangkat lunak.

Dapat disimpulkan bahwa pemrograman berorientasi objek adalah paradigma pemrograman yang mengutamakan manajemen dan pengolahan objek dari dunia nyata yang harus diolah oleh perangkat lunak melalui keunggulannya, yakni mampu mengolah objek dinamis yang dapat menampung data beserta struktur kompleksnya, atau operasi dan bahkan algoritma tertentu yang dibutuhkan untuk mengolah objek dunia nyata.

Kelas dan Objek

Sebuah kelas menentukan struktur dan behaviour (perilaku) dari suatu objek. COntohnya, truk, bus, mobil, dan sepeda motor dapat didefinisikan sebagai kelas kendaraan bermotor karena memiliki beberapa karakteristik yang sama yaitu memiliki mesin, dan menggunakan bahan bakar untuk pengoperasiannya. Kendaraan bermotor tersebut juga memiliki beberapa atribut yang sama dalam kelasnya, misalnya memiliki jumlah roda, no kendaraan, nomor rangka mesin, dll.

Sementara itu objek merupakan dasar dari pemrograman berorientasi objek. Pada dunia nyata, setiap objek yang ada memiliki dua buah karakteristik, yaitu state dan behavior.

  1. State merupakan atribut yang dimiliki oleh suatu objek.
  2. Behaviour adalah fungsi yang dimiliki dan bisa dijalankan oleh penggunanya.

Contohnya dapat berupa objek mahasiswa. Setiap objek mahasiswa akan memiliki atribut seperti nama, NIM, alamat, dll. Sementara itu, behaviour dari objek mahasiswa adalah melakukan fungsi registrasi, perkuliahan, praktikum, wisuda, dsb.

Kelas atau class merupakan cetak biru dari objek. Dalam OOP programmer akan menulis kode-kode untuk masing-masing kelas yang akan digunakan. Sedangkan objek merupakan bentukan (instance) dari suatu kelas yang dijalankan pada saat runtime. Saat dilakukan runtime, variabel yang ada pada sebuah kelas akan menjadi state pada sebuah objek, sedangan method yang dibuat akan menjadi behaviour-nya.

Fitur Pemrograman Berorientasi Objek

Pemrograman beriorientasi objek memiliki fitur-fitur khas yang membedakannya dengan paradigma lain. Menurut Butarbutar (2014, hlm. 25-28) fitur-fitur OOP tersebut meliputi enkapsulasi (encapsulation), abstraksi (abstraction), pewarisan (inheritance), dan polimorfisme (polymorphism) yang akan dijelaskan pada pemaparan-pemaparan di bawah ini.

Enkapsulasi

Enkapsulasi adalah cara untuk menyembunyikan implementasi detail dari suatu kelas. Terdapat dua hal mendasar mengenai enkapsulasi, yaitu:

  1. information hiding, yakni penyembunyian detail dari atribut dan method pada suatu kelas;
  2. interface, untuk pengkaksesan data: suatu method untuk mengambil, memberikan, atau mengubah suatu nilai.

Dalam object oriented programming, kebutuhan akan enkapsulasi muncul karena adanya proses sharing data antarmethod. Dengan menggunakan enkapsulasi, maka keamanan data dan method yang ada di dalamnya akan terjaga.

Abstraksi

Abstraksi mengacu pada atribut dari suatu objek yang membedakan antara suatu objek dengan objek yang lainnya. Misalnya, pada suatu perangkat lunak manajemen mahasiswa, di dalam objek terdapat suatu atribut yang akan saling membedakan antara satu objek mahasiswa dengan mahasiswa lainnya yang meliputi nama, NIM, tanggal lahir, dsb.

Dalam pemrograman berorientasi objek, konsep ini berada pada pembuatan sebuah kelas. Semua atribut dari objek didefinisikan pula dalam sebuah kelas. Kelas sejatinya tidak memiliki data, namun objek yang akan diolah oleh kelas-lah yang akan menyimpan data, karena objek diciptakan dari sebuah kelas dan oleh sistem operasi akan dialokasikan sejumlah memori kepada objek tersebut.

Pewarisan

Salah satu fitur paling unggul pada pemrograman berorientasi objek adalah penggunaan kembali kode (code reuse). Saat kita membuat sebuah prosedur, maka kita dapat menggunakannya berulang kembali dengan objek yang berbeda. Selain itu, kita juga dapat mendefinisikan hubungan antar kelas yang tidak hanya dimanfaatkan untuk code reuse, namun dari sisi pendesainannya pula yang secara garis besar jauh lebih baik. Melalui cara itu pengelolaan kelas-kelas dan faktor kemiripan di antara kelas-kelas tersebut jauh lebih visible baik untuk digunakan kembali, diperbaiki, maupun dikembangkan lagi. Tujuan dari pewarisan adalah untuk menyediakan fungsionalitas tersebut.

Fitur pewarisan pada OOP mengijinkan sebuah kelas dengan tipe superclass untuk menurunkan atribut-atribut dan methodnya kepada kelas yang lainnya yang disebut dengan subclass atau kelas turunannya. Hal tersebut akan memungkinkan pembuatan kelas baru yang didasarkan dari pengabstrakan atribut-atribut dan behaviour yang sama.

Terdapat beberapa karakteristik dari subclass, yaitu:

  1. subclass merupakan bentuk khusus dari suatu superclass,
  2. subclass memiliki atribut dan method yang diturunkannya dari suatu superclass,
  3. suatu subclass dapat memiliki fitur tambahan yang berbeda dari fitur-fitur yang diturunkan dari superclassnya.

Dalam pemrograman berorientasi objek, terdapat beberapa jenis pewarisan, yaitu:

  1. single inheritance, yaitu hanya terdapat satu superclass;
  2. multiple inheritance, yaitu terdapat lebih dari satu superclass.

Polimorfisme

Istilah polimorfisme berasal dari bahasa Latin, yaitu poly yang berarti banyak, dan morph yang berarti bentuk. Artinya, polimorfisme adalah sesuatu yang memiliki banyak bentuk. Contohnya, suatu objek mahasiswa dapat memiliki beberapa peran yang dimiliki seperti:

  1. memiliki tugas utama sebagai pelajar
  2. secara umum merupakan seorang agen perubahan
  3. di dunia industri sebagai calon pekerja
  4. di kelas sebagai ketua kelas
  5. saat pulang ke rumah menjadi seorang anak yang harus berbakti kepada orangtuanya.

Dalam pemrograman berorientasi objek, polimorfisme mengacu pada suatu fitur yang memungkinkan kita untuk memberikan arti atau penggunaan berbeda bagi suatu entitas dalam konteks yang berbeda-beda. Entitas tersebut dapat berupa variabel, method, atau sebuah objek. Polimorfisme bisa digunakan sebagai kategori umum bagi sebuah entitas dalam tindakan yang berbeda-beda.

Kelebihan Pemrograman Berorientasi Objek

Kelebihan atau keuntungan yang didapat ketika menggunakan paradigma pemrograman berorientasi objek menurut (Sukamto & Shalahuddin 2016, hlm. 100) adalah sebagai berikut.

  1. Meningkatkan produktivitas
    Kelas dan objek yang ditemukan dalam suatu masalah pada OOP masih dapat dipakai ulang untuk masalah lainnya yang melibatkan objek tersebut (reusable).
  2. Kecepatan pengembangan
    Perangkat lunak menjadi lebih cepat untuk diselesaikan karena sistem yang dibangun dengan baik dan benar pada saat analisis dan perancangan akan menyebabkan berkurangnya kesalahan pada pengodean.
  3. Kemudahan pemeliharaan
    Pemeliharaan pada perangkat lunak yang ditulis menggunakan paradigma OOP menjadi lebih mudah untuk dipelihara karena dengan model objek, pola-pola yang cenderung tetap dan stabil dapat dipisahkan dan pola-pola yang mungkin sering berubah-ubah.
  4. Adanya konsistensi
    Kode perangkat lunak OOP menjadi lebih konsisten karena memiliki sifat pewarisan dan penggunaan notasi yang sama pada saat analisis, perancangan maupun pengodean.
  5. Meningkatkan kualitas perangkat lunak
    Hal ini karena pendekatan pengembangan lebih dekat dengan dunia nyata dan adanya konsistensi pada saat pengembangannya, perangkat lunak yang dihasilkan akan maupun memenuhi kebutuhan pemakai serta mempunyai sedikit kesalahan.

Berbagai keuntungan di atas dapat diraih karena pemrograman berorientasi objek memiliki keunggulan berupa: real world programming, reusability of code, resilience to change, information hiding, dan modularity of code yang akan dijelaskan pada berbagai uraian di bawah ini.

Real World Programming

Dunia tersusun atas objek-objek yang saling berinteraksi. Sebuah perangkat lunak atau program memodelkan dunia nyata, sehingga sebisa mungkin seharusnya menggambarkan kondisi yang ada dalam bentuk yang seakurat mungkin. Hal tersebut dilakukan dalam pemrograman berorientasi objek. Dalam PBO sebuah program disusun atas objek-objek yang masing-masing memiliki fungsi sesuai dengan peran dan kebutuhan interaksinya.

Reusability of Code

kelas yang telah dibuat dalam OOP dapat digunakan oleh program lain. Penggunaan komponen yang telah dibuat tidak hanya mengurangi usaha pembuatan komponen tersebut, namun mengurangi pula kemungkinan kesalahan jika harus mengembangkannya lagi dari awal. Keuntungannya adalah penghematan dari segi waktu dan usaha yang pada akhirnya akan menghemat biaya pengembangan pula.

Resilience to Change

Dunia nyata adalah sesuatu yang dinamis dan perubahan akan selalu terjadi di dalamnya. Program atau perangkat lunak yang memodelkan dunia nyata diharapkan dapat bersifat dinamis pula. Melalui pemrograman berorientasi objek, hal ini sangatlah memungkinkan karena PBO berfokus objek yang berasal dari dunia nyata pula.

Information Hiding

Informasi dalam sebuah objek sedapat mungki disembunyikan dari luar kelas yang ada. Tujuannya adalah untuk mengamankan data agar hanya fungsi yang ada dalam kelas itu saja yang bisa membaca, mengubah, dan memanipulasi data tersebut. Tentunya tetap ada suatu cara (interface) agar objek dari luar bisa mengakses dan mengubah data secara tidak langsung.

Modularity of Code

Salah satu keunggulan utam dari pemrograman berorientasi objek adalah modularitas, yakni setiap objek yang dibentuk dikelola secara terpisah dari objek lainnya meskipun berasal dari sebuah kelas yang sama. Modifikasi terhadap sebuah objek dapat dilakukan tanpa mempengaruhi fungsionalitas objek yang lainnya.

Referensi

  1. Butarbutar, F.T.S. (2014). Pemrograman Berorientasi Objek – Pemrograman Java I. Jakarta: Indraprasta PGRI.
  2. Sukamto, R.A., Shalahuddin. (2016). Rekayasa perangkat lunak terstruktur dan berorientasi objek.
  3. Supardi, Y. (2011). Semua Bisa Menjadi Programer Android Basic, Mengenal Java dan Android. Jakarta: Penerbit Buku Exel Media Komputindo.
  4. Wahana Komputer. (2010). Panduan Belajar MYSQL Database Server. Jakarta: Media Kita.

Gabung ke Percakapan

1 Komentar

Tinggalkan Komentar

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