MODUL PBO 2012-2013

56
MODUL PRAKTIKUM No. Dokumen : IK-GKM-ILK-FMIPA-003-RPL Edisi : 01 Revisi : 01 Berlaku Efektif : 5 Maret 2012 Halaman : 0 dari ii KATA PENGANTAR............................................... i DAFTAR ISI.................................................. ii PERTEMUAN I Dasar pemrograman java i 1 PERTEMUAN II DASAR PEMROGRAMAN JAVA II.......................8 PERTEMUAN III ARRAY DAN STRING LANJUTAN.....................16 PERTEMUAN IV PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK......20 PERTEMUAN V PEMROGRAMAN BERORIENTASI OBJEK LANJUTAN.........26 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 MODUL PRAKTIKUM No. Dokumen : IK-GKM-ILK-FMIPA-003-PBO Edisi : 01 Revisi : 01 Berlaku Efektif : 5 Maret 2012 Halaman : ii dari ii

Transcript of MODUL PBO 2012-2013

Page 1: MODUL PBO 2012-2013

MODUL PRAKTIKUM

No. Dokumen : IK-GKM-ILK-FMIPA-003-RPLEdisi : 01Revisi : 01Berlaku Efektif : 5 Maret 2012Halaman : 0 dari ii

KATA PENGANTAR............................................................................................................... i

DAFTAR ISI............................................................................................................................ ii

PERTEMUAN I Dasar pemrograman java i 1

PERTEMUAN II DASAR PEMROGRAMAN JAVA II......................................................8

PERTEMUAN III ARRAY DAN STRING LANJUTAN...................................................16

PERTEMUAN IV PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK......20

PERTEMUAN V PEMROGRAMAN BERORIENTASI OBJEK LANJUTAN..............26

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

MODUL PRAKTIKUM

No. Dokumen : IK-GKM-ILK-FMIPA-003-PBOEdisi : 01Revisi : 01Berlaku Efektif : 5 Maret 2012Halaman : ii dari ii

DAFTAR ISI

Page 2: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

BAB IDasar Pemrograman Java I

TUJUAN PEMBELAJARAN:1. Mengetahui struktur dasar bahasa Java2. 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 JavaPada 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){

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

}

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

Page 3: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

2. Variabel dan tipe data2.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 dataBerdasarkan 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 & longMerupakan tipe data bilangan bulat.Name or Type Integer Length Range8 bits byte −27 ¿27−116 bits short −215 ¿215−132 bits int −231¿231−164 bits long −263 ¿263−1

4. Floating point – float dan doubleFloating point berguna untuk menyimpan bilangan desimal.Nama atau tipe Panjang Float Rangefloat 32 bits −231¿231−1double 64 bits −263 ¿263−1

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

Page 4: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

b. Tipe data referensiVariabel 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. Operator3.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 decrementOperator 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 relasiBerfungsi 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 logikaTerdapat 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

Page 5: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

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: exp3Dimana 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.

LATIHAN1. Mendeklarasikan variabel, menginisialisasi variabel dan menampilkan data variabel:

2. Penggunaan operator Aritmatika

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

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);

}}

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));

Page 6: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

3. Penggunaan operator relasi

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

//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 penggabunganSystem.out.println(“Mixing tipes… “);System.out.println(“ j + y = “ + (j + y));System.out.println(“ i + x = “ + (I + x));

}}

Page 7: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

4. Penggunaan Operator logika dan Boolean AND

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

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 }

}

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);

}}

Page 8: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

5. Penggunaan operator logika dan Boolean OR

6. Penggunaan operator booleanLogika eksklusive OR

7. Penggunaan operator logika NOT

8. Penggunaan operator kondisi (?:)

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

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);

}}

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);

}}

public class TestNOT{ public static void main( String[] args ){

boolean val1 = true; boolean val2 = false; System.out.println(!val1);System.out.pritnln(!val2);

}}

Page 9: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

BAB IIDasar Pemrograman Java II

TUJUAN PEMBELAJARAN:1. Mengetahui cara mendapatkan input dari keyboard2. Mengetahui struktur kontrol pemilihan di Java.3. Mengetahui struktur kontrol perulangan di Java4. Mengetahui Pernyataan Percabangan

1. Mendapatkan Input dari keyboardPada 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”);}

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

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 );

} }

Page 10: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

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 ifPernyataan 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;

atauif(Boolean_expression){

statement1;statement2;…

}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-elseif(Boolean_expression)

statement;else

statement;

atauif(Boolean_expression){

statement1;statementn;…

}else{

Statement1;Statementn;

}

c. Statement if-else-ifPernyataan 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.

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

Page 11: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

Bentuk umum statement if-else-ifif(Boolean_expression)

statement1;else if(Boolean_expression2)

statement2;else

statement3;

d. Statement switchCara 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 perulanganStruktur 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 whileHampir 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;

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

Page 12: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

…} while(boolean_expression);

c. For loopsPernyataan 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 PercabanganDengan pernyataan percabangan, kita diizinkan untuk mengatur alur eksekusi program. Ada 3 bentuk pernyataan percabangan di dalam java: break, continue dan return.

a. BreakAda dua bentuk: tidak berlabel(unlabeled) dan berlabel(labeled)Pernyataan break tidak berlabeldigunakan 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 berlabelmenghentikan pernyataan diluarnya, dimanan sebelumnya harus diberikan label yang sudah dispesifikasikan pada pernyataan break.

b. Pernyataan ContinueMemiliki dua bentuk: berlabel dan tidak berlabel. Pernyataan continue tidak berlabelakan melewati bagian pernyataan setelah pernyataan ini dituliskan dan memeriksa ekspresi logika yang mengontrol pengulangan. Jika masih bernilai true, maka pengulangan tetap dilanjutkan.

Pernyataan continue berlabelmelanjutkan pengulangan yang sedang terjadi dan dilanjuti ke pengulangan berikutnya dari pengulangan yang diberi label.

c. Pernyataan returnDigunakan untuk keluar dari sebuah method. Pernyataan return memiliki dua bentuk: memberikan sebuah nilai dan tidak memberikan nilai.

LATIHAN1. Menerima input dengan kelas bufferedReader dan Scanner;

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

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: ");

Page 13: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

2. Menggunakan statement if

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

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: ");

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");

}

}

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."); }

Page 14: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

3. Menggunakan statement switch

4. Menggunakan while loop

5. Menggunakan do while loop

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

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;

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

} }

}

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");

}}

}

}

Page 15: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

6. Menggunakan For-loop

7. Menggunakan break tanpa label

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

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);

}

}

public class forLoop {public static void main(String [] args){

for(int i=0;i<6;i++){System.out.println("Angka "+i);

}}

}

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." ); }

}}

Page 16: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

8. Menggunakan break berlabel

9. Menggunakan continue tidak berlabel

10. Menggunakan continue berlabel

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

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!" );

}}

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");

}}

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

} }

}

Page 17: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

BAB IIIArray dan String Lanjutan

TUJUAN PEMBELAJARAN:1. Mengetahui penggunaan Array2. 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 arrayUntuk mengakses sebuah elemen dalam array, atau mengakses sebagian dari array, kamu harus menggunakan sebuah angka atau yang disebut sebagai indeks atau subscript

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

Page 18: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

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 arraycuaca[0]=”Cerah”;

//mencetak elemen array yang terakhirSystem.out.print(cuaca[4]);

c. Panjang ArrayUntuk 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 multidimensiDiimplementasikan 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 arrayint [][] duaD= new int[10][30];

//elemen 4 x 5 x 8 dari integerint [][][] tigaD= new int[4][5][8];

//elemen 4 baris x 2 kolom dari stringString [][] 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 StringSama seperti mendeklarasikan tipe data yang lainnya, pendeklarasian String di awali dengan nama kelasnya dan diikuti nama variabelnya,String namatipedata= “”;

b. Panjang StringMethod 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.

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

Page 19: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

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

Nilai Balikan Deskripsi

1 charAt(int index) char mengembalikan karakter pada index yang ditentukan

2 compareTo(Object o) int membandingkan String dengan object lain

3 compareTo(String anotherString)

int membandingkan dua buah string

4 concat(String str) String menggabungkan string tertentu ke akhir dari sebuah string

5 getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

void mengopi karakter dari string ke sebuah array karakter

6 length() int mengembalikan panjang dari String

7 toLowerCase() String mengubah semua karakter string ke huruf kecil

8 toUpperCase() String mengubah semua karakter string ke huruf besar

LATIHAN1. Pendeklarasian array, inisialisasi array dan pengaksesan element array

2. Mendapatkan panjang array

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

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]);}

}

public class panjangArray { public static void main( String[] args ){

int[] ages = new int[100]; for( int i=0; i<ages.length; i++ ){

Page 20: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

3. Array 2 dimensi

4. Penggunaan String

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

public class panjangArray { public static void main( String[] args ){

int[] ages = new int[100]; for( int i=0; i<ages.length; i++ ){

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]);

}}

}

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();}

}

}

Page 21: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

BAB IVPengenalan Pemrograman Berorientasi Objek

TUJUAN PEMBELAJARAN:1. Mengetahui apa itu PBO.2. Mengetahui perbedaan kelas dan objek3. Mengetahui Modifier akses di dalam PBO4. Mengetahui komponen-komponen kelas5. Mengetahui apa itu Method secara garis besar6. Menggunakan kelas Math

1. Pemrograman Berorientasi ObjekPemrograman 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 objectKelas 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

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

Page 22: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

publicmenyatakan bahwa kelas tersebut dapat juga diakses oleh kelas yang lain, baik yang masih berada dalam package yang sama maupun berbeda.

privatemenyatakan bahwa kelas tersebut tidak dapat diakses sama sekali oleh kelas lain, tanpa memandang apakah ia berasal dari paket yang sama atau bukan

protectedmembatasi akses kelas yang dilakukan oleh subkelas turunannya (dari proses pewarisan/inheritance) dan kelas lain yang terletak dalam paket yang sama

abstract

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

final menyatakan bahwa kelas tersebut tidak dapat diturunkan menjadi subkelas(pewarisan)

Modifier2(Optional) Keterangan

extends SuperClass

digunakan dalam prinsip inheritance, yaitu bila kelas tersebut merupakan subkelas dari suatu kelas super(SuperClass).

implements interfaces

digunakan bila kelas tersebut mengimplementasikan satu atau lebih interface. Bila terdapat lebih dari satu interface digunakan 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. MethodApakah 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.

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

Page 23: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

Berikut adalah karakteristik dari method:a. Dapat mengembalikan satu nilai atau tidak sama sekalib. 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 StaticMethod static adalah method yang dapat dipakai tanpa harus menginisialisasi suatu class(maksudnya tanpa menggunakan variabel terlebih dahulu). Contoh method static:

//println di sini merupakan method static yang dapat digunakan langsung tanpa membuat objek dari Kelas OutSystem.out.println(“Halo semuanya”);

//parseInt merupakan method staticint i= Integer.parseInt(“10”);

Kelas MathKelas 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 bilangand. Method perpangkatan, akar dan exponensial

pow perpangkatanbentuk umum :

static double pow(double a,double b)exppangkat exponensialbentuk umum:

static double exp(double a)sqrtakar pangkat duabentuk umum:

static double sqrt(double b)e. Method random generatorrandom()

LATIHAN

1. Pembuatan kelas dan instasiasi objek serta penggunaan methodContoh 1:

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

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);

}

}

Page 24: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

Contoh 2:

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

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();

}

}

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);

}}

Page 25: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

2. Penggunaan kelas Math yang memiliki method Static

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

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");

}

}

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;

Page 26: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

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

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));

}

}

Page 27: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

BAB VPemrograman Berorientasi Objek Lanjutan

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

1. Jenis Method berdasarkan nilai balikanBerdasarkan 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

Page 28: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

2. Keyword thisApabila 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 MethodsJava 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 constructorAdalah 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 constructord. Dapat dibubuhi modifier akses: public, private,protected.e. Bisa dipanggil oleh constructor lain dalam satu kelas.

LATIHAN1. Menggunakan method void dan method nonvoid

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

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);

}}

Page 29: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

2. Menggunakan Keyword this

3. Overloading Method

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

public class voidNonvoid {public static void main(String [] args){

perhitungan persegi= new perhitungan();System.out.println("Luas Persegi=

"+persegi.luasPersegi(10, 8));persegi.luasPersegi2(10, 8);

}

}

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();

}

}

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));

Page 30: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

4. Method Constructor dan Overloading Constructor

BAB VITiga Pilar PBO

TUJUAN PEMBELAJARAN:1. Memahami penerapan inheritance2. Memahami penerapan encapsulation3. Memahami penerapan polymorphisme

1. InheritanceInheritance 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 MethodAdalah 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.

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

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));

public class methodKonstruktor {double jari=0.0;double luas=0.0;public 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));

}

}

Page 31: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

- Keyword extendsDi 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 SuperKeyword ini digunakan oleh kelas anak untuk mengakses konstruktor atau method dari kelas induk. a. Keyword super untuk memanggil konstruktor kelas super

Bentuk umum:super()atausuper(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 superBentuk umum:

super.method(parameter)

2. EncapsulationAdalah 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 transparanJika kita memodifikasi suatu modul, maka akan berdampak pada bagian program yang menggunakan modul tersebut.

c. Menghindari efek yang di luar perencanaanDengan 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. PolymorphismeAdalah modul yang memiliki nama sama, tapi memiliki behavior(tingkah laku) yang berbeda sehingga listing code implementasinya berbeda.

LATIHAN1. Penerapan Inheritance

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

public KelasInduk(){System.out.println("Ini adalah konstruktor dari kelas

induk");}

Page 32: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

2. Penerapan enkapsulasi

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

class KelasInduk{public KelasInduk(){

System.out.println("Ini adalah konstruktor dari kelas induk");

}

public class contohInheritance {public static void main(String [] args){

KelasAnak Satu= new KelasAnak();Satu.methodAnak();Satu.inimaudimodif();

}

}

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()));}

}

Page 33: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

3. Penerapan polymorfisme

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

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());

}}

}

Page 34: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

BAB VIIKELAS-KELAS DI DALAM PBO dan EXCEPTION HANDLING

TUJUAN PEMBELAJARAN:1. Mengetahui penggunaan kelas Inner2. Mengetahui penggunaan Kelas Abstrak3. Mengetahui penggunaan kelas Interface4. Mengetahui jenis-jenis Eksepsi5. Mengetahui cara menangani eksepsi

1. Kelas InnerInner 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 kelas-kelas 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 umumDeklarasi 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 konstantaDeklarasi 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 33 dari 47

Page 35: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

Sisi perbedaan Antarmuka Kelas AbstrakDeklarasi variabel hanya berupa konstanta

semua jenis variabel

Deklarasi Method

Berupa method abstrak/signature method

dapat berupa signature method dan implementasi method

Definisi Kumpulan konstanta dan method yang diterapkan pada aplikasi tertentu

kelas abstrak merupakan pemodelan dari objek

Kandungan Informasi mendefinisikan signature

dari method

mendefinisikan variabel dan method secar detail dan konkret

Instasiasi tidak dapat diinstan menjadi objek

bisa diinstan menjadi objek

4. EksepsiException 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 runtimeProgram 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 logikaError logika tidak mengganggu berjalannya program, akan tetapi mengganggu kebenaran sebuah data. Misalnya sebuah data real disimpan dalam sebuah variabel integer.

Kelas exceptionDalam penanganan error pada program Java terdapat 2 kelas untuk menangkap kesalahan yaitu kelas error dan kelas exception

- Kelas ErrorDigunakan 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 erroro LinkageErroro AWTError

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

Page 36: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

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

Mengantisipasi ExceptionUntuk menangani exception yang pertama adalah mendeklarasikan exception, melemparkan exception, menangkap exception dan menampilkan pesan exception tersebut.

a. Mendeklarasikan exceptionPendeklarasian exception dilakukan pada method, ini dikarenakan blok methodlah yang mengandung statement perintah yang mungkin terjadi kesalahanBentuk umum:

Modifier1 tipebalikan namaMethod() throws exception1, exception2

b. Melemparkan exceptionLangkah 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();

atauthrow exception tipeException();

c. Menangkap exceptionLangkah 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()

LATIHAN1. Kelas Innner

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

Page 37: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

2. Kelas abstract dan Kelas Interface

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

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);}@Overridepublic 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]);}

}@Overridepublic void skill(){

System.out.println("System Analyst");System.out.println("System Support");

System.out.println("Database Administrator");System.out.println("Programmer");

}

@Overridepublic 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();

Page 38: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

3. Exception

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

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);}@Overridepublic 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]);}

}@Overridepublic void skill(){

System.out.println("System Analyst");System.out.println("System Support");

System.out.println("Database Administrator");System.out.println("Programmer");

}

@Overridepublic 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();

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");}

Page 39: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

BAB VIIITHREADS

TUJUAN PEMBELAJARAN:1. Mengetahui apa itu threads.2. Mengerti perbedaan state dalam threads.3. Bisa membuat sendiri Sebuah thread4. 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. ResumedSetelah sebelumnya di block atau diberhentikan sementara, state ini kemudian siap untuk dijalankan.

d. SuspendedSebuah thread yang berhenti sementara, dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja.

e. BlockedSebuah 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 constructora. Thread()

Membuat sebuah object Thread yang barub. 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 38 dari 47

Page 40: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

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 berjalanb. public final String getName()

Mengembalikan nama dari threadc. public final void setName(String name)

mengulang pemberian nama threadd. 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 ThreadsSebuah thread dapat diciptakan dengan:

a. Menurunkan (extend) class Thread atau b. Mengimplementasikan interface Runnable.

SinkronisasiDi 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 39 dari 47

Page 41: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

LATIHAN1. Membuat Threads dengan menurunkan class Thread

2. Membuat threads dengan mengimplementasikan interface runnable

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

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");

}}

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");}

}

Page 42: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

3. Penggunaan Method Join

4. Menampilkan String tanpa sinkronisasi

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

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}

}

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();

Page 43: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

5. Menampilkan String dengan sinkronisasi pertama

6. Menampilkan String dengan sinkronisasi Kedua

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

}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!");

}}

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!");

}}

class TwoStrings3 {static void print(String str1, String str2) {

System.out.print(str1);

Page 44: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

LAMPIRANDaftar Kelas Exception

Exception Keterangan

ArithmeticException Dilemparkan ketika kondisi exception aritmatika terjadi. Misal pembagian bilangan dengan nol (0).

ArrayIndexOutBoundsException Dilemparkan ketika mengakses array yang melebihi indeks

ArrayStoreExceptionDilemparkan untuk mengindikasikan bahwa array telah berusaha menyimpan tipe data yang salah.

ClassCastException

Dilemparkan untuk mengindikasikan bahwa kode berusaha mengubah(cast) objek subkelas yang bukan merupakan instans darinya.

ClassNotFoundException

Dilemparkan ketika aplikasi mencoba memanggil kelas, namun kelas itu tidak ada. Seperti pada penggunaan method forName pada kelas Class.

CloneNotSupportedException

Dipanggil untuk mengindikasikan bahwa clone pada kelas Object telah dipanggil, namun tidak menggunakan antarmuka Cloneable.

Exception

Kelas Exception dan turunannya adalah bentuk Throwable yang mengindikasikan bahwa code membutuhkan blok Catch.

IllegalAccessException

Dilemparkan saat mengakses konstanta, variable, method pada suatu kelas, namun konstanta, variable, dan method tersebut tidak ada.

IllegalThreadStateExceptionDilemparkan untuk mengindikasikan bahwa thread tidak sesuai untuk dioperasikan.

IndexOutOfBoundsException

Dilemparkan untuk mengindakasikan bahwa indeks dari sebuah sort,(array, string atau vektor) keluar dari batasan(range).

IOException

Dilemparkan ketika ada I/O eror, seperti gagal menemukan data dan membuka file, memasukkan input yang tidak benar dan lainnya.

NoSuchMethodException Dilemparkan ketika bagian method tidak ditemukan

NullPointerExceptionDilemparkan ketika aplikasi mencoba menggunakan nilai null pada suatu kasus, di mana sebuah objek nilai dibutukan.

NumberFormatExceptionDilemparkan untuk mengindikasikan bahwa String tidak dapat diubah ke dalam tipe numerik.

RuntimeException

Merupakan kelas super dari exception yang dapat dilemparkan ke Java Virtual Machine(JVM), selama proses program berjalan normal.

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

class TwoStrings3 {static void print(String str1, String str2) {

System.out.print(str1);

Page 45: MODUL PBO 2012-2013

Modul Pemrograman Berorientasi ObjekLaboratorium Rekayasa Perangkat Lunak

StringIndexOutOfBoundsExceptionDilemparkan oleh kelas String yang menyatakan string yang dimasukkan keluar dari ukuran String.

InstatiationException

Dilemparkan ketika mencoba membuat instans dari kelas dengan method newInstance, namun kelas tersebut tidak dapat diinstan.

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