MODUL Revisi Edisi PRAKTIKUM Berlaku Efektif MODUL Revisi PRAKTIKUM Halaman Berlaku Efektif DAFTAR ISI Halaman
: : : : :
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
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
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.
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
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
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.
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));
Revisi: 01
Halaman 4 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 penggabungan System.out.println(Mixing tipes ); System.out.println( j + y = + (j + y)); System.out.println( i + x = + (I + x)); } }
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
Revisi: 01
Halaman 6 dari 47
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); } }
Revisi: 01
Halaman 7 dari 47
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.*;
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;
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;
Revisi: 01
Halaman 8 dari 47
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; }
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
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.
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);
Revisi: 01
Halaman 11 dari 47
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."); }
Revisi: 01
Halaman 12 dari 47
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"); } } } }
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); } }
Revisi: 01
Halaman 13 dari 47
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); } } }
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." ); } } }
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
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 } } }
Revisi: 01
Halaman 15 dari 47
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
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:
Deskripsi mengembalikan karakter pada index yang ditentukan membandingkan String dengan object lain membandingkan dua buah string
Revisi: 01 Halaman 17 dari 47
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
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
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
Revisi: 01
Halaman 18 dari 47
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(); } } }
Revisi: 01
Halaman 19 dari 47
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
Revisi: 01
Halaman 20 dari 47
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
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
//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); } }
Revisi: 01
Halaman 22 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(); } }
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); } }
Revisi: 01
Halaman 23 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;
Revisi: 01
Halaman 24 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)); } }
Revisi: 01
Halaman 25 dari 47
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.
Revisi: 01
Halaman 26 dari 47
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.
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); } }
Revisi: 01
Halaman 27 dari 47
public class voidNonvoid { public static void main(String perhitungan persegi= new System.out.println("Luas "+persegi.luasPersegi(10, 8)); persegi.luasPersegi2(10, } }
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(); } }
Revisi: 01
Halaman 28 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)); 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; } }
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)); } }
Revisi: 01
Halaman 29 dari 47
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
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.
Revisi: 01
Halaman 31 dari 47
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())); } }
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()); } } }
Revisi: 01
Halaman 33 dari 47
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:
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
Definisi
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
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
Revisi: 01
Halaman 36 dari 47
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()); } }
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); } @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(); } }
Revisi: 01
Halaman 38 dari 47
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"); } } }
Revisi: 01
Halaman 39 dari 47
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
3. Class Thread
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.
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.
Revisi: 01
Halaman 41 dari 47
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"); } }
Revisi: 01
Halaman 42 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 } }
Revisi: 01
Halaman 43 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!"); } }
Revisi: 01
Halaman 44 dari 47
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); } }
Revisi: 01
Halaman 45 dari 47
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.
Revisi: 01
Halaman 46 dari 47