Anda di halaman 1dari 47

No. Dokumen Edisi Dokumen No.

MODUL Revisi Edisi PRAKTIKUM Berlaku Efektif MODUL Revisi PRAKTIKUM Halaman Berlaku Efektif DAFTAR ISI Halaman

: : : : :

IK-GKM-ILK-FMIPA-003-PBO 01 : IK-GKM-ILK-FMIPA-003-RPL 01 : 01 5 01 : Maret 2012 ii 5 Maret : dari ii 2012 : 0 dari ii

KATA PENGANTAR .............................................................................................................. i DAFTAR ISI ............................................................................................................................ ii PERTEMUAN I DASAR PEMROGRAMAN JAVA I .......... ERROR! BOOKMARK NOT DEFINED. PERTEMUAN II DASAR PEMROGRAMAN JAVA II ....... ERROR! BOOKMARK NOT DEFINED. PERTEMUAN III ARRAY DAN STRING LANJUTAN ...... ERROR! BOOKMARK NOT DEFINED. PERTEMUAN IV PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK ...................................................................................ERROR! BOOKMARK NOT DEFINED. PERTEMUAN V PEMROGRAMAN BERORIENTASI OBJEK LANJUTAN .. ERROR! BOOKMARK NOT DEFINED. PERTEMUAN VI TIGA PILAR PBO ................................................................................. 30 PERTEMUAN VII KELAS-KELAS DI DALAM PBO DAN EXCEPTION HANDLING ....................................................................................................................... 34 PERTEMUAN VIII THREADS ........................................................................................... 40 LAMPIRAN ............................................................................................................................ 47

Laboratorium Rekayasa Perangkat Lunak - Modul Praktikum Rekayasa Perangkat Lunak

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB I Dasar Pemrograman Java I


TUJUAN PEMBELAJARAN: 1. Mengetahui struktur dasar bahasa Java 2. Mengetahui penggunaan variabel 3. Mengetahui penggunaan tipedata dan operator

Bahasa Java berawal pada tahun 1991 ketika perusahaan Sun Microsystem memulai Green Project, yakni projek penelitian untuk membuat bahasa yang akan digunakan pada chip-chip embedded untuk device intelligent consumer electronic. Bahasa tersebut haruslah bersifat multiplatform, tidak tergantung kepada vendor yang memanufaktur chip tersebut. 1. Struktur dasar bahasa Java Pada saat kompilasi, compiler akan mencari bagian program yang disebut dengan method utama(method main). Bentuk umum dari method utama ini adalah:
public static void main(string [] args){ statement body method main }

Keterangan: public: Karena method ini merupakan bagian yang pertama kali dicari oleh compiler, maka main method harus dapat dilihat atau visible oleh kelas manapun. static: Semua objek yang diinstans dari satu kelas yang mengandung main method akan memiliki parameter-parameter yang sama. Bila suatu kelas mengandung main method dan di dalam main method tersebut terdapat statement untuk menginstasiasi objek dari kelas tersebut, maka main method akan bersifat eksklusif, tidak diikut sertakan pada objek tersebut. void: Menunjukkan bahwa main method tidak mengembalikan sebuah nilai. main(String [] args): Main method dapat mengambil suatu parameter input yang merupakan array dari string yang diberi nama arguments disingkat dengan args. Contoh: Import java.util.Scanner; public class contoh{ public static void main(String [] args){
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 1 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

system.Out.Println(Welcome to Java); } }

2. Variabel dan tipe data 2.1 Variabel adalah bagian dari program yang digunakan untuk menyimpan data. Sebagai tempat menyimpan data, variabel harus dideklarasikan yaitu diberi tipe data, nama variabel, dan dapat juga diberi nilai awal(inisial). Aturan penulisan variabel: a. Karakter pertama dimulai dari [a..z] atau [A..Z] atau [ _ , $ ]. Tidak boleh diawali bilangan [0,1,2,3..]. Setelah karakter pertama, dapat diikuti kombinasi abjad, underscore, dollar dan bilangan. b. Tidak boleh menggunakan reserved keyword dalam java. c. Tidak boleh menggunakan operator (+,-,=) d. Bersifat case sensitive.

Bentuk umum pendeklarasian variabel:


Tipedata namavariabel

2.2 Tipe data Berdasarkan tempat penyimpanan data dalam memory tipe data dapat dibagi menjadi: a. Tipe data primitive Variabel yang dideklarasikan dan ditugaskan dengan tipe data primitive berisi informasi tentang data sesungguhnya. 1. Tipe data logika Boolean Bernilai true dan false. Contoh:
boolean result = true;

2. Tipe data teksualchar Tipe data character(char), diwakili oleh karakter single Unicode. Nilai dari tipe data char diapit dengan single quotes( ). String adalah tipe data yang terdiri atas beberapa karakter. Contoh:
String pesan =Hello World

3. Integral- byte, short, int & long Merupakan tipe data bilangan bulat. Name or Type Integer Length Range 8 bits byte 16 bits short 32 bits int 64 bits long

4. Floating point float dan double Floating point berguna untuk menyimpan bilangan desimal. Nama atau tipe Panjang Float Range float 32 bits
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 2 dari 47

Laboratorium Rekayasa Perangkat Lunak


double 64 bits

Modul Pemrograman Berorientasi Objek

b. Tipe data referensi Variabel bertipe data referensi tidak berisi nilai data sesungguhnya. Variabel ini mengandung informasi referensi tentang alamat memory lainnya yang akan digunakan untuk menyimpan nilai data sesungguhnya. Contoh dari varial bertipe data referensi adalah variabel yang menyimpan data tentang objek dari suatu kelas.

3. Operator 3.1 Operator aritmatika Berikut ini adalah dasar operator aritmatika yang dapat digunakan untuk membuat suatu program Java, Operator Kegunaan + Menambahkan dua buah bilangan * Mengalikan dua buah bilangan / Membagikan dua buah bilangan % Modulo dari dua buah bilangan Mengurangkan dua buah bilangan 3.2 Operator increment dan decrement Operator Penggunaan Keterangan ++ op++ Menambahkan nilai 1 pada op; mengevaluasi nilai op sebelum diincrementasi ++ ++op Menambahkan nilai 1 pada op; mengevaluasi nilai op setelah diincrementasi -op-Mengurangkan nilai 1 pada op; mengevaluasi nilai op sebelum didecrementasi ---op Mengurangkan nilai 1 pada op; mengevaluasi nilai op setelah didecrementasi 3.3 Operator relasi Berfungsi membandingkan dua nilai dan menentukan keterhubungan diantara nilai-nilai tersebut. Hasil keluarannya berupa nilai Boolean yaitu true dan false. Operator Penggunaan keterangan > op1 > op2 op1 lebih besar dari op2 >= op1>=op2 op1 lebih besar dari atau sama dengan op2 < op1<op2 op1 kurang dari op2 <= op1<=op2 op1 kurang dari atau sama dengan op2 == op1== op2 op1 sama dengan op2 != op1!=op2 op1 tidak sama dengan op2 3.4 Operator logika Terdapat enam operator logika yaitu: a. Logika AND (&&) b. Boolean logika AND (&) c. Logika OR(||) d. Boolean logika inclusive OR(|) e. Boolean logika exclusive OR (^) f. Logika NOT (!)
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 3 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

3.5 Operator kondisi(?:) atau operator ternary. Operator ini membawa tiga argument yang membentuk ekspresi bersyarat. Struktur pernyataan yang menggunakan operator kondisi adalah, Exp1? Exp2: exp3 Dimana nilai exp1 adalah suatu pernyataan Boolean yang memiliki hasil yang salah satunya harus berupa nilai true atau false. Jika exp1 bernilai true, exp2 merupakan hasil operasi, jika false, exp3 yang akan dieksekusi.

LATIHAN 1. Mendeklarasikan variabel, menginisialisasi variabel dan menampilkan data variabel:


public class contohvariabel{ public static void main(String [] args){ int nilai =10; char x; x = A; System.out.println(nilai); System.out.println(Nilai dari x = +x); } }

2. Penggunaan operator Aritmatika

public class aritmatikademo{ public static void main(String[] args){ //sedikit angka int i = 37; int j = 42; double x = 27.475; double y = 7.22; System.out.println("Variable values..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); //penjumlahan angka System.out.println("Adding..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); //pengurangan angka System.out.println("Subtracting..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); //perkalian angka System.out.println("Multiplying..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y));

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 4 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

//pembagian angka System.out.println("Dividing..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); //menghitung hasil modulus dari pembagian System.out.println("Computing the remainder..."); System.out.println( i % j = + (i % j)); System.out.println( x % y = + (x % y)); //tipe penggabungan System.out.println(Mixing tipes ); System.out.println( j + y = + (j + y)); System.out.println( i + x = + (I + x)); } }

3. Penggunaan operator relasi

public class RelasiDemo { public static void main(String[] args) { //beberapa nilai int i = 37; int j = 42; int k = 42; System.out.println("Nilai variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" k = " + k); //lebih besar dari System.out.println("Lebih besar dari..."); System.out.println(" i > j = " + (i > j)); //false System.out.println(" j > i = " + (j > i)); //true System.out.println(" k > j = " + (k > j)); //false //lebih besar atau sama dengan System.out.println("Lebih besar dari atau sama dengan..."); System.out.println(" i >= j = " + (i >= j)); //false System.out.println(" j >= i = " + (j >= i)); //true System.out.println(" k >= j = " + (k >= j)); //true //lebih kecil dari System.out.println("Lebih kecil dari..."); System.out.println(" i < j = " + (i < j)); //true System.out.println(" j < i = " + (j < i)); //false System.out.println(" k < j = " + (k < j)); //false //lebih kecil atau sama dengan System.out.println("Lebih kecil dari atau sama dengan..."); System.out.println(" i <= j = " + (i <= j)); //true System.out.println(" j <= i = " + (j <= i)); //false System.out.println(" k <= j = " + (k <= j)); //true //sama dengan System.out.println("Sama dengan..."); System.out.println(" i == j = " + (i == j)); //false System.out.println(" k == j = " + (k == j)); //true //tidak sama dengan System.out.println("Tidak sama dengan..."); System.out.println(" i != j = " + (i != j)); //true System.out.println(" k != j = " + (k != j)); //false } } No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01

Halaman 5 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

4. Penggunaan Operator logika dan Boolean AND


public class TestAND { public static void main( String[] args ){ int i = 0; int j = 10; boolean test= false; //demonstrasi && test = (i > 10) && (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); //demonstrasi & test = (i > 10) & (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); } }

5. Penggunaan operator logika dan Boolean OR


public class TestOR { public static void main( String[] args ){ int i = 0; int j = 10; boolean test= false; //demonstrasi || test = (i > 10) || (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); //demonstrasi | test = (i > 10) | (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); } }

6. Penggunaan operator booleanLogika eksklusive OR

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 6 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

public class TestXOR { public static void main( String[] args ){ boolean val1 = true; boolean val2 = true; System.out.println(val1 ^ val2); val1 = false; val2 = true; System.out.println(val1 ^ val2); val1 = false; val2 = false; System.out.println(val1 ^ val2); val1 = true; val2 = false; System.out.println(val1 ^ val2); } }

7. Penggunaan operator logika NOT


public class TestNOT{ public static void main( String[] args ){ boolean val1 = true; boolean val2 = false; System.out.println(!val1); System.out.pritnln(!val2); } }

8. Penggunaan operator kondisi (?:)


public class kondisiOperator { public static void main( String[] args ){ String status = ""; int grade = 80; //mendapatkan status pelajar status = (grade >= 60)?"Passed":"Fail"; //print status System.out.println( status ); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 7 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB II Dasar Pemrograman Java II


TUJUAN PEMBELAJARAN: 1. Mengetahui cara mendapatkan input dari keyboard 2. Mengetahui struktur kontrol pemilihan di Java. 3. Mengetahui struktur kontrol perulangan di Java 4. Mengetahui Pernyataan Percabangan

1. Mendapatkan Input dari keyboard Pada contoh-contoh sebelumnya semua nilai yang dibutuhkan di tentukan secara langsung dalam source code. Pada bab ini, kita akan mempelajari cara memberikan input dengan menggunakan class BufferedReader dan class Scanner. Untuk menggunakan class BufferedReader ikutilah langkah berikut ini: a. Pada bagian atas code, ketikkan :
import java.io.*;

b. Tambahkan pernyataan berikut :


BufferedReader dataIn= new BufferedReader(new InputStreamReader(System.in));

c. Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan fungsi readLine() untuk mendapatkan input dari keyboard di dalam blok try-catch.
try{ String temp=dataIn.readLine(); } Catch(IOException e){ System.out.println(Kesalahan saat input); }

Untuk menggunakan class Scanner ikutilah langkah berikut ini: a. Pada bagain atas code, ketikkan
import java.util.Scanner;

b. Tambahkan pernyataan berikut:


Scanner Baca= new Scanner(System.in);

c. Misalkan ada sebuah variabel String ABCD, untuk menginputkan nilai ke variabel tersebut:
ABCD=Baca.readLine();

Nantinya kita lebih sering menggunakan kelas Scanner di dalam input data karena lebih efektif di dalam penggunaannya.

2. Struktur kontrol pemilihan Adalah pernyataan dari Java yang mengizinkan user untuk memilih dan mengeksekusi blok kode spesifik dan mengabaikan blok kode yang lain. Struktur kontrol pemilihan di Java : statement if dan switch.

a. Statement if Pernyataan if akan menentukan sebuah pernyataan yang akan dieksekusi jika dan hanya jika persyaratan bernilai benar(true). Bentuk umum dari Statement if
if (Boolean_expression) statement;

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 8 dari 47

Laboratorium Rekayasa Perangkat Lunak


atau if(Boolean_expression){ statement1; statement2; }

Modul Pemrograman Berorientasi Objek

b. Statement if else Pernyataan if-else digunakan apabila kita ingin mengeksekusi beberapa pernyataan dengan kondisi true dan pernyataan yang lain dengan kondisi false. Bentuk umum dari statement if-else
if(Boolean_expression) statement; else statement;

atau
if(Boolean_expression){ statement1; statementn; } else{ Statement1; Statementn; }

c. Statement if-else-if Pernyataan pada bagian kondisi else dari blok if else dapat menjadi struktur if-else yang lain. Kondisi struktur seperti ini mengizinkan kita untuk membuat seleksi persyaratan yang lebih kompleks. Bentuk umum statement if-else-if
if(Boolean_expression) statement1; else if(Boolean_expression2) statement2; else statement3;

d. Statement switch Cara lain untuk membuat cabang adalah dengan menggunakan kata kunci switch. Switch mengkonstruksikan cabang untuk beberapa kondisi dari nilai.] Bentuk umum statement switch,
switch(switch_expression){ case case_selector1: statement1; statement2; break; case case_selector2: statement1; statement2; break; . default: statement1; statement2; break; }

3. Struktur kontrol perulangan


No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 9 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

Struktur kontrol pengulangan adalah berupa pernyataan dari Java yang mengizinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah tertentu yang diinginkan. Ada tiga macam jenis dari struktur kontrol perulangan yaitu while, do-while dan for-loops. a. While loop Adalah pernyataan atau blok pernyataan yang diulang-ulang sampai mencapai kondisi yang cocok. Bentuk umum:
while (Boolean_expression){ Statement1; Statement2; }

b. Do while Hampir sama dengan while-loop, hanya saja do while langsung melaksanakan blok statement tanpa memeriksa terlebih dahulu kondisi yang disyaratkan. Jadi di dalam eksekusi sedikitnya ada satu kali loop. Bentuk umum:
do{ statement1; statement2; } while(boolean_expression);

c. For loops Pernyataan for loop memiliki kondisi hamper mirip dengan struktur pengulangan sebelumnya. Hanya saja for-loop mengeksekusi loop sebanyak jumlah yang telah ditentukan(pasti). Bentuk umum:
for(initialisasiexpression; loopCondition; stepExpression){ Statement1; Statement2; }

4. Pernyataan Percabangan Dengan pernyataan percabangan, kita diizinkan untuk mengatur alur eksekusi program. Ada 3 bentuk pernyataan percabangan di dalam java: break, continue dan return. a. Break Ada dua bentuk: tidak berlabel(unlabeled) dan berlabel(labeled) Pernyataan break tidak berlabel digunakan untuk menghentikan jalannya pernyataan switch. Selain itu pernyataan break unlabeled juga bias digunakan untuk menghentikan pernyataan-pernyataan for, while atau do-while loop. Pernyataan break berlabel menghentikan pernyataan diluarnya, dimanan sebelumnya harus diberikan label yang sudah dispesifikasikan pada pernyataan break. b. Pernyataan Continue Memiliki dua bentuk: berlabel dan tidak berlabel. Pernyataan continue tidak berlabel
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 10 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

akan melewati bagian pernyataan setelah pernyataan ini dituliskan dan memeriksa ekspresi logika yang mengontrol pengulangan. Jika masih bernilai true, maka pengulangan tetap dilanjutkan. Pernyataan continue berlabel melanjutkan pengulangan yang sedang terjadi dan dilanjuti ke pengulangan berikutnya dari pengulangan yang diberi label. c. Pernyataan return Digunakan untuk keluar dari sebuah method. Pernyataan return memiliki dua bentuk: memberikan sebuah nilai dan tidak memberikan nilai.

LATIHAN 1. Menerima input dengan kelas bufferedReader dan Scanner;

import java.util.Scanner; import java.io.BufferedReader; import java.io.InputStreamReader; public class Contohkelas { public static void main(String [] args){ System.out.println("Bagian ini menggunakan BufferedReader: "); BufferedReader aa= new BufferedReader(new InputStreamReader(System.in)); System.out.print("Namamu siapa? "); String bd=""; try{ bd=aa.readLine(); } catch(Exception e){ } int a=0; System.out.print("umurmu? "); try{ a=Integer.parseInt((aa.readLine())); } catch(Exception e){ } System.out.println("Halo "+bd); System.out.println("umurmu: "+a);

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 11 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

System.out.println("Bagian ini menggunakan kelas Scanner: "); Scanner baca= new Scanner(System.in); System.out.print("Kamu siapa ya? "); String nama= baca.nextLine(); System.out.print("berapa jumlah matamu? "); int mata= baca.nextInt(); System.out.println("Halo "+ nama+", kamu punya "+mata+" mata"); } }

2. Menggunakan statement if
public class Grade { public static void main( String[] args ){ Scanner Read= new Scanner(System.in); System.out.print(Nilai anda: ); double grade = Read.nextDouble(); if( grade >= 90 ){ System.out.println( "Excellent!" );

} else if( (grade < 90) && (grade >= 80)){ System.out.println("Good job!" ); } else if( (grade < 80) && (grade >= 60)){ System.out.println("Study harder!" ); } else{ System.out.println("Sorry, you failed."); }

3. Menggunakan statement switch


public class Grade2 { public static void main( String[] args ) { int grade = 92; switch(grade){ case 100: System.out.println( "Excellent!" ); break; case 90: System.out.println("Good job!" ); break; case 80: System.out.println("Study harder!" ); break;

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 12 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

default: System.out.println("Sorry, you failed."); } } }

4. Menggunakan while loop

public class whileloop { public static void main(String [] args){ Boolean kenyang=false; int i=1; while(!kenyang){ System.out.println("Sendok ke-"+i); i++; if (i==6){ kenyang=true; System.out.println("Aku sudah kenyang"); } } } }

5. Menggunakan do while loop

public class dowhile { public static void main(String [] args){ Boolean kenyang=true; int i=1; do{ System.out.println("Sendok ke-"+i); i++; if (i==6){ kenyang=true; System.out.println("Aku sudah kenyang"); } }while(!kenyang); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 13 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

6. Menggunakan For-loop
public class forLoop { public static void main(String [] args){ for(int i=0;i<6;i++){ System.out.println("Angka "+i); } } }

7. Menggunakan break tanpa label

public class Grade3 { public static void main( String[] args ) { String names[] = {"Beah", "Bianca", "Lance", "Belle", "Nico", "Yza", "Gem", "Ethan"}; String searchName = "Yza"; boolean foundName = false; for( int i=0; i< names.length; i++ ){ if( names[i].equals( searchName )){ foundName = true; break; } } if( foundName ){ System.out.println( searchName + " found!" ); } else{ System.out.println( searchName + " not found." ); } } }

8. Menggunakan break berlabel

public class Grade4 { public static void main(String [] args){ int[][] numbers = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int searchNum = 5; boolean foundNum = false; searchLabel: for( int i=0; i<numbers.length; i++ ){ for( int j=0; j<numbers[i].length; j++ ){ if( searchNum == numbers[i][j] ){ foundNum = true; break searchLabel; } } } if( foundNum ){ System.out.println( searchNum + " found!" ); } else{ } System.out.println( searchNum + " not found!" ); } No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 }

Halaman 14 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

9. Menggunakan continue tidak berlabel

public class Grade5 { public static void main( String[] args ) { String names[] = {"Beah", "Bianca", "Lance", "Beah"}; int count = 0; for( int i=0; i<names.length; i++ ){ if( !names[i].equals("Beah") ){ continue; //skip next statement } count++; } System.out.println("There are " + count + " Beahs in the list"); } }

10. Menggunakan continue berlabel

public class Grade6 { public static void main( String[] args ) { outerLoop: for( int i=0; i<5; i++ ){ for( int j=0; j<5; j++ ){ System.out.println("Inside for(j) loop"); //message1 if( j == 2 ) continue outerLoop; } System.out.println("Inside for(i) loop"); //message2 } } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 15 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB III Array dan String Lanjutan


TUJUAN PEMBELAJARAN: 1. Mengetahui penggunaan Array 2. Mengetahui penggunaan method di dalam String

1. Array Array adalah variabel yang dapat menyimpan beberapa data dan memanipulasinya dengan lebih efektif. Dengan array, kita tidak perlu mendeklarasikan beberapa variabel untuk satu tujuan. Array juga bias didefenisikan sebagai sebuah variabel/sebuah lokasi tertentu yang memiliki satu nama sebagai identifier, namun identifier ini dapat menyimpan lebih dari sebuah nilai. a. Pendeklarasian array
Tipedata []namaaaray; Atau Tipedata namaarray[];

Contoh: String [] cuaca; Setelah pendeklarasian array, kita harus menentukan berapa panjangnya array dengan sebuah konstruktor. Proses ini di Java disebut sebagai instatiation. Contoh di atas diinstasiasi menjadi:
cuaca= new String[5];

b. Pengaksesan sebuah elemen array Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian dari array, kamu harus menggunakan sebuah angka atau yang disebut sebagai indeks atau subscript Pada saat memasukkan nilai ke dalam array, sebuah nomor indeks atau subscript telah diberikan kepada tiap anggota array, sehingga program dan programmer dapat mengakses setiap nilai pada array apabila dibutuhkan. Nilai indeks selalu dalam tipe integer dan dimulai dari angka nol sampai dengan ukuranarray-1. Sebagai contoh: //memberikan nilai Cerah kepada elemen pertama array cuaca[0]=Cerah; //mencetak elemen array yang terakhir System.out.print(cuaca[4]);

c. Panjang Array Untuk mengetahui berapa banyak elemen di dalam sebuah array, kamu dapat menggunakan atribut length dari array. Atribut ini akan mengembalikan ukuran dari array itu sendiri. Sebagai contoh: Namaarray.length;

d. Array multidimensi
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 16 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

Diimplementasikan sebagai array yang terletak di dalam array. Array multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array. Sebagai contoh:
//elemen 10 X 20 dari integer array int [][] duaD= new int[10][30]; //elemen 4 x 5 x 8 dari integer int [][][] tigaD= new int[4][5][8]; //elemen 4 baris x 2 kolom dari string String [][] bunga= {{ Mawar, Merah}, {Melati,Putih}, {Anggrek,Ungu}, {Kamboja,Pink} };

2. String Adalah sebuah kelas yang merupakan memiliki nilai berupa gabungan/kumpulan dari beberapa karakter(char) a. Mendeklarasikan String Sama seperti mendeklarasikan tipe data yang lainnya, pendeklarasian String di awali dengan nama kelasnya dan diikuti nama variabelnya,
String namatipedata= ;

b. Panjang String Method ini digunakan untuk mendapatkan informasi panjang/jumlah karakter dari sebuah variabel String.
String contoh=ISMAN; System.out.println(Panjang contoh: +contoh.length());

c. Concatenating String(penjumlahan string) Digunakan untuk menjumlahkan dua buah string atau lebih. String1.concat(string2); Perintah diatas, akan menggabungkan nilai pada String1 dengan nilai pada String2 String juga bias dikonkatenansi dengan operator + seperti ini: Hello, + world + ! Perintah di atas akan menghasilkan: Hello, world! d. Daftar metode-metode di dalam kelas String:

No. Metode 1 2 3 charAt(int index) compareTo(Object o) compareTo(String anotherString)

Nilai Balikan char int int

Deskripsi mengembalikan karakter pada index yang ditentukan membandingkan String dengan object lain membandingkan dua buah string
Revisi: 01 Halaman 17 dari 47

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Laboratorium Rekayasa Perangkat Lunak 4 5 6 7 8 concat(String str) getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) length() toLowerCase() toUpperCase() String void int String String

Modul Pemrograman Berorientasi Objek

menggabungkan string tertentu ke akhir dari sebuah string mengopi karakter dari string ke sebuah array karakter mengembalikan panjang dari String mengubah semua karakter string ke huruf kecil mengubah semua karakter string ke huruf besar

LATIHAN 1. Pendeklarasian array, inisialisasi array dan pengaksesan element array


public class contohArray { public static void main(String [] args){ String []cuaca; cuaca= new String[5]; cuaca[0]="Cerah"; cuaca[1]="Berawan"; System.out.println("Cuaca dihari pertama: "+cuaca[0]); System.out.println("Cuaca dihari kedua: "+cuaca[1]); } }

2. Mendapatkan panjang array

public class panjangArray { public static void main( String[] args ){ int[] ages = new int[100]; for( int i=0; i<ages.length; i++ ){ System.out.print( ages[i] ); } } }

3. Array 2 dimensi

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 18 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

public class array2d { public static void main(String [] args){ String [][]bunga= {{"Mawar","Merah"}, {"Anggrek","Ungu"}, {"Tulip","Kuning"}, {"Kertas","Warna warni"} }; System.out.println(bunga.length); for (int i=0;i<bunga.length;i++){ System.out.println("Bunga "+ bunga[i][0]+" warna: "+bunga[i][1]); } } }

4. Penggunaan String

public class penggunaanString { public static void main(String [] args){ String kalimat="Saya sedang belajar bahasa Java"; System.out.println("Kalimat: "+kalimat); System.out.println("Panjang kalimat: " +kalimat.length()); System.out.println("Huruf besar: "+ kalimat.toUpperCase()); System.out.println("Huruf kecil : "+ kalimat.toLowerCase()); for (int i=0;i<kalimat.length();i++){ System.out.print("Karakter ke "+(i+1)+" : "+ kalimat.charAt(i)+"\t"); if ((i+1) % 2 ==0) System.out.println(); } } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 19 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB IV Pengenalan Pemrograman Berorientasi Objek


TUJUAN PEMBELAJARAN: 1. Mengetahui apa itu PBO. 2. Mengetahui perbedaan kelas dan objek 3. Mengetahui Modifier akses di dalam PBO 4. Mengetahui komponen-komponen kelas 5. Mengetahui apa itu Method secara garis besar 6. Menggunakan kelas Math 1. Pemrograman Berorientasi Objek Pemrograman berorientasi objek(PBO) merupakan paradigma pemrograman yang berorientasikan kepada objek. Pemrograman Beriorientasi Objek atau dalam bahasa kerennya Object Oriented Programming(OOP) berputar pada konsep dari objek yang merupakan elemen dasar Anda. Jika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa objek disekitar kita seperti mobil, singa, manusia dan seterusnya. Objek-objek ini dikarakterisasi oleh attribute dan tingkah lakunya. Sebagai contoh, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. Contoh yang lainnya, objek seekor burung mempunyai atribut warna, paruh, cakar, dan sayap dengan tingkah laku terbang, hinggap, mematuk dan lain sebagainya. 2. Class dan object Kelas adalah stuktur dasar dari PBO. Kelas terdiri dari dua tipe dari anggota dimana disebut dengan attribute(field/properti) dan behavior(method). Attribute merupakan tipe data yang didefinisikan oleh class, sementara behavior merupakan operasi. Sebuah objek adalah sebuah instance(keturunan) dari class. Cara mendeklarasikan kelas(paling sederhana):
class namaKelas{ classBody }

Secara umum, kelas memiliki struktur anatomi sbb:


(modifier1) class namaKelas (modifier2){ classBody }

Modifier1(Optional) Keterangan menyatakan bahwa kelas tersebut dapat juga diakses oleh kelas yang lain, baik yang masih berada dalam package yang sama public maupun berbeda. menyatakan bahwa kelas tersebut tidak dapat diakses sama sekali oleh kelas lain, tanpa memandang apakah ia berasal dari private paket yang sama atau bukan protected membatasi akses kelas yang dilakukan oleh subkelas turunannya (dari proses pewarisan/inheritance) dan kelas lain yang terletak dalam paket yang sama

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 20 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

abstract

final

menyatakan bahwa kelas tersebut tidak dapat diinstasiasi langsung menjadi objek. Modifier ini hanya dipakai bila kelas tersebut terletak pada hirarki kelas tertinggi, sehingga hanya mungkin diturunkan sebagai subkelas, bukan diinstasiasimenjadi objek menyatakan bahwa kelas tersebut tidak dapat diturunkan menjadi subkelas(pewarisan)

Modifier2(Optional) Keterangan extends digunakan dalam prinsip inheritance, yaitu bila kelas tersebut SuperClass merupakan subkelas dari suatu kelas super(SuperClass). digunakan bila kelas tersebut mengimplementasikan satu atau implements lebih interface. Bila terdapat lebih dari satu interface digunakan interfaces koma diantara interface-interface tersebut
Object adalah sebuah komponen perangkat lunak yang strukturnya mirip dengan obyek pada dunia nyata. Setiap obyek dibangun dari sekumpulan data(atribut) yang disebut variabel untuk menjabarkan karakteristik khusus dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari obyek. Bisa dikatakan bahwa objek adalah sebuah perangkat lunak yang berisi sekumpulan variabel dan method yang saling berhubungan. Jadi variabel dan method dalam objek java juga disebut variavel instance dan method instance. Untuk membuat sebuah objek atau sebuah instance pada sebuah class. Kita menggunakan operator new. Bentuk umum instasiasi objek: NamaKelas namaObject= new NamaKelas; //untuk kelas tanpa konstruktor Atau
NamaKelas namaObject= new NamaKelas(argumen1,argumen2,. . .);//untuk

kelas yang memiliki konstruktor

3. Method Apakah method itu? Jika anda bingung method itu sama dengan fungsi pada bahasa C++. Hanya saja di dalam PBO fungsi dinamakan dengan method. Kita dapat mendefinisikan banyak method. Method dibuat untuk mengefisienkan suatu blok statement yang dipanggil berkali-kali sehingga dapat dipergunakan kembali tanpa harus mengetikkan kembali blok statement tersebut. Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau dari method lainnya untuk menjalankan fungsi yang spesifik. Berikut adalah karakteristik dari method: a. Dapat mengembalikan satu nilai atau tidak sama sekali b. Dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama sekali. Parameter bisa juga disebut sebagai argument dari fungsi. c. Setelah method telah selesai dieksekusi, dia akan kembali pada method yang memanggilnya. Memanggil Method Static Method static adalah method yang dapat dipakai tanpa harus menginisialisasi suatu class(maksudnya tanpa menggunakan variabel terlebih dahulu). Contoh method static:
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 21 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

//println di sini merupakan method static yang dapat digunakan langsung tanpa membuat objek dari Kelas Out System.out.println(Halo semuanya); //parseInt merupakan method static int i= Integer.parseInt(10);

Kelas Math Kelas Math merupakan salah satu kelas yang telah disediakan di dalam java sdk. Kelas math memiliki method static yang siap untuk digunakan. Method-method tersebut adalah: a. Method trigonometri sin(sudut radian), cos(sudut radian), tan(sudut radian), asin(sudut radian), acos(sudut radian), atan(sudut radian) b. Method pembulatan abs(), ceil(), floor() c. Method max dan minmax(a,b),min(a,b) Method ini akan mengembalikan nilai yang terbesar dari antara dua bilangan d. Method perpangkatan, akar dan exponensial pow perpangkatan bentuk umum : static double pow(double a,double b) exppangkat exponensial bentuk umum: static double exp(double a) sqrtakar pangkat dua bentuk umum: static double sqrt(double b) e. Method random generatorrandom()

LATIHAN 1. Pembuatan kelas dan instasiasi objek serta penggunaan method Contoh 1:
class Mobil{ public String nomorplat="", warna ="", manufaktur=""; public int kecepatan=0; void akselerasi(int a){ for (int i=0;i<5;i++){ kecepatan+=a; System.out.println("Kecepatan pada detik "+(i+1)+" : "+ kecepatan); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 22 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

void belok(String arah){ System.out.println("Mobil belok ke "+arah); } void rem(){ System.out.println("Mobil berhenti berjalan"); } } public class mobilMobilan { public static void main(String [] args){ Mobil Anton= new Mobil(); Anton.nomorplat="BK 1234"; Anton.warna="Pink"; Anton.manufaktur="Mazda"; Anton.kecepatan=60; Anton.akselerasi(5); Anton.belok("kanan"); Anton.belok("kiri"); Anton.rem(); } }

Contoh 2:
class laptop{ public String merek="", tipe="",ukuran="",vga="", ram="", hdd=""; public void keunggulan(String fitur1, String fitur2){ System.out.println("Fitur 1: "+fitur1); System.out.println("Fitur 2: "+fitur2); } public void permainanYangDidukung(String game1, String game2) { System.out.println("Game 1: "+game1); System.out.println("Game 2: "+game2); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 23 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

public class laptoplaptopan { public static void main(String [] args){ laptop Toshiba= new laptop(); Toshiba.merek="Toshiba"; Toshiba.tipe="M645"; Toshiba.ukuran="14 inc"; Toshiba.vga="NVDIA GT330M"; Toshiba.ram="6GB"; Toshiba.hdd="500GB"; System.out.println("Laptop Cokro punya spesifikasi: "); System.out.println(Toshiba.merek+ " "+ Toshiba.tipe+ ", ukuran "+ Toshiba.ukuran); System.out.println("dengan VGA "+Toshiba.vga+", RAM"+ Toshiba.ram+ " serta HDD "+ Toshiba.hdd); Toshiba.keunggulan("HDD Protection", "Face Recognition"); Toshiba.permainanYangDidukung("Prototype 2", "PES 2013"); } }

2. Penggunaan kelas Math yang memiliki method Static

public class Matematika { public static void main(String [] args){ double a=4.23; double b=-9.23; System.out.println("Ceil dari "+a+" = "+Math.ceil(a)); System.out.println("Floor dari "+a+" = "+Math.floor(a)); System.out.println("Ceil dari "+b+" = "+Math.ceil(b)); System.out.println("Floor dari "+b+" = "+Math.floor(b)); a=36; System.out.println("Akar dari "+a+ " = "+Math.sqrt(a)); b=30; System.out.println("Sinus("+b+") = "+Math.sin(b * Math.PI/180)); a=90.3; b=90.6;

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 24 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

System.out.println("Mana yang lebih besar? "+a+" atau "+b+ " ? Jawab: "+Math.max(a, b)); System.out.println("Yang lebih kecil? "+Math.min(a, b)); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 25 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB V Pemrograman Berorientasi Objek Lanjutan


TUJUAN PEMBELAJARAN: 1. Mengetahui 2 jenis method berdasarkan nilai yang dibalikkan. 2. Memahami operator this. 3. Mengetahui dan memahami overloading methods 4. Memahami penggunaan constructor

1. Jenis Method berdasarkan nilai balikan Berdasarkan nilai yang dibalikkan ada dua jenis Method yaitu method void(tidak membalikkan nilai) dan method nonvoid(membalikkan nilai). a. Bentuk umum dari pendeklarasian method: Modifierakses tipenilaibalikan namamethod(argumen1,argumen2,.. argumen_n){ Methodbody; } Khusus untuk modifierakses boleh ada boleh tidak(optional). Contoh pendeklarasian method void: void namamethod(argumen1,argumen2, argument.){ methodbody; }

Contoh pendeklarasian method nonvoid: int namamethod(argumen1,argumen2,..argumen_n){ methodbody; return b; } Perhatikan contoh di atas, method nonvoid di atas memiliki nilai balikan berupa integer. Artinya adalah method main atau method lain yang memanggil method nonvoid tersebut akan menerima nilaibalikan dari method nonvoid tersebut. Ciri khas method nonvoid adalah adanya statement return yang memerintahkan method untuk mengembalikan nilai ke method yang memanggilnya. b. Memanggil method: Untuk memanggil method dapat dilakukan dengan memanggil kelasnya terlebih dahulu baru lalu diikuti tanda dot(.) dan diakhiri dengan nama methodnya. Kelas.namaMethod() Argumen bisa ada bisa juga kosong. Apabila method tidak memiliki argument maka di dalam pemanggilannya cukup dengan Kelas.namaMethod(). Apabila memiliki argument, maka pemanggilannya harus melengkapi argument-argumennya.

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 26 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

2. Keyword this Apabila ditinjau dari kepemilikannya, variabel dapat dibagi menjadi dua yaitu a. variabel kelas dan b. variabel instans. Variabel kelas adalah variabel yang melekat pada kelas dan tidak terpengaruh oleh proses instasiasi, sehingga tidak dapat dimiliki dan diakses oleh object yang diinstans dari kelas tersebut. Sedangkan variabel instans adlah variabel yang dimiliki oleh objek dari proses instansiasi suatu proses. Agar kompiler tahu variabel mana yang dimiliki oleh kelas atau yang dimiliki oleh instans maka digunakanlah keyword this untuk mengakses variabel instans dari masing-masing objek. Perhatikan contoh ini:
public void setAge( int age ){ age = age; //SALAH!!! }

kompiler akan bingung, variabel age yang akan diinisialisai milik siapa? Agar menghilangkan keraguan ini maka digunakan keyword this menjadi:
public void setAge( int age ){ this.age = age; }

3. Overloading Methods Java memperbolehkan dua buah atau lebih method dengan nama yang sama di dalam satu kelas, tetapi jumlah dan tipedata argumennya haruslah berbeda satu dengan yang lainnya. 4. Method constructor Adalah method yang dipanggil pada saat pembentukan objek dan berfungsi untuk memberi nilai inisial pada variabel objek. Hal-hal yang perlu diingat tentang constructor: a. Harus memiliki nama yang sama dengan nama kelas. b. Tidak mengembalikan suatu nilai, namun bukan merupakan method void. c. Satu kelas bisa memiliki lebih dari satu constructor dengan syarat jumlah dan tipe data argumennya berbeda. Hal ini biasa disebut dengan overloading Method constructor d. Dapat dibubuhi modifier akses: public, private,protected. e. Bisa dipanggil oleh constructor lain dalam satu kelas.

LATIHAN 1. Menggunakan method void dan method nonvoid

class perhitungan{ double hasil=0.0; double luasPersegi(double a,double b){ hasil=a*b; return hasil; } void luasPersegi2(double a, double b){ System.out.println("Luas Persegi= "+hasil); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 27 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

public class voidNonvoid { public static void main(String perhitungan persegi= new System.out.println("Luas "+persegi.luasPersegi(10, 8)); persegi.luasPersegi2(10, } }

[] args){ perhitungan(); Persegi= 8);

2. Menggunakan Keyword this

class informasi{ String nama="", alamat=""; int umur=0; void inputbiodata(String nama, String alamat, int umur){ this.nama=nama; this.alamat=alamat; this.umur=umur; } void cetakbiodata(){ System.out.println("Hai, nama saya "+nama); System.out.println("Saya tinggal di "+alamat); System.out.println("Umur saya "+umur+" tahun"); } } public class biodataku { public static void main(String [] args){ informasi aku= new informasi(); aku.inputbiodata("Isman", "Jln. Pijar Podi 3", 19); aku.cetakbiodata(); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 28 dari 47

Laboratorium Rekayasa Perangkat Lunak


3. Overloading Method

Modul Pemrograman Berorientasi Objek

public class overloadMethod { public static void main(String [] args){ overloadMethod contoh= new overloadMethod(); System.out.println(contoh.jumlahbilangan(4, 5)); System.out.println(contoh.jumlahbilangan(4.3, 2.5)); System.out.println(contoh.jumlahbilangan(2.3, 4.1)); System.out.println(contoh.jumlahbilangan(8, 4.5)); } public int jumlahbilangan(int a,int b){ return a+b; } public double jumlahbilangan(double a, double b){ return a+b; } }

4. Method Constructor dan Overloading Constructor

public class double double public

methodKonstruktor { jari=0.0; luas=0.0; static void main(String [] args){ methodKonstruktor lingkaran1= new methodKonstruktor(7); lingkaran1.htngLnK(); methodKonstruktor lingkaran2= new methodKonstruktor();

} public methodKonstruktor(){ System.out.println("konstruktor ini dipanggil ketika argumen konstruktor kosong"); } public methodKonstruktor(double jari){ this.jari=jari; } public void htngLnK(){ System.out.println("Luas lingkaran: "+(Math.PI * Math.pow(jari, 2))); System.out.println("Keliling lingkaran : "+(2* Math.PI * jari)); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 29 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB VI Tiga Pilar PBO


TUJUAN PEMBELAJARAN: 1. Memahami penerapan inheritance 2. Memahami penerapan encapsulation 3. Memahami penerapan polymorphisme

1. Inheritance Inheritance adalah proses pewarisan data dan method dari suatu kelas kepada kelas yang lain. Pewarisan ini bersifat menyeluruh, sehingga semua data dan method yang dimiliki oleh kelas asalnya akan diturunkan kepada kelas baru. Kelas yang mewariskan disebut Kelas Super(Super Class), sedangkan kelas yang diwariskan disebut SubKelas( Sub Class) Overriding Data dan Method Adalah kemampuan suatu subkelas untuk memodifikasi data dan method dari kelas induknya. Overriding disebut juga redefinisi data dan method. Proses ini akan mengubah data dan method dari keduanya,kelas anak dan induknya.

Keyword extends Di dalam bab sebelumnya ada dijelaskan tentang bentuk umum pendeklarasian class. Maka di dalam inheritance, modifiers2 diganti dengan keyword extends yang menyatakan bahwa kelas tersebut merupakan perluasan dari kelas induknya. Keyword Super Keyword ini digunakan oleh kelas anak untuk mengakses konstruktor atau method dari kelas induk. a. Keyword super untuk memanggil konstruktor kelas super Bentuk umum:
super()

atau
super(parameter)

Java tidak mengizinkan kelas anak memanggil nama konstruktor dari kelas induk secara langsung. Ibaratkan seorang anak tidak boleh memanggil orangtuanya dengan menggunakan namanya. Maka keyword superlah yang digunakan untuk memanggil konstruktor dari Kelas Super. b. Keyword super untuk memanggil method kelas super Bentuk umum: super.method(parameter) 2. Encapsulation Adalah cara bagaimana anda membungkus data dan method yang menyusun kelas sehingga kelas dapat dipandang sebagai suatu modul dan menyembunyikannya dari dunia luar. Prinsip enkapsulasi: a. Bersifat independen Suatu modul (Super Class) tidak akan terikat pada bagian tertentu dari program yang menggunakan method dari kelas tersebut. b. Bersifat transparan
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 30 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

Jika kita memodifikasi suatu modul, maka akan berdampak pada bagian program yang menggunakan modul tersebut. c. Menghindari efek yang di luar perencanaan Dengan enkapsulasi, modul dasar tidak akan terganggu oleh perubahan/modifikasi dari program yang menggunakannya. Sebenarnya enkapsulasi telah kita implementasikan sebelumnya. Pembuatan kelas merupakan salah satu contoh enkapsulasi.

3. Polymorphisme Adalah modul yang memiliki nama sama, tapi memiliki behavior(tingkah laku) yang berbeda sehingga listing code implementasinya berbeda.

LATIHAN 1. Penerapan Inheritance


class KelasInduk{ public KelasInduk(){ System.out.println("Ini adalah konstruktor dari kelas induk"); } public void MethodInduk(){ System.out.println("Method ini dimiliki oleh kelas induk"); } public void inimaudimodif(){ System.out.println("Di induk aku keren :D"); } } class KelasAnak extends KelasInduk{ public KelasAnak(){ super(); } public void methodAnak(){ super.MethodInduk(); } public void inimaudimodif(){ System.out.println("Di anak knp aku jelek? :("); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 31 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

public class contohInheritance { public static void main(String [] args){ KelasAnak Satu= new KelasAnak(); Satu.methodAnak(); Satu.inimaudimodif(); } }

2. Penerapan enkapsulasi

import java.text.DecimalFormat; class HitungGaji{ private double gajiKotor, gajiSetelahPajak; public double gajibersih; private double potongan=75000.00; public void setGaji(double gaji){ gajiKotor=gaji; } public void hitungGaji(){ gajiSetelahPajak=gajiKotor - (0.2 * gajiKotor); gajibersih=gajiSetelahPajak - potongan; } public double getgajikotor(){ return gajiKotor; } public double getgajibersih(){ return gajibersih; } } public class contohEnkapsulasi { public static void main(String [] args){ DecimalFormat digit= new DecimalFormat("0.00"); HitungGaji Budi= new HitungGaji(); Budi.setGaji(3000000); Budi.hitungGaji(); System.out.println("Informasi gaji karyawan: "); System.out.println("Besar gaji kotor: "+digit.format(Budi.getgajikotor())); System.out.println("Besar gaji bersih: "+digit.format(Budi.getgajibersih())); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 32 dari 47

Laboratorium Rekayasa Perangkat Lunak


3. Penerapan polymorfisme

Modul Pemrograman Berorientasi Objek

class rautMuka{ public String Respons(){ return ("Lihat reaksi wajah saya \n"); } } class Gembira extends rautMuka{ public String Respons(){ return("ha ha... hi.. hi.. saya sedang gembiara \n"); } } class Sedih extends rautMuka{ public String Respons(){ return("Hik.. hik.. teganya dia berbuat itu.. \n"); } } class Marah extends rautMuka{ public String Respons(){ return("Hei!! Jangan dekati saya!\n"); } } public class contohpolimorfis { public static void main(String [] args){ System.out.println("Contoh Polimorfisme"); rautMuka objRaut= new rautMuka(); Gembira objGembira= new Gembira(); Sedih objSedih= new Sedih(); Marah objMarah= new Marah(); rautMuka []ekspresi= new rautMuka[4]; ekspresi[0]=objRaut; ekspresi[1]=objGembira; ekspresi[2]=objSedih; ekspresi[3]=objMarah; for(int i=0;i<4;i++){ System.out.println("Ekspresi ["+i+"] = "+ekspresi[i].Respons()); } } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 33 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB VII KELAS-KELAS DI DALAM PBO dan EXCEPTION HANDLING


TUJUAN PEMBELAJARAN: 1. Mengetahui penggunaan kelas Inner 2. Mengetahui penggunaan Kelas Abstrak 3. Mengetahui penggunaan kelas Interface 4. Mengetahui jenis-jenis Eksepsi 5. Mengetahui cara menangani eksepsi

1. Kelas Inner Inner class adalah kelas yang disisipkan di dalam kelas yang lain. Fungsi dari kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Bentuk umum pembentukan objek kelas inner: KelasSuper objekKelasSuper= new KelasSuper(); KelasSuper.KelasInner objekKelasInner = objekKelasSuper.new KelasInner(); 2. Kelas abstrak Kelas abstrak merupakan hirearki tertinggi dari suatu kelas. Kelas ini berisi variabel-variabel umum dan deskripsi method tanpa disertai implementasi. Kelas ini merupakan basis dari penurunan kelaskelas lainnya, sehingga tidak dapat diinstans secara langsung menjadi objek. Kelas-kelas turunan itulah uang mendefinisikan method secara detail. Bentuk umum: (modifier) abstract class NamaKelasAbstract{ Deklarasi variabel secara umum Deklarasi method secara umum tanpa implementasi }

3. Kelas interface, Kelas Interface adalah deklarasi yang mirip dengan kelas, namun hanya memuat konstanta dan struktur method tanpa detail implementasinya. Sebuah antarmuka(interface) tidak dapat diinstan menjadi objek, antarmuka hanya bisa diimplementasikan oleh sebuah kelas atau diperluas oleh antarmuka lain. Bentuk umum: (modifier) interface namaInterface{ Deklarasi konstanta Deklarasi method } Untuk kelas yang menggunakan interface maka harus membubuhi keyword implements pada modifier2-nya.

Sekilas jika dilihat dari bentuk umumnya, abstrak dan interface memang sama tetapi keduanya sangatlah berbeda. Perhatikan table berikut:

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 34 dari 47

Laboratorium Rekayasa Perangkat Lunak Sisi perbedaan Deklarasi variabel Deklarasi Method Antarmuka hanya berupa konstanta Berupa method abstrak/signature method

Modul Pemrograman Berorientasi Objek

Definisi

Kumpulan konstanta dan method yang diterapkan pada aplikasi tertentu

Kandungan Informasi Instasiasi

mendefinisikan signature dari method tidak dapat diinstan menjadi objek

Kelas Abstrak semua jenis variabel dapat berupa signature method dan implementasi method kelas abstrak merupakan pemodelan dari objek mendefinisikan variabel dan method secar detail dan konkret bisa diinstan menjadi objek

4. Eksepsi Exception adalah suatu peristiwa pengecualian yang terjadi sepanjang program dieksekusi. Peristiwa itu menggangu jalannya program secara normal. Secara umum, kesalahan pada program dapat dibagi menjadi tiga kategori, yaitu: - Error kompilasi Error ini terjadi saat anda melakukan kompilasi program untuk mendapatkan file bytecode (*.class). kesalahan yang terjadi pada tingkat ini adalah kesalahan penulisan perintah. Error runtime Program akan dapat dieksekusi setelah program tersebut bebas dari kesalahan sintaks yang ditandai dengan tidak adanya kesalahan pada saat kompilasi. Setelah program dijalankan oleh interpreter kadang dijumpai kesalahan yang ditampilkan pada konsol. Kesalahan ini disebut exception runtime. Error logika Error logika tidak mengganggu berjalannya program, akan tetapi mengganggu kebenaran sebuah data. Misalnya sebuah data real disimpan dalam sebuah variabel integer.

Kelas exception Dalam penanganan error pada program Java terdapat 2 kelas untuk menangkap kesalahan yaitu kelas error dan kelas exception - Kelas Error Digunakan untuk menangkap kesalahan internal yang terjadi pada sistem Java. Error yang ditangkap biasanya bersifat fatal dan jarang terjadi serta tidak dapat diperbaiki. Contoh kesalahan: o virtual machine error o LinkageError o AWTError Kelas Exception
Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 35 dari 47

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

Kelas ini digunakan untuk menangkap kesalahan yang terjadi pada program pada saat dijalankan. Daftar kelasnya dapat dilihat pada lembar lampiran.

Mengantisipasi Exception Untuk menangani exception yang pertama adalah mendeklarasikan exception, melemparkan exception, menangkap exception dan menampilkan pesan exception tersebut. a. Mendeklarasikan exception Pendeklarasian exception dilakukan pada method, ini dikarenakan blok methodlah yang mengandung statement perintah yang mungkin terjadi kesalahan Bentuk umum: Modifier1 tipebalikan namaMethod() throws exception1, exception2

b. Melemparkan exception Langkah kedua adalah membuat objek exception dan melemparkan kondisi exception tersebut ke method yang didefinisikan untuk mendefinisikan kondisi yang terjadi bila menerima exception tersebut. Bentuk: tipeException exception= new tipeException(); atau throw exception tipeException(); c. Menangkap exception Langkah yang terakhir adalah menangkap exception dan memprosesnya. Untuk menangkap blok exception, anda membutuhkan blok try-catch-finally. Keyword finally digunakan untuk menangkap exception yang tidak didefinisikan pada blok catch, sehingga fungsinya sama dengan blok default pada switch-case. Bentuk: try{ //statement yang berpotensi menjadi kesalahan } catch(Exception1){ //blok memproses ioEx1 } Catch(Exception2){ //blok memproses ioEx2 } finally{ //blok default yang dieksekusi } Untuk menampilkan pesan exception ditampilkan dengan menggunakan method-method dari kelas Throwable. Seperti getMessage(), toString(), getLocalizedMessage(), printStackTrace() LATIHAN

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 36 dari 47

Laboratorium Rekayasa Perangkat Lunak


1. Kelas Innner

Modul Pemrograman Berorientasi Objek

public class KelasInner { class kucing{ public String suara(){ String suara= new String("Meoo..ng"); return suara; } } class kambing{ public String suara(){ String suara= new String("Em.bikk.."); return suara; } } class anjing{ public String suara(){ String suara= new String("Guk..guk.."); return suara; } } public static void main(String [] args){ KelasInner Hewan= new KelasInner(); KelasInner.kucing A= Hewan.new kucing(); KelasInner.kambing B= Hewan.new kambing(); KelasInner.anjing C= Hewan.new anjing(); System.out.println(Suara kucing +A.suara()); System.out.println(Suara kambing +A.suara()); System.out.println(Suara anjing +A.suara()); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 37 dari 47

Laboratorium Rekayasa Perangkat Lunak


2. Kelas abstract dan Kelas Interface

Modul Pemrograman Berorientasi Objek

abstract class fakul{ public String nama_fakul; public int jlh_prodi; public fakul(String nama_fakul, int jlh_prodi){ this.nama_fakul=nama_fakul; this.jlh_prodi=jlh_prodi; } public abstract void jenisprodi(); } interface thnfak{ public void tahun(int thn); public void skill(); } class USU extends fakul implements thnfak{ int thn; String [] prodi=new String[jlh_prodi]; public USU(String nama_fakul, int jlh_prodi) { super(nama_fakul, jlh_prodi); } @Override public void jenisprodi(){ prodi[0]="Ilmu Komputer"; prodi[1]="Teknologi Informasi"; prodi[2]="D3 Ilkom"; for(int i=0;i<jlh_prodi;i++){ System.out.println("Prodi "+(i+1)+" : "+prodi[i]); } } @Override public void skill(){ System.out.println("System Analyst"); System.out.println("System Support"); System.out.println("Database Administrator"); System.out.println("Programmer"); } @Override public void tahun(int thn) { this.thn=thn; } } public class abstractInterface{ public static void main(String[] args){ USU Medan=new USU("FASILKOMTI",3); Medan.tahun(2010); System.out.println("Fakultas "+Medan.nama_fakul); System.out.println("Berdiri tahun "+Medan.thn); Medan.jenisprodi(); System.out.println("Keahlian dari mahasiswa fakultas "+Medan.nama_fakul); Medan.skill(); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 38 dari 47

Laboratorium Rekayasa Perangkat Lunak


3. Exception

Modul Pemrograman Berorientasi Objek

public class Eksepsi { public static void main(String [] args){ try{ methodException(); } catch(Exception e){ System.out.println("Exception Main"); } methodNonException(); } private static void methodNonException(){ try{ System.out.println("Exception methodNonException"); } catch(Exception e){ System.err.println(e.toString()); } finally{ System.err.println("Finally methodNonException"); } System.out.println("Method non Exception selesai"); } private static void methodException() throws Exception{ try{ System.out.println("??Method dengan Exception"); throw new Exception(); } catch(Exception e){ System.err.println("Exception MethodException"); throw e; } finally{ System.err.println("Finally MethodException"); } } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 39 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

BAB VIII THREADS


TUJUAN PEMBELAJARAN:
1. 2. 3. 4. Mengetahui apa itu threads. Mengerti perbedaan state dalam threads. Bisa membuat sendiri Sebuah thread Mengetahui method di dalam class Thread

1. Definisi Thread

Sebuah thread merupakan sebuah pengontrol aliran program. Untuk lebih mudahnya, bayangkanlah thread sebagai sebuah proses yang akan dieksekusi di dalam sebuah program tertentu. Penggunaan sistem operasi modern saat ini telah mendukung kemampuan untuk menjalankan beberapa program. Misalnya, pada saat anda mengetik sebuah dokumen di komputer anda dengan menggunakan text editor, dalam waktu yang bersamaan anda juga dapat mendengarkan musik dan surfing lewat internet di Komputer anda.
2. State dari thread

Sebuah thread memungkinkan untuk memiliki beberapa state:


a. Running Sebuah thread yang pada saat ini sedang dieksekusi dan di dalam control dari CPU. b. Ready to run Thread yang sudah siap untuk dieksekusi, tetapi masih belum ada kesempatan untuk melakukannya. c. Resumed Setelah sebelumnya di block atau diberhentikan sementara, state ini kemudian siap untuk dijalankan. d. Suspended Sebuah thread yang berhenti sementara, dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja. e. Blocked Sebuah thread yang di-block merupakan sebuah thread yang tidak mampu berjalan, karena ia akan menunggu sebuah resource tersedia atau sebuah event terjadi.

3. Class Thread

Thread memiliki beberapa constructor


a. Thread() Membuat sebuah object Thread yang baru b. Thread(String name) Membuat sebuah object thread dengan memberikan penamaan yang spesifik. c. Thread(Runnable target)
No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL Berlaku Efektif: 5 Maret 2012 Revisi: 01 Halaman 40 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

Membuat sebuah object Thread yang baru berdasar pada object Runnable. Target menyatakan sebuah object dimana method Run dipanggil. d. Thread(Runnable target, String name) Membuat sebuah object Thread yang baru dengan nama yang spesifik dan berdasarkan pada object Runnable.

Beberapa Method di dalam Thread:


a. public static Thread currentThread() nengembalikan sebuah reference kepada thread yang sedang berjalan b. public final String getName() Mengembalikan nama dari thread c. public final void setName(String name) mengulang pemberian nama thread d. public final int getPriority() Mengembalikan nilai prioritas yang telah diberikan kepada Thread tersebut. e. public final Boolean isAlive() menunjukkan bahwa thread tersebut sedang berjalan atau tidak. f. public final void join([long millis, [int nanos]]) sebuah overloading method. Sebuah thread yang sedang berjalan, harus menunggu sampai thread tersebut selesai atau waktu yang telah ditentukan telah habis. g. public static void sleep(long millis) menunda thread dalam jangka waktu milis. Hal ini dapat menyebabkan interrupted Exception h. public void run() eksekusi thread dimulai dari method ini. i. public void start() menyebabkan eksekusi dari thread berlangsung dengan cara memanggil method run

Membuat Threads Sebuah thread dapat diciptakan dengan: a. Menurunkan (extend) class Thread atau b. Mengimplementasikan interface Runnable.

Sinkronisasi

Di dalam situasi-situasi tertentu, bagaimanapun sebuah thread yang berjalan bersama-sama kadang-kadang membutuhkan resource atau method dari luar. Oleh karena itu, mereka butuh untuk berkomunikasi satu dengan yang lain sehingga dapat mengetahui status dan aktifitas mereka. Contohnya adalah pada permasalahan produsen-konsumen. Kasus ini membutuhkan dua object utama yaitu produsen dan konsumen. Kewajiban yang dimiliki oleh produsen adalah untuk membangkitkan nilai atau stream data yang diinginkan oleh konsumen.

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 41 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

LATIHAN 1. Membuat Threads dengan menurunkan class Thread


class PrintNameThread extends Thread{ PrintNameThread(String name){ super(name); start(); } public void run(){ String name= getName(); for(int i=0;i<100;i++){ System.out.print(name); } } } public class cobaThread { public static void main(String [] args){ PrintNameThread pnt1= new PrintNameThread("A"); PrintNameThread pnt2= new PrintNameThread("B"); PrintNameThread pnt3= new PrintNameThread("C"); PrintNameThread pnt4= new PrintNameThread("D"); PrintNameThread pnt5= new PrintNameThread("E"); } }

2. Membuat threads dengan mengimplementasikan interface runnable

class PrintNameThread2 implements Runnable { Thread thread; PrintNameThread2(String name) { thread = new Thread(this, name); thread.start(); } public void run() { String name = thread.getName(); for (int i = 0; i < 100; i++) { System.out.print(name); } } } public class cobaThread2 { public static void main(String args[]) { new PrintNameThread("A"); new PrintNameThread("B"); new PrintNameThread("C"); new PrintNameThread("D"); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 42 dari 47

Laboratorium Rekayasa Perangkat Lunak


3. Penggunaan Method Join

Modul Pemrograman Berorientasi Objek

class PrintNameThread implements Runnable { Thread thread; PrintNameThread(String name) { thread = new Thread(this, name); thread.start(); } public void run() { String name = thread.getName(); for (int i = 0; i < 100; i++) { System.out.print(name); } } } public class kll { public static void main(String args[]) { PrintNameThread pnt1 = new PrintNameThread("A"); PrintNameThread pnt2 = new PrintNameThread("B"); PrintNameThread pnt3 = new PrintNameThread("C"); PrintNameThread pnt4 = new PrintNameThread("D"); System.out.println("Running threads..."); try { pnt1.thread.join(); pnt2.thread.join(); pnt3.thread.join(); pnt4.thread.join(); } catch (InterruptedException ie) { } System.out.println("Threads killed."); //dicetak terakhir } }

4. Menampilkan String tanpa sinkronisasi


class TwoStrings { static void print(String str1, String str2) { System.out.print(str1); try { Thread.sleep(500); } catch (InterruptedException ie) { } System.out.println(str2); } } class PrintStringsThread implements Runnable { Thread thread; String str1, str2; PrintStringsThread(String str1, String str2) { this.str1 = str1; this.str2 = str2; thread = new Thread(this); thread.start();

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 43 dari 47

Laboratorium Rekayasa Perangkat Lunak

Modul Pemrograman Berorientasi Objek

} public void run() { TwoStrings.print(str1, str2); } } public class cetakStringtanpasinkro { public static void main(String args[]) { new PrintStringsThread("Hello ", "there."); new PrintStringsThread("How are ", "you?"); new PrintStringsThread("Thank you ", "very much!"); } }

5. Menampilkan String dengan sinkronisasi pertama

class TwoStrings2 { synchronized static void print(String str1, String str2) { System.out.print(str1); try { Thread.sleep(500); } catch (InterruptedException ie) { } System.out.println(str2); } } class PrintStringsThread2 implements Runnable { Thread thread; String str1, str2; PrintStringsThread2(String str1, String str2) { this.str1 = str1; this.str2 = str2; thread = new Thread(this); thread.start(); } public void run() { TwoStrings.print(str1, str2); } } public class cetakStringdengansinkro1 { public static void main(String args[]) { new PrintStringsThread("Hello ", "there."); new PrintStringsThread("How are ", "you?"); new PrintStringsThread("Thank you ", "very much!"); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 44 dari 47

Laboratorium Rekayasa Perangkat Lunak


6. Menampilkan String dengan sinkronisasi Kedua

Modul Pemrograman Berorientasi Objek

class TwoStrings3 { static void print(String str1, String str2) { System.out.print(str1); try { Thread.sleep(500); } catch (InterruptedException ie) { } System.out.println(str2); } } class PrintStringsThread3 implements Runnable { Thread thread; String str1, str2; TwoStrings3 ts; PrintStringsThread3(String str1, String str2, TwoStrings3 ts) { this.str1 = str1; this.str2 = str2; this.ts = ts; thread = new Thread(this); thread.start(); } public void run() { synchronized (ts) { ts.print(str1, str2); } } } public class StringSinkron2 { public static void main(String args[]) { TwoStrings3 ts = new TwoStrings3(); new PrintStringsThread3("Hello ", "there.", ts); new PrintStringsThread3("How are ", "you?", ts); new PrintStringsThread3("Thank you ", "very much!", ts); } }

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 45 dari 47

Laboratorium Rekayasa Perangkat Lunak LAMPIRAN Daftar Kelas Exception Exception

Modul Pemrograman Berorientasi Objek

Keterangan Dilemparkan ketika kondisi exception aritmatika terjadi. ArithmeticException Misal pembagian bilangan dengan nol (0). ArrayIndexOutBoundsException Dilemparkan ketika mengakses array yang melebihi indeks Dilemparkan untuk mengindikasikan bahwa array telah ArrayStoreException berusaha menyimpan tipe data yang salah. Dilemparkan untuk mengindikasikan bahwa kode berusaha mengubah(cast) objek subkelas yang bukan merupakan ClassCastException instans darinya. Dilemparkan ketika aplikasi mencoba memanggil kelas, namun kelas itu tidak ada. Seperti pada penggunaan ClassNotFoundException method forName pada kelas Class. Dipanggil untuk mengindikasikan bahwa clone pada kelas Object telah dipanggil, namun tidak menggunakan CloneNotSupportedException antarmuka Cloneable. Kelas Exception dan turunannya adalah bentuk Throwable yang mengindikasikan bahwa code membutuhkan blok Exception Catch. Dilemparkan saat mengakses konstanta, variable, method pada suatu kelas, namun konstanta, variable, dan method IllegalAccessException tersebut tidak ada. Dilemparkan untuk mengindikasikan bahwa thread tidak IllegalThreadStateException sesuai untuk dioperasikan. Dilemparkan untuk mengindakasikan bahwa indeks dari sebuah sort,(array, string atau vektor) keluar dari IndexOutOfBoundsException batasan(range). Dilemparkan ketika ada I/O eror, seperti gagal menemukan data dan membuka file, memasukkan input yang tidak IOException benar dan lainnya. NoSuchMethodException Dilemparkan ketika bagian method tidak ditemukan Dilemparkan ketika aplikasi mencoba menggunakan nilai NullPointerException null pada suatu kasus, di mana sebuah objek nilai dibutukan. Dilemparkan untuk mengindikasikan bahwa String tidak NumberFormatException dapat diubah ke dalam tipe numerik. Merupakan kelas super dari exception yang dapat dilemparkan ke Java Virtual Machine(JVM), selama proses RuntimeException program berjalan normal. Dilemparkan oleh kelas String yang menyatakan string yang StringIndexOutOfBoundsException dimasukkan keluar dari ukuran String. Dilemparkan ketika mencoba membuat instans dari kelas dengan method newInstance, namun kelas tersebut tidak InstatiationException dapat diinstan.

No. Dokumen: IK-GKM-ILK-FMIPA-003-RPL

Berlaku Efektif: 5 Maret 2012

Revisi: 01

Halaman 46 dari 47

Anda mungkin juga menyukai