Pengenalan Object Oriented Programming (OOP)

Pengertian OOP

OOP adalah sebuah metodologi atau cara berpikir dalam melakukan pemrograman dimana pendefinisian tipe data disertai dengan pendefinisian fungsi. Struktur data yang seperti ini disebut dengan istilah object. Paradigma pemrograman OOP dapat dilihat sebagai interaksi sebuah object dalam melakukan tugasnya.

Segelas teh tentunya memiliki berbagai spesifikasi seperti volume air, rasa, temperatur dan sebagainya. Pada pemrograman, spesifikasi-spesifikasi tersebut merupakan variabel yang dideklarasikan beserta tipe data. Pada OOP, sebuah object Teh juga memiliki method berupa fungsi yang dapat dipanggil untuk merubah kelakuan atau spesifikasi teh tersebut. Method minumTeh dapat dideklarasikan sebagai fungsi yang dapat dipanggil untuk mengurangi nilai variabel Volume.

Di samping itu, sebuah object dapat memiliki relasi terhadap object lainnya. Sebagai contoh, sebuah object dapat berupa keturunan dari object lain.

Sejarah OOP

Konsep OOP bermula pada era 1960-an. Sebuah bahasa pemrograman Simula memperkenalkan berbagai konsep yang mendasari OOP dengan SIMULA I (1962-65) dan Simula 67 (1967). Kemudian pada tahun 70-an, bahasa pemrograman Smalltalk menjadi yang pertama kali disebut object-oriented.

Pada tahun 1980-an, dua bahasa pemrograman ADA (US Department of Defense) dan PROLOG (the Japanese “Fifth Generation Computer Project”) dipercayai akan bersaing ketat sebagai bahasa pemrograman yang paling dominan. Namun justru OOP yang menjadi paradigma pemrograman yang paling dominan sampai sekarang. Bahasa pemrograman yang object-oriented seperti C++ pada tahun 80-an menjadi populer. Pada tahun 90-an, bahasa-bahasa pemrograman seperti Java mulai menerapkan OOP. Sampai pada 2002, Microsoft Visual Studio memperkenalkan bahasa object-oriented baru yang diberi nama C#. Disusul VB.NET yang merupakan penyempurnaan Visual Basic 6.0 yang tidak mendukung OOP.

Object-Oriented vs. Procedural

Procedural programming merupakan paradigma pemrograman selain OOP yang berdasarkan pada konsep procedure call. Procedure merupakan fungsi yang akan dijalankan secara berantai ketika program aktif baik oleh program itu sendiri atau procedure lain. Contoh bahasa pemrograman yang termasuk kedalam paradigma ini diantaranya adalah Pascal, Delphi, C++, ALGOL, Fortran, dll.

Kembali pada contoh teh di atas. Pada bahasa pemrograman berbasis procedural seperti Modula-2, deklarasi teh tersebut dilakukan seperti berikut:

TYPE Teh = RECORD
                    NamaTeh:       STRING;
                    VolumeTeh:     REAL;
                    WarnaTeh:      ColourType;
                    ...
          END;

Selanjutnya proses pemasukkan nilai variabel dan fungsi meminum teh dilakukan seperti berikut:

VAR Tehku: Teh;

BEGIN
    ...
    (* Inisialisasi atribut teh *)
    Tehku.NamaTeh := "Sosro";
    Tehku.VolumeTeh := 1.00;
    ...
    ...
    (* Meminum teh *)
    Tehku.VolumeTeh := Tehku.VolumeTeh - 0.1;

Proses ini tidak berlaku pada pemrograman berbasis object, sebab struktur data Teh hanya mempunyai tipe-tipe variabelnya. Pada OOP, perubahan sebuah object dilakukan dengan pemanggilan method yang dideklarasikan sebelumnya. Seperti yang disebutkan sebelumnya, method minumTeh dapat dideklarasi dan kemudian dipanggil untuk mengurangi Volume teh tersebut.

Konsep Dasar OOP

Beberapa istilah-istilah pada OOP antara lain:

  • Class – kumpulan dari karakteristik abstrak suatu object, termasuk atribut / property dan kelakuan (method / fungsi) object tersebut. Karakteristik sebuah class seharusnya masuk akal pada konteksnya. Selain itu kode pada sebuah class sebaiknya bersifat mandiri. Properties dan methods yang dideklarasikan pada sebuah class disebut members.
  • Inheritance – penurunan atribut dan kelakuan sebuah class (yang diberi istilah khusus parent class) kepada class lain (child class) yang dapat memiliki atribut dan kelakuan uniknya sendiri. Segala karakteristik yang diturunkan dapat diubah nilainya pada child class. Multiple inheritance adalah inheritance pada satu child class yang penurunannya berasal dari lebih dari satu parent class.
  • Abstraction – simplifikasi realita yang kompleks dengan pemodelan classes yang sesuai dengan permasalahan, dan bekerja pada level inheritance yang paling sesuai dengan aspek permasalahan.
  • Encapsulation – penyembunyian detil fungsional sebuah class dari object yang berinteraksi dengannya.
  • Polymorphism – kemampuan berbagai object yang memiliki tipe data yang berbeda untuk merespon pada method-method bernama sama.

Tinggalkan komentar