Pemrograman
prosedural merupakan suatu metode menulis program yang didasarkan pada
"serangkaian tugas yang diselesaikan dalam bentuk fungsi atau
prosedur". Cara pandang pemrograman prosedural yaitu sebuah
program adalah suatu urutan instruksi. Programmer harus mem-break down suatu
problem/masalah menjadi sub problem yang lebih sederhana. Fokus utama metode
prosedural ini adalah fungsi dan prosedur, dimana keduanya digunakan untuk
memanipulasi data. Dalam hal ini data bersifat pasif.
Lain
halnya dengan pemrograman berorientasi objek (OOP), fungsi dan data bukan
menjadi dua hal yang terpisah. Fungsi dan data menjadi satu kesatuan yang disebut
sebagai objek aktif. Cara pandang OOP ini yaitu sebuah program merupakan serangkaian
objek yang bekerjasama untuk menyelesaikan suatu problem.
Dengan
kata lain, metode prosedural berfokus pada cara komputer menangani tugas,
sedangkan metode OOP berfokus pada tugas yang kita kembangkan untuk dieksekusi
komputer. Kedua jenis metode pemrograman tersebut dapat digunakan untuk
menangani masalah yang sama, asalkan bahasa pemrograman yang digunakan
mendukung metode-metode tersebut. Contoh bahasa pemrograman yang mendukung OOP
diantaranya : Java, C++, Pascal, Visual Basic .NET, Ruby, Python, PHP, C#,
Delphi, Perl, dsb. Selain itu masih banyak bahasa lain yang termasuk ke dalam
bahasa prosedural, atau bahkan bisa mendukung kedua metode pemrograman
tersebut. Untuk lebih lengkapnya, dapat dilihat daftar bahasa pemrograman
berdasarkan tipenya di sini.
Istilah-Istilah
OOP
1.
Objek
Untuk
mempermudah pemahaman, maka disini akan dijelaskan melalui analogi. Pada
dasarnya semua benda yang adadi dunia nyata dapat dianggap sebagai objek.
Misalnya rumah, mobil, sepeda, motor, gelas, komputer, meja, sepatu, dll.
Setiap objek memiliki atribut sebagai status (state) dan tingkah laku sebagai behavior.
Contoh
objek : Motor. Maka atribute (state) nya adalah pedal, roda, jeruji,
speedometer, warna, jumlah roda. Sedangkan tingkah laku (behavior) nya adalah
kecepatan menaik, kecepatan menurun, dan perpindahan gigi motor.
Analogi
pemrograman berorientasi objek sama dengan penggambara pada dunia nyata seperti
contoh di atas. Dalam OOP, state disimpan pada variabel dan tingkah laku
disimpan pada method.
Dalam
bahasa teoretis OOP, Objek berfungsi untuk membungkus data dan fungsi bersama
menjadi satu unit dalam sebuah program komputer. Objek merupakan dasar dari
modularitas dan struktur dalam sebuah program komputer berorientasi objek.
2.
Class
Definisi
class yaitu template untuk membuat objek. Class merupakan prototipe atau blue
prints yang mendefinisikan variabel-variabel dan method-method secara umum.
Objek merupakan hasil instansiasi dari suatu class. Proses pembentukan objek
dari suatu kelas disebut sebagai instantiation. Objek disebut juga sebagai
instances.
Dalam
bahasa teoretis OOP, class merupakan kumpulan atas definisi data dan
fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh
'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan
fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing.
Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman
berorientasi object.
Sebuah
class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer
sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat
dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen
(sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan
modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam
masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan
menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
3.
Attributes
Atribut
adalah data yang membedakan antara objek satu dengan yang lainnya.
Contoh
Objek : VolcanoRobot ( a volcanic exploration vehicle), mempunyai atribut
sebagai berikut:
- Status ~> exploring, moving, returning home
- Speed ~> in miles per hour
- Temperature ~> in Fahrenheit degrees
Dalam
class, atribut sering disebut sebagai variabel. Atribut dibedakan menjadi dua
jenis yaitu Instance Variable dan Class Variable.
Instance
variable adalah atribut untuk tiap objek dari kelas yang sama. Tiap objek
mempunyai dan menyimpan nilai atributnya sendiri. Jadi, tiap objek dari class
yang sama bokeh mempunyai nilai yang sama atau berbeda.
Class
Variable adalah atribut untuk semua objek yang dibuat dari class yang sama.
Semua objek mempunyai nilai atribut yang sama. Jadi semua objek dari class yang
sama mempunyai hanya satu nilai yang value nya sama.
4.
Behavior
Behavior/tingkah
laku adalah hal-hal yang bisa dilakukan oleh objek dari suatu class. Behavior
dapat digunakan untuk mengubah nilai atribut suatu objek, menerima informasi
dari objek lain, dan mengirim informasi ke objek lain untuk melakukan suatu
tugas (task).
Contoh
behavior untuk objek VolcanoRobot:
- check current temperature
- begin a survey
- report its current position
Dalam
class, behavior disebut juga sebagai methods. Methods sendiri adalah
serangkaian statements dalam suatu class yang menghandle suatu task tertentu.
Cara objek berkomunikasi dengan objek yang lain adalah dengan menggunakan
method.
Abstraksi
adalah kemampuan sebuah program untuk melewati aspek informasi yang diproses
olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem
melayani sebagai model dari "pelaku" abstrak yang dapat melakukan
kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya
dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses,
fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan
untuk mengembangkan sebuah pengabstrakan.
Konsep
Konsep OOP
1.
Enkapsulasi (Encapsulation)
Definisi
enkapsulasi: Pembungkusan variabel dan method dalam sebuah obyek yang
terlindungi serta menyediakan interface untuk mengakses variabel tersebut.
Variabel dan method yang dimiliki oleh suatu objek, bisa ditentukan hak
aksesnya. Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan dari
struktur dalam bahasa C.
Contoh:
jam tangan. Dalam hal ini, penting sekali untuk mengetahui waktu, sedangkan
cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga
gerak tidaklah penting kita ketahui.
Dengan
kata lain enkapsulasi berfungsi untuk memastikan pengguna sebuah objek tidak
dapat mengganti keadaan dalam/dari sebuah objek dengan cara yang tidak layak;
hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya.
Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat
berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung
kepada representasi dalam objek tersebut.
2. Pewarisan (Inheritance)
Pewarisan
merupakan pewarisan atribut dan method dari sebuah class ke class lainnya.
Class yang mewarisi disebut superclass dan Class yang diwarisi disebut
subclass. Subclass bisa berlaku sebagai superclass bagi class lainya, disebut
sebagai multilevel inheritance.
Contoh
: terdapat class sepeda dan sepeda gunung. Sepeda termasuk superclass.
Sepeda gunung termasuk subclass. Hal ini dikarenakan sepeda gunung memiliki
variabel dan method yang dimiliki oleh sepeda.
Prinsip
dasar inheritance yaitu persamaan-persamaan yang dimiliki oleh beberapa kelas
dapat digabungkan dalam sebuah class induk sehingga setiap kelas yang
diturunkannya memuat hal-hal yang spesifik untuk kelas yang bersangkutan.
Keuntungan Pewarisan
- Subclass menyediakan state/behaviour yang spesifik yang membedakan dengan superclass, sehingga memungkinkan programmer untuk menggunakan ulang source code dari superclass yang telah ada.
- Programmer dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class (abstraksi), untuk mendefinisikan class dengan tingkah laku dan state secara umum.
Single
& Multiple Inheritance
Bahasa
C adalah contoh multiple inheritance. Suatu class diperbolehkan untuk mempunyai
lebih dari satu superclass. Variabel dan method yang diwariskan merupakan
kombinasi dari superclass-nya. Java adalah contoh single inheritance. Suatu
class hanya boleh mempunyai satu superclass.
Multilevel Inheritance
Suatu
subclass bisa menjadi superclass bagi class yang lain.
3. Polimorfisme
Polimorfisme
adalah kemampuan suatu obyek untuk mempunyai lebih dari satu bentuk.
Polimorfisme tidak bergantung kepada pemanggilan subrutin. Metode tertentu yang
berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di
mana pesan tersebut dikirim. Contohnya, bila sebuah burung menerima pesan
"gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor
singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari.
Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan
hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam
program dapat memegang berbagai jenis objek yang berbeda selagi program
berjalan, dan teks program yang sama dapat memanggil beberapa metode yang
berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan
dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi
kelas-pertama.
Kesimpulan
:
Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bagian administrasi, maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah, dapat dilakukan dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bagian administrasi, maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah, dapat dilakukan dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
Tidak ada komentar:
Posting Komentar