MODUL I Installasi Netbenas dan Setting Path
1. Tujua ujuan n Pembe Pembela laja jaran ran 1. Praktikan dapat melakukan instalasi dan setting Java Development Kit. 2. Praktikan dapat menggunakan Jcreator sebagai editor pemrograman 3. Praktikan dapat menjalankan (eksekusi) program Java sederhana ang ditulis dengan editor J!reator. 2. Teori eori Sing Singka katt
Untuk Untuk menuli menulis s program program JAV JAVA dapat dapat diguna digunakan kan berbaga berbagaii editor editor,, bahkan editor paling sederhana (seperti Notepad pun dapat digunakan. Namun pada umumnya, agar penulisan program lebih terarah, beberapa editor editor telah telah disedi disediaka akan n untuk untuk membant membantu u para para program programmer mer.. Bebera Beberapa pa editor atau IDE ( "ntegrated "ntegrated Development Development #nvironment #nvironment yang telah ada untuk Ja!a, antara lain" a. b. '. d.
e. /. g. h.
NetBeans (open open source$ source$ !ommon !ommon Develo Developme pment nt and Distri Distribut bution ion %icense (#DD$ NetBeans yang disponsori %un &i'rosystems, yang dilengkapi dengan UI Editor. E'lipse JD JD) (open source$ #clipse Public %icense E'li E'lips pse e dibu dibuat at dari dari ker*a ker*a sama sama antar antara a perus perusah ahaa aan+p n+peru erusa saha haan an anggota E'lipse -oundation (beserta indi!idu+indi!idu lain. Banyak nama nama besar besar yang ikut ikut dalam dalam E'lip E'lipse se -oundat -oundation ion,, termas termasuk uk IB&, IB&, BEA, BEA, Inte Intel, l, Noki Nokia, a, Borl Borlan and. d. E'lip E'lipse se bersa bersain ing g lang langsun sung g deng dengan an Netbeans IDE. lugin tambahan pada E'lipse *auh lebih banyak dan ber!ariasi dibandingkan IDE lainnya. Intell IntelliJ iJ IDEA IDEA ('ommer ('ommer'ia 'ial, l, /ree /ree 01+da 01+day y trial trial 2ra'le JDe!eloper (/ree 3ino4 J#reator (ada !ersi berbayar maupun /ree J#reat J#reator or dituli ditulis s dalam dalam #5#66 #5#66 sehingg sehingga a lebih lebih 'epat (dan (dan menggun menggunaka akan n memori lebih sedikit dari kebanyakan IDE lain.
. Latihan Instalasi
%ebe %ebelu lum m memu memula laii pemr pemrog ogra rama man n Ja!a Ja!a,, kita kita haru harus s meng mengin inst stal al Ja!a Ja!a De!elopment 7it (JD7 yang disediakan se'ara gratis oleh &un 'icrosstem . Ja!a De!elopment De!elopment 7it tersedia dan dapat dido8nload dido8nload pada situs Java &un http"55*a!a.sun.'om.. Ja!a Ja!a 9.: untuk untuk berbag berbagai ai plat/or plat/orm m 'icrosstem, yaitu" http"55*a!a.sun.'om tersedia pada situs tersebut. Untuk menginstal so/t8are Ja!a dapat dilakukan dengan men*alankan /ile yang mengekstrak sendiri. )erdapat )erdapat dua pilihan 'ara, yaitu" ; &en*alankan installer dari perintah &% D2%, dan ; &elakukan double$click ikon *dk+:u99+8indo8s+i<=:+p.e4e Installer yang mengekstrak /ile JD7 akan membuat direktori yang diperlukan, dan sekalig sekaligus us menyal menyalin in /ile+/ /ile+/ile ile ke dalam dalam direkt direktori ori terseb tersebut. ut. Instal Installshi lshield eld >i?ard memberikan tampilan bah8a Ja!a siap diinstalasi. Setting !ariabel Path
ada saat program &% D2% dieksekusi, se'ara otomatis men'ari direktori yang ada untuk /ile target. target. Jika program atau /ile bat'h tidak tersedia tersedia dalam direktori yang ada, maka akan men'ari semua dri!e dan direktori lainnya dala dalam m variable path sstem . Dalam pengembangan Ja!a, tidak diperlukan 1
!ariabl !ariable e path path *ika *ika semua semua sota sotare re yang diperlukan terdapat dalam direktori yang ada. Namun akan lebih mudah apabila dilakukan setting variable path agar sistem se'ara otomatis men'ari /ile yang diperlukan. Dalam hal ini, path adal adalah ah dri! dri!e e dan dan dire direkt ktor orii dima dimana na *a!a *a!a.e .e4e 4e,, *a!a *a!a'. '.e4 e4e, e, dan dan apli aplika kasi si pengembangan lain ditempatkan. Apabila tidak dipilih direktori de/ault, maka path adalah direktori yang dipilih pada saat instalasi. erintah path sistem D2% biasanya terdapat dalam /ile autoe4e'.bat autoe4e'.bat,, yang dieksekusi selama sistem startup. Alternati/ lain adalah, path dapat dimasukkan dari baris perintah perintah &% D2% dengan sintaks sebagai berikut" P"T#$%dri&e'(%)ath(*%dri&e'(%)ath(+(
Apabila digunakan sistem operasi 8indo8s dengan JD7 !ersi 9.< atau yang lebi lebih h baru baru,, maka maka sett settin ing g !ari !ariab abel el path path tida tidak k dipe diperl rluk ukan an lagi lagi.. Untu Untuk k pelaksanaan praktikum emrograman Berorientasi 2b*ek nanti, digunakan JD7 !ersi 9,: sehingga proses instalasi tidak akan dilakukan. Namun apabila settin ing g sebagai diguna digunakan kan !ersi !ersi lama, lama, maka maka diperl diperluka ukan n langka langkah+la h+langka ngkah h sett berikut" 9. 7lik 7lik kana kanan n pada pada @&y @&y #omp #omput uter er lalu lalu klik klik prope propert rtie ies. s. 7emu 7emudi dian an klik klik @Ad!an'ed lalu klik @En!ironment @En! ironment Variables Variables (,ambar 1.1. . ada %ystem Variables, Variables, pilih path lalu klik edit ( ,ambar 1.2. 0. ada ada @!ariab @!ariable le !alue !alue tambah tambahkan kan path path dimana dimana direkt direktori ori bin nya Ja!a diletakkan. $alu klik 27 (,ambar 1..
,ambar 1.1 %etting JD7 pada >indo8s (langkah+9.
2
!ariabl !ariable e path path *ika *ika semua semua sota sotare re yang diperlukan terdapat dalam direktori yang ada. Namun akan lebih mudah apabila dilakukan setting variable path agar sistem se'ara otomatis men'ari /ile yang diperlukan. Dalam hal ini, path adal adalah ah dri! dri!e e dan dan dire direkt ktor orii dima dimana na *a!a *a!a.e .e4e 4e,, *a!a *a!a'. '.e4 e4e, e, dan dan apli aplika kasi si pengembangan lain ditempatkan. Apabila tidak dipilih direktori de/ault, maka path adalah direktori yang dipilih pada saat instalasi. erintah path sistem D2% biasanya terdapat dalam /ile autoe4e'.bat autoe4e'.bat,, yang dieksekusi selama sistem startup. Alternati/ lain adalah, path dapat dimasukkan dari baris perintah perintah &% D2% dengan sintaks sebagai berikut" P"T#$%dri&e'(%)ath(*%dri&e'(%)ath(+(
Apabila digunakan sistem operasi 8indo8s dengan JD7 !ersi 9.< atau yang lebi lebih h baru baru,, maka maka sett settin ing g !ari !ariab abel el path path tida tidak k dipe diperl rluk ukan an lagi lagi.. Untu Untuk k pelaksanaan praktikum emrograman Berorientasi 2b*ek nanti, digunakan JD7 !ersi 9,: sehingga proses instalasi tidak akan dilakukan. Namun apabila settin ing g sebagai diguna digunakan kan !ersi !ersi lama, lama, maka maka diperl diperluka ukan n langka langkah+la h+langka ngkah h sett berikut" 9. 7lik 7lik kana kanan n pada pada @&y @&y #omp #omput uter er lalu lalu klik klik prope propert rtie ies. s. 7emu 7emudi dian an klik klik @Ad!an'ed lalu klik @En!ironment @En! ironment Variables Variables (,ambar 1.1. . ada %ystem Variables, Variables, pilih path lalu klik edit ( ,ambar 1.2. 0. ada ada @!ariab @!ariable le !alue !alue tambah tambahkan kan path path dimana dimana direkt direktori ori bin nya Ja!a diletakkan. $alu klik 27 (,ambar 1..
,ambar 1.1 %etting JD7 pada >indo8s (langkah+9.
2
,ambar 1.2 %etting JD7 pada >indo8s (langkah+.
,ambar 1. %etting JD7 pada >indo8s (langkah+0.
Bila JD7 yang digunakan adalah !ersi 9.< atau yang terbaru, maka setting !ariabel path tidak diperlukan.
Net-eans ID /.0
ada ada prakt praktik ikum um emr emrogr ogram aman an Bero Berori rien enta tasi si 2b*e 2b*ek k ini ini akan akan digu digunak nakan an NetB NetBea eans ns sebag ebagai ai edit editor or pemr pemrog ogra ram man. an. Beri Beriku kutt lang langka kah+ h+la lang ngka kah h penggunaan NetBeans. 9. %etelah masuk ke NetBeans maka akan terlihat tampilan seperti pada ,ambar 1. .
: .C. ,ambar 1. )ampilan a8al NetBeans IDE :.C.
3
. Untuk memulai membuat pro*e't baru, pilih /ile Ne8 ro*e't... pada bagian menu (,ambar 1.. 0. 7emudian pada saat bagian 'hoose pro*e't #ategoty pilih *a!a, dan pada bagian ro*e'ts pilih Ja!a Appli'ation ( ,ambar 1./.
,ambar 1. &embuat pro*e't baru.
,ambar 1./ &emilih kategori pro*e't.
%elan*utnya klik ne4t untuk masuk ke langkah selan*utnya. . %elan*utnya masukkan pro*e't name dan pro*e't lo'ation seperti terlihat pada ,ambar 1.3. %ebagai latihan berikan nama pro*e't dengan helloF8orld.
,ambar 1.3 &emberi nama pada pro*e't. 4
ada bagian 'reate main 'lass, dapat diberikan nama yang berbeda dari ro*e't Name nya. )idak perlu menambahkan .&ain atau .Ja!a, NetBeans akan se'ara otomatis memberikan ekstensi+nya. %etelah selesai, klik /inish. ro*e't helloF8orld yang dibuat seperti terlihat pada ,ambar 1.4.
,ambar 1.4 )ampilan a8al pro*e't helloF8orld.
Dengan demikian sebuah pro*e't baru telah berhasil dibuat. Untuk pembuatan 'lass baru, akan di*elaskan lebih lan*ut pada praktikum berikutnya yang membahas khusus tentang pembuatan 'lass. 1..2 Program sederhana ada pro*e't hello*orld yang dibuat tambahkan perintah sebagai berikut"
System.out.println("Hello World!"); pada baris ke+9C. %ehingga program yang terbentuk seperti pada ,ambar 1.0.
,ambar 1.0 rogram utama helloF8orld.
5
keterangan+
a. %ynta4 utama untuk program yang ditulis dengan JAVA adalah: [modifier][class] nama_class { ... } Ada beberapa modi/ier pada JAVA, yaitu publi', pri!ate dan prote'ted. &odi/ier publi' diperlukan agar program dapat dikompilasi dengan baik. b. Bagian ini merupakan bagian utama yang ditempatkan pada bagian a8al pada program JAVA. stati' menun*ukkan tipe method. !oid menun*ukkan bah8a method tidak mengembalikan nilai atau ob*ek. main merupakan nama method utama program JAVA. %tring merupakan tipe argumen yang akan diterima sebagai parameter dari 'ommand JAVA. args merupakan array argumen yang dapat ditambahkan pada saat mengunakan 'ommand JAVA untuk men*alankan program JAVA. '. erintah untuk menampilkan @Gello >orld pada layar monitor. %elan*utnya, program dapat dieksekusi dengan klik tombol .Gasilnya dapat dilihat pada 8indo8 output dengan hasil sebagaimana terlihat pada ,ambar 1.15.
,ambar 1.15 Gasil eksekusi program helloF8orld. Penambahan komentar
Untuk membantu mengingat arti (tu*uan penulisan serangkaian kode yang telah ditulis, biasanya kita memberikan beberapa komentar pada program yang kita buat. ada JAVA, untuk membuat komentar dapat dilakukan dengan 'ara" a. 7omentar dengan menggunakan tanda 55. )anda ini digunakan untuk memberikan komentar dalam satu baris. )anda 55 diletakkan pada a8al baris. b. 7omentar dengan menggunakan tanda 5H dan H5. )anda ini digunakan untuk memberikan komentar yang ditulis dalam beberapa kalimat. )anda 5H diletakkan pada a8al kalimat, dan tanda H5 ditulis diakhir kalimat.
6
,ambar 1.11 enambahan komentar pada program . Tugas
9. Buatlah sebuah program yang men'etak data berikut " Nama " samsul ari/in N& " 1=.0019.C=1 Alamat " Jl. aya Jendrall sudirman No.< amekasan No.)elp " 10+:<<< Email " samsulKgmail.'om Data bisa diganti dengan data anda
7
MODUL 2 !ariabel6 Ti)e Data6 dan O)erator 1. Tujuan Pembelajaran' 1. Praktikan dapat membuat variabel dengan benar. 2. Praktikan mampu menggunakan berbagai tipe data dalam berbagai kepentingan. 3. Praktikan mampu menggunakan berbagai operator dan mengimplementasikanna dalam pemrograman. 2. Teori Singkat 2.1. !ariabel
Variabel adalah nama dari suatu lokasi di memori yang digunakan untuk menyimpan data sementara. Variabel diberi nama tertentu yang menun*ukkan domain yang di8akilinya. Dalam memberikan nama !ariabel, ada beberapa ketentuan yang harus diperhatikan yaitu" a. an*ang karakter nama !ariabel tidak dibatasi. b. Nama !ariabel dia8ali dengan huru/, tanda garis ba8ah (underscore atau tanda dolar (L. %elan*utnya dapat diikuti oleh karakter lain, selain operator (H, +, 6. '. Bersi/at 'ase sensiti!e (membedakan antara huru/ kapital dan huru/ ke'il. d. )idak diperbolehkan menggunakan kata+kata kun'i yang digunakan pada *a!a, seperti" i/, /or, 8hile, dll. Data yang tersimpan dalam !ariabel memiliki tipe tertentu. %ebelum digunakan dalam aplikasi, suatu !ariabel harus dideklarasikan terlebih dahulu.
Synta [tipe_data] [nama_aria#el] Beberapa tipe data yang dapat digunakan akan dibahas pada subbagian berikut.
2.2. Ti)e Data 2.2.1 7arakter
7arakter tunggal, diberikan dengan tipe data 'har. Data yang memiliki tipe data ini ditulis dengan diapit tanda petik tungal, seperti" MA, M%, MO, dll. #har berbeda dengan %tring . %tring adalah kumpulan dari beberapa karakter . Data yang memiliki tipe data ini ditulis dengan diapit tanda petik ganda. #ontoh"
Strin$ nama%$ol&ara'; nama ar*an; $ol&ara' +,+; 2.2.2 Integer
)ipe data integer merupakan bilangan bulat (positi/, nol, atau negati/. #ontoh"
int -% % /umla'; /umla' - 0 ;
8
%elain Int, bilangan integer *uga dapat memiliki tipe data byte, short atau long yang masing+masing dibedakan oleh pan*ang memori yang ditempatinya. Byte menempati lokasi sebesar 9 byte. %hort menempati lokasi memori sebesar byte Int menempati lokasi memori sebesar byte $ong menempati lokasi memori sebesar = byte
2.2. 8loating Point
Untuk merepresentasikan data pe'ahan (bukan integer dapat digunakan dua ma'am tipe data, yaitu /loat atau double. )ipe data /loat memiliki pan*ang lokasi penyimpanan sebesar byte sedangkan double sepan*ang = byte. #ontoh"
1nt -% ; float 2ata; dou#le 3an4an$/alur; 2ata (- 0 )5; 3an4an$/alur -.678; 2.2. -oolean
)ipe data boolean hanya memiliki dua kemungkinan nilai yaitu benar atau salah. #ontoh"
#oolean Selesai; Selesai true; 2.. O)erator 2..1 O)erator "ritmetik
2perator+operator aritmetik di Ja!a seperti pada umumnya terdiri+dari" pen*umlahan (6, pengurangan (+, pembagian (5, perkalian (H, dan modulo (P. 7ode program pada ,ambar 2.1 berikut menun*ukkan operasi aritmetik untuk nilai AQ911 dan BQ01. Apabila program tersebut dieksekusi, maka hasilnya seperti terlihat pada ,ambar 2.2.
9
,ambar 2.1 #ontoh program dengan menggunakan operator aritmetik.
,ambar 2.2 2utput program operatorFaritmetik.
)un*ukkanlah hasil output yang dihasilkan apabila pernyataan pada baris ke+ 9: diganti dengan"
float #a$i 95:; Di samping operator+operator dasar tersebut, ada beberapa 'ara singkat untuk menuliskan operator aritmetika, seperti" 9 $ 9 : 1 , dapat disingkat men*adi 9:: 9 $ 9 ; 1 , dapat disingkat men*adi 9<< 9 $ 9 : , dapat disingkat men*adi 9:$ 9 $ 9 ; , dapat disingkat men*adi 9<$
#oba tulislah kode program di ba8ah ini dalam pro*e't bernama , pernataan*increment . %elan*utnya, eksekusi pro*e't tersebut, amatilah hasilnya.
int 9-,% :-,% ,% &,; 55 nilai a*al int step8; 55
"09);
10
System.out.println(": :=- => "0:); System.out.println(" 0step => "0); System.out.println("& &=step => "0&); 2..2 O)erator =elasi
2perator relasi digunakan dalam ekspresi boolean yang akan menghasilkan nilai boolean guna menentukan langkah eksekusi blok pernyataan tertentu. Beberapa operator logika dapat dilihat pada Tabel 2.1. 7ode program pada ,ambar 2. berikut menun*ukkan operasi relasi untuk nilai AQ911 dan BQ01. Tabel 2.1 O)erator =elasi S>mbol ? @ ?$ @$ $$ A$
7eterangan
$ebih Dari 7urang Dari $ebih Dari atau %ama Dengan 7urang Dari atau %ama Dengan %ama Dengan )idak %ama Dengan
,ambar 2. #ontoh program dengan menggunakan operator relasi.
Apabila program tersebut dieksekusi, maka hasilnya seperti terlihat pada ,ambar 2..
11
,ambar 2. 2utput program operatorFrelasi. 2.. O)erator Logika
2perator logika digunakan *uga dalam ekspresi boolean yang akan menghasilkan nilai boolean guna menentukan langkah eksekusi blok pernyataan tertentu. Beberapa operator logika seperti AND (RR, 2 (SS atau N2) (T. 7ode program pada ,ambar 2. menun*ukkan operasi logika untuk AQtrue dan BQ/alse.
,ambar 2. #ontoh program dengan menggunakan operator logika.
Apabila program tersebut dieksekusi, maka hasilnya seperti terlihat pada ,ambar 2./.
,ambar 2./ 2utput program operatorFlogika.
12
.
Latihan
$akukan u*i'oba pada program diatas sebagai bentuk latihan kemudian lakukan analisa .
Tugas
a. Buatlah program kalkulator serhana yang mengimplementasikan beberapa operator yang sudah di*elaskan. b. Buatlah sebuah program untuk yang menampilakan hasil operasi dasar logika AND 2 dan N2) '. Buatlah sebuah program yang melibatkan proses 'asting nilai pada sebuah !ariabel.
13
MODUL Pen>eleksian 7ondisi 1. Tujuan Pembelajaran' 1. Praktikan mengenal beberapa perintah untuk seleksi kondisi 2. Praktikan mampu menggunakan berbagai conditional statement dalam berbagai kebutuhan. 2. Teori Singkat Bonditional Statement
Dalam pemrograman seringkali dibutuhkan eksekusi blok pernyataan *ika dipenuhi kondisi tertentu. 7ondisi yang diberikan dinyatakan dengan ekspresi boolean. ada ,ambar .1 terlihat bah8a blok pernyataan A akan dieksekusi *ika kondisi D bernilai benar, sebaliknya blok pernyataan B akan dieksekusi *ika kondisi D bernilai salah.
,ambar .1 Diagram blok seleksi kondisi Pengkondisian dengan iC
engkondisian dengan i/ digunakan untuk mengeksekusi blok pernyataan, dimana yang dibutuhkan hanyalah kondisi benar sa*a. Sintaks:
if (?e) { ?#lo< pernyataan> } #ontoh 0.9" $ihat lochart pada ,ambar .2 berikut. ,lochart ini digunakan untuk memberikan in/ormasi kepada pengguna tentang status tekanan darahnya.%eseorang dikatakan hipertensi *ika tekanan darah sistolik lebih dari 91 mmGg.
14
,ambar .2 Diagram blok untuk 'ontoh 0.9.
7ode program untuk permasalahan pada 'ontoh 0.9 tersebut dapat dilihat pada ,ambar ..
,ambar . 7ode program untuk 'ontoh 0.9.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar ..
(a
(b
15
,ambar . 2utput yang dihasilkan oleh program pada 'ontoh 0.9. Pengkondisian dengan iC
engkondisian dengan i/+else digunakan untuk mengeksekusi blok pernyataan A *ika suatu kondisi bernilai benar, dan sebaliknya akan mengeksekusi blok pernyataan B *ika suatu kondisi bernilai salah. Sintaks:
if (?e) { ?#lo< pernyataan 9> } else { ?#lo< pernyataan :> } #ontoh 0." $ihat lochart pada ,ambar .. ,lochart ini digunakan untuk menentukan kelulusan berdasarkan nilai yeng diberikan. %eseorang dikatakan lulus *ika nilai yang diperoleh lebih dari 1, sebaliknya dia dikatakan tidak lulus.
,ambar . Diagram blok untuk 'ontoh 0..
7ode program untuk permasalahan pada 'ontoh 0. tersebut dapat dilihat pada ,ambar ./.
16
,ambar ./ 7ode program untuk 'ontoh 0..
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .3.
(a
(b ,ambar .3 2utput yang dihasilkan oleh program pada 'ontoh 0..
#ontoh 0.0 Diketahui pembagian umur sebagaimana terlihat pada Tabel .1.
Tabel .1 Pembagian umur Umur TahunE
Umur < < umur 9 9 umur 9= 9= umur 1 1 umur :1 umur W :1
7ategori
Balita Anak+anak ema*a De8asa arobaya $an*ut usia
,ambar .4 menun*ukkan /lo8'hart untuk permasalahan tersebut.
17
,ambar .4 Diagram blok untuk 'ontoh 0.0.
7ode program untuk permasalahan pada 'ontoh 0.0 tersebut dapat dilihat pada ,ambar .0.
18
,ambar .0 7ode program untuk 'ontoh 0.0.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .15.
(a
(b ,ambar .15 2utput yang dihasilkan oleh program pada 'ontoh 0.0 . Pengkondisian dengan sFitGh
engkondisian dengan s8it'h digunakan apabila ada beberapa pilihan dimana setiap pilihan akan mengeksekusi blok pernyataan yang berbeda. Sintaks:
s*itc' (?e) { case ?nilai_aria#el> ?#lo< pernyataan> :rea<; case ?nilai_aria#el> ?#lo< pernyataan> :rea<; case ?nilai_aria#el> ?#lo< pernyataan> :rea<; ... default ?#lo< pernyataan> :rea<; } #kspresi*integer yang dapat digunakan adalah byte, short, int, dan 'har.
#har dapat digunakan karena 'har sebenarnya merupakan uni'ode yang bernilai antara 1 :<<0<. %edangkan tipe long tidak dapat digunakan untuk ekspresiFinteger ini. #ontoh 0. Berikut akan dilakukan operasi aritmetik untuk dua bilangan integer A dan B, dengan AQ911 dan BQ<. Ada operasi yang dapat dipilih, yaitu pen*umlahan, pengurangan, perkalian dan pembagian. ,ambar .11 menun*ukkan lochart untuk permasalahan tersebut.
19
,ambar .11 Diagram blok untuk 'ontoh 0..
7ode program untuk permasalahan pada 'ontoh 0. tersebut dapat dilihat pada ,ambar .12.
20
,ambar .12 7ode program untuk 'ontoh 0..
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .1.
(a
(b ,ambar .1 2utput yang dihasilkan oleh program pada 'ontoh 0..
. Latihan
%ilahkan lakukan per'obaan pada 'ontoh program diatas dan lakukan u*i'oba
21
. Tugas
a. Buatlah sebuah program kon!ersi nilai angka ke nilai huru/ dengan range berikut " Nilai XQ=< and nilai Q911 Q A Nilia XQ1 and nilai Q= Q B Nilai XQ:1 and nilai 1 Q # Nilai XQ<1 and nilai:1 Q D Nilai<1 Q E b. Buatlah sebuah program untuk menge'ek apakah bilangan yang diinput adalah bilagan positi/, negati/ atau nol '. Buatlah sebuah program untuk menge'ek apakah bilangan yang dimasukkan adalah bilangan genap atau gan*il d. Buatlah sebuah program untuk kon!ersi angka dengan menggunakan konsep struktur kontrol s8it'h + 'ase
22
MODUL Perulangan 1. Tujuan Pembelajaran' 1. Praktikan mengenal beberapa perintah untuk melakukan perulangan 2. Praktikan mampu menggunakan berbagai bentuk perulangan dalam berbagai kebutuhan. 2. Teori Singkat Perulangan
Adakalanya suatu blok pernyataan harus dieksekusi berulang kali tergantung pada kondisi tertentu. Untuk keperluan tersebut, seperti halnya bahasa pemrograman yang lainnya, JAVA menyediakan beberapa statement perulangan. Dengan menggunakan statement tersebut, suatu blok pernyataan tidak perlu ditulis berulang kali, namun 'ukup dengan memberikan ekspresi boolean terhadap suatu kondisi. Perintah' Cor
Bentuk /or digunakan untuk melakukan perulangan, dimana banyaknya perulangan telah diketahui sebelumnya. ernyataan dengan /or akan memiliki 'ounter yang akan bergerak (naik atau turun se'ara otomatis. Sintaks:
for ( ?inisialisasi> ?increment> ) { ?#lo< pernyataan> }
;
?e
;
&isal, Cor int i$1* i@$15* i::E , berarti proses perulangan akan ber*alan mulai dari 9 sampai 91, dimana 'ounter i akan naik se'ara otomatis (i66 hingga i men'apai angka 91. #ontoh .9" Akan dihitung nilai NT (N /aktorial. Besarnya N ditentukan melalui input data. ,ambar .1 menun*ukkan lochart untuk permasalahan tersebut.
23
,ambar .1 Diagram blok untuk 'ontoh .9.
7ode program untuk permasalahan pada 'ontoh .9 tersebut dapat dilihat pada ,ambar .2.
,ambar .2 7ode program untuk 'ontoh .9.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar ..
(a
24
(b ,ambar . 2utput yang dihasilkan oleh program pada 'ontoh .9. Perintah' Fhile
ernyataan 8hile digunakan untuk melakukan perulangan terhadap se*umlah pernyataan dalam blok selama kondisi (dinyatakan dengan ekspresi boolean bernilai benar. Sintaks:
*'ile (?e) { ?#lo< pernyataan> } #ontoh ." Berikut akan dihitung banyaknya bilangan gan*il dan bilangan genap yang dimasukkan melalui dialog bo4. roses penentuan banyaknya bilangan akan terus diulang hingga pengguna memasukkan bilangan nol (1. ambar menun*ukkan /lo8'hart untuk permasalahan tersebut.
,ambar . Diagram blok untuk 'ontoh ..
7ode program untuk permasalahan pada 'ontoh . tersebut dapat dilihat pada ,ambar .. Apabila program tersebut dieksekusi, apabila diberikan input :, , <, , dan 1, maka hasilnya seperti pada ,ambar ./.
25
,ambar . 7ode program untuk 'ontoh ..
,ambar ./ 2utput yang dihasilkan oleh program pada 'ontoh .. Perintah' do
ada pernyataan do+8hile, blok pernyataan dieksekusi hingga suatu kondisi yang dinyatakan oleh ekspresi logika pada 8hile bernilai salah. %edikit berbeda denga pernyataan 8hile yang baru akan mengeksekusi blok pernyataan setelah diketahui kondisi benar, pada do+8hile ini blok akan dieksekusi setidaknya satu kali sebelum kondisi bernilai salah. Sintaks:
do { ?#lo< pernyataan> } *'ile (?e); #ontoh .0" ada 'ontoh . akan 'oba dibuat dengan menggunakan do8hile. 7ode program untuk permasalahan tersebut dapat dilihat pada ,ambar .3.
26
,ambar .3 7ode program untuk 'ontoh .0.
Apabila program tersebut dieksekusi, dengan input bilangan <, =, 0, 91, dan 91, maka hasilnya seperti pada ,ambar .4.
,ambar .4 2utput yang dihasilkan oleh program pada 'ontoh .0.
. Latihan
$akukan u*i'oba pada 'ontoh program diatas dan lakukan analisa . Tugas
a. Buatlah sebuah program untuk menampilkan output berikut" 01 C = :.......9: 9 0 < : = C.....9< b. Buatlah sebuah program untuk menampilkan sederatan angka genap dan gan*il beserta *umlahnya #ontoh " 9 0 < C Q <
27
: = 91 Q 01 '. Buatlah sebuah program untuk menampilkan output berikut dengan menggunakan konsep perulangan do+8hile" 9 0 < : = 91 99 9 90 9 9< 9: 9 9= 9C 1
28
MODUL "rra> dan String 1. Tujuan Pembelajaran' 1. Praktikan mengerti dan memahami penggunaan arra dan string 2. Praktikan mampu menggunakan beberapa operator dan method angmenertai penerapan arra dan string. 2. Teori Singkat "rra>
Array merupakan tipe data yang digunakan apabila data diberikan berupa kelompok data yang disa*ikan se'ara berurutan. %etiap elemen data memiliki tipe data yang sama. Array menggunakan sekelompok lokasi memori yang berurutan dengan nama dan tipe data yang berbeda.
Sinta
int pen4ualan[]; pen4ualan ne* int[-]; pen4ualan[--] -6; Untuk mengetahui *umlah elemen dari sekelompok data yang bertipe array, dapat digunakan perintah length . %intaks"
nama_aria#el_array.len$t'
#ontoh" rogram yang ditulis pada ,ambar .1 menun*ukkan aplikasi !ariabel pen*ualan yang bertipe array dimana setiap elemen bertipe integer.
29
,ambar .1 #ontoh program untuk array satu dimensi.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .2.
,ambar .2 2utput yang dihasilkan oleh program pada
'ontoh <.9. &odel array sebagaimana yang di*elaskan di a8al merupakan array satu dimensi. %angat dimungkinkan suatu !ariabel membutuhkan array dua dimensi, misalkan pada aplikasi matriks. %yntaks untuk array dua dimensi diberikan sebagai berikut. %intaks" tipe_data nama_aria#el_array[][] %ebagai 'ontoh, apabila akan dibuat !ariabel pen*ualan bertipe array dua dimensi, dengan alokasi memori sebesar 9 untuk dimensi pertama dan 09 untuk dimensi kedua, serta akan memberikan nilai 9< untuk pen*ualan pada dimensi (99, 0, maka dapat dituliskan"
int pen4ualan[][]; pen4ualan ne* int[-][8-]; pen4ualan[--][8] -6; #ontoh <. Diketahui da/tar nilai matakuliah B2 untuk < mahasis8a sebagaimana terlitah pada Tabel .1. Tabel .1 Dafar nilai PB ma!asis"a #$nt$! 5%1% Nilai MahasisFa 30
%elan*utnya akan di'ari nilai akhir untuk setiap mahasis8a yang merupakan nilai rata+rata dari ketiga komponen penilaian (rata tugas, U)%, dan UA%. %elan*utnya, pemberian nilai dengan huru/ diberikan sebagai berikut ( Tabel .2" Tabel .2 &$n'ersi nilai ke !uru( #$nt$! 5%1% Nilai
#uruC
Nilai X =1 1 Nilai =1 :1 Nilai 1 <1 Nilai :1 Nilai <1
A B # D E
rogram yang ditulis pada ,ambar . menun*ukkan aplikasi !ariabel pen*ualan yang bertipe array dimana setiap elemen bertipe integer.
,ambar . #ontoh program untuk array dua dimensi.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar ..
,ambar . 2utput yang dihasilkan oleh program pada 'ontoh <.. String
31
%tring merupakan deretan karakter. ada *a!a, string merupakan ob*ek dari kelas %tring. enulisan string dilakukan dengan mengapit data menggunakan tanda petik (ganda. )$nt$! 5%3:
Strin$ 4udul @3emro$raman :erorientasi A#4e<; %tring dapat dioperasikan dengan menggunakan beberapa operator atau method untuk beberapa kepentingan yang berbeda. a. Mengetahui panjang string
Untuk mengetahui pan*ang string dapat digunakan method length(). #ontoh <." ,ambar . menun*ukkan kode program untuk men'ari pan*ang string.
,ambar . #ontoh program untuk 'ontoh <..
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar ./.
,ambar ./ 2utput yang dihasilkan oleh program pada 'ontoh <..
32
b. Mengetahui kesamaan antara dua string
Untuk mengetahui kesamaan antara dua string dapat digunakan operator QQ atau method e-ual(&tring atau method e-ual."gnore!ase(&tring). #ontoh <.<" ,ambar .3 menun*ukkan kode program untuk mengetahui kesamaan antara
dua string. Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .4.
,ambar .3 #ontoh program untuk 'ontoh <.<.
,ambar .4 2utput yang dihasilkan oleh program pada 'ontoh <.<. c. Melakukan pembandingan karakter-karakter pada string
Untuk melakukan pembandingan karakter+karakter se'ara berurutan dari a8al string dapat digunakan method compareo(). #ontoh <.:" ,ambar .0 menun*ukkan kode program untuk membandingkan karakter+
karakter pada string.
33
,ambar .0 #ontoh program untuk 'ontoh <.:.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .15.
,ambar .15 2utput yang dihasilkan oleh program pada 'ontoh <.:. d. Mendapatkan karakter pada posisi tertentu
Untuk mendapatkan karakter pada posisi tertentu dapat digunakan method char/t(int Posisi). osisi pertama bernilai integer 1, hingga posisi terakhir bernilai N+9 (dengan N adalah pan*ang string. #ontoh <."
34
,ambar .11 menun*ukkan kode program untuk mendapatkan karakter pada
posisi tertentu dalam string. rogram akan menampilkan karakter pada posisi tertentu yang diberikan se'ara random dan diulang sebanyak sepuluh kali.
,ambar .11 #ontoh program untuk 'ontoh <..
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .12.
,ambar .12 2utput yang dihasilkan oleh program pada 'ontoh <.. e. Mendapatkan posisi karakter pada string
Untuk mendapatkan posisi karakter pada string dapat dilakukan dengan dua 'ara sebagai berikut. Y Apabila posisi a8al pen'arian tidak ditentukan, maka untuk mendapatkan posisi karakter pada string dapat digunakan method inde0(char Karakter). Apabila karakter tidak ditemukan, maka akan diberikan nilai +9. Y Apabila posisi a8al pen'arian telah ditentukan, maka untuk mendapatkan posisi karakter pada pada string dapat digunakan method inde0(char Karakter int /al). Nilai A8al merupakan bilangan integer yang menun*ukkan posisi a8al pen'arian. Apabila karakter tidak ditemukan, maka akan diberikan nilai +9. #ontoh <.=" ,ambar .1 menun*ukkan kode program untuk mendapatkan posisi suatu
karakter dalam string.
35
,ambar .1 #ontoh program untuk 'ontoh <.=.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ambar .1.
,ambar .1 2utput yang dihasilkan oleh program pada 'ontoh <.=. f. Melakukan konversi huruf besar (kapital) ke huruf kecil
Untuk melakukan kon!ersi huru/ besar ke huru/ ke'il dapat digunakan method to%oer!ase(). g. Melakukan konversi huruf kecil ke huruf besar (kapital)
Untuk melakukan kon!ersi huru/ ke'il ke huru/ besar dapat digunakan method topper!ase(). #ontoh <.C" ,ambar .1 menun*ukkan kode program untuk melakukan kon!ersi huru/
besar ke huru/ ke'il atau sebaliknya dalam string. Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .1/.
36
,ambar .1 #ontoh program untuk 'ontoh <.C.
,ambar .1/ 2utput yang dihasilkan oleh program pada 'ontoh <.C. h. Melakukan penyambungan antar dua string
Untuk melakukan penyambungan antar dua string dapat digunakan operator 6. #ontoh <.91" ,ambar .13 menun*ukkan kode program untuk menyambung string.
,ambar .13 #ontoh program untuk 'ontoh <.91.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .14.
,ambar .14 2utput yang dihasilkan oleh program pada 'ontoh <.91. i. Membuat string baru
37
Untuk membuat string baru dari string yang sudah pernah ada dapat dilakukan dengan dua 'ara sebagai berikut. Y Untuk membuat string baru dari string yang telah ada mulai dari karakter a8al string dapat digunakan method substring(int aal).
Y Untuk membuat string baru dari string yang telah ada mulai dari karakter a8al hingga karakter akhir string dapat digunakan method substring(int aal int akhir).
#ontoh <.99" ,ambar .10 menun*ukkan kode program untuk membuat string baru dari
string yang telah ada.
,ambar .10 #ontoh program untuk 'ontoh <.99.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .25.
,ambar .25 2utput yang dihasilkan oleh program pada 'ontoh <.99. j. Melakukan modifikasi string
Untuk melakukan modi/ikasi string dapat dilakukan dengan dua 'ara sebagai berikut. Y Untuk me+replace karakter pada string dengan karakter baru dapat digunakan method replace(char karakter%ama char karakter4aru). Y Untuk menghilangkan spasi di a8al dan si akhir string dapat digunakan method trim(). #ontoh <.9" ,ambar .21 menun*ukkan kode program untuk memodi/ikasi string yang
telah ada.
38
,ambar .21 #ontoh program untuk 'ontoh <.9.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .22.
,ambar .22 2utput yang dihasilkan oleh program pada 'ontoh <.9. k. Membuat array karakter dari string
Untuk membuat array karakter dari string yeng telah ada dapat dilakukan dengan dua 'ara sebagai berikut. Y &enggunakan method to!har/rra() yang diperoleh dari 'lass %tring. Implementasi dari method ini membutuhkan adanya pendeklarasian !ariabel array 'har untuk menampung larik karakter yang dihasilkan. Y &enggunakan method get!hars(int /al int /khir char56 arra!har int pos/al), dengan A8al merupakan posisi a8al karakter pada string, Akhir merupakan posisi akhir karakter pada string, array#har merupakan !ariabel untuk menyimpan larik karakter yang dihasilkan, dan posA8al merupakan indeks a8al untuk menyimpan karakter pertama. #ontoh <.90" ,ambar .2 menun*ukkan kode program untuk membuat array karakter dari
string yang telah ada.
39
,ambar .2 #ontoh program untuk 'ontoh <.90.
Apabila program tersebut dieksekusi, maka hasilnya seperti pada ,ambar .2.
,ambar .2 2utput yang dihasilkan oleh program pada 'ontoh <.9. . Latihan
%ilahkan lakukan u*i'oba pada kode program diatas dan lakukan e!aluasi . Tugas
a. Buatlah program antrian -I-2 b. Buatlah program antrian $I-2 '. Buatlah program sear'hing dan sorting pada sebuah elemen Array
40
MODUL / 7onse) Dasar Pemrograman Ha&a 1. Tujuan Pembelajaran' 1. Praktikan mampu memahami konsep dasar pemrograman Java. 2. Praktikan dapat membedakan arti dan pemakaian kelas objek reerensi objek method constructor dan beberapa kata kunci dalam pemrograman Java. 2. Teori Singkat Pengantar Pemrograman -erorientasi Objek
%e'ara umum, sebuah program komputer terdiri atas kode (proses logis program dan data yang dapat berupa !ariabel maupun konstanta. 7ode dan data tersebut kemudian diatur sehingga dapat beker*a sama untuk menghasilkan program keluaran yang akan digunakan untuk menyelesaikan sebuah permasalahan. ada model pemrograman prosedural, alur ker*a program berorientasi pada proses ( process$oriented . rogram merupakan gabungan dari data dan kode dengan struktur program yang berupa urutan proses. endekatan sema'am ini memiliki kelemahan, yaitu akan menemui banyak kesulitan ketika menangani kasus+kasus yang kompleks, membutuhkan ribuan baris kode. 7ondisi seperti itu akan menyulitkan programmer dalam mela'ak kesalahan (debugging , menyisipkan modul baru dalam program, dan sebagainya. emrograman berorientasi ob*ek hadir untuk men*adi solusi kelemahan yang terdapat pada pendekatan prosedural biasa. Dalam pemrograman berorientasi ob*ek, pendekatan yang dilakukan adalah dengan memodelkan sistem men*adi ob*ekob*ek. 2b*ek dapat dide/inisikan sebagai suatu entitas yang memiliki data dan method . Dalam bab ini akan dibahas konsep+konsep dasar yang merupakan inti dari pemrograman berorientasi ob*ek. Beberapa hal yang merupakan keuntungan dari konsep pemrograman berorientasi ob*ek adalah sebagai berikut" 2b*ek+ob*ek yang dibuat bersi/at reusable, sehingga dapat digunakan untuk program+program lain. %truktur program lebih *elas, trackable, dan mudah untuk dikembangkan. $ebih natural dan alami, karena pendekatan berorientasi ob*ek lebih dekat dengan realitas yang ada di sekitar kita
")a Itu Kelas
7elas merupakan inti dari pemrograman Ja!a karena Ja!a adalah bahasa pemrograman yang mendukung dan mengimplementasikan konsep pemrograman berorientasi ob*ek sepenuhnya. %etiap program Ja!a merupakan kelas, sehingga setiap konsep atau kasus pemrograman yang akan diimplementasikan dengan Ja!a harus dibungkus ke dalam sebuah kelas. 7elas
dapat dide/inisikan sebagai 'etak biru (blueprint atau prototpe5kerangka yang mende/inisikan !ariabel+!ariabel (data dan method + method (perilaku umum dari sebuah ob*ek tertentu. %ebagai 'ontoh, kita ambil ob*ek 'ahasisa. 'ahasisa memiliki data seperti nim nama alamat "PK jenis kelamin jurusan , dan sebagainya. %elain data atau 'iri+'iri /isik tersebut, mahasisa *uga memiliki perilaku+perilaku spesi/ik yang dapat
41
membedakan antara mahasis8a yang satu dengan yang lainnya, seperti cara presentasi cara belajar cara mengerjakan tugas dan sebagainya. Dalam dunia pemrograman, sebenarnya kelas tidak *auh berbeda dengan tipe data sederhana seperti integer char boolean, dan sebagainya. erbedaannya, tipe data sederhana digunakan untuk mendeklarasikan !ariabel Mnormal, sedangkan kelas digunakan untuk mendeklarasikan sebuah !ariabel yang berupa ob*ek. Variabel yang berupa ob*ek ini sering disebut dengan re/erensi ob*ek (object reerence. MendeCinisikan 7elas
Dalam Ja!a, kelas dide/inisikan dengan menggunakan kata kun'i class. Berikut ini bentuk umum yang digunakan untuk mende/inisikan sebuah kelas.
class BamaCelas { tipe data-; tipe data; D. tipe dataB; tipe met'od-(daftar=parameter) { 55
ada bagian ini akan diberikan pembahasan terkait dengan pembuatan sebuah kelas sederhana. Di sini kita akan membuat kelas Karaan, yang memiliki data+data" "D, nama divisi , dan gaji . Untuk saat ini, belum ditambahkan method ke dalam kelas tersebut. 'ethod akan dibahas terpisah pada bagian selan*utnya dalam bab ini. erhatikan kode berikut ini Program /.1 #ontoh pembuatan kelas.
3u#lic class Carya*an
42
{ Strin$ 1&%nama%diisi; &ou#le $a4i; } &elalui kode di atas, berarti kita telah mende/inisikan sebuah tipe data baru dengan nama Karaan. enting untuk diingat bah8a pende/inisian kelas hanya akan membuat sebuah pola atau template, bukan membuat ob*ek. 2b*ek aktual dari kelas tersebut harus dibuat sendiri melalui kode berikut"
55mem#uat o#4e<
9urel.1& "C,,-"; 9urel.diisi "9urel &1an"; 9urel.nama "Ear
pu#lic class 1mplementasiCelasCarya*an { pu#lic static oid main(Strin$[] ar$s) { 55mem#uat o#4e<
43
7ode program di atas menun*ukkan 'ontoh implementasi dari kelas Karaan yang telah dibuat sebelumnya, yaitu dimulai dengan membuat ob*ek Karaan mengisi nilai ke dalam data+data yang dimiliki oleh ob*ek Karaan yang telah diinstansiasi, kemudian men'etak data+data ob*ek Karaan tersebut. %aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.1 Gasil eksekusi program :.
erlu diketahui bah8a setiap ob*ek atau instance dari suatu kelas akan memiliki salinan data sendiri+sendiri. Ini artinya, antara ob*ek yang satu dengan yang lainnya, nilai data+datanya bisa berbeda. erhatikan kode program di ba8ah ini. Program /. Bontoh instansiasi lebih dari satu objek dari satu kelas >ang sama
pu#lic class 1mplementasiCelasCarya*an { pu#lic static oid main(Strin$[] ar$s) { 55mem#uat o#4e<
9urel.$a4i); 55menceta< data=data o#4ect System.out.println("1& &'ennis.1&); System.out.println("Bama &'ennis.nama); System.out.println("&iisi &'ennis.diisi); System.out.println("Fa4i &'ennis.$a4i); } }
%aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.2 Gasil eksekusi program :.0 Instansiasi Objek
Untuk membuat ob*ek baru dari tipe kelas yang telah dide/inisikan, se'ara eksplisit kita perlu melakukan dua tahap. ertama, kita perlu mendeklarasikan !ariabel yang digunakan sebagai re/erensi ke ob*ek dari kelas bersangkutan. 7edua, kita perlu menginstansiasi kelas dengan menggunakan operator ne dan memasukkan instance+nya ke dalam !ariabel re/erensi yang baru sa*a dideklarasikan. 2perator ne se'ara dinamis akan mengalokasikan ruang memori untuk menyimpan suatu ob*ek tertentu dan mengembalikan nilai berupa re/erensi ke ob*ek bersangkutan. Berikut ini kode yang mengilustrasikan dua tahapan proses yang dimaksud di atas. Untuk mempermudah pembahasan, di sini masih menggunakan kelas Karaan yang telah dibuat sebelumnya.
55mende
Carya*an 9rena ne* Carya*an();
45
Mengisi Nilai )ada =eCerensi Objek
)erdapat satu buah 'atatan penting yang perlu diperhatikan pada saat kita memasukkan nilai pada sebuah !ariabel re/erensi. %ebelumnya, perhatikan terlebih dahulu kode berikut"
Carya*an Carya*an,,-%Carya*an,,; Carya*an,,- ne* Carya*an(); Carya*an,, Carya*an,,-; Baris pertama digunakan untuk mendeklarasikan !ariabel re/erensi ke ob*ek Karaan dengan nama karaan771 dan karaan772 . Baris kedua ber/ungsi untuk membuat ob*ek Karaan dan menyimpan re/erensinya ke dalam !ariabel karaan771. Dan baris ketiga digunakan memasukkan karaan771 ke dalam karaan772 . Ini artinya, !ariabel karaan772 berperan sebagai re/erensi ke ob*ek yang sedang ditun*uk oleh karaan771. Dengan demikian, !ariabel karaan771 dan karaan772 masing+masing menun*uk ke ob*ek Karaan yang sama. &aka dari itu, setiap perubahan yang ter*adi pada ob*ek yang bersangkutan melalui karaan771 akan berpengaruh *uga pada ob*ek yang ditun*uk oleh karaan772 , karena keduanya sebenarnya adalah ob*ek yang sama, begitu *uga sebaliknya. Program /. #ontoh pengaruh re/erensi ob*ek (9 pu#lic class 3en$aru'2eferensiA#4e<- { pu#lic static oid main(Strin$[] ar$s) { 51nstansiasi o#4e< referensi yan$ men$acu pada o#4e<
)ampak bah8a kita hanya memasukkan nilai untuk ob*ek karaan771, namun pada saat kita men'etak data pada karaan772 , hasil yang diberikan adalah sama seperti yang dihasilkan oleh karaan771. Ini disebabkan karena karaan771 dan karaan772 sebenarnya menun*uk ke ob*ek Karaan yang sama. %aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
46
,ambar /. hasil eksekusi program :.
%ebagai 'atatan penting, meskipun keduanya menun*uk ke ob*ek yang sama, akan tetapi tidak terdapat hubungan antara !ariabel karaan771 dan karaan772 . Artinya, kita bisa sa*a melepas salah satu !ariabel tersebut untuk menun*uk ke ob*ek lain, tanpa berpengaruh terhadap !ariabel lainnya. %ebagai 'ontoh, perhatikan kode program berikut" Program /. #ontoh pengaruh re/erensi ob*ek (
47
pu#lic class 3en$aru'2eferensiA#4e< { pu#lic static oid main(Strin$[] ar$s) { 51nstansiasi o#4e< referensi yan$ men$acu pada - o#4e<
48
%aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /. Gasil eksekusi program :.<
Dari hasil tersebut dapat terlihat bah8a pada saat !ariabel karaan772 dipindahkan untuk menun*uk ke ob*ek lain (ter*adi perubahan re/erensi ob*ek, data+data karaan772 yang di'etak akan berbeda dengan data+data dari karaan771. Method
Dalam Ja!a, kelas berisi kumpulan data dan method , yang selan*utnya akan saling beker*a sama dalam melakukan tugastugas spesi/ik tertentu sesuai dengan perilaku ob*ek yangdimodelkan. Berikut ini bentuk umum dari pembuatan method di dalam kelas.
tipe namaEet'od(daftar=parameter) { 55
return nilaiCem#alian; nilaiKembalian dapat berupa konstanta maupun !ariabel, yang digunakan untuk menandakan nilai yang akan dikembalikan oleh method . MendeCinisikan Method
%etelah mengetahui bentuk umum yang digunakan, di sini kita akan langsung mende/inisikan sebuah 'ontoh method ke dalam kelas yang sebelumnya kita buat, yaitu kelas %apangan,utsal . 7ita akan menambahkan method
49
untuk men'etak nama pengelola dari ob*ek cetakPengelola( %apangan,utsal . 'ethod ini merupakan method yang tidak mengembalikan nilai. maka dari itu, kita harus mengganti tipe kembalian dengan kata kun'i void . Berikut ini kode program yang dimaksud. Program 6.6 Penambahan method void pada deklarasi kelas &arya"an
pu#lic class Carya*an { Strin$ 1&% nama% diisi; &ou#le $a4i; oid ceta<&ata() { System.out.println("&ata Carya*an System.out.println("1& " 0 System.out.println("Bama " 0 System.out.println("&iisi " 0 System.out.println("Fa4i " 0 }}
"); 1&); nama); diisi); $a4i);
Program /.3 Bontoh )emanggilan method void
pu#lic class 1mplementasiEet'odJoid { pu#lic static oid main(Strin$[] ar$s) { 55instansiasi o#4e<
} }
%aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /. Gasil eksekusi program :.
emanggilan method dalam suatu kelas dilakukan dengan menuliskan ob*ek pemiliknya, dan diikuti oleh operator titik (. beserta nama method yang akan dieksekusi. Berikut ini 'ontoh kode yang digunakan untuk memanggil method cetakData() yang telah dideklarasikan di dalam kelas Karaan. 55memanggil method 'etakData Carya*an,,-.ceta<&ata();
50
Gasil yang diberikan oleh method cetakData(akan menyesuaikan dengan data+data yang tersimpan pada ob*ek di mana method cetakData() tersebut dideklarasikan Pengembalian Nilai di dalam Method
%ekarang, kita akan melan*utkan pembahasan dengan memperlihatkan 'ara pende/inisian method yang dapat mengembalikan nilai. Di sini, kita akan memodi/ikasi program sebelumnya dengan menambahkan method hitung&umbangan8akat ( yang akan mengembalikan nilai dengan tipe double. Berikut ini kode program yang dimaksud. Berikut ini kode program yang dimaksud. Program 6. !ontoh implementasi met!$* n$n+'$i*
pu#lic class Carya*an { Strin$ 1&% nama% diisi; dou#le $a4i; oid ceta<&ata() { System.out.println("&ata Carya*an "); System.out.println("1&
" 0
System.out.println("Bama
" 0
1&); nama); System.out.println("&iisi " 0 diisi); System.out.println("Fa4i
" 0
$a4i); } dou#le 'itun$Sum#an$anLa
Program /.0 emanggilan method non$void
pu#lic class 1mplementasiEet'odBonJoid { pu#lic static oid main(Strin$[] ar$s) { 55instantiasi o#4e< Carya*an Carya*an
55meman$$il met'od ceta<&9ta()
51
55meman$$il met'od 'iun$Sum#an$anLa
,ambar /./ Gasil eksekusi program :.: Method -er)arameter
ada kenyataannya sebagian besar method yang ditulis dalam program memiliki satu atau beberapa parameter. Dengan adanya parameter, sebuah method dapat bersi/at dinamis dan general. Artinya, method tersebut dapat mengembalikan nilai yang beragam sesuai dengan nilai parameter yang dile8atkannya. #oba perhatikan terlebih dahulu pende/inisian method tanpa parameter berikut ini. dou#le olumeNa#un$() { return (8.-O Q Q -,); } %e'ara sintaks, method di atas benar dan akan mengembalikan nilai 9<0=.<. Namun, dilihat dari sisi desain program, method di atas dikatakan tidak /leksibel atau tidak bersi/at general. asalnya, method tersebut hanya dapat digunakan untuk tabung yang memiliki *ari+*ari alas dan tinggi 91. Bagaimana *ika terdapat tabung dengan *ari+*ari alas 91 dan tinggi 9O 'ethod di atas tidak dapat kita gunakan untuk menghitung !olume dari tabung dengan ukuran tersebut. Untuk mengatasi hal sema'am ini, maka Ja!a mengi?inkan kita untuk menempatkan parameter di dalam sebuah method agar method di atas dapat digunakan untuk segala ukuran tabung. Berikut ini kode yang seharusnya dituliskan untuk mende/inisikan method di atas.
dou#le olumeNa#un$(int 4e4ari% int tin$$i) { return (8.-O 4e4ari 4e4ari tin$$i); } &elalui 'ara seperti ini, kita dapat mele8atkan nilai berapa pun ke dalam method tersebut. %ebagai 'ontoh, perhatikan kode berikut"
int olume-% olume% olume8; 55men$'asil
52
55men$'asil
Program /.15 Implementasi method dengan parameter pada kelas Karaan
pu#lic class Carya*an { Strin$ 1&% nama% diisi; dou#le $a4i; oid isi&ata(Strin$
" 0
System.out.println("Bama
" 0
1&); nama); System.out.println("&iisi " 0 diisi); System.out.println("Fa4i
" 0
$a4i); } dou#le 'itun$Sum#an$anLa
53
Program /.11 emanggilan method berparameter pada kelas Karaan
pu#lic class 1mplementasiEet'od:erparameter { pu#lic static oid main(Strin$[] ar$s) { 55instatiasi o#4e< Carya*an Carya*an
} }
%aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.3 Gasil eksekusi program :.C
ada kode di atas kita mende/inisikan method yang tidak mengembalikan nilai dan memiliki empat ( buah parameter, yaitu kode 9ama Div dan :aji . arameter ini selan*utnya dapat diisi dengan nilai yang dikehendaki pada saat proses pemanggilan method tersebut. Dalam 'ontoh di atas, kita mele8atkan nilai @k119, @ommy, @&arketing, dan 0<1111 sebagai argumen dari method isiData( untuk mengisikan data "D nama divisi dan gaji dari ob*ek Karaan.
!onstructor !onstructor adalah method khusus yang dide/inisikan di dalam kelas dan akan dipanggil se'ara otomatis tiap kali ter*adi instansiasi ob*ek. !onstructor
itu sendiri ber/ungsi untuk melakukan inisialisasi nilai terhadap data+data yang terdapat pada kelas yang bersangkutan. Jika kita tidak mende/inisikan constructor pada kelas yang kita buat, maka se'ara otomatis Ja!a akan membuatkannya untuk kita. !onstructor sema'am ini dinamakan dengan deault constructor . Deault constructor akan menginisialisasi semua data yang ada dengan nilai nol. %ama halnya seperti method , constructor *uga dapat memiliki parameter dan *uga dapat di+ overload . Berikut ini 'ontoh program yang menun*ukkan pembuatan constructor untuk kelas Karaan dan nilai a8al dari data+data yang terdapat pada kelas tersebut akan kita isi dengan nilai a8al. !onstructor ini kita tambahkan sebagai pengganti method isiData() yang telah dibuat sebelumnya.
54
Program 6."# Deklarasi kelas Karaan dengan constructor
pu#lic class Carya*an { Strin$ 1&% nama% diisi; dou#le $a4i; 55constructor
pu#lic class 1mplementasiAnstructor { pu#lic static oid main(Strin$[] ar$s) { Carya*an
} ada kode rogram :.9, kita mengisikan nilai a8al untuk data "D, nama divisi , dan gaji masing+masing dengan nilai @k119, @Budi, @roduksi, dan 9<1111. Gal ini akan berlaku untuk setiap pembentukan ob*ek Karaan. %elan*utnya, pada saat rogram :.90 di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.4 Gasil eksekusi program :.90
roses inisialisasi dengan 'ara di atas masih dapat dikatakan kurang dinamis. asalnya, setiap kali pembentukan ob*ek Karaan, nilai yang
55
di*adikan nilai a8al selalu @k119, @Budi, @roduksi, dan 9<1111. Untuk men*adikan constructor lebih bersi/at dinamis, maka kita dapat membubuhkan parameter ke dalamnya. Gal ini mirip dengan implementasi method isiData() pada pembahadan method berparameter yang sebelumnya sudah dibahas. Implementasi constructor berparameter ditun*ukkan pada 'ontoh program berikut ini. Program /.1 Deklarasi kelas Karaan dengan constructor dinamis
pu#lic class Carya*an { Strin$ 1&% nama% diisi; dou#le $a4i; 55constructor
dinamis pu#lic class 1mplementasiAnstructor&inamis {
pu#lic static oid main(Strin$[] ar$s) { Carya*an
56
,ambar /.0 Gasil eksekusi program :.9< 7ata 7unGi %his
ada kasus+kasus tertentu, terkadang method perlu menga'u ke ob*ek yang memilikinya. Untuk mengi?inkan hal ini, Ja!a menyediakan kata kun'i this. this sebenarnya merupakan re/erensi ke ob*ek yang sedang akti/. this digunakan di dalam method untuk me8akili nama kelas bersangkutan. %ebagai #$nt$!, -er!a.kan k$*e berikut ini% 55constructor
55constructor
55constructor
57
} Di sini, this."D this.nama this.divisi dan this.gaji menun*uk ke data "D, nama divisi , dan gaji yang terdapat dalam kelas Karaan[ bukan parameter yang terdapat pada constructor . Melakukan &verload terhada) Method
7ita dapat mende/inisikan lebih dari satu method dengan nama yang sama dalam sebuah kelas, dengan syarat parameter yang terdapat pada method + method tersebut berbeda. arameter dalam suatu method dikatakan berbeda dari method yang lainnya apabila" Jumlahnya berbeda, meskipun tipe datanya sama )ipe datanya berbeda, meskipun *umlahnya sama Jumlah dan tipe datanya berbeda rose pende/inisian method dengan nama sama ini disebut dengan overload . erhatikan dua buah 'ontoh method berikut ini%
int tam#a'(int a% int #) { return a 0 #; } dou#le tam#a'(dou#le a% dou#le #) { return a 0 #; } 7ode di atas legal untuk dide/inisikan di dalam sebuah kelas. ada 'ontoh tersebut, kita mende/inisikan dua buah method dengan nama yang sama, tapi parameternya berbeda. Berikut ini 'ontoh program yang akan menun*ukkan pende/inisian proses overload method di dalam sebuah kelas. Program 6."6 Kelas Pembagian dengan method ang di$overload
pu#lic class 3em#a$ian { 55met'od den$an dua parameter #ertipe int int #a$i(int a% int #) { return a 5 #; } 55met'od den$an dua parameter #ertipe dou#le dou#le #a$i(dou#le a% dou#le #) { return a 5 #; } } Program 6."' Pemanggilan method ang di$overload pada kelas Pembagian
pu#lic class onto'AerloadEet'od { pu#lic static oid main(Strin$[] ar$s) { 3em#a$ian # ne* 3em#a$ian(); int #.#a$i(-,% O); dou#le y #.#a$i(-,.,% O.,);
58
System.out.println("Hasil #a$i tipe int " 0 ); System.out.println("Hasil #a$i tipe dou#le " 0 y); } } %aat di*alankan, rogram :.9 tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.15 hasil eksekusi program :.9 &verload )ada !onstructor %elain pada method , proses overload *uga dapat diaplikasikan ke dalam constructor suatu kelas. Gal ini disebabkan karena sebenarnya constructor *uga adalah sebuah method yang mengembalikan tipe kelas (dirinya sendiri.
ada kenyataannya, suatu kelas pada umumnya *ustru memiliki lebih dari satu constructor . Untuk mendemonstrasikan bagaimana Ja!a melakukan hal itu, perhatikan 'ontoh program di ba8ah ini. Program 6." !ontoh overload terhadap constructor kelas Karaan
pu#lic class Carya*an { Strin$ 1&% nama% diisi; dou#le $a4i; 55constructor pertama Carya*an(Strin$ 1&% Strin$ nama) { t'is.1& 1&; t'is.nama nama; } 55constructor
59
} } Program 6." "nstansiasi objek Karaan menggunakan constructor ang telah di$overload
pu#lic class 1mplemetasiAerloadonstructor { pu#lic static oid main(Strin$[] ar$s) { 55instantiasi men$$una
} %aat di*alankan, rogram :.9C tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.11 Gasil eksekusi program :.9C Menentukan Tingkat "kses Data dan Method
%eperti yang telah dibahas pada bab+bab sebelumnya, dalam pembungkusan (encapsulation, sebenarnya kita menggabungkan data dan kode ( method men*adi satu. ada situasi sema'am ini, kita dapat menentukan tingkat akses dari data dan method tersebut menggunakan kata kun'i private, public , maupun protected . Dalam pemrograman berorientasi ob*ek, data pada umumnya didesain untuk bersi/at private atau hanya dapat diakses oleh kelas yang memilikinya sa*a. engaksesan data dari bagian luar hanya dapat dilakukan melalui method + method yang ada. Ini artinya, method berperan sebagai antarmuka (interace. &aka dari itu, method pada umumnya bersi/at public . &eskipun demikian, apabila kita ingin mende/inisikan method yang hanya dapat diakses oleh kelas itu sendiri, maka kita pun harus mendeklarasikannya dengan kata kun'i private. Dan *ika kita menginginkan data dan method yang kita de/inisikan di dalam kelas hanya dapat diakses oleh kelas+kelas turunan
60
dari kelas yang bersangkutan, maka data dan method tersebut harus dideklarasikan dengan kata kun'i protected . %e'ara umum, pembungkusan data dan method dari suatu kelas dapat dituliskan seperti berikut"
class BamaCelas { tin$
pu#lic class Ea'asis*a { int nim; pu#lic Strin$ nama; priate dou#le ip<; pu#lic oid set13C(dou#le nilai) { ip< nilai; } pu#lic dou#le $et13C() { return ip<; } }
61
Program 6.#" !ontoh pengaruh tingkat akses data dan method pada kelas 'ahasisa
pu#lic class 3en$aru'Ha<9
} } ada kode program di atas, terdapat tanda error (yang bergaris ba8ah yang menandakan bah8a !ariabel ipk tidak bisa diakses se'ara langsung karena dide/inisikan menggunakan hak akses private. Jika dipaksakan untuk di*alankan, program tersebut di atas akan menampilkan pesan kesalahan seperti ditun*ukkan pada ambar :.9.
,ambar /.12 Gasil eksekusi program :.9 7ata 7unGi static
%e'ara normal, suatu anggota kelas (baik data maupun method hanya dapat diakses melalui ob*ek re/erensinya. &eskipun demikian, Ja!a mengi?inkan kita untuk mengakses suatu anggota kelas tanpa harus membuat ob*ek atau instance+nya terlebih dahulu. Untuk membuat anggota kelas sema'am ini, kita harus men*adikan data atau method tersebut dengan si/at statis, yaitu dengan membubuhkan kata kun'i static pada a8al deklarasi. Berikut ini 'ontoh pendeklarasian sebuah data dan method statis dalam suatu kelas.
class onto'&e
62
&elalu &elaluii 'ara ini, !ariabel !ariabel data&tatis1 d da an method&tatis1( dapat dipanggil se'a se'ara ra lang langsu sung ng tanp tanpa a haru harus s memb membua uatt ob*e ob*ek k atau atau instance dari dari kelas kelas !ontohDeklarasi&tatik terlebih terlebih dahulu. Untu Untuk k lebi lebih h memah emaham amii 'ara 'ara ker ker*a dari dari dat data dan dan method statis statis,, 'oba 'oba perhatikan 'ontoh program berikut ini. Program /.22 #ontoh implementasi data dan method sta.s
pu#lic class onto'Static { static int data9 -,; static int data: Q; int data O;55data non=stati< static oid test() { int data data9 0 data:; System.out.println("data9 0 data: " 0 data); 55System.out.println("data "0data); 55S99H%
pu#lic static oid main(Strin$[] ar$s) { test(); }
} ada ada 'ontoh 'ontoh program program di atas, atas, kita dapat memanggi memanggill method test ( ( tanpa harus harus membua membuatt ob*ek ob*ek atau atau instance dari dari kela kelas s !ontoh&tatic . %atu hal lagi, ( tidak tidak dapat dapat mengaks mengakses es data! , karena karena data data terseb tersebut ut tidak tidak method test ( dideklarasikan sebagai data statis. %aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.1 Gasil eksekusi program :.
%ama halnya seperti data dan method normal normal (non+statis, data dan method stat statis is *uga *uga dapa dapatt dipa dipang nggi gill mela melalu luii oper operat ator or titi titik k (.. (.. erb erbed edaa aann nnya ya,, pema pemang nggi gillan dat data ata atau method stat statis is tida tidak k perlu perlu meng menggu gunak nakan an ob*e ob*ek k re/erensi, melainkan nama kelas yang memilikinya. #oba perhatikan 'ontoh program berikut ini. Program /.2 Deklarasi kelas yang menggunakan data dan method statis
pu#lic class 2o#otStatic { static Strin$ nama; static Strin$ asalBe$ara;
static oid test() { System.out.println("Hello..");
63
System.out.println("Saya adala' ro#ot " 0 nama); System.out.println("Saya #erasal dari " 0 asalBe$ara); } } Program /.2 #ontoh pemanggilan data dan method statis
pu#lic class onto'Static {
pu#lic static oid main(Strin$[] ar$s) { 2o#otStatic.nama "Fat'ot
} )ampak ampak *ela *elas s bah8a bah8a kita kita dapat dapat menga mengaks kses es data data nama dan asal9egara method test ( ;obot&tatis s tanpa harus membentuk ob*ek beserta method ( dari kelas ;obot&tati atau inst dari kela kelas s ;obot&tatis terlebih dahulu. Namun, yang perlu instanc ance e dari diperhatikan, kita dituntut untuk membubuhkan nama kelas yang memiliki data atau method method yang akan diakses. %aat di*alankan, program tersebut di atas akan memberikan hasil sebagai berikut"
,ambar /.1 Gasil eksekusi program :.
Bent Bentuk uk umum umum dari dari peng pengaks akses esan an data data dan dan method statis statis dapat dituliskan dituliskan sebagai berikut"
BamaCelas.data Atau
BamaCelas.met'od()
64
7ata 7unGi Cinal
Dala Dalam m *a!a *a!a,, kata kata kun' kun'ii inal dapat dapat kita kita gunaka gunakan n untuk untuk mendek mendeklara larasik sikan an sebu sebuah ah konst konstant anta. a. Jika Jika kita kita ingi ingin n meng menggun gunak akan an kata kata kun'i kun'i inal untuk mend mendek ekla lara rasi sika kan n suat suatu u !ari !ariab abel el seba sebaga gaii kons konsta tant nta, a, maka maka kita kita perl perlu u mengisikan nilai ke dalam !ariabel tersebut. nilai tersebut akan bersi/at tetap atau tidak dapat diubah selama eksekusi program berlangsung. Berikut ini bentuk umum dari pendeklarasikan sebuah konstanta di dalam Ja!a.
tin$
final dou#le 3H1 8.-O; priate final int 722A2 =-; priate final Strin$ B7F929 @1B&AB7S19; Berikut ini 'ontoh program yang akan menun*ukkan penggunaan kata kun'i untuk mendeklarasikan sebuah konstanta. inal untuk Program 6.#* Deklarasi kelas Pegaai ang mengimplementasikan kata kunci inal
pu#lic class 3e$a*ai { Strin$ nama; final dou#le #onusem#ur 6,,,,; dou#le 'itun$:onusem#ur(dou#le 4umla'em#ur) { return #onusem#ur 4umla'em#ur; } }
Program 6.#6 !ontoh implementasi kata kunci inal
pu#lic class 1mplemetasiTinal { pu#lic static oid main(Strin$[] ar$s) { 3e$a*ai &'ennis ne* 3e$a*ai(); &'ennis.nama "&'ennis 9l= E9'andiM"; System.out.println("&ata Carya*an "); System.out.println("nama " 0 &'ennis.nama); System.out.println(":onus lem#ur " 0 &'ennis.'itun$:onusem#ur(Q)); } }
65
%aat di*alankan, rogram :.: di atas akan memberikan hasil sebagai berikut"
,ambar /.1 Gasil eksekusi program :.: 7elas di dalam 7elas +nner !lassE
Ja!a mengi?inkan kita untuk mende/inisikan suatu kelas di dalam kelas lainnya. 7elas sema'am ini dinamakan sebagi inner class (kelas bagain dalam. "nner class dapat mengakses data dan method dari kelas yang berada di bagian luarnya, meskipun data dan method tersebut bersi/at private. Berikut ini 'ontoh program yang akan mengilustrasikan pende/inisian dan penggunaan inner class. Program 6.#' Deklarasi kelas ang mengandung inner class
pu#lic class Bote#oo< { priate Strin$ mer< "enoo"; class SistemAperasi { priate Strin$ namaAS "Windo*s Q"; pu#lic oid ceta<&ata() { System.out.println("Eer< note#oo<
" 0
mer<); System.out.println("Sistem operasi " 0 namaAS); } }
pu#lic oid ceta
} Program 6.# "mplementasi konsep inner class
pu#lic class 1mplemetasi1nnerlass { pu#lic static oid main(Strin$[] ar$s) { Bote#oo< myBote#oo< ne* Bote#oo<(); myBote#oo<.ceta<&ata(); } \
66
%aat di*alankan, rogram :.= di atas akan memberikan hasil sebagai berikut"
,ambar /.1/ Gasil eksekusi program :.=. . Latihan
$akukan praktek diatas sebagai bentuk latihan dan lakukan e!aluasi . Tugas
Bualah sebuah program kalkulator sederhana yang didalamnya terdapat operasi aritmatika sederhana dan terdapat !alidasi inputan implementasikan program ini dengan inter/a'e 'lass dan ob*ek.
67
-"- 3 PeFarisan +nheritanceE 1. Tujuan Pembelajaran' 1. Praktikan mampu menterjemahkan '% ke dalam bentuk pemrograman. 2. Praktikan dapat membedakan pemakaian overloading dan overriding. 3. Praktikan mampu menerapkan konsep pearisan overloading dan overriding dalam pemrograman dengan Java. 2. Teori Singkat PeFarisan e8arisan (inheritance adalah suatu 'ara pembuatan 'lass baru dengan
menggunakan kembali 'lass yang sudah dide/inisikan sebelumnya dengan menambahkan atribut dan method baru. %ehingga dengan demikian 'lass baru tersebut tetap memiliki !ariabel dan /ungsi yang dimiliki oleh 'lass sebelumnya. ada konsep pe8arisan ada beberapa istilah yang perlu diketahui,yaitu" %ub 'lass, digunakan untuk menun*ukkan 'lass anak atau turunan se'ara hirarkis dari super 'lass. %uper 'lass, digunakan untuk menun*ukkan 'lass induk se'ara hirarkis dari sub 'lass ('lass anak. E4tends, digunakan untuk menun*ukkan bah8a suatu 'lass merupakan turunan dari 'lass lain. &isal A e4tends B, berarti 'lass A adalah turunan dari 'lass B. A merupakan sub'lass, sedangkan B merupakan super'lass. %uper, digunakan untuk memanggil konstruktor dari super 'lass atau memanggil !ariabel yang menga'u pada super 'lass. &isal super(4,y,?, berarti atribut 4, y, dan ? diambil dari atribut pada 'lass induk.
#ontoh .9" ,ambar 3.1 menun*ukkan hirarki klas dosen. 7las dosen tersebut memiliki
turunan berupa klas rektor, klas dekan dan klas kalab. Apabila diran'ang ke dalam diagram 'lass, akan nampak seperti pada ,ambar 3.2.
,ambar 3.1 Girarki klas dosen.
68
,ambar 3.2 #lass diagram untuk hirarki dosen.
ada ,ambar 3.2 tersebut, 'lass induk ('lass dosen memiliki atribut nama, nik dan *urusan. ðod yang dimiliki oleh 'lass dosen adalah !ie8(. #lass turunan dari 'lass dosen ada tiga 'lass. ada 'lass rektor, terdapat tambahan atribut berupa thFmulai dan *abatanFke, serta method !ie8ektor(. ada 'lass dekan terdapat tambahan atribut /akultas, dan method !ie8Dekan(. ada 'lass kalab terdapat tambahan atribut laboratorium, dan method !ie87alab(. ende/inisian 'lass dosen seperti terlihat pada ,ambar 3..
,ambar 3. ende/inisian 'lass dosen pada #ontoh .9.
%elan*utnya pende/inisian 'lass rektor, dekan, dan kalab seperti terlihat pada ,ambar 3. ; 3./ .
69
,ambar 3. ende/inisian 'lass rektor #ontoh .9.
,ambar 3. ende/inisian 'lass dekan #ontoh .9.
,ambar 3./ ende/inisian 'lass kalab #ontoh .9.
rogram utama untuk pemanggilan /ungsi sebagaimana terlihat pada ,ambar 3.3.
70
,ambar 3.3 rogram utama menun*ukkan pe8arisan klas dosen.
71
O&erriding
2!erriding adalah suatu 'ara untuk mende/inisikan ulang method yang ada pada 'lass induk apabila 'lass anak menginginkan adanya in/ormasi yang lain. 2!erriding dilakukan dengan 'ara menulis ulang method yang ada pada 'lass induk dengan syarat bah8a nama dan parameter /ungsi tersebut harus sama (tidak boleh diubah. &eskipun /ungsi telah ditulis ulang oleh 'lass anak, /ungsi yang asli pada 'lass induk masih dapat dipanggil di 'lass anak dengan menggunakan 'lass super. #ontoh ." 7onsep pe8arisan pada 'ontoh .9 dapat dipadukan dengan konsep o!erriding. ,ambar 3.4 menun*ukkan 'lass dosen yang tidak *auh berbeda dengan 'lass dosen pada 'ontoh .9.
,ambar 3.4 ende/inisian 'lass dosen pada #ontoh .9.
7onsep o!erriding digunakan pada method !ie8(. ðod ini ditulis ulang pada setiap sub'lass yaitu sub'lass rektor, dekan, dan kalab dengan menambahkan instruksi tambahan yang dibutuhkan pada setiap 'lass. ,ambar 3.0 ; 3.11 menun*ukkan 'lass tersebut.
,ambar 3.0 ende/inisian 'lass rektor #ontoh ..
72
,ambar 3.15 ende/inisian 'lass dekan #ontoh ..
,ambar 3.11 ende/inisian 'lass kalab #ontoh ..
Untuk melakukan pemanggilan, program utama diberikan pada ,ambar 3.12.
,ambar 3.12 rogram utama menun*ukkan konsep o!erriding klas dosen. O&erloading
2!erloading /ungsi adalah penulisan beberapa /ungsi (dua atau lebih yang memiliki nama yang sama. ada bahasan o!erloading dikenal istilah signature. %ignature sebuah /ungsi adalah parameter lengkap dengan tipe datanya yang terdapat dalam /ungsi tersebut. &isal terdapat /ungsi"
73
pu#lic int 4umla'Ea'asis*a (int la
pu#lic oid infoEa'asis*a (int la
,ambar 3.1 Dua 'lass bernama in/o&ahasis8a dengan signature berbeda.
ada program utama dilakukan pemanggilan terhadap kedua 'lass tersebut, masing+masing dengan parameter yang bersesuaian (,ambar 3.1.
74
,ambar 3.1 emanggilan /ungsi yang di+ overload pada #ontoh .0.
2!erloading /ungsi ditentukan oleh signature nya, tidak ditentukan oleh nilai balikan /ungsi. Dalam satu 'lass, apabila ada dua atau lebih /ungsi yang memiliki nilai balikan yang berbeda namun memiliki signatue yang sama, maka /ungsi tersebut tidak dapat dikatakan sebagai o!erloading. #ontoh ." Berikut terdapat dua 'lass bernama *umlah untuk untuk men*umlahkan dua bilangan. #lass *umlah yang pertama memiliki nilai balikan yang bertipe integer untuk signature (int 49, int 4. %edangkan 'lass *umlah yang kedua memiliki nilai balikan yang bertipe double untuk signature (double y9, double y. #lass yang dibentuk sebagaimana terlihat pada ,ambar3.1.
,ambar 3.1 Dua 'lass bernama *umlah dengan signature berbeda.
ada program utama dilakukan pemanggilan terhadap kedua 'lass tersebut, masing+masing dengan parameter yang bersesuaian (,ambar 3.1/.
75
,ambar 3.1/ emanggilan /ungsi yang di+overload pada#ontoh .. . Latihan
$akukan praktek diatas dan lakukan e!aluasi . Tugas
Buatlah sebuah Glass kendaraan dengan turunannya kedaraan darat6 kendaraan laut, kemudian diturunkan lagi men*adi se)eda motor dan )erahu la>ar.
76
-"- 4 PolimorCisme 1. Tujuan Pembelajaran, Praktikan mampu menerapkan konsep polimorisme dalam pemrograman dengan Java. 2. Teori Singkat
olimor/isme digunakan untuk menyatakan suatu nama yang meru*uk pada beberapa /ungsi yang berbeda (%inaga, 11. ada polimor/isme, ru*ukan dapat dilakukan pada berbagai tipe ob*ek. Gal ini dilakukan karena setiap ob*ek dimungkinkan memiliki instruksi yang berbeda. Dalam mengimplementasikan polimor/isme, perlu diperhatikan hal+hal sebagai berikut (i'kyanto, 11<" 9. ðod yang dipanggil harus melalui !ariabel dari super 'lass. . ðod yang dipanggil *uga harus merupakan method yang ada pada super 'lass. 0. %ignature method harus sama baik yang ada pada super 'lass maupun di sub'lass. . ðod a''ess attribute pada sub'lass tidak boleh lebih terbatas daripada yang ada pada super 'lass. #ontoh =.9" ada ,ambar 4.1 merupakan program untuk membangun 'lass kendaraan. ada 'lass kendaraan me8aris ke tiga 'lass, yaitu 'lass pesa8at, mobil, dan kapal. ,ambar 4.2 ; 4. menun*ukkan pembentukan ketiga sub'lass tersebut.
,ambar 4.1 ende/inisian 'lass kendaraan pada #ontoh =.9.
77
,ambar 4.2 ende/inisian 'lass pesa8at #ontoh =.9.
,ambar 4. ende/inisian 'lass mobil #ontoh =.9.
78
,ambar 4. ende/inisian 'lass kapal #ontoh =.9.
ada program utama dilakukan pemanggilan terhadap ketiga 'lass tersebut, masing+masing dengan parameter yang bersesuaian (,ambar 4..
,ambar 4. rogram utama untuk 'ontoh =.9. . Latihan
$akukan praktek diatas dan lakukan e!aluasi . Tugas
Buatlah semua program yang mengimplemtasikan konsep polymorphisme dari sebuah 'lass dengan nama 'lass he8an
79
-"- 0 Penanganan kse)si 1. Tujuan Pembelajaran' Praktikan mampu menangani berbagai kesalahan dengan penanganan eksepsi dalam pemrograman dengan Java.
%aat kita membuat program, sebisa mungkin program kita terhindar dari kesalahan. Namun, yang lebih penting adalah bagaimana dalam program kita dapat mengantisipasi kemungkinan mun'ulnya kesalahan pada saat program kita dieksekusi. Ja!a menyediakan sebuah mekanisme penanganan kesalahan yang biasa disebut dengan e0ception$handling . Dalam hal ini setiap kesalahan akan dibentuk men*adi ob*ek. 2.
Teori Singkat Dalam Ja!a, runtime error (kesalahan+kesalahan yang ter*adi pada saat
program sedang ber*alan direpresentasikan denga eksepsi. Eksepsi adalah suatu ob*ek yang dibuat pada saat program mengalami suatu kondisi yang tidak 8a*ar (abnormal . Eksepsi dapat dibangkitkan se'ara otomatis oleh Java runtime maupun se'ara manual oleh kita sendiri melalui kode yang kita tulis. Ja!a menyediakan lima buah kata kun'i untuk menangani eksepsi, yaitu" tr , catch, thro , thros, dan inall . 7ata kun'i tr digunakan untuk membuat blok yang berisi statemenstatemen yang mungkin menimbulkan eksepsi. Jika dalam proses eksekusi runtunan statemen tersebut ter*adi sebuah eksepsi, maka eksepsi akan dilempar ke bagian blok penangkap yang dibuat dengan kata kun'i catch. ada kasus+kasus tertentu, terkadang kita *uga ingin melempar eksepsi se'ara manual. Untuk itu, kita harus menggunakan kata kun'i thro . Jika kita ingin membangkitkan sebuah eksepsi tanpa menuliskan blok tr , maka kita perlu menambahkan kata kun'i thros pada saat pendeklarasian method . Dalam mende/inisikan blok tr , kita dapat menuliskan statemen tambahan, yaitu menggunakan kata kun'i inall . %tatemen tambahan ini pasti akan dieksekusi baik ter*adi eksepsi maupun tidak. Berikut ini bentuk umum -enanganan ekse-si *i *alam /a'a%
try { 55
80
Program 0.1 )$nt$! -r$gram yang menimbulkan ekse-si
class onto'7
,ambar 0.1 esan kesalahan hasil eksekusi program C.9
Ini
artinya, indeks menimbulkan eksepsi /rra"nde0ut4ounds$ #0ception. 7ode yang menimbulkan kesalahan tersebut terdapat pada method main ( di dalam kelas !ontoh#ksepsi1, yang tersimpan dalam /ile !ontoh#ksepsi1.java, aris ke+9=. )ampak pada 'ontoh di atas bah8a ketika ter*adi sebuah eksepsi maka program akan dihentikan se'ara tidak normal. 2leh karena itu, kita perlu mende/inisikan sebuah mekanisme yang dapat menangani kesalahan tersebut. &ekanisme inilah yang dinamakan dengan e0ception$handling . Menggunakan 7ata 7unGi try dan catch
ada bagian sebelumnya telah di'ontohkan bagaimana Ja!a men'egah eksepsi se'ara deault . Namun, pada umumnya, pen'egahan eksepsi dilakukan oleh kita sendiri, sebagai programmer . Untuk melakukan hal tersebut, kita dapat menggunakan blok tr +catch. Berikut ini 'ontoh program yang menggunakan blok tr$catch untuk menangani kesalahan yang mun'ul. Program .# !ontoh implementasi blok try+#at#!
class onto'7
81
} ada saat di*alankan, program di atas akan memberikan hasil sebagai berikut"
,ambar 0.2 Gasil eksekusi program C.
ada program di atas, pada saat mun'ul eksepsi, program akan langsung melon'at ke bagian catch. Namun bagian statemen yang dituliskan setelah blok tr +catch tetap akan dieksekusi oleh program. Dengan menggunakan blok tr +catch seperti 'ontoh+'ontoh di atas, meskipun di dalam program sebenarnya terkandung kesalahan, namun proses eksekusi program tetap dapat dilan*utkan, tidak dihentikan se'ara tiba+tiba. Inilah yang disebut dengan proses pen*ebakan kesalahan atau pen*ebakan eksepsi.
Penjebakan -ebera)a Ti)e kse)si
ada kenyataan di lapangan, sebuah blok tr +catch biasanya terdiri atas beberapa bagian blok penangkap. Gal tersebut bertu*uan agar dalam satu blok tr +catch, kita dapat mengatasi beberapa kemungkinan eksepsi yang ter*adi. Berikut ini 'ontoh program yang akan menun*ukkan bagaimana 'ara mende/inisikan sebuah blok tr +catch yang dapat digunakan untuk men*ebak beberapa tipe eksepsi. Program 0. )$nt$! -enebakan bebera-a .-e ekse-si
class onto'Eulti7
System.out.println(); 55 menim#ul
,ambar 0. Gasil eksekusi program C.0
)ampak pada hasil di atas bah8a ketika kita mele8atkan argumen ke dalam method test ( dengan nilai dan 1, program akan membangkitkan eksepsi /rithmetic#0ception . %edangkan Jika argumen bernilai 9 dan , maka program akan melakukan pembagian dengan benar dan menghasilkan nilai 0 (hasil dari 95. Namun, pada saat mengeksekusi statemen"
9rr[-,] 8; program akan membangkitkan eksepsi /rra"nde0ut4ounds $ #0ception . Gal ini disebabkan karena array /rr hanya terdiri dari < buah elemen.
Menggunakan 7ata 7unGi thro
7ita dapat membangkitkan eksepsi se'ara manual dengan menggunakan kata kun'i thro . Berikut ini bentuk umum penggunaan kata kun'i tersebut.
t'ro* e
t'ro* Bull3ointer7ception(); rogram berikut akan menun*ukkan bagaimana 'ara menggunakan kata kun'i thro untuk membangkitkan eksepsi 9ullPointer#0ception. Program 0< #ontoh pen*ebakan eksepsi dengan kata kun'i thro
class Ea'asis*a { priate Strin$ nim; priate Strin$ nama; pu#lic oid setB1E(Strin$ inputB1E) { try { nim inputB1E;
83
if (inputB1E null) { t'ro* ne* Bull3ointer7ception(); } } catc' (Bull3ointer7ception npe) { System.out.println("C7S99H9B " 0 "B1E tida< #ole' null"); } } pu#lic Strin$ $etB1E() { return nim; } pu#lic oid setBama(Strin$ inputBama) { try { nama inputBama; if (nama null) { t'ro* ne* Bull3ointer7ception(); } } catc' (Bull3ointer7ception npe) { System.out.println("C7S99H9B " 0 "Bama ma'asis*a tida< #ole' null"); } } pu#lic Strin$ $etBama() { return nama; } } class &emoN'ro* { pu#lic static oid main(Strin$[] ar$s) { Ea'asis*a m's ne* Ea'asis*a(); m's.setB1E(null); m's.setBama("Badilla"); System.out.println("UnB1E " 0 m's.$etB1E()); System.out.println("Bama " 0 m's.$etBama()); } } ada saat di*alankan, program di atas akan memberikan hasil sebagai berikut"
,ambar 0. Gasil eksekusi program C.
)ampak pada hasil di atas, ketika kita mele8atkan nilai null ke dalam method set9"' ( dari kelas 'ahasisa, program akan membangkitkan eksepsi 9ullPointer#0ception yang kita lempar atau kita bangkitkan se'ara manual dengan menggunakan kata kun'i thro .
84
Menggunakan 7ata 7unGi thros
Jika kita tidak menyertakan blok tr +catch di dalam method yang mengandung kode+kode yang mungkin menimbulkan eksepsi, maka kita harus menyertakan klausa thros pada saat pendeklarasian method yang bersangkutan. Jika tidak, maka program tidak dapat dikompilasi. Berikut ini bentuk umum dari penggunaan kata kun'i thros.
tipe nama=met'od(daftar=parameter) e
t'ro*s
tipe=
Berikut ini 'ontoh program yang menggunakan kata kun'i thros untuk menangani eksepsi yang mun'ul. Program 0. #ontoh pen*ebakan eksepsi dengan kata kun'i t!r$"s
lass &emoN'ro*s { pu#lic static oid co#a7
,ambar 0. Gasil eksekusi program C.<
erhatikan deklarasi method coba#ksepsi ( di atas. Di situ kita menambahkan klausa thros yang diikuti dengan nama eksepsi yang akan dilempar5dibangkitkan. &elalui teknik seperti ini, compiler akan mengetahui
85
bah8a
tersebut dapat membangkitkan eksepsi method "llegal/ccess#0ception sehingga program dapat dikompilasi dengan sukses. Menggunakan 7ata 7unGi finally
)erkadang kita ingin menempatkan kode yang pasti akan dieksekusi, baik ter*a er*adi di eksep ksepsi si maupu aupun n tida tidak. k. Untu Untuk k mel melakuk akukan an hal hal itu, tu, kit kita perl perlu u menemp menempatk atkan an kode tersebut tersebut di dalam dalam bagian bagian /inal /inalisa isasi si dari dari blok blok tr +catch. Blok Blok /inali /inalisasi sasi ini dibuat dibuat dengan menggunak menggunakan an kata kata kun'i kun'i inall . Bentuk umum pende/inisian blok inall ini sebagai berikut"
try { 55statemen yan$ mun$
class &emoTinally { pu#lic static oid co#a7
86
System.out.println(); co#a7
,ambar 0./ Gasil eksekusi program C.: .
Latihan
$akukan praktek diatas dan lakukan e!aluasi .
Tugas
Buatlah program penyisipan array dan gunakan blok try+'at'h untuk menangani kesalahannya. )$nt$! 9 Sisi-kan 3 *i in*eks ke+1 maka array beruba!
9
0
87
-"- 15 In)ut dan Out)ut 1. Tujuan Pembelajaran' Praktikan mampu mengenali dan memahami input dan output ("<) dalam pemrograman dengan Java.
Ja!a menyed menyediak iakan an dukunga dukungan n terhad terhadap ap proses proses I52 I52 dengan dengan menghad menghadirk irkan an paket java.io. Di dalam paket tersebut tersimpan banyak kelas dan interace yang akan memudahkan memudahkan kita, sebagai programmer , dalam pengambilan pengambilan dan penyimp penyimpana anan n in/orm in/ormasi asi dari5k dari5ke e media media lain lain (misal (misalnya nya"" ile . Bab Bab ini ini akan akan memperk memperkena enalka lkan n beberap beberapa a kelas kelas yang yang terdap terdapat at pada pada paket paket java.io yang diperlukan untuk melakukan proses input dan output di dalam Ja!a. 2. Dasar
rogram Ja!a melakukan proses I52 melalui stream. &tream adalah sebuah abst abstrak raksi si yang yang dapa dapatt memb memberi erika kan n atau atau mend mendap apat atka kan n in/o in/orm rmas asi. i. &tream dapat dihubungkan dengan peralatan /isik yang terdapat dalam system I52 Ja!a, Ja!a, sepe sepert rti" i" keboard , ile, layar console, dan yang lainnya. #ara ker*a strea ream sela selalu lu sama sama,, meski meskipu pun n *eni *enis s pera perala lata tan n yang yang terh terhub ubung ung denga dengan n ersebut but berbed rbeda a. Ini arti rtinya, seb sebuah stream inpu inputt dapa dapatt stream ters mengabstraksi mengabstraksikan kan beberapa beberapa tipe peralatan /isik, seperti" keboard , ile , atau socket *aringan. Begitu pula dengan stream output, yang dapat dihubungkan deng dengan an layar layar console, ile, maupun maupun koneks koneksii *aring *aringan. an. Dengan Dengan demiki demikian, an, strea stream m akan memudahkan kita dalam melakukan proses I52, karena kode program yang kita tulis akan sama untuk masing+maisng peralatan /isik yang dihubungkan dengan stream bersangkutan. Ti)e tream
)erdapat dua buah tipe stream yang dapat digunakan, yaitu" stream bte dan karakterr. %esuai %esuai dengan namanya namanya,, stre digunakan untuk stre stream am karakte stream am bte bte digunakan memberi memberikan kan atau atau menyim menyimpan pan in/orm in/ormasi asi data data dalam dalam bentuk bentuk bte, misalnya untuk menul nulis dan memba'a a'a ile biner iner.. %eda %edang ngka kan n stream karakter digunakan untuk melakukan proses I52 yang melibatkan data+data dalam bentuk karakter, misalnya pada saat kita melakukan proses ba'a5tulis ke ile teks. teks. Dalam Dalam Ja!a, strea stream m dide/inisikan dengan menggunakan empat kelas abst abstra rak, k, yai yaitu" tu" "nput&tream, utput&tream, ;eader , dan =riter . 7ela 7elas s "nput& "nput&tre tream am dan utput utput&tr &tream eam merupakan kelas abstrak yang diran'ang seba sebagai gai kela kelas s indu induk k atau atau supercl superclass ass untuk kelas+kelas yang termasuk ke ;eader er dan =rit =riter er merupakan dalam dalam kategor kategorii stream bte. Adapun Adapun kelas kelas ;ead kelas abstrak yang akan diturunkan men*adi kelas+kelas baru yang termasuk ke dalam kategori stream karakter. &elalui proses pe8arisan (inheritance, semua kelas yang diturunkan dari akan memi memililiki ki meth method od read (, ( , yang yang akan akan "nput "nput&t &tre ream am maupun ;eader akan digun digunak akan an untu untuk k proses proses pemba pemba'aa 'aan n data data.. Adap Adapun un semu semua a kela kelas s yang yang diturunkan diturunkan dari dari utput&tre maupun =riter memiliki method rite(, utput&tream am maupun =riter akan memiliki yang akan digunakan untuk proses penulisan data. 7edua method tersebut dideklarasik dideklarasikan an sebagai method abstrak sehingga harus diimplementasi diimplementasi oleh setiap kelas turunannya. Melakukan +nput
88
Dalam Ja!a, input console dilakukan melalui pemba'aan terhadap stream &stem.in. Untuk mendapatkan karakter+karakter yang dimasukkan melalui keboard ke dalam layar console, kita perlu membungkus &stem.in di dalam ob*ek 4uered;eader . Gal ini, dilakukan untuk membentuk stream karakter karena &stem.in sebenarnya merupaka stream bte. Adapun bentuk constructor dari 4uered;eader sebagai berikut"
:uffered2eader(2eader input2eader) input;eader adalah stream yang akan dihubungkan dengan instance atau ob*ek dari kelas 4uered;eader yang dibuat. 7arena ;eader berupa kelas
abstrak, maka kita perlu men'ari kelas turunannya yang berupa kelas konkrit. %alah satunya adalah kelas "nput&tream;eader , yang dapat mengkon!ersi bte ke karakter. %ekarang, agar ob*ek dari "nput&tream;eader dapat dihubungkan dengan &stem.in, kita perlu menggunakan bentuk constructor sebagai berikut"
1nputStream2eader(1nputStream inputStream) Di sini, input&tream dapat kita isi dengan &stem.in. Dengan demikian, untuk membuat ob*ek 4uered;eader yang dapat terhubung dengan keboard , kita perlu menggunakan kode berikut"
1nputStream2eader isr ne* 1nputStream2eader(System.in); :uffered2eader #r ne* :uffered2eader(isr); %ampai tahap ini, ob*ek br sudah siap digunakan untuk melakukan proses input, yaitu dengan melakukan pemanggilan terhadap method read ( maupun readline(, yang akan kita bahas lebih lan*ut. MembaGa In)ut Data 7arakter
Untuk memba'a input berupa karakter, kita bisa menggunakan method read ( yang terdapat pula pada kelas 4uered;eader . Berikut ini 'ontoh program yang akan menun*ukkan bagaimana menangani proses input data karakter. Program 15.1 Pr$gram *engan -r$ses in-ut *ata karakter
import 4aa.io.; class &emo1nputCara
89
ada saat di*alankan, program di atas akan memberikan hasil sebagai berikut"
,ambar 15.1 hasil eksekusi program 91.9 MembaGa In)ut Data tring
Untuk memba'a input berupa string , kita bisa menggunakan method read%ine(, bukan method read (. Berikut ini 'ontoh program yang akan menun*ukkan bagaimana menangani proses input data string . Program ".# Program dengan proses input data string
import 4aa.io.; class &emo1nputStrin$ { pu#lic static oid main(Strin$[] ar$s) t'ro*s 1A7ception { System.out.print("Easu<
,ambar 15.2 Gasil eksekusi program 91. MembaGa In)ut Data Numerik
Untuk memba'a input berupa data numerik, kita bisa menggunakan method read%ine( seperti pada saat menangani input data string , dan selan*utnya string hasil input tersebut dikon!ersi ke tipe numerik. Berikut ini 'ontoh program yang akan menun*ukkan bagaimana menangani proses input data numerik. Program 15. Pr$gram *engan -r$ses in-ut *ata numerik
import 4aa.io.; class &emo1nputBumeri< { 90
pu#lic static oid main(Strin$[] ar$s) t'ro*s 1A7ception { System.out.print("Easu<
,ambar 15. Gasil eksekusi program 91.0
Dasar
Ja!a menyediakan dua buah stream yang paling sering digunakan untuk melakukan proses pemba'aan5penulisan data dari5ke dalam ile , yaitu" ,ile"nput&tream (untuk memba'a data dan ,ileutput&tream (untuk menulis data. 7eduanya akan membentuk stream bte yang terhubung ke sebuah ile. Untuk membuka ile, kita harus membentuk ob*ek dari salah satu kelas stream tersebut dengan menyertakan nama ile sebagai argumen pada constructor +nya. Bentuk se'ara umum adalah sebagai berikut"
Tile1nputStream(Strin$ filename) t'ro*s TileBotTound7ception TileAutputStream(Strin$ filename) t'ro*s TileBotTound7ception Di sini, ile9ame menun*ukkan nama ile yang akan dibuka. ada saat menggunakan stream input , *ika ile tidak ditemukan maka kedua constructor akan membangkitkan eksepsi ,ile9ot,ound#0ception , sedangkan pada saat menggunakan stream output , eksepsi tersebut akan mun'ul *ika ile output tidak dapat terbentuk.
91
Berikut ini 'ontoh program yang akan menun*ukkan proses pemba'aan data dari sebuah ile dan menampilkan isi ile tersebut ke layar console. Program ".0 Program simulasi pembacaan data dari le import 4aa.io.; class &emo:acaTile { pu#lic static oid main(Strin$[] ar$s) { Tile1nputStream finput null; int data; 55 mem#u
55 55 55
55
} catc' (TileBotTound7ception fnfe) { System.out.println("Tile tida< ditemu
}
,ambar 15. -ile input yang akan diba'a melalui program 91.
Gasil eksekusi program 91. dalam memba'a /ile teks "9P.t0t tersebut di atas adalah sebagai berikut"
92
,ambar 15. Gasil eksekusi program 91.
%elan*utnya akan dibahas tentang proses penulisan data ke dalam ile. Untuk melakukan hal ini, kita perlu menggunakan method rite(. Bentuk umum dari method rite( sebagai berikut" !oid 8rite(int nilaiByte Berikut ini 'ontoh program yang akan menun*ukkan penggunaan method rite( di atas. Program ".* Program penulisan data ke sebuah le
import 4aa.io.; class &emoNulisTile { pu#lic static oid main(Strin$[] ar$s) { TileAutputStream foutput null; Strin$ data "Hello Fuys ! Un Semo$a Un Su
93