Pemrograman Berorientasi Obyek
Apa itu PBO?
OOP/PBO merupakan paradigma pemrograman yang
popular saat ini yang telah menggantikan teknik pemrograman berbasis prosedur.
Object Oriented Programing yang berarti pula Pemrograman Beorientasi Objek
sudah ditemukan sekitar tahun 1960 dan dikembangkan pada permulaan tahun 1970.
Pemrograman Berorientasi Objek (Object Oriented Programming/OOP) merupakan pemrograman yang berorientasikan kepada objek, dimana semua data dan fungsi dibungkus dalam class-class atau object-object. Setiap object dapat menerima pesan, memproses data, mengirim, menyimpan dan memanipulasi data. Beberapa object berinteraksi dengan saling memberikan informasi satu terhadap yang lainnya.
Masing-masing object harus berisikan informasi mengenai dirinya sendiri dan dapat dihubungkan dengan Object yang lain. Pemrograman berorientasi objek berbeda dengan pemrograman prosedural yang hanya menggunakan satu halaman kebawah untuk mengerjakan banyak perintah atau statement. Penggunaan pemrograman berorientasi objek sangat benyak sekali, contoh : java, php, perl, c#, cobol, dan lainnya.
Pemrograman Berorientasi Objek (Object Oriented Programming/OOP) merupakan pemrograman yang berorientasikan kepada objek, dimana semua data dan fungsi dibungkus dalam class-class atau object-object. Setiap object dapat menerima pesan, memproses data, mengirim, menyimpan dan memanipulasi data. Beberapa object berinteraksi dengan saling memberikan informasi satu terhadap yang lainnya.
Masing-masing object harus berisikan informasi mengenai dirinya sendiri dan dapat dihubungkan dengan Object yang lain. Pemrograman berorientasi objek berbeda dengan pemrograman prosedural yang hanya menggunakan satu halaman kebawah untuk mengerjakan banyak perintah atau statement. Penggunaan pemrograman berorientasi objek sangat benyak sekali, contoh : java, php, perl, c#, cobol, dan lainnya.
Dalam konsep Pemrograman
Berorientasi Objek dikenal beberapa istilah umum, yaitu:
·
Attribute
Definisi dan Gambaran Umum Atribut
Atribut dari sebuah kelas adalah variabel
global yang dimiliki sebuah kelas, Atribut dapat memiliki hak akses private,
public maupun protected.
Sebuah atribut yang dinyatakan sebagai private hanya dapat diakses secara langsung oleh kelas yang membungkusnya, sedangkan kelas lainnya tidak dapat mengakses atribut ini secara langsung.
Sebuah atribut yang dinyatakan sebagai private hanya dapat diakses secara langsung oleh kelas yang membungkusnya, sedangkan kelas lainnya tidak dapat mengakses atribut ini secara langsung.
Sebuah atribut yang dinyatakan sebagai public
dapat diakses secara langsung oleh kelas lain di luar kelas yang membungkusnya.
Sebuah atribut yang dinyatakan sebagai protected tidak dapat diakses secara langsung oleh kelas lain di luar kelas yang membungkusnya, kecuali kelas yang mengaksesnya adalah kelas turunan dari kelas yang membungkusnya.
Atribut juga biasa disebut state/ properties/ field merupakan bagian yang dimiliki oleh sebuah class yang tidak melakukan operasi, tetapi kepadanya dilakukan operasi sehingga dapat merubah nilai dari attribute tersebut.
Sebuah atribut yang dinyatakan sebagai protected tidak dapat diakses secara langsung oleh kelas lain di luar kelas yang membungkusnya, kecuali kelas yang mengaksesnya adalah kelas turunan dari kelas yang membungkusnya.
Atribut juga biasa disebut state/ properties/ field merupakan bagian yang dimiliki oleh sebuah class yang tidak melakukan operasi, tetapi kepadanya dilakukan operasi sehingga dapat merubah nilai dari attribute tersebut.
Karakteristik Atribut
Dalam class, atribut disebut sebagai variabel.
Atribut dapat membedakan antara satu object dengan object yang lain. Sebagai
contoh, pada class : mahasiswa, terdapat object mahasiswa si A, dan object
mahasiswa si B.
Yang membedakan antara object si A dan si B adalah NPM-nya (Nomor Pokok Mahasiswa) yang merupakan atribut dari object tersebut. Pada atribut, terdapat pula dua istilah variabel, yaitu Instance Variabel dan Class Variable.
Dimana pada tiap variabel memiliki karakteristik tersendiri, diantaranya :
Pada Instance Variabel à tiap object memiliki instance variabel dan menyimpan nilainya tersendiri.
Yang membedakan antara object si A dan si B adalah NPM-nya (Nomor Pokok Mahasiswa) yang merupakan atribut dari object tersebut. Pada atribut, terdapat pula dua istilah variabel, yaitu Instance Variabel dan Class Variable.
Dimana pada tiap variabel memiliki karakteristik tersendiri, diantaranya :
Pada Instance Variabel à tiap object memiliki instance variabel dan menyimpan nilainya tersendiri.
Sedangkan pada Class
Variabel à atribut yang dimiliki oleh semua object yang berasal dari class yang
sama, serta semua object memiliki nilai class variabel yang sama. atribut yang
dimiliki object dari class yang sama.
·
Method
Definisi dan Gambaran Umum Method
Method adalah fungsi atau prosedur yang dibuat
oleh seorang programmer didalam suatu Class. Dengan kata lain, method pada
sebuah kelas hampir sama dengan fungsi atau prosedur pada pemrograman
prosedural.
Pada sebuah method di dalam sebuah kelas juga memiliki izin akses seperti halnya atribut pada kelas, izin akses itu antara lain private, public dan protected yang memiliki arti sama pada izin akses atribut yang telah dibahas sebelumnya. Sebuah kelas boleh memiliki lebih dari satu method dengan nama yang sama asalkan memiliki parameter masukan yang berbeda sehingga kompiler atau interpreter dapat mengenali method mana yang dipanggil.
Pada sebuah method di dalam sebuah kelas juga memiliki izin akses seperti halnya atribut pada kelas, izin akses itu antara lain private, public dan protected yang memiliki arti sama pada izin akses atribut yang telah dibahas sebelumnya. Sebuah kelas boleh memiliki lebih dari satu method dengan nama yang sama asalkan memiliki parameter masukan yang berbeda sehingga kompiler atau interpreter dapat mengenali method mana yang dipanggil.
Hal ini dinamakan
overloading. Di dalam sebuah kelas, terdapat juga yang disebut sebagai method
atau atribut statis yang memiliki kata kunci static. Maksud dari statis di sini
adalah method yang dapat diakses secara berbagi dengan semua objek lain tanpa
harus membuat objek yang memiliki method statis tadi (tanpa proses new), tapi
sebuah method statis mempunyai keterbatasan yaitu hanya dapat mengakses atribut
atau method lain di dalam kelas yang membungkusnya yang juga bersifat statis.
Method statis biasanya diimplementasikan untuk method main.
Karakteristik Method
Didalam suatu class, behavior disimpan dalam
bentuk Method. Method merupakan serangkaian statemen / perintah (perintah =
baris program) dalam suatu class yang menghandle task tertentu. Method
merupakan hal-hal yang bisa dilakukan oleh object dari suatu class.
Method didefinisikan pada class akan tetapi dipanggil melalui object. Method memiliki peranan diantaranya :
– merubah nilai atribut dari suatu object,
– menerima informasi dari object lain, dan
– mengirim informasi ke obyek lain untuk melakukan suatu task (cara obyek berkomunikasi dengan obyek lain adalah dengan menggunakan method).
Method didefinisikan pada class akan tetapi dipanggil melalui object. Method memiliki peranan diantaranya :
– merubah nilai atribut dari suatu object,
– menerima informasi dari object lain, dan
– mengirim informasi ke obyek lain untuk melakukan suatu task (cara obyek berkomunikasi dengan obyek lain adalah dengan menggunakan method).
·
Class
Merupakan model yang
berisi kumpulan attribute dan method dalam suatu unit untuk suatu tujuan
tertentu. Sebagai contoh class manusia memiliki attribute berat, tinggi, usia
kemudian memiliki method makan, minum, tidur. Method dalam sebuah class dapat
merubah attribute yang dimiliki oleh class tersebut. Sebuah class merupakan
dasar dari modularitas dan struktur dalam pemrograman berorientasi object.
Definisi dan Gambaran Umum Class
Class didefinisikan
sebagai sebuah blueprint(denah), atau prototipe, yang mendefiniskan
variabel-variabel dan metode-metode yang umum untuk semua objek dari n jenis
tertentu (n maksudnya jumlah tertentu). Sebuah kelas menyerupai sebuah struktur
yang merupakan tipe data sendiri, misalkan tipe data titik yang terdiri dari
koordinat x dan y. Bahasa Java telah menggunakan sebuah kelas untuk menyatakan
tipe data titik karena bahasa pemrograman Java merupakan bahasa pemrograman
berorientasi objek murni sehingga tidak mengenal struktur, melainkan mengenal
apa yang disebut dengan kelas.
Perbedaan sebuah kelas
dengan sebuah struktur adalah sebuah kelas dapat berdiri sendiri dan dapat
digunakan untuk berbagai keperluan kelas-kelas yang lain, sedangkan sebuah
struktur tidak dapat berdiri sendiri. Sebuah kelas lebih fleksibel untuk
digunakan oleh kelas lain tanpa harus membongkar kode program utama, sedangkan
jika digunakan struktur maka kode program harus dibongkar unuk disalin bagian
strukturnya ke kode program utama yang lain.
Sebuah file dapat terdiri
dari berbagai kelas, namun biasanya pada bahasa pemrograman Java sebuah file
hanya terdiri dari satu kelas yang disimpan dengan nama kelas, misal file List.java berisi kelas List. Namun jika kelas yang dibuat misalnya public
class nama_kelas, maka kelas itu harus disimpan dalam satu file hanya untuk
satu kelas. Setelah dilakukan kompilasi maka pada Java akan ada sebuah file
.class yang berisi bytecode dari setiap kelas.
Jika sebuah file terdiri dari dua kelas, maka
setelah dilakukan kompilasi akan dihasilkan dua buah file .class yang nantinya
akan dibaca oleh interpreter Java saat program dieksekusi. Sebuah kelas saat
program dieksekusi dan perintah new dijalankan, maka akan dibuat sebuah objek.
Class adalah template untuk pembuatan objek. Class juga memiliki anggota,
diantaranya : atribut dan method.
Pemahaman singkatnya :
• Class merupakan pola / template yang menggambarkan kumpulan object yang mempunyai sifat dan perilaku yang sama.
• Class merupakan struktur data dari object (blueprint dari sebuah object), dan proses pembuatan object dari sebuah class disebut juga dengan instantiation.
• Class merupakan definisi data dan fungsi dari suatu hal (benda, konsep, dll).
• Di dalam class dideklarasikan variabel dan method yang dimiliki oleh obyek
Pemahaman singkatnya :
• Class merupakan pola / template yang menggambarkan kumpulan object yang mempunyai sifat dan perilaku yang sama.
• Class merupakan struktur data dari object (blueprint dari sebuah object), dan proses pembuatan object dari sebuah class disebut juga dengan instantiation.
• Class merupakan definisi data dan fungsi dari suatu hal (benda, konsep, dll).
• Di dalam class dideklarasikan variabel dan method yang dimiliki oleh obyek
Karakteristik Class
Class memiliki beberapa
karakteristik, diantaranya : anggota class terdiri dari atribut dan method.
Tiap-tiap anggota class memiliki control pengaksesan tersendiri, maksudnya
adalah apakah anggota class tersebut dapat diakses dengan bebas (dengan tipe
public) atau hanya dapat diakses melalui sebuah interface.
Dalam hal ini, interface adalah device yang digunakan untuk komunikasi antar object berbeda yang tidak memiliki hubungan apapun. Interface bisa dikatakan sebagai protokol komunikasi antar object tersebut.
Dalam hal ini, interface adalah device yang digunakan untuk komunikasi antar object berbeda yang tidak memiliki hubungan apapun. Interface bisa dikatakan sebagai protokol komunikasi antar object tersebut.
·
Object
Merupakan perwujudan dari
class, setiap object akan mempunyai attribute dan method yang dimiliki oleh
class-nya, contohnya: amir, ahmad, yani merupakan object dari class manusia.
Setiap object dapat berinteraksi dengan object lainnya meskipun berasal dari
class yang berbeda.
Definisi dan Gambaran Umum Object
Object merupakan sesuatu yang memiliki
identitas (nama), pada umumnya juga memiliki data tentang dirinya maupun object
lain dan mempunyai kemampuan untuk melakukan sesuatu dan bisa bekerja sama
dengan objek lainnya. Pada dasarnya semua benda yang ada di dunia dapat
dianggap sebagai sebuah object. Rumah, mobil, sepeda motor, meja, dan komputer
merupakan contoh-contoh object yang ada di dunia nyata. Object adalah
implementasi dari class. Secara sederhananya, dapat dikatakan terdiri dari
properti (atribut) dan method.
Pemahaman singkatnya :
• Objek merupakan sebuah objek khusus yang digunakan untuk mengakses anggota objek (atribut atau method) dari dalam objek itu sendiri.
• Apabila terdapat variabel lain yang memiliki nama yang sama dengan nama atribut di dalam objek, “this” dapat digunakan untuk merujuk ke atribut objek.
Pemahaman singkatnya :
• Objek merupakan sebuah objek khusus yang digunakan untuk mengakses anggota objek (atribut atau method) dari dalam objek itu sendiri.
• Apabila terdapat variabel lain yang memiliki nama yang sama dengan nama atribut di dalam objek, “this” dapat digunakan untuk merujuk ke atribut objek.
Karakteristik Object
Setiap object memiliki dua karakteristik yang
utama, yaitu atribut dan behavior. Atribut merupakan status object dan behavior
merupakan tingkah laku dari object tersebut.
Contoh sederhana adalah sepeda. Object sepeda memiliki atribut : pedal, roda, dan gigi, kecepatan serta memiliki tingkah laku seperti pacu dan rem. Sama seperti penggambaran di dunia nyata, pengembangan program dengan konsep OOP juga menggunakan model object yang akan menyimpan atributnya dalam variabel dan tingkah lakunya dalam method atau fungsi-fungsi/prosedur. Deskripsinya :
Contoh objek : Sepeda
– Sepeda memiliki atribut ( state ) : pedal, roda, jeruji, dan warna.
– Sepeda memiliki tingkah laku ( behaviour ) : kecepatannya menaik, kecepatannya menurun, dan perpindahan gigi sepeda.
Dalam pengembangan perangkat lunak berorientasi objek, objek dalam perangkat lunak akan menyimpan state-nya dalam variabel dan menyimpan informasi tingkah laku ( behaviour ) dalam method-method atau fungsi-fungsi/prosedur.
Contoh sederhana adalah sepeda. Object sepeda memiliki atribut : pedal, roda, dan gigi, kecepatan serta memiliki tingkah laku seperti pacu dan rem. Sama seperti penggambaran di dunia nyata, pengembangan program dengan konsep OOP juga menggunakan model object yang akan menyimpan atributnya dalam variabel dan tingkah lakunya dalam method atau fungsi-fungsi/prosedur. Deskripsinya :
Contoh objek : Sepeda
– Sepeda memiliki atribut ( state ) : pedal, roda, jeruji, dan warna.
– Sepeda memiliki tingkah laku ( behaviour ) : kecepatannya menaik, kecepatannya menurun, dan perpindahan gigi sepeda.
Dalam pengembangan perangkat lunak berorientasi objek, objek dalam perangkat lunak akan menyimpan state-nya dalam variabel dan menyimpan informasi tingkah laku ( behaviour ) dalam method-method atau fungsi-fungsi/prosedur.
Konsep-konsep dalam OOP/PBO :
·
Abstraction
Adalah suatu cara untuk
melihat suatu object dalam bentuk yang lebih sederhana. Sebagai contoh kita
tidak melihat sebuah mobil sebagai ribuan komponen elektronik, sistem mekanik
dengan empat buah ban, jok, stir kemudi dan sebagainya. Dengan Abstraction,
suatu sistem yang kompleks dapat dipandang sebagai kumpulan subsistem-subsistem
yang lebih sederhana, seperti halnya mobil merupakan suatu sistem yang terdiri
atas berbagai subsistem, seperti subsistem kemudi, subsistem pengereman dan
sebagainya.
Abstraksi merupakan 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.
Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
·
Encapsulation
Merupakan suatu mekanisme untuk menyembunyikan
atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan
dari luar sistem dan sekaligus menyederhanakan penggunaan sistem tersebut.
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak. Hanya metode dalam objek tersebut yang diberi ijin 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.
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak. Hanya metode dalam objek tersebut yang diberi ijin 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.
·
Inheritance
Merupakan konsep mewariskan attribute dan
method yang dimiliki oleh sebuah class kepada class turunannya. Dengan konsep
ini class yang dibuat cukup mendefinisikan attribute dan method yang spesifik
didalamnya, sedangkan attribute dan method yang lebih umum akan didapatkan dari
class yang menjadi induknya.
Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada.Objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada.Objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
·
Polymorphism
Merupakan konsep yang memungkinkan
digunakannya suatu interface yang sama untuk memerintah suatu object agar
melakukan suatu tindakan yang mungkin secara prinsip sama tetapi secara proses
berbeda.
Model data berorientasi objek disebut dapat memberi fleksibilitas yang lebih, kemudahan mengubah program dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya selain itu pendekatan OOP lebih mudah dikembangkan dan dirawat.
Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan, dengan metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesan tersebut dikirim.
Model data berorientasi objek disebut dapat memberi fleksibilitas yang lebih, kemudahan mengubah program dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya selain itu pendekatan OOP lebih mudah dikembangkan dan dirawat.
Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan, dengan 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.
Pengertian Class dalam Pemrograman Berbasis Objek
Class adalah ‘cetak biru’ atau ‘blueprint’ dari object. Class digunakan hanya untuk membuat kerangka dasar. Yang
akan kita pakai nantinya adalah hasil cetakan dari class, yakni object.
Sebagai analogi, class bisa diibaratkan dengan laptop atau notebook. Kita tahu bahwa laptop memiliki ciri-ciri seperti merk,
memiliki keyboard, memiliki processor, dan beberapa ciri khas lain yang menyatakan sebuah benda
tersebut adalahlaptop. Selain memiliki ciri-ciri, sebuah
laptop juga bisa dikenakan tindakan, seperti: menghidupkan laptop atau mematikan laptop.
Class dalam analogi ini adalah gambaran umum
tentang sebuah benda. Di dalam pemrograman nantinya, contoh class seperti: koneksi_database dan profile_user.
Di dalam PHP, penulisan class diawali dengan keyword class, kemudian diikuti dengan nama dari class.
Aturan penulisan nama class sama seperti aturan penulisan variabel dalam PHP, yakni diawali dengan huruf
atau underscore untuk karakter pertama, kemudian boleh
diikuti dengan huruf, underscore atau angka untuk karakter kedua dan
selanjutnya. Isi dari class berada dalam tanda kurung kurawal.
Berikut adalah contoh penulisan class dalam PHP:
1. <?php
2. class
laptop {
3. //
isi dari class laptop...
4. }
5. ?>
Property (atau disebut
juga dengan atribut) adalah data yang
terdapat dalam sebuah class. Melanjutkan analogi tentang laptop, property dari laptop
bisa berupa merk,
warna, jenis processor, ukuran layar, dan lain-lain.
Jika
anda sudah terbiasa dengan program PHP, property ini sebenarnya
hanyalahvariabel yang terletak di
dalam class. Seluruh aturan dan
tipe data yang biasa diinput kedalam variabel, bisa juga diinput
kedalam property. Aturan tata cara
penamaan property sama dengan
aturan penamaan variabel.
Berikut adalah contoh penulisan class dengan
penambahan property:
1
2
3
4
5
6
7
|
<?php
class laptop {
var $pemilik;
var $merk;
var $ukuran_layar;
// lanjutan isi
dari class laptop...
}
?>
|
Dari
contoh diatas, $merk,
$ukuran_layar dan $jenis_processor adalah propertydari class laptop. Seperti yang kita
lihat, penulisan property di dalam PHP sama dengan cara penulisan variabel, yakni menggunakan
tanda dollar ($). Sebuahclass tidak harus
memiliki property.
Fungsi dalam kelas
Fungsi kelas terletak pada fungsi anggota (member function) dalam Java. Jika Anda ingin membaca data dalam objek maka Anda harus memanggil fungsi anggota (member function) dalam objek. hanya dengan cara ini Anda bisa mengakses data. Jadi Anda tidak bisa mengakses data secara langsung seperti dalam konsep pemrograman tradisional. Pengaksesan data seperti pada PBO ini dikenal sebagai pengkapsulan data. Pengkapsulan data (data encapsulation) dan
penyembunyian data merupakan kunci pengertian pemrograman berorientasi objek.
Jika Anda ingin mengubah data dalam objek tentunya Anda harus tahu fungsi-fungsi apa saja yang berinteraksi dengan objek itu, jadi tidak ada fungsi-fungsi lain yang bisa mengakses data sehingga penulisan dan penelusuran kesalahan program (debugging) akan dapat dilakukan dengan mudah.
Fungsi kelas terletak pada fungsi anggota (member function) dalam Java. Jika Anda ingin membaca data dalam objek maka Anda harus memanggil fungsi anggota (member function) dalam objek. hanya dengan cara ini Anda bisa mengakses data. Jadi Anda tidak bisa mengakses data secara langsung seperti dalam konsep pemrograman tradisional. Pengaksesan data seperti pada PBO ini dikenal sebagai pengkapsulan data. Pengkapsulan data (data encapsulation) dan
penyembunyian data merupakan kunci pengertian pemrograman berorientasi objek.
Jika Anda ingin mengubah data dalam objek tentunya Anda harus tahu fungsi-fungsi apa saja yang berinteraksi dengan objek itu, jadi tidak ada fungsi-fungsi lain yang bisa mengakses data sehingga penulisan dan penelusuran kesalahan program (debugging) akan dapat dilakukan dengan mudah.
HAK AKSES/
private,protected,public(OOP)
Object Oriented Programming atau OOP adalah sebuah konsep atau paradigma pemrograman yang menganggap elemen pemrograman sebagai object. Dalam hal ini antara data dan fungsi dibungkus dalam sebuah blue print yang biasa disebut Class (Kelas). Dalam class terdapat dua bagian yaitu Attribute (Property) dan Method (Function). Setiap Attribute dan Method memiliki Modifier dimana modifier akan mengatur hak akses atas suatau method/attribute. Pada posting kali ini, sebelum kita belajar bagaimana dan seperti apa itu rupa dari attribute dan method, terlebih dahulu kita akan mempelajari tentang modifier dan hak aksesnya masing-masing.
Dalam pemrograman PHP saya belum
terlalu paham seberapa hebat dan mendalam PHP dalam menerapkan konsep OOP ini,
namun sepengetahuan saya antara OOP PHP dan Java memiliki kemiripan bahkan
sangat mirip sehingga saya yang pertama kali belajar OOP dari Java tidak
mengalami kesulitan berarti dalam memahami konsep-konsep yang ada. Seperti pada
Java, PHP pun memiliki 5 Modifier yaitu Private, Protected, Public, Default
(Undefined) dan Static, dimana Default dari Modifier dalam PHP adalah
Public (maaf kalau salah tolong dibetulkan soalnya aku juga kurang
paham yang ini
Mari kita bahas satu per satu
1.Private
Private; seperti namanya modifier ini bersifat
spesifik class dan tidak dapat diwariskan kepada class turunannya. Modifier ini
hanya dapat diakses oleh class tersebut dan tidak dapat diakses diluar dari
class tersebut. Bahkan object saja tidak dapat mengaksesnya karena memang hanya
diperuntukkan untuk class tersebut.
Contoh :
1
2
3
4
5
6
7
8
9
10
|
<?php
class Modifier{
private function setPrivate(){
echo 'Ini private';
}
}
$a = new Modifier();
$a->setPrivate();
?>
|
Ketika kita mencoba menjalankan
program diatas maka yang ada bukannya keluar tulisan Ini private tapi justru
error sebagai berikut
1
|
Fatal error: Call to private method
Modifier::setPrivate() from context '' in/opt/lampp/htdocs/modifier.php on line 9
|
2.
Protected
Protected; Modifier ini diproteksi
hanya untuk class dan turunan class tersebut. Jadi modifier sedikit lebih
terbuka daripada modifier Private namun belum bisa dipanggil secara langsung
oleh object class. Untuk lebih jelas perhatikan contoh berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?php
class Modifier{
protected function setProtected(){
echo 'Ini protected';
}
}
class Turunan extends Modifier{
public function setPublic(){
$this->setProtected();
}
}
//$a = new Modifier();
//$a->setProtected();
$b = new Turunan();
$b->setPublic();
//$b->setProtected();
?>
|
Pada
contoh diatas akan keluar output Ini protected karena kita
memanggil function setProtected dari extends class (class turunan) yang
bersifat public. Secara singkat kira-kira beginilah alur program diatas.
Class Modifier mempunyai Turunan
Class yaitu Turunan sehingga secara otomatis Turunan memiliki semua function
yang dimiliki oleh class Modifier. Karena memiliki function yang dimiliki class
Modifier, berarti Turunan juga memiliki fungsi setProtected. Karena ingin agar
object dapat mengakses fungsi setProtected, dibuatlah sebuah fungsi pada class
Turunan yaitu setPublic yang sebenarnya adalah fungsi setProtected namun dengan
akses public.
Public
Deklarasi hak ini berarti variable
atau fungsi dengan awalan ini bisa diakses dari class manapun, baik class itu
sendiri atau class turunan dari class yang memiliki variable atau fungsi itu.
Deklarasi ini merupakan yang paling sering dan mudah digunakan. Tetapi
penggunaanya tergantung dari kebutuhan dan kebijakan dalam keamanan program.
Konsep Pewarisan (Inheritance)
pada Pemrograman Berbasis Objek (PBO)
Pewarisan merupakan salah satu bentuk penggunaan kembali
perangkat lunak dimana suatu kelas baru dibuat dari kelas yang sudah ada dengan
mengabsorbsi variavel dan fungsi dari kelas yang sudah ada tersebut, serta
menambahkan atribut maupun perilaku yang baru. Kelas baru secara otomatis akan
memiliki variabel dan fungsi yang dimiliki oleh kelas asal.
Kelas asal disebut sebagai kelas induk (parent class,
super class atau base class), kelas baru disebut dengan kelas anak (Child
class, sub class). Java menggunakan kata kunci extends untuk menunjukkan
suatu kelas merupakan turunan dari kelas yang lain.
Mendefinisikan Kelas
Pendefinisian kelas untuk menunjukkan proses
pewarisan melibatkan lebih dari satu kelas, yaitu kelas induk dan kelas
turunan. Kelas turunan akan mewarisi atribut dan fungsi yang dimiliki oleh
kelas induknya. Beberapa kemungkinan yang terjadi saat mendefinisikan
fungsi-dungsi yang ada pada kelas turunan yaitu : kelas turunan dapat
melakukan overriding function yang diperoleh dari kelas induk,
kelas turunan mewarisi fungsi kelas induk dan tidak melakukan perubahan apapun,
kelas turunan mendefinisikan fungsi baru yang memang tidak ada di kelas
induk.
Contoh dalam suatu organisasi (misal Perguruan Tinggi)
terdapat berbagai macam jabatan struktural yang mempunyai berbagai tugas dengan
karakteristik yang berbeda, misal : Ketua, Pembantu Ketua, Sekretaris, Ketua
Jurusan dan lain-lain. Setiap jenis jabatan struktural akan memiliki
karakteristik yang sama, misal : nama, job discription, tunjangan jabatan dan
lain-lain. Selain karakteristik itu, setiap orang yang mempunyai jabatan
struktural juga memiliki karakteristik tambahan, misal : masing-masing pejabat
mempunyai job discription yang berbeda, besarnya tunjangan juga berbeda.
Tidak semua variabel atau fungsi dapat diwariskan ke
kelas turunan. Variabel atau fungsi yang di deklarasikan public akan
diwariskan kepada turunan, sedang variabel atau fungsi yang dideklarasi private
tidak akan diwariskan ke kelas turunnya.
Sintak dalam Java yang menggambarkan pewarisan dapat
dituliskan sbb:
class nama_kelas_anak extends nama kelas induk {
//deklarasi atribut
//fungsi-fungsi kelas anak
}
Konstruktor
Konstruktor adalah sebuah fungsi yang digunakan untuk membuat objek
dalam suatu kelas. Konstruktor ini juga digunakan untuk melakukan inisialisasi
terhadap variabel-variabel yang dimiliki oleh kelas.
Dalam konsep pewarisan, konstruktor kelas induk tidak
akan diwariskan ke kelas induk, untuk memfasilitasi pemanggilan fungsi
konstruktor kelas induk oleh kelas anak maka Java menyediakan mekanisme rujukan
ke kelas induk dengan menggunakan kata kunci super. Dengan menggunakan
kata kunci ini, maka kita dapat mengakses semua variabel kelas induk walaupun
variabel tersebut tidak diwariskan.
Pemanggilan konstruktor kelas induk dengan menggunakan
super harus diletakkan dibaris pertama dalam fungsi konstruktor kelas
anak.
Pemanggilan konstruktor kelas induk di dalam kelas anak
dapat ditulis sbb:
public konstruktor_kelas_anak(parameter){
super(parameter)
//instruksi lain
}
//Class
Struktural merupakan Class Induk
public abstract class Struktural {
private String nmpjb;
public Struktural(String nama){
nmpjb = nama;
}
public abstract class Struktural {
private String nmpjb;
public Struktural(String nama){
nmpjb = nama;
}
public String
getNama(){
return nmpjb;
}
abstract public String jobDesc();
abstract public double tunjangan();
}
return nmpjb;
}
abstract public String jobDesc();
abstract public double tunjangan();
}
//kelas turunan
public class
Ketua extends Struktural{
public Ketua(String nama){
super(nama);
}
public Ketua(String nama){
super(nama);
}
public String
jobDesc(){
String job = “Job Description Ketua\n”;
job += “1. Memimpin Perguruan Tinggi \n”;
job += “2. Menentukan Tujuan Strategis \n”;
return job;
}
String job = “Job Description Ketua\n”;
job += “1. Memimpin Perguruan Tinggi \n”;
job += “2. Menentukan Tujuan Strategis \n”;
return job;
}
public double
tunjangan(){
// rumus perhitungan tunjangan ketua
return 1000000;
}
}
// rumus perhitungan tunjangan ketua
return 1000000;
}
}
keterangan:
- Kelas Ketua
(nama jabatan struktural : Ketua, Pembantu Ketua Sekretaris dll )
merupakan kelas extends dari kelas Struktural.
- super(nama)
digunakan untuk pemanggilan variabel nama yang ada di kelas induk (kelas
Struktural