Kegiatan Belajar 3: Pemrograman Berorientasi Objek A. Capaian Capaian Pembe Pembelajar lajaran an Mata Mata Kegiatan Kegiatan Peserta dapat memahami pemrograman berorientasi objek
A. Sub Capaia Capaian n Pembelaj Pembelajaran aran Mata Kegiatan Kegiatan 1. 2. 3. 4. 5. .
Menjel Menjelask askan an konsep konsep pemrogram pemrograman an berorien berorientas tasii objek Menj Menjel elas aska kan n enkap enkapsu sula lasi si Meen Meenje jela lask skan an Pewar Pewaris isan an Menj Menjel elas aska kan n Polym Polymor orph phis ism m Memb Membua uatt int inter erfa face ce Membuat Membuat ja!a ja!a sebagai sebagai pemrog pemrogram raman an berorien berorientasi tasi objek objek
B. Poko Pokokk-po poko kok k mater materii 1. 2. 3. 4. 5. .
"onsep "onsep pemr pemrogra ograman man beror berorien ientasi tasi objek objek #nkap nkaps sulasi Pewarisan Polym olymor orph phis ism m $nterface Pemr Pemrog ogra rama man n %a!a %a!a
C. Urai Uraian an Mat Mater erii 1. Konsep Konsep Pemr Pemrogr ogram aman an Berori Berorient entasi asi Objek Objek a. #nkaps apsula ulasi #nka #nkaps psul ulas asii
adal adalah ah
suat suatu u
meka mekani nism sme e
untu untuk k
meny menyem embu buny nyik ikan an
atau atau
memproteksi suatu proses dari kemungkinan interprensi atau penyalahgunaan dari dari luar luar sistem sistem sekali sekaligus gus menyede menyederha rhanaka nakan n pengguna penggunaan an sistem sistem itu sendir sendiri. i. &kses ke internal sistem diatur sedemikian rupa melalui perangkat interface. 'ontoh kasus di dunia nyata( seperti kasus mobil. )ayangkan sistem transmisi di dala dalam m mobi mobill ters terseb ebut ut.. *ist *istem em tran transm smis isii ini ini meny menyem embu buny nyik ikan an dari dari &nda &nda bagaimana cara ia bekerja( mulai dari bagaimana cara ia mengatur percepatan dan dan apa apa yang yang dila dilaku kuka kann nnya ya terh terhad adap ap mesi mesin n mobi mobill untu untuk k mend mendap apat atka kan n perc percep epat atan an ters terseb ebut ut.. &nda &nda seba sebaga gaii peng penggu guna na hany hanya a
cuku cukup p
memi memind ndah ah++
mindahkan tongkat transmisi untuk mendapatkan percepatan yang diinginkan. ,ongkat transmisi inilah yang menjadi satu+satunya interface dalam mengatur sistem sistem transm transmisi isi dalam mobil mobil tersebu tersebut. t. -alam -alam hal ini( ini( tidak tidak dapat dapat digunak digunakan an pedal pedal rem untuk untuk mengaks mengakses es sistem sistem transm transmisi isi terseb tersebut. ut. *ebali *ebalikny knya a dengan dengan mengubah+ngubah transmisi mobil tidak akan dapat menghidupkan radio mobil
1
dan menyetelnya ke stasiun kesukaan &nda( ataupun membuka pintu mobil untuk &nda. "onsep yang sama dapat diterapkan dalam pemrograman. -alam bahasa %a!a( everithing is an Object /. *etiap baris program yang ditulis merupakan bagian dari suatu objek. &nda dapat juga membangun suatu objek yang lebih kecil( dimana masing+masing objek yang menyusunnya mempunyai fungsi tersendiri( seperti halnya subsistem dalam sebuah mobil. 0ang terpenting adalah memanfaatkan konsep ini( maka &nda dapat mengganti+ganti objek+objek yang menyusun sub sistem ini dengan objek lainnya suatu saat nanti jika memamng diperlukan tanpa mengganggu keseluruhan sistem. a. Pewarisan *ebagai manusia( sebenarnya terbiasa untuk melihat objek disekitarnya tersusun secara hierarki berdasarkan classnya masing+masing. -ari sini kemudian timbul suatu konsep tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan dari class lainnya sehingga ia mendapatkan ciri atau sifat dari class tersebut. Perhatikan contoh hierarki class berikut
ambar 1. 'ontoh hierarki class -ari hierarki di atas( dapat dilihat bahwa semakin ke bawah( class akan bersifat semakin spesifik( dan semakin ke atas hierarki class akan bersifat semakin umum. 'lass Mamalia memiliki seluruh sifat yang dimiliki oleh class binatang( demikian juga class &njing( "ucing( dan Monyet memiliki seluruh sifat yang diturunkan dari class Mamalia. -engan konsep ini( karakteristik yang dimiliki oleh class )inatang cukup didefenisikan di dalam class binatang saja. 'lass mamalia tidak perlu mendefenisikan ulang apa yang telah dimiliki oleh class binatang karena sebagai class turunannya( ia akan mendapatkan karakteristik dari class )inatang secara otomatis. -emikian juga class &njing( "ucing( dan Monyet( hanya perlu mendefinisikan karakteristik yang spesifik yang
2
dimiliki oleh classnya masing+masing. -engan menafaatkan konsep pewarisan ini dalam pemrograman( &nda hanya perlu mendefinisikan karakteristik yang spesifik dimiliki oleh suatu class( sementara semua karakteristik yang lebih umum akan didapatkan dari class dimana ia diturunkan. -alam pemrograman( hal ini akan menghemat jumlah baris code yang harus ditulis sekaligus meningkatkan reusability dari code tersebut. b. Polymorphism Polymorphism berasal dari bahasa 0unani yang berarti banyak bentuk/. -alam P ( konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah suatu objek agar melakukan suatu aksi atau tindakan yang mungkin hasil akhir yang serupa( tetapi melalui proses yang berbeda. -alam konsep yang lebih umum seringkali polymorphism disebut dengan istilah satu interface( banyak aksi/. 'ontoh yang konkrit dalam dunia nyata( kembali ke masalah mobil. Mobil yang ada dipasaran terdiri dari berbagai tipe dan merek( namun semuanya memiliki interface kemudi yang sama( seperti stir( kemudi( tongkat transmisi( pedal gas( dan rem. %ika &nda dapat mengemudikan satu jenis mobil dari satu merk tertentu( maka &nda pasti dapat mengemudikan hampir semua jenis mobil yang ada karena semua mobil tersebut menggunakan interface yang sama. arus diperhatikan disini bahwa interface yang sama tidak berarti cara kerjanya juga sama. &nda mengetahui jika menekan pedal gas( maka mobil akan melaju lebih cepat. amun bagaimana proses ini terjadi( dapat berbeda+beda untuk setiap jenis mobil. -engan interface yang sama( &nda mendapatkan hasil yang sama( tetapi bagaimana proses yang terjadi dari aksi 6menekan pedal gas7 menjadi hasil 6menambah kecepatan7( mungkin saja berbeda. -alam kasus mobil di atas( hal ini tergantung dengan teknologi bahan bakar yang digunakan. 'ontoh lain untuk polymorphism( yaitu apapun jenis kendaraannya 6mobil( truk( !an( pickup( sedan( baik yang berbahan bakarlistrik( gas( bensin( ataupun solar7( tetap saja istilah yang digunakan adalah mengendarai/. &nda akan mengatakan mengendarai trusk( atau mengendarai sedan( atau mengendarai bus. &kti!itas yang
digunakan
selalu
mengendarai(
&nda
tidak
akan
mengucapkan
menunggang motor/ hanya karena jenis kendaraannya berbeda bukan8
3
Mengendarai motor( mengendarai truk( mengendarai sedan( mengendarai bus( semua potongan kalaimat ini dapat digantikan hanya dengan sebuah potongan kalimat mengendarai kendaraan bermotor. -alam struktur hierarki class( kendaraan bermotor akan menempati struktur hierarki yang lebih tinggi 6supeclass7 dari semua jenis kendaraan yang telah disebutkan di atas 6motor( truk( sedan( bus7. $ni adalah salah satu ciri dari polymorphism yang akan dibahas lebih lanjut.
1. Pearisan Pada bagian ini akan dibahas tentang prinsip pewarisan atau penurunan 6inheritance7 yang merupakan salah satu bagian terpenting dalam pemrograman berorientasi objek. *angat memungkinkan pengklasifikasian secara hierarki terhadap objek dari class yang dibuat sebagaimana layaknya mengklasifikasikan objek+objek disekitar secara hierarki dalam kehidupan nyata. Pada dasarnya( dilakukan pewarisan untuk membuat class baru 6class turunan9subclass7 yang masih memiliki sifat atau spesifikasi class dari mana ia diturunkan 6superclass7. :ntuk melakukan ini( ja!a menyediakan keyword e;tend yang dapat dipakai pada waktu mendeklarasikan class. Perhatikan contoh sederhana berikut ini class A { int x; int y; void TampilkanNilaixy() { System.out.println(“nilai x: “ + x + “ y : “ + y); ! ! class " extend A { int #; void Tampilkan$umla%() { &&su'class dapat menakses mem'er dari superclass System.out.println(“$umla% : “ + (x+y+#); ! ! class emo*n%eritance { pu'lic static void main(Strin, ars) { A super-' ne/ A(); " su'-' ne/ "(); System.out.println(“Super0lass1); &&mem'er superclass dapat diakses dari su'classnya
4
su'-'.x 2; su'-'.y 3; su'-'.TampilkanNilaixy(); &&mem'er tam'a%an yan %anya ada pada su'class su'-'.# 2; su'-'.Tampilkan$umla%(); ! ! asil eksekusi program Super0lass Nilai x : 45 y : 65 Su'0lass Nilai x : 2 y : 3 $umla% : 27
Pada contoh di atas( class ) diturunkan dari class &. -engan demikian( class ) juga memiliki apa yang dimiliki oleh class &. "arena pada contoh di atas( tidak menggunakan access specifier pada class &( maka class ) dapat mengakses semua member class &. )eberapa peraturan tentang pewarisan yang perlu diperhatikan 1. %a!a tidak mengi
melakukan
pewarisan
pada
subclass
ini.
'ontoh
dengan
berdasarkan program di atas( &nda dapat membuat sebuah class baru yang diturunkan dari class ) di atas( sehingga class baru tersebut akan memiliki apa yang dimiliki oleh class & dan class ). 'ontoh program di atas memang dibuat sederhana supaya &nda dapat mempelajarinya dengan mudah( namun dibalik kesedarhanaan itu telah terlihat salah satu manfaat pewarisan. 'lass ) memiliki semua yang dimiliki oleh class & karena itu pada class ) cukup ditambahkan bagian yang memang merupakan spesifik milik class ) itu sendiri. -engan demikian( prinsip reuse of code telah diterapkan walaupun dalam bentuk yang paling sederhana.
5
'atatan Penting> -alam %a!a semua class sebenarnya adalah turunan dari class object. %adi( sekalipun membuat suatu class yang tidak diturunkan dari class manapun( secara default %a!a akan membuat class tersebut diturunkan dari class object. -engan demikian( class object merupakan superclass dari semua class yang ada dalam %a!a.
!. "nter#a$e ,erkadang dalam membuat suatu class( ingin dilakukan abstraksi( dalam arti bahwa ingin menentukan apa yang harus atau dapat dilakukan oleh suatu class tetapi tidak menentukan bagaimana cara untuk melakukannya. -alah hal ini dapat digunakan interface untuk melakukannya. Pada dasarnya interface mirip dengan class biasa( namun property yang dimilikinya bersifat final( dan hanya memiliki deklasri method tanpa memiliki implementasi( mirip seperti method abstrak. %ika
diperhatikan
sebelumnya
mengenai
penjelasan dynamic
tentang method
polymorphism dispatch.
-apat
pada
bahasan
dilihat
bahwa
penggunaannya sangat tergantung dengan struktur hierarti class. -engan interface( diputuskan hubungan antara method dengan class hierarki ini. -engan demikian( dapat terjadi lebih dari satu class yang tidak berhubungan dalam struktur class hierarki yang mengimplementasikan satu interface yang sama sehingga memiliki sekumpulan method yang sama dan dapat diakses dengan cara yang sama pula. $nilah salah satu aspek dari plymorphism yang telah beberapa kali singgung( yaitu one interface, multiple method /. :ntuk
mengimplementasikan
suatu
interface(
suatu
class
harus
mengimplementasi semua method yang telah ditentukan oleh interface tersebut. amun( detil cara implementasinya
ditentukan sendiri oleh class yang
bersangkutan. a. Pendeklarasian $nterface *ecara umum bentuk deklarasi interface adalah sebagai berikut Access-specifier interface NamaInterface { Access-specifier tipe-data namaVariabel1 = value1; .
. . Access-specifier tipe-data namaVariabelN = valueN; Access-specifier tipe-data namaMethod1 (parameter); . . . Access-specifier tipe-data namaMethod1 (parameter); }
)erikut ini aturan yang harus diingat tentang pendeklarasian interface 1. &ccess specifier yang dapat digunakan hanya public atau tidak ada sama sekali. %ika tidak ada acces specifier( maka interface tersebut hanya dapat digunakan dalam package yang sama( dimana ia dideklarasikan. 2. *emua property yang dideklarasikan didalam interface secara otomatis akan dianggap sebagai static final 6sekalipun kita tidak menuliskannya7. leh karena itu( pada saat pendeklarasian harus langsung memberinya nilai. 3. *emua method yang dideklarasikan( sama seperti class abstrak( tidak memiliki implementasi. )edanya dengan class abstrak adalah kita tidak perlu lagi menggunakan keyword abstract pada waktu pendeklarasian method di dalam interface. 4. *ama seperti class abstract( tidak dapat dibuat instance dari interface secara langsung menggunakan perintah new 'ontoh pendeklarasian interface interface Buku { }
c. Penggunaan $nterface $nterface digunakan dengan cara mengimplementasikannya ke suatu class menggunakan keyword implements. )entuk umum pemakaiannya sebagai berikut Access-specifier class NamaClass implements NamaInterface1 ,..., NamaInterfaceN { //class implementation }
)eberapa aturan yang harus diperhatikan pada saat pengimplementasian interface
?
1. &nda dapat mengimplementasikan lebih dari satu interface dalam sebuah class dengan memisahkan nama dari setiap interface dengan tanda koma. 2. -apat terjadi lebih dari satu interface yang diimplementasikan dalam suatu class( memiliki method yang sama( dalam hal ini semua akses dari interface manapun akan menggunakan implementasi dari method yang sama pula. 3. *emua method yang diimplementasikan harus dideklarasikan sebagai public 4. %ika tidak semua dari method yang dideklarasikan didalam interface dimplementasikan oleh class implementasinya( maka class tersebut harus dideklarasikan sebagai abstrak menggunakan keyword abstract. 'ontoh penggunaan interface dalam program interface infrared { void kirimDataInfrared(string data); } interface bluetooth { void kirimDataBluetooth(string data); } //contoh
deklarasi
class
yang
mengimplementasikan
//interface infrared dan bluetooth class HandPhone implements Infrared, Bluetooth { public void kirimDataInfrared(string data { //implementasi }
Implementasi
Method
dari
interface
public void kirimDataBluetooth(string data { //implementasi }
Implementasi
Method
dari
interface
//method internal milik class ini sendiri public void diaNomor(string no) {
@
//implementasi } } /* class berikut ini harus dideklarasikan abstract karena tidak
membuat
implementasi
dari
method
yang
ada
pada
interface bluetooth*/ abstract class PDA implements Bluetooth { //tidak ada impelemntasi method dari dari interface //bluetooth }
3. %ati&an 'an Praktikum *ebelum melaksanakan latihan dan praktikum( dipastikan &nda telah memiliki aplikasi neatbeans( %-" dan %-#. %ika belum silahkan mengunduh dari laman resmi aplikasi+aplikasi tersebut. Aalu instalasi ke dalam komputer masing+ masing. Pada tahapan ini &nda dianggap sudah dapat melakukan instalasi dan setting Java Development Kit; menggunakan Jcreator sebagai editor pemrograma; dan menjalankan (eksekusi) program Java sederhana an g ditulis dengan editor J!reator 17
$nstallasi etbeans dan *etting Path :ntuk menulis program %&B& dapat digunakan berbagai editor( bahkan editor
paling sederhana 6seperti otepad pun dapat digunakan. amun pada umumnya( agar penulisan program lebih terarah( beberapa editor telah disediakan untuk membantu para programmer. )eberapa editor atau $-# 6"ntegrated Development #nvironment 7 yang telah ada untuk %a!a( antara lain et)eans 6open source$ !ommon Development and Distribution %icense 6'--A77C et)eans yang disponsori *un Microsystems( yang dilengkapi dengan :$ #ditorC #clipse %-, 6open source$ #clipse &ublic %icense7C #clipse dibuat dari kerja sama antara perusahaan+perusahaan anggota D#clipse EoundationD 6beserta indi!idu+indi!idu lain7. )anyak nama besar yang ikut dalam D#clipse EoundationD( termasuk $)M( )#&( $ntel( okia( )orland. #clipse bersaing langsung dengan etbeans $-#. Plugin tambahan pada #clipse jauh lebih banyak dan ber!ariasi dibandingkan $-# lainnyaC $ntelli% $-#& 6commercial( free 3F+day trial7C racle %-e!eloper 6free7C Gino; %'reator 6ada !ersi berbayar
H
maupun free7C %'reator ditulis dalam '9'== sehingga lebih cepat 6dan menggunakan memori lebih sedikit7 dari kebanyakan $-# lain. *ebelum
memulai
pemrograman
%a!a(
kita
harus
menginstal
%a!a
-e!elopment "it 6%-"7 yang disediakan secara gratis oleh 'un icrosstem. %a!a -e!elopment "it tersedia dan dapat didownload pada situs Java 'un icrosstem( yaitu http99ja!a.sun.com. %a!a 1. untuk berbagai platform tersedia pada situs tersebut. :ntuk menginstal software %a!a dapat dilakukan dengan menjalankan file yang mengekstrak sendiri. ,erdapat dua pilihan cara( yaitu + +
Menjalankan installer dari perintah M* -*( dan Melakukan double$click ikon jdk+u11+windows+i5@+p.e;e
$nstaller yang mengekstrak file %-" akan membuat direktori yang diperlukan( dan sekaligus menyalin file+file ke dalam direktori tersebut. $nstallshield Ii
*etting Bariabel Path Pada saat program M* -* dieksekusi( secara otomatis mencari direktori
yang ada untuk file target. %ika program atau file batch tidak tersedia dalam direktori yang ada( maka akan mencari semua dri!e dan direktori lainnya dalam variable path sstem. -alam pengembangan %a!a( tidak diperlukan !ariable path jika semua softare yang diperlukan terdapat dalam direktori yang ada. amun akan lebih mudah apabila dilakukan setting variable path agar sistem secara otomatis mencari file yang diperlukan. -alam hal ini( path adalah dri!e dan direktori
dimana
ja!a.e;e(
ja!ac.e;e(
dan
aplikasi
pengembangan
lain
ditempatkan. &pabila tidak dipilih direktori default( maka path adalah direktori yang dipilih pada saat instalasi. Perintah path sistem -* biasanya terdapat dalam file autoe;ec.bat( yang dieksekusi selama sistem startup. <ernatif lain adalah( path dapat dimasukkan dari baris perintah M* -* dengan sintaks sebagai berikut 8AT9drive:,pat%,;drive:,pat%,, &pabila digunakan sistem operasi windows dengan %-" !ersi 1.5 atau yang lebih baru( maka setting !ariabel path tidak diperlukan lagi. :ntuk pelaksanaan praktikum Pemrograman )erorientasi bjek nanti( digunakan %-" !ersi 1(
1F
sehingga proses instalasi tidak akan dilakukan. amun apabila digunakan !ersi lama( maka diperlukan langkah+langkah setting sebagai berikut a7 "lik kanan pada My 'omputer/ lalu klik properties. "emudian klik &d!anced/ lalu klik #n!ironment Bariables/ 6(ambar 3.17. b7 Pada *ystem Bariables( pilih /path/ lalu klik edit 6(ambar 3.!7. c7 Pada !ariable !alue/ tambahkan path dimana direktori bin nya %a!a diletakkan. Aalu klik " 6 (ambar 3.37.
ambar 3. 1. *etting %-" pada Iindows 6langkah+17.
ambar 3. 2. *etting %-" pada Iindows 6langkah+27.
11
ambar 3. 3. *etting %-" pada Iindows 6langkah+37. )ila %-" yang digunakan adalah !ersi 1.5 atau yang terbaru( maka setting !ariabel path tidak diperlukan.
3) *etBeans "+, . Pada "egiatan )elajar Pemrograman )erorientasi bjek ini akan digunakan et)eans sebagai editor pemrograman. )erikut langkah+langkah penggunaan et)eans. a7 *etelah masuk ke et)eans maka akan terlihat tampilan seperti pada (ambar 3./.
ambar 3. 4. ,ampilan awal et)eans $-# .H.
b7 :ntuk memulai membuat project baru( pilih file J ew Project... pada bagian menu 6(ambar 3.07. c7 "emudian pada saat bagian choose project 'ategoty pilih ja!a( dan pada bagian Projects pilih %a!a &pplication 6(ambar 3.7.
12
ambar 3. 5. Membuat project baru.
ambar 3. . Memilih kategori project. *elanjutnya klik ne;t untuk masuk ke langkah selanjutnya. 4. *elanjutnya masukkan project name dan project location seperti terlihat pada
(ambar 3.. *ebagai latihan berikan nama project dengan helloKworld.
13
ambar 3. ?. Memberi nama pada project. Pada bagian create main class( dapat diberikan nama yang berbeda dari Project ame nya. ,idak perlu menambahkan .Main atau .%a!a( et)eans akan secara otomatis memberikan ekstensi+nya. *etelah selesai( klik finish. Project helloKworld yang dibuat seperti terlihat pada (ambar 3.2.
ambar 3. @. ,ampilan awal project helloKworld.
14
-engan demikian sebuah project baru telah berhasil dibuat. :ntuk pembuatan class baru( akan dijelaskan lebih lanjut pada praktikum berikutnya yang membahas khusus tentang pembuatan class.
+. angkuman #nkapsulasi
adalah
suatu
mekanisme
untuk
menyembunyikan
atau
memproteksi suatu proses dari kemungkinan interprensi atau penyalahgunaan dari luar sistem sekaligus menyederhanakan penggunaan sistem itu sendiri. &kses ke internal sistem diatur sedemikian rupa melalui perangkat interface -alam interface terdapat istilah pewarisan 6inheritance7 yaitu pewarisan method dan atribut dari super+class kepada sub+classnya. Penggunaan inheritance dapat dilakukan secara o!erriding dan o!erloading method. :ntuk menggunakan inheritance pada interface(maka digunakan keyword e4ten's. *ingle inheritance yaitu pewarisan yang jumlah kelas dasarnya 6super+class7 hanya satu( tetapi kelas turunannya bisa lebih dari satu. *edangkan multiple inheritance adalah pewarisan dimana kelas yang diturunkan lebih dari satu kelas yang berbeda 6super+class lebih dari satu7. $nterface merupakan kumpulan dari method+method yang belum terdapat operasi di dalam tubuh method tersebut.$nterface bisa diturunkan atau diwariskan kepada class yang ingin memakai method yang ada dalam masing+ masing
interface
tersebut
dengan
keyword
e4ten's
Linterface
yang
didefinisikan. *ebuah class dapat mengimplementasikan 1 interface yang sudah dibuat dengan keyword implement. $nterface dapat mendefinisikan konstanta. $nterface juga tidak dapat membuat instance atau objek baru dari sebuah interface.)aik interface maupun class dapat mendefinisikan method. dalam ja!a terdapat
multiple
interface(
dimana
mengimplementasikan lebih dari satu interface.
15
dalam
satu
class
dapat