18 November 2008

Perjalananku mengerti tentang OOP

Pemrograman berorientasi obyek / Object Oriented Programming (OOP)


Pemrograman prosedural
Ketika pertama saya belajar program pada tahun 1984, bahasa pemrograman BASIC adalah yang pertama saya kenal. Setiap baris perintah menggunakan nomor urut (bilangan bulat/integer) dari yang kecil ke yang besar (Ascending). Yang repot kalau mau menyisipkan baris perintah, sementara tidak ada nomor cadangan alias nomor di antara dua baris yang akan disisipi. Biasanya menggunakan teknik penomoran kelipatan 10 agar ada tempat untuk menyisipkan baris perintah. Program bekerja atau dieksekusi mulai nomor terkecil, untuk jump (“Goto”) menunjuk nomor baris atau label. Yang bikin repot dan pusing jika program cukup panjang (ratusan baris perintah) dan ada kesalahan yang harus dilacak, persis mencari kutu (debug). Pemrograman dengan metodologi tersebut dinamakan step by step.


Contoh program dengan bahasa BASIC


Ketika kerja di konsultan Tyssen GmbH untuk proyek Production Control System (PCS) pabrik Hot Strip Mill, PT.Krkatau Steel pada tahun 1987, program komputer dibuat dengan menggunakan bahasa pemrograman dBase II untuk Personal Computer (PC) dan FORTRAN dan RPG untuk komputer mini IBM AS400. Pada bahasa pemrograman ini saya kenal dengan namanya procedure dan function, program dipecah-pecah menjadi beberapa modul. Metodologi pemrograman tersebut diistilahkan dengan modular atau prosedural. Dibanding dengan metodologi step by step, metodologi prosedural cukup baik, karena program dipecah menjadi modul-modul prosedur dan fungsi yang relatif mudah dimanage. Pada metodologi tersebut kerepotan ditemui saat program mulai komplek, perubahan suatu fungsi akan berpengaruh pada fugsi sistem secara keseluruhan dan saat diintegrasikan dengan sistem lain.

Contoh program dengan dBASE


Kedua metodologi tersebut step by step dan prosedural pada prinsipnya sama yaitu flow programming yang dieksekusi mulai baris awal perintah sampai baris akhir. Pada metodologi tersebut antara data (variabel, konstanta, dll) dan metode (prosedur dan fungsi) dipandang sendiri-sendiri secara terpisah.


Pemrograman berorientasi obyek.
Pada tahun 1989, saya keluar dari konsultan Tyssen GmbH dan menjadi konsultan freelance bersama rekan saya dari Amerika eks konsultan Caesar dan mengerjakan proyek PCS di PT.CRMIU (sekarang sahamnya dibeli PT. KS dan menjadi Divisi PBLD) . Pada proyek tersebut kami menggunakan bahasa pemrograman Turbo Pascal 5.5 dan kemudian diupgrade ke Turbo Pascal 7. Pada bahasa pemrograman ini saya kenal dengan yang namanya pemrograman berorientasi obyek atau Object Oriented Programming (OOP).

Contoh program berorientasi obyek yang ditulis dengan Turbo PASCAL 7


OOP merupakan perkembangan / pembaharuan dari paradigma pemrograman prosedural. OOP dibuat untuk mengatasi kesulitan yang ada pada pemrograman prosedural yang komplek. OOP merupakan paradigma yang berbeda dengan pemrograman prosedural. Obyek (object) dimaksud dalam pemrograman yaitu kumpulan elemen-elemen dalam suatu program dan hubungan yang terjadi antar elemen tersebut.

Bila pada pemrograman prosedural, data (variabel, konstanta, dll), metode (prosedur dan fungsi) dan hubungan satu dengan lainnya dapat terpisah, maka pada OOP elemen-elemen serta hubungannya dikemas dalam suatu modul yang dinamakan kelas (class). Kelas inilah yang digunakan untuk membangun atau membentuk obyek. Meminjam istilah mas Romi Satria Wahono, bahwa kelas ibarat cetakan kue, dan obyek adalah kue yang dihasilkan (instance) dari cetakan dimaksud.


Terdapat 3 pilar utama dalam pemrograman yang berorientasi obyek, ketiga pilar tersebut yaitu:
  • Encapsulation (pengkapsulan), merupakan langkah pengkombinasian data dan berbagai metode yang berhubungan dengannya. Hasil dari kombinasi yang dlakukan inilah yang disebut obyek (Object) yang merupakan tipe data baru.
  • Inheritance (penurunan sifat / pewarisan), ini merupakan ciri khas dari OOP yang tidak terdapat pada pemrograman prosedural gaya lama. Dalam hal ini, inheritance bertujuan membentuk obyek baru yang memiliki sifat sama atau mirip dengan obyek yang sudah ada sebelumnya (pewarisan). Obyek turunan dapat digunakan membetuk obyek turunan lagi dan seterusnya. Setiap perubahan pada obyek induk, juga akan mengubah obyek turunannya. Susunan obyek induk dengan obyek turunannya disebut dengan hirarki obyek.
  • Polymorphism, suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.


Dari uraian di atas, dapat dianalogikan perbedaan antara pemrograman prosedural dan OOP, yaitu seperti seorang programmer memandang sebuah kaleng. Menurut cara pandang aliran prosedural gaya lama, maka ia akan mendeklarasikan beberapa variabel untuk menggambarkan kaleng tersebut. Misal variabel R untuk jari-jari, Tng untuk tinggi, Phi untuk konstanta phi, Wrn untuk warna, Ls untuk luas permukaan, dan seterusnya. Jadi untuk masing-masing bagian kaleng tersebut direpresentasikan ke dalam variabel-variabel terpisah. Begitu juga untuk fungsi dan atau prosedur. Bagi programmer aliran OOP, data-data dimaksud yang disebut dengan atribut dan fungsi atau prosedur yang disebut metode (method) dikemas dalam satu tipe baru yang disebut dengan kelas (class). Dari class inilah nantinya diciptakan obyek-obyek.

Tidak ada komentar:

Belajar Untuk Dunia Akherat is wearing Blue Weed by Blog Oh! Blog | To Blogger by Gre at Template-Godown | Entries (RSS) and Comments (RSS).