pemrograman java

253
Java Sesi01

Upload: novi-agus

Post on 05-Jul-2015

258 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Pemrograman Java

Java

Sesi01

Page 2: Pemrograman Java

sebuah peralatan dalam pemrograman yang diintegrasikan ke dalam aplikasisoftware yang mendukung pembangunan GUI, teks atau penulisan kode, compiler dandebugger.

Contoh Program Java Pertamapublic class Hello{/*** My first java program*/public static void main(String[] args) {//Menampilkan kata "Hello world" dilayarSystem.out.println("Hello world!");}}

Sebelum menjelaskan apa arti dari program tersebut, cobalah untuk menulis programini di dalam file dan kemudian menjalankannya.

IDE

Page 3: Pemrograman Java

Langkah Pembuatan Program java

• Langkah 1: Memulai Text EditorUntuk memulai text editor di Linux , klik pada Applications->Accessories->Text Editor

• Langkah 2: Simpanlah program Java AndaProgram ini akan disimpan dalam file yang bernama ''Hello.java'

• Langkah 3: Mengkompilasi program AndaLangkah berikut ini adalah mengkompilasi program Anda. Untuk mengkompilasi program Java, gunakanlah perintah : javac [filename]. Dalam hal ini, Anda mengetikan perintah : javac Hello.Java.

• Langkah 4 : Menjalakan ProgramSelama proses pengkompilasian, javac menambah file baru kedalam disk yang disebut[filename].class, dalam hal ini, Hello.class, yang merupakan kode sebenarnya saatini, dengan perkiraan tidak ada permasalahan pada saat proses compile, berarti telah siap untuk menjalankan program Anda. Untuk menjalankan program Java, dengan mengetikkan perintah : java [filename without the extension], maka dalam hal ini, Anda mengetikkan perintah : java Hello.Sekarang Anda dapat melihat di layar bahwa Anda telah menjalankan program Javapertama Anda, yang menampilkan pesan, ''Hello world!''.

Page 4: Pemrograman Java

ErrorAda 2 macam error. • Pertama adalah compile-time error atau yang disebut juga sebagai syntax error. • Kedua adalah runtime errors.Syntax Errors• Syntax errors biasanya terjadi karena kesalahan penulisan. Mungkin Anda kekurangan

sebuah perintah di Java atau lupa untuk menulis tanda titik-koma pada akhirpernyataan.

• Java mencoba untuk mengisolasi error tersebut dengan cara menunjukkanbaris dari kode dan terlebih dahulu menunjuk karakter yang salah dalam baris tersebut.Bagaimanapun juga, error belum tentu berada pada titik yang ditunjuk.

• Kesalahan umum lainnya adalah dalam kapitalisasi, ejaan, penggunaan dari karakterkhusus yang tidak benar, dan penghilangan dari pemberian tanda baca yangsebenarnya.

Page 5: Pemrograman Java

Error• Run-time Errors

Run-time error merupakan error yang tidak akan ditampilkan sampai Anda menjalankanprogram Anda. Bahkan program yang dikompilasi dengan sukses dapat menampilkanjawaban yang salah jika programmer belum berpikir sampai struktur dan proses logisdari program tersebut.

• LatihanLatihan Program membuat class dengan nama : [NamaAnda]. Hasil dariprogram yang harus tampil di layar :Welcome to Java Programming [NamaAnda]!!!

• Latihan program, membuat class dengan nama : TheTree. Hasil dari programyang harus tampil dilayar :I think that I shall never see,a poem as lovely as a tree.A tree whose hungry mouth is pressedsweet flowing breast.

Page 6: Pemrograman Java

Error• Run-time Errors

Run-time error merupakan error yang tidak akan ditampilkan sampai Anda menjalankanprogram Anda. Bahkan program yang dikompilasi dengan sukses dapat menampilkanjawaban yang salah jika programmer belum berpikir sampai struktur dan proses logisdari program tersebut.

• Latihan• Latihan Program membuat class dengan nama : [NamaAnda]. Hasil dari

program yang harus tampil di layar :Welcome to Java Programming [NamaAnda]!!!

• Latihan program, membuat class dengan nama : TheTree. Hasil dari programyang harus tampil dilayar :I think that I shall never see,a poem as lovely as a tree.A tree whose hungry mouth is pressedsweet flowing breast.

Page 7: Pemrograman Java

Komentar pada JavaKomentar adalah catatan yang ditulis pada kode dengan tujuan sebagai bahan

dokumentasi. Teks tersebut bukan bagian dari program dan tidak mempengaruhi jalannya Program.Java mendukung tiga jenis komentar : C++ style komentar satu baris, C style beberapa baris, dan komentar javadoc khusus

Penulisan Komentar C++ StyleKomentar C++ style diawali dengan //. Semua teks setelah // dianggap sebagai komentar. Sebagi contoh,// This is a C++ style or single line comments

Penulisan Komentar C StyleKomentar C-style atau juga disebut komentar beberapa baris diawali dengan /* dan diakhiri dengan */. Tidak seperti komentar C++ style, komentar ini dapat menjangkau beberapa baris. Sebagaicontoh,/* this is an example of aC style or multiline comments */

Komentar Khusus javadockomentar javadoc dengan memulai barisdengan /** dan mengakhirinya dengan */. Seperti Komentar C_style, dapat juga menjangkau beberapa baris. Komentar ini juga dapat terdiri atas tag-tag untukmenambahkan lebih banyak informasi pada komentar Anda. Sebagai contoh,

/**This is an example of special java doc comments used for \ngenerating an html documentation. It uses tags like:@author Florence Balagtas@version 1.2• */

Page 8: Pemrograman Java

Pernyataan dalam Java dan Blok• Pernyataan adalah satu atau lebih baris kode yang diakhiri dengan semicolon.

Sebagai contoh untuk pernyataan tunggal adalah

System.out.println(“Hello world”);

• Blok adalah satu atau lebih pernyataan yang terbentang antara kurung kurawal buka dankurung kurawal tutup yaitu sekumpulan pernyataan sebagai satu unit kesatuan.

• Blok pernyataan dapat dikumpulkan akan tetapi tidak secara pasti mempunyai keterkaitan fungsi. Beberapa jumlah spasi kosong diijinkan terdapat didalamnya, sebagai contoh dari suatu blok adalah :

public static void main( String[] args ){

System.out.println("Hello");

System.out.println("world");

}*/

Page 9: Pemrograman Java

Java Identifier Dan Keyword dalam Java• Java Identifier adalah suatu tanda yang mewakili nama-nama variabel, method,

class, dsb.Contoh dari Identifier adalah : Hello, main, System, out.

• Pendeklarasian Java adalah case-sensitive. Hal ini berarti bahwa Identifier : Hello tidak sama dengan hello.

• Identifier harus dimulai dengan salah satu huruf, underscore “_”, atautanda dollar “$”. Hurufnya dapat berupa huruf besar maupun huruf kecil. Karakter selanjutnya dapat menggunakan nomor 0 smpai 9.

• Identifier tidak dapat menggunakan kata kunci dalam Java seperti class, public, void, dsb.

• Selanjutnya kita akan berdiskusi lebih banyak tentang kata kunci dalam Java.

• Kata kunci adalah identifier yang telah dipesan untuk didefinisikan sebelumnya oleh Java untuk tujuan tertentu. Anda tidak dapat menggunakan keyword sebagai nama variabel,class, method Anda, dsb. Berikut ini adalah daftar dari kata kunci dalam Java (JavaKeywords).

• Catatan: true, false, dan null bukan termasuk kata kunci akan tetapi mereka termasuk kata-kata khusus, jadi Anda tidak dapat menggunakan mereka sebagai nama variabel padaprogram Anda.

Page 10: Pemrograman Java
Page 11: Pemrograman Java

Java Literals• Literals adalah tanda bahwa tidak terjadi perubahan atau konstan. Macam-

macam literals dalam Java adalah : Integer Literals, Floating-Point Literals, Boolean Literals, Character Literals dan String Literals.

• Integer Literals

Integer literals dibedakan dalam beberapa format yang berbeda: desimal (berbasis 10), heksadesimal (berbasis 16), and oktal (berbasis 8). Dalam penggunaan tipe data integer pada program, kita harus mengikuti aturan penggunaan beberapa notasi khusus.

Page 12: Pemrograman Java

Java Literals• Floating-Point Literals

Floating point literals mewakili bentuk desimal dengan bagian yang terpisah. Sebagai contoh adalah 3.1415. Floating point literals dapat dinyatakan dalam notasi standard atau scientific. Sebagai contoh, 583.45 dinyatakan dalam notasi standard, Sementara 5.8345e2 dinyatakan dalam notasi scientific. Default Floating point literals mempunyai tipe data double yang dinyatakan dalam 64-bit.

Untuk menggunakan ketelitian yang lebih kecil (32-bit) float, hanya dengan menambahkan karakter “f” atau “F”.

• Boolean Literals

Boolean literals hanya memiliki dua nilai, true atau false.

• Character Literals

Character Literals diwakili oleh karakter single Unicode. Karakter Unicode adalah 16-bitcharacter set yang menggantikan 8-bit ASCII character set. Unicode memungkinkan pengunaan simbol dan karakter khusus dari bahasa lain. Untuk menggunakan character literals, karakter tersebut di dalam tanda single pute (' ') (single quote delimiters). Sebagai contoh huruf a, diwakili sebagai ‘a’. Untuk menggunakan karakter khusus seperti karakter baris baru, backslash digunakan diikuti dengan karakter kode. Sebagai contoh, ‘\n’ untuk karakter baris baru atau ganti baris, ‘\r’ untuk menyatakan nilai balik (carriage return), ‘\b’ untuk backspace.

• String Literals

String literals mewakili beberapa karakter dan dinyatakan dalam tanda double pute(“ ”)(double quotes). Sebagai contoh string literal adalah, “Hello World”.

• .

Page 13: Pemrograman Java

Java Literals• Tipe Data Primitif

Bahasa pemrograman Java mendefinisikan delapan tipe data primitif. Mereka diantaranyaadalah boolean (untuk bentuk logika), char (untuk bentuk tekstual), byte, short, int, long(integral), double and float (floating point).

• logika - booleanTipe data boolean diwakili oleh dua pernyataan : true dan false. Sebagai contoh adalah,boolean result = true;Contoh yang ditunjukkan diatas, mendeklarasikan variabel yang

dinamai result sebagai tipe data boolean dan memberinya nilai true.• teksual – char

Tipe data character (char), diwakili oleh karakter single Unicode. Tipe data ini harusmemiliki ciri berada dalam tanda single quotes(’ ’). Sebagai contoh,‘a’ //Huruf a‘\t’ //A tabUntuk menampilkan karakter khusus seperti ' (single quotes) atau " (double quotes),menggunakan karakter escape \. Sebagai contoh,'\'' //untuk single quotes'\"' //untuk double quotes

Meskipun String bukan merupakan tipe data primitif (namun merupakan suatu Class),kita akan memperkenalkan mengenai pada bagian ini. String mewakili tipe data yang terdiri atas beberapa karakter. Mereka tidak termasuk tipe data primitif, melainkan suatu class.Mereka memiliki literal yang terdapat diantara tanda double quotes(“”). Sebagai contoh,String message=“Hello world!”

Page 14: Pemrograman Java

Integral – byte, short, int & long

• Tipe data integral dalam Java menggunakan tiga bentuk- yaitu desimal, oktal atau heksadesimal. Contohnya,

• 2 //nilai desimal 2

• 077 //angka 0 pada awal pernyataan mengindikasikan nilai oktal

• 0xBACC //karakter 0x mengindikasikan nilai heksadesimal Tipe-tipe integral memiliki default tipe data yaitu int. Anda dapat merubahnya ke bentuk long dengan menambahkan huruf l atau L. Tipe data integral memiliki range sebagaiberikut:

Page 15: Pemrograman Java

Floating Point – float dan double• Tipe Floating point memiliki double sebagai default tipe datanya. Floating-point literal termasuk

salah satunya desimal point atau salah satu dari pilihan berikut ini,E or e //(add exponential value)F or f //(float)D or d //(double)

Contohnya adalah,3.14 //nilai floating-point sederhana (a double)6.02E23 //A nilai floating-point yang besar2.718F //A nilai float size sederhana.123.4E+306D //A nilai double yang besar dengan nilai redundant DPada contoh yang ditunjukkan diatas, 23 setelah E pada contoh kedua bernilai positif.Contoh tersebut sama dengan 6.02E+23. Tipe data Floating-point memiliki range sebagaiberikut:

Page 16: Pemrograman Java

Variabel• Variabel adalah item yang digunakan data untuk menyimpan pernyataan objek.

Variabel memiliki tipe data dan nama. Tipe data menandakan tipe nilai yang dapatdibentuk oleh variabel itu sendiri. Nama variabel harus mengikuti aturan untuk identifier.

• Deklarasi dan Inisialisasi VariabelUntuk deklarasi variabel adalah sebagai berikut,<data tipe> <name> [=initial value];Catatan: Nilainya berada diantara <> adalah nilai yang disyaratkan, sementara nilai dalam

tanda [] bersifat optional.Berikut ini adalah contoh program yang mendeklarasikan dan menginisialisasi beberapa variabel,

public class VariableSamples{public static void main( String[] args ){//deklarasi tipe data dengan nama variable// result dan tipe data booleanboolean result;//deklarasi tipe data dengan nama variabel// option dan tipe data charchar option;option = 'C'; //menandai 'C' sebagai option//deklarasi tipe data dengan nama variabel//grade, double tipe data dan telah di inisialisasi//to 0.0double grade = 0.0;}}

Page 17: Pemrograman Java

Variabel• Variabel adalah item yang digunakan data untuk menyimpan pernyataan objek.

Variabel memiliki tipe data dan nama. Tipe data menandakan tipe nilai yang dapatdibentuk oleh variabel itu sendiri. Nama variabel harus mengikuti aturan untuk identifier.

• Deklarasi dan Inisialisasi VariabelUntuk deklarasi variabel adalah sebagai berikut,<data tipe> <name> [=initial value];Catatan: Nilainya berada diantara <> adalah nilai yang disyaratkan, sementara nilai dalam

tanda [] bersifat optional.Berikut ini adalah contoh program yang mendeklarasikan dan menginisialisasi beberapa variabel,

public class VariableSamples{public static void main( String[] args ){//deklarasi tipe data dengan nama variable// result dan tipe data booleanboolean result;//deklarasi tipe data dengan nama variabel// option dan tipe data charchar option;option = 'C'; //menandai 'C' sebagai option//deklarasi tipe data dengan nama variabel//grade, double tipe data dan telah di inisialisasi//to 0.0double grade = 0.0;}}

Page 18: Pemrograman Java

Menampilkan Data Variabel• Untuk mengeluarkan nilai dari variabel yang diinginkan, kita dapat

menggunakan perintah sebagai berikut,System.out.println()System.out.print()

• Berikut ini adalah contoh program,public class OutputVariable{public static void main( String[] args ){int value = 10;char x;x = ‘A’;System.out.println( value );System.out.println( “The value of x=” + x );}}Berikut ini adalah contoh program tersebut akan mengeluarkan teks berikut pada

layar,10The value of x=A

Page 19: Pemrograman Java

System.out.println() vs. System.out.print()

• Apa yang membedakan diantara perintah System.out.println() and System.out.print()? Yang pertama menambahkan baris baru pada akhir data untuk dikeluarkan, sementara selanjutnya tidak. Perhatikan pernyataan tersebut,System.out.print("Hello ");System.out.print("world!");

• Pernyataan tersebut akan menghasilkan output berikut ini pada layar,Hello world! Sekarang perthatikan pernyataan berikut,System.out.println("Hello ");System.out.println("world!");

• Pernyataan ini akan menghasilkan output sebagai berikut pada layar,Helloworld!

Page 20: Pemrograman Java

• Sekarang kita akan membedakan dua tipe variabel yang dimiliki oleh program Java. Ada variabel reference dan variabel primitif .

• Variabel primitif adalah variabel dengan tipe data primitif. Mereka menyimpan data dalam lokasi memori yang sebenarnya dimana variabel tersebut berada.

• Variabel Reference adalah variabel yang menyimpan alamat dalam lokasi memori. Yang menunjuk ke lokasi memori dimana data sebenarnya berada. Ketika Anda mendeklarasikan variabel pada class tertentu, Anda sebenarnya mendeklarasikan reference variable dalam bentuk objek dalam classnya tersebut. Sebagai contoh, Apabila kita mempunyai dua variabel dengan tipe data int dan String.int num = 10;String name = "Hello"

•Variabel Reference dan Variabel Primitif

Page 21: Pemrograman Java

• Dalam Java, ada beberapa tipe operator. Ada operator aritmatika, operator relasi, operator logika, dan operator kondisi. Operator ini mengikuti bermacam-macam prioritas yang pasti sehingga compilernya akan tahu yang mana operator untuk dijalankan lebih dulu dalam kasus beberapa operator yang dipakai bersama-sama dalam satu pernyataan.

• Operator Aritmatika Berikut ini adalah dasar operator aritmatika yang dapat digunakan untuk membuat suatu program Java,

Operator

Page 22: Pemrograman Java
Page 23: Pemrograman Java

Variable values...i = 37j = 42x = 27.475y = 7.22i + j = 79Adding...x + y = 34.695Subtracting...i - j = -5x - y = 20.255Multiplying...i * j = 1554x * y = 198.37Dividing...i / j = 0x / y = 3.8054Computing the remainder...i % j = 37x % y = 5.815Mixing tipes...j + y = 49.22i * x = 1016.58

Berikut ini adalah output program

Page 24: Pemrograman Java

Variable values...i = 37j = 42x = 27.475y = 7.22i + j = 79Adding...x + y = 34.695Subtracting...i - j = -5x - y = 20.255Multiplying...i * j = 1554x * y = 198.37Dividing...i / j = 0x / y = 3.8054Computing the remainder...i % j = 37x % y = 5.815Mixing tipes...j + y = 49.22i * x = 1016.58

Berikut ini adalah output program

Page 25: Pemrograman Java

• Dari sisi operator dasar aritmatika, Java juga terdiri atas operator unary increment (++) dan operator unary decrement (--). operator increment dan decrement menambah dan mengurangi nilai yang tersimpan dalam bentuk variabel angka terhadap nilai 1.

• Sebagai contoh, pernyataan,count = count + 1; //increment nilai count dengan nilai 1pernyataan tersebut sama dengan, count++;

Operator Increment dan Decrement

Page 26: Pemrograman Java

• Operator increment dan decrement dapat ditempatkan sebelum atau sesudah operand. Ketika digunakan sebelum operand, akan menyebabkan variabel diincrement atau didecrement dengan nilai 1, dan kemudian nilai baru digunakan dalam pernyataan dimana dia ditambahkan. Sebagai contoh,int i = 10,int j = 3;int k = 0;k = ++j + i; //akan menghasilkan k = 4+10 = 14Ketika operator increment dan decrement ditempatkan setelah operand,

nilai variabel yang lama akan digunakan lebih dulu dioperasikan lebih dulu terhadap pernyataan dimana dia ditambahkan. Sebagai contoh,

int i = 10,int j = 3;int k = 0;k = j++ + i; //akan menghasilkan k = 3+10 = 13

Operator Increment dan Decrement

Page 27: Pemrograman Java

Operator Relasi membandingkan dua nilai dan menentukan keterhubungan diantara nilainilai tersebut. Hasil keluarannya berupa nilai boolean yaitu true atau false.

•Operator Relasi

Page 28: Pemrograman Java

public class RelasiDemo{public static void main(String[] args) {//beberapa nilaiint 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 dariSystem.out.println("Lebih besar dari...");System.out.println(" i > j = " + (i > j));

//falseSystem.out.println(" j > i = " + (j > i));

//trueSystem.out.println(" k > j = " + (k > j));

//false//lebih besar atau sama denganSystem.out.println("Lebih besar dari atau

sama dengan...");System.out.println(" i >= j = " + (i >=

j)); //falseSystem.out.println(" j >= i = " + (j >=

i)); //trueSystem.out.println(" k >= j = " + (k >=

j)); //true

//lebih kecil dariSystem.out.println("Lebih kecil dari...");System.out.println(" i < j = " + (i < j)); //trueSystem.out.println(" j < i = " + (j < i)); //falseSystem.out.println(" k < j = " + (k < j)); //false//lebih kecil atau sama denganSystem.out.println("Lebih kecil dari atau sama dengan...");System.out.println(" i <= j = " + (i <= j)); //trueSystem.out.println(" j <= i = " + (j <= i)); //falseSystem.out.println(" k <= j = " + (k <= j)); //true//sama denganSystem.out.println("Sama dengan...");System.out.println(" i == j = " + (i == j)); //falseSystem.out.println(" k == j = " + (k == j)); //true//tidak sama denganSystem.out.println("Tidak sama dengan...");System.out.println(" i != j = " + (i != j)); //trueSystem.out.println(" k != j = " + (k != j)); //false}}

Page 29: Pemrograman Java

Nilai variabel...i = 37j = 42k = 42Lebih besar dari...i > j = falsej > i = truek > j = falseLebih besar dari atau sama dengan...i >= j = falsej >= i = truek >= j = trueLebih kecil dari...i < j = truej < i = falsek < j = falseLebih kecil dari atau sama dengan...i <= j = truej <= i = falsek <= j = trueSama dengan...i == j = falsek == j = trueTidak sama dengan...i != j = truek != j = false

Page 30: Pemrograman Java

Nilai variabel...i = 37j = 42k = 42Lebih besar dari...i > j = falsej > i = truek > j = falseLebih besar dari atau sama dengan...i >= j = falsej >= i = truek >= j = trueLebih kecil dari...i < j = truej < i = falsek < j = falseLebih kecil dari atau sama dengan...i <= j = truej <= i = falsek <= j = trueSama dengan...i == j = falsek == j = trueTidak sama dengan...i != j = truek != j = false

Page 31: Pemrograman Java

• Operator logika memiliki satu atau lebih operand boolean yang menghasilkan nilai boolean. Terdapat enam operator logika yaitu: && (logika AND), & (boolean logika AND), || (logika OR), | (boolean logika inclusive OR), ^ (boolean logika exclusive OR), dan ! (logika NOT).

• Pernyataan dasar untuk operasi logika adalah, x1 op x2 Dimana x1, x2 dapat menjadi pernyataan boolean. Variabel atau konstanta, dan op adalah salah satu dari operator &&, &, ||, | atau ^. Tabel kebenaran yang akan ditunjukkan selanjutnya, merupakan kesimpulan dari hasil dari setiap operasi untuk semua kombinasi yang mungkin dari x1 dan x2.

• && (logika AND) dan & (boolean logika AND)Berikut ini adalah tabel kebenaran untuk && dan &,

Operator logika

Page 32: Pemrograman Java

Perbedaan dasar antara operator && dan & adalah bahwa && mensupports short circuit evaluations (atau evaluasi perbagian), sementara operator & tidak. Apa arti dari pernyataan tersebut?

Diberikan suatu pernyataan, exp1 && exp2 &&

akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai false dan menyatakan bahwa exp1 bernilai false. Jika exp1 bernilai false, operator tidak akan pernah mengevaluasi exp2 karena hasil operasi operator akan menjadi false tanpa memperhatikan nilai dari exp2. Sebaliknya, operator & selalu mengevaluasi kedua nilai

dari exp1 dan exp2 sebelum mengembalikan suatu nilai jawaban.

Operator logika

Page 33: Pemrograman Java

Operator logika

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

The output of the program is,010false011false

Page 34: Pemrograman Java

Operator logika

|| (logika OR) dan | (boolean logika inclusive OR)Berikut ini adalah tabel kebenaran untuk || dan |,

Perbedaan dasar antara operator || dan | adalah bahwa || mendukung short-circuit evaluations (atau proses evaluasi sebagian), sementara | tidak. Apa maksud dari pernyataan tersebut?diberikan suatu pernyataan, exp1 || exp2

Page 35: Pemrograman Java

Operator logika|| akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai true dan menyatakan bahwa exp1 bernilai true. Jika exp1 bernilai true, operator tidak akan pernah mengevaluasi exp2 karena hasil dari operasi operator akan bernilai true tanpa memperhatikan nilai dari exp2. Sebaliknya,operator | selalu mengevaluasi kedua nilai dari exp1 and exp2 sebelum mengembalikan suatu jawaban suatu nilai. Berikut ini sebuah contoh source code yang menggunakan operator logika dan boolean OR,

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

//demonstrasi |test = (i < 10) | (j++ > 9);System.out.println(i);System.out.println(j);System.out.println(test);}}

Hasil keluaran dari program ini adalah,010true011true

Page 36: Pemrograman Java

Operator logika|| akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai true dan menyatakan bahwa exp1 bernilai true. Jika exp1 bernilai true, operator tidak akan pernah mengevaluasi exp2 karena hasil dari operasi operator akan bernilai true tanpa memperhatikan nilai dari exp2. Sebaliknya,operator | selalu mengevaluasi kedua nilai dari exp1 and exp2 sebelum mengembalikan suatu jawaban suatu nilai. Berikut ini sebuah contoh source code yang menggunakan operator logika dan boolean OR,

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

//demonstrasi |test = (i < 10) | (j++ > 9);System.out.println(i);System.out.println(j);System.out.println(test);}}

Hasil keluaran dari program ini adalah,010true011true

Page 37: Pemrograman Java

Operator logika^ (boolean logika ExclusiveOR )Berikut ini adalah tabel kebenaran untuk ^,

Hasil operasi operator exclusive OR adalah TRUE, jika dan hanya jika satu operand bernilai TRUE dan yang lain bernilai False. Catatan jika kedua operand harus selalu dievaluasi untuk menjumlahkan hasil dari suatu exclusive OR.

Page 38: Pemrograman Java

Operator logika

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

Hasil keluaran program tersebut adalah,falsetruefalsetrue

Page 39: Pemrograman Java

Operator logika

(logika NOT)Logika NOT digunakan dalam satu argumen, dimana argumen tersebut dapat menjadi suatupernyataan, variabel atau konstanta. Berikut ini adalah tabel kebenaran untuk operator not!,

public class TestNOT{public static void main( String[] args ){boolean val1 = true;boolean val2 = false;System.out.println(!val1);System.out.println(!val2);}}Hasil keluaran program adalah sebagai berikut,falsetrue

Page 40: Pemrograman Java

Operator logika

Operator Kondisi(?:)Operator kondisi ?: adalah operator ternary. Berarti bahwa operator ini membawa tigaargumen yang membentuk suatu ekspresi bersyarat. Struktur pernyataan yangmenggunakan 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 bernilai false, kemudian exp3 merupakan hasil operasinya.

public class ConditionalOperator{public static void main( String[] args ){String status = "";int grade = 80;//mendapatkan status pelajarstatus = (grade >= 60)?"Passed":"Fail";//print statusSystem.out.println( status );}}Hasil keluaran dari program ini akan menjadi,Passed

Page 41: Pemrograman Java

Operator logika

Berikut ini adalah program lain yang menggunakan operator ?: ,class ConditionalOperator{public static void main( String[] args ){int score = 0;char answer = 'a';score = (answer == 'a') ? 10 : 0;System.out.println("Score = " + score );}}Hasil keluaran program adalah,Score = 10

Page 42: Pemrograman Java

Operator logika

Operator PrecedenceOperator precedence didefinisikan sebagai perintah yang dilakukan compiler ketika melakukan evaluasi terhadap operator, untuk mengajukan perintah dengan hasil yang tidak ambigu/ hasil yag jelas.

Page 43: Pemrograman Java

Mendapatkan nilai rata-rata dari tiga angkaBuatlah program yang menghasilkan output nilai rata-rata dari tiga angka. Nilai dari masing-masing tiga angka tersebut adalah 10, 20 dan 45. Tampilan Output yang diharapkan adalah,number 1 = 10number 2 = 20number 3 = 45Rata-rata = 25

Menampilkan nilai terbesarDiberikan tiga angka, tuliskan program yang menghasilkan output angka dengan nilai terbesar diantara tiga angka tersebut. Gunakan operator kondisi ?: yang telah kita pelajari sebelumnya (PETUNJUK: Anda akan perlu menggunakan dua set operator ?: untuk memecahkan permasalahan ini). Sebagai contoh, diberikan angka 10, 23 dan 5, Program Anda akan menghasilkan output,number 1 = 10number 2 = 23number 3 = 5Nilai tertingginya adalah angka = 23

Page 44: Pemrograman Java

SESI02

Page 45: Pemrograman Java

Mendapatkan Input dari Keyboard

Menggunakan BufferedReader untuk mendapatkan inputPada bagian ini, kita akan menggunakan class BufferedReader yang berada di package java.io untuk mendapatkan input dari keyboard. Berikut ini adalah langkah-langkah yang diperlukan untuk mendapatkan input dari keyboard:1. Tambahkan di bagian paling atas code Anda:

import java.io.*;2. Tambahkan statement berikut: BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) );3. Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan fungsi readLine() untuk mendapatkan input dari keyboard. Anda harus mengetikkannya di dalam blok try-catch:

try{String temp = dataIn.readLine();}catch( IOException e ){System.out.println(“Error in getting input”);}

Page 46: Pemrograman Java

Mendapatkan Input dari Keyboard

Berikut ini adalah source code lengkapnya:import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class GetInputFromKeyboard{public static void main( String[] args ){BufferedReader dataIn = new BufferedReader(newInputStreamReader( System.in) );String name = "";System.out.print("Please Enter Your Name:");try{name = dataIn.readLine();}catch( IOException e ){System.out.println("Error!");}System.out.println("Hello " + name +"!");}}

Page 47: Pemrograman Java

Mendapatkan Input dari Keyboard

Dua statement selanjutnya,

public class GetInputFromKeyboard

{

public static void main( String[] args ){

kita sudah mempelajari pada pelajaran sebelumnya. Pernyataan ini mendeklarasikan class bernama GetInputFromKeyboard dan kita mendeklarasikan method main.Dalam statement,

BufferedReader dataIn = new BufferedReader(new

InputStreamReader( System.in) );

kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe class BufferedReader. Jangan mengkhawatirkan tentang maksud dari syntax saat ini. Kita akan menjelaskannya pada akhir

pembahasan.

Page 48: Pemrograman Java

Mendapatkan Input dari Keyboard

Sekarang, kita akan mendeklarasikan variabel String dengan identifier name,String name = ""; Pernyataan di atas merupakan tempat untuk menyimpan input dari user. Nama variabel diinisialisasi sebagai String kosong "". Sebaiknya kita selalu menginisialisasi sebuahvariabel setelah kita mendeklarasikannya.Baris berikutnya adalah memberikan output sebuah String pada layar yang menanyakan nama user.System.out.print("Please Enter Your Name:");Sekarang, blok di bawah ini merupakan try-catch block,try{name = dataIn.readLine();}catch( IOException e ){System.out.println("Error!");}

Page 49: Pemrograman Java

Mendapatkan Input dari Keyboard

•Statement,import java.io.BufferedReader; import java.io.InputStreamReader;import java.io.IOException; menjelaskan bahwa kita akan menggunakan class BufferedReader, InputStreamReader dan IOException yang berada di java.io package. •Java Application Programming Interface (API) berisi ratusan class yang sudah didefinisikan sebelumnya yang dapat digunakan untuk program Anda. Class-class tersebut dikumpulkan di dalam packages.•Packages berisi class yang mempunyai fungsi yang saling berhubungan. Seperti pada contoh di atas, java.io package mengandung class-class yang memungkinkan program untuk melakukan input dan output data.• Pernyataan di atas juga dapat ditulis sebagai berikut, import java.io.*; yang akan mengeluarkan semua class yang berada dalam package, dan selanjutnya kita bisa menggunakan class-class tersebut dalam program kita.

Page 50: Pemrograman Java

Mendapatkan Input dari Keyboard

Dua statement selanjutnya,public class GetInputFromKeyboard{public static void main( String[] args ){kita sudah mempelajari pada pelajaran sebelumnya. Pernyataan ini mendeklarasikanclass bernama GetInputFromKeyboard dan kita mendeklarasikan method main.Dalam statement,BufferedReader dataIn = new BufferedReader(newInputStreamReader( System.in) );kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe classBufferedReader. Jangan mengkhawatirkan tentang maksud dari syntax saat ini. Kita akan menjelaskannya pada akhir pembahasan.Sekarang, kita akan mendeklarasikan variabel String dengan identifier name,String name = "";

Page 51: Pemrograman Java

Mendapatkan Input dari Keyboard

Pernyataan di atas merupakan tempat untuk menyimpan input dari user. Nama variabel diinisialisasi sebagai String kosong "". Sebaiknya kita selalu menginisialisasi sebuah variabel setelah kita mendeklarasikannya. Baris berikutnya adalah memberikan output sebuah String pada layar yang menanyakan nama user.System.out.print("Please Enter Your Name:");Sekarang, blok di bawah ini merupakan try-catch block,try{name = dataIn.readLine();}catch( IOException e ){System.out.println("Error!");}Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada pernyataan,name = dataIn.readLine(); akan ditangkap. Kita akan membahas tentang penanganan exception pada bab selanjutnya dari pembahasan ini, tetapi untuk sekarang, Anda cukup mencatat bahwa Anda perlu menambahkan kode ini untuk menggunakan method readLine() dari BufferedReader untuk mendapatkan input dari user.

Page 52: Pemrograman Java

Mendapatkan Input dari Keyboard

Selanjutnya kembali ke pernyataan,

name = dataIn.readLine();

method diatas memanggil dataIn.readLine(), mendapatkan input dari user dan

memberikan sebuah nilai String. Nilai ini akan disimpan ke dalam variabel name, yang akan kita gunakan pada statement akhir untuk menyambut user,

System.out.println("Hello " + name + "!");

Page 53: Pemrograman Java

Menggunakan JOptionPane untuk mendapatkan input

Cara lain untuk mendapatkan input dari user adalah dengan menggunakan class JoptionPane yang didapatkan dari javax.swing package. JoptionPane memudahkan memunculkan dialog box standard yang memberikan kepada user sebuah nilai atau menginformasikan sesuatu. Diberikan kode berikut ini,import javax.swing.JOptionPane;public class GetInputFromKeyboard{public static void main( String[] args ){String name = "";name = JoptionPane.showInputDialog("Please enter yourname");String msg = "Hello " + name + "!";JOptionPane.showMessageDialog(null, msg);}}

Page 54: Pemrograman Java

Menggunakan JOptionPane untuk mendapatkan input

Page 55: Pemrograman Java

Menggunakan JOptionPane untuk mendapatkan input

Statement pertama,import javax.swing.JOptionPane; Menjelaskan bahwa kita mengimpor class JoptionPane dari package javax.swing. Bisa juga ditulis seperti,import javax.swing.*;Pernyataan, name = JOptionPane.showInputDialog("Please enter your name"); membuat sebuah input dialog JOptionPane, yang akan menampilkan dialog dengan sebuah pesan, sebuah textfield dan tombol OK seperti pada gambar. Hasil dari dialogtersebut adalah String dan disimpan ke dalam variabel name.Sekarang kita membuat pesan selamat datang, yang akan disimpan ke dalam variabe msg,String msg = "Hello " + name + "!";

Page 56: Pemrograman Java

Menggunakan JOptionPane untuk mendapatkan input

Statement pertama,import javax.swing.JOptionPane; Menjelaskan bahwa kita mengimpor class JoptionPane dari package javax.swing. Bisa juga ditulis seperti,import javax.swing.*;Pernyataan, name = JOptionPane.showInputDialog("Please enter your name"); membuat sebuah input dialog JOptionPane, yang akan menampilkan dialog dengan sebuah pesan, sebuah textfield dan tombol OK seperti pada gambar. Hasil dari dialogtersebut adalah String dan disimpan ke dalam variabel name.Sekarang kita membuat pesan selamat datang, yang akan disimpan ke dalam variabe msg,String msg = "Hello " + name + "!";Baris selanjutnya adalah menampilkan sebuah dialog yang berisi sebuah pesan dan tombol OK,JOptionPane.showMessageDialog(null, msg);

Page 57: Pemrograman Java

Menggunakan JOptionPane untuk mendapatkan input

LatihanKata Terakhir (versi BufferedReader)Menggunakan BufferedReader, tanyakan tiga kata dari user dan tampilkan output dariinput user tersebut ke layar. Contoh,Enter word1:GoodbyeEnter word2:andEnter word3:HelloGoodbye and HelloKata Terakhir (versi JOptionPane)Menggunakan JOptionPane, tanyakan tiga kata dari user dan tampilkan output dari inputuser tersebut ke layar. ContohGambar 1: Input PertamaGambar 3: Menampilkan PesanGambar 2: Input Kedua

Page 58: Pemrograman Java

Menggunakan JOptionPane untuk mendapatkan input

LatihanKata Terakhir (versi BufferedReader)Menggunakan BufferedReader, tanyakan tiga kata dari user dan tampilkan output dariinput user tersebut ke layar. Contoh,Enter word1:GoodbyeEnter word2:andEnter word3:HelloGoodbye and HelloKata Terakhir (versi JOptionPane)Menggunakan JOptionPane, tanyakan tiga kata dari user dan tampilkan output dari inputuser tersebut ke layar. ContohGambar 1: Input PertamaGambar 3: Menampilkan PesanGambar 2: Input Kedua

Page 59: Pemrograman Java

Menggunakan JOptionPane untuk mendapatkan input

Page 60: Pemrograman Java

SESI03

Page 61: Pemrograman Java

Struktur Kontrol Pemilihan

Struktur kontrol pemilihan adalah pernyataan dari Java yang mengijinkan user untukmemilih dan mengeksekusi blok kode spesifik dan mengabaikan blok kode yang lain.Statement ifPernyataan if akan menentukan sebuah pernyataan (atau blok kode) yang akan eksekusi jika dan hanya jika persyaratan bernilai benar(true).Bentuk dari pernyataan if,if( boolean_expression )statement;atauif( boolean_expression ){statement1;statement2;. . .}dimana, boolean_expression adalah sebuah penyataan logika (true/false) atau variabel bertipe boolean.

Page 62: Pemrograman Java

Struktur Kontrol Pemilihan

Berikut ini adalah potongan kode dari pernyataan if:int grade = 68;if( grade > 60 ) System.out.println("Congratulations!");atauint grade = 68;if( grade > 60 ){System.out.println("Congratulations!");System.out.println("You passed!");}

Page 63: Pemrograman Java

Struktur Kontrol Pemilihan

Berikut ini adalah potongan kode dari pernyataan if:int grade = 68;if( grade > 60 ) System.out.println("Congratulations!");atauint grade = 68;if( grade > 60 ){System.out.println("Congratulations!");System.out.println("You passed!");}

Page 64: Pemrograman Java

Struktur Kontrol Pemilihan

Statement if-elsePernyataan if-else digunakan apabila kita ingin mengeksekusi beberapa pernyataan dengan kondisi true dan pernyataan yang lain dengan kondisi false. Bentuk statement if-else,if( boolean_expression )statement;else statement;dapat juga ditulis seperti,if( boolean_expression ){statement1;statement2;. . .}else{statement1;statement2;. . .

}

Page 65: Pemrograman Java

Struktur Kontrol PemilihanBerikut ini contoh code statement if-else,int grade = 68;if( grade > 60 ) System.out.println("Congratulations!");else System.out.println("Sorry you failed");atauint grade = 68;if( grade > 60 ){System.out.println("Congratulations!");System.out.println("You passed!");}else{System.out.println("Sorry you failed");

}

Page 66: Pemrograman Java

Struktur Kontrol Pemilihan

Statement if-else-ifPernyataan pada bagian kondisi else dari blok if-else dapat menjadi struktur if-else yang lain. Kondisi struktur seperti ini mengijinkan kita untuk membuat seleks persyaratan yang lebih kompleks.Bentuk statement if-else if,if( boolean_expression1 )statement1;else if( boolean_expression2 )statement2;else statement3;Sebagai catatan : anda dapat memiliki banyak blok else-if sesudah pernyataan if. Blok else bersifat opsional dan dapat dihilangkan. Pada contoh yang ditampilkan di atas, jika boolean_expression1 bernilai true, maka program akan mengeksekusi statement1 dan melewati pernyataan yang lain. Jika boolean_expression2 bernilai true, maka program akan mengeksekusi statement2 dan melewati statement3.

Page 67: Pemrograman Java

Struktur Kontrol Pemilihan

Berikut ini contoh code statement if-else-ifint grade = 68;if( grade > 90 ){System.out.println("Very good!");}else if( grade > 60 ){System.out.println("Very good!");}else{System.out.println("Sorry you failed");}

Page 68: Pemrograman Java

Struktur Kontrol PemilihanKesalahan umum ketika menggunakan statement if-else:1. Kondisi pada statement if tidak mengevaluasi nilai logika boolean. Contohnya :

//SALAHint number = 0;if( number ){//some statements here}

Variabel number tidak memiliki nilai Boolean.2. Menggunakan operator = sebagai operator perbandingan yang seharusnya adalah

operator == . Contohnya,//SALAHint number = 0;if( number = 0 ){//Beberapa pernyataan}

Seharusnya kode tersebut ditulis,//BENARint number = 0;if( number == 0 ){//beberapa pernyataan}

3. Penulisan elseif yang seharusnya ditulis sebagai else if.Pengenalan Pemrograman 1 6

Page 69: Pemrograman Java

Struktur Kontrol PemilihanContoh statement if-else-else ifpublic class Grade{public static void main( String[] args ){double grade = 92.0;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 70: Pemrograman Java

Statement switchCara lain untuk membuat cabang adalah dengan menggunakan kata kunci switch.Switch mengkonstruksikan cabang untuk beberapa kondisi dari nilai.Bentuk statement switch,switch( switch_expression ){case case_selector1:statement1; //statement2; //block 1. . . //break;case case_selector2:statement1; //statement2; //block 2. . . //break;. . .default:}statement1; //statement2; //block n. . . //break;switch_expression adalah ekspresi integer atau karakter dan case_selector1,case_selector2 dan seterusnya adalah konstanta unik dari nilai integer atau karakter.

Page 71: Pemrograman Java
Page 72: Pemrograman Java

Contoh statement switchpublic class Grade{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.");}}}

Pengenalan Pemrograman 1 10

Page 73: Pemrograman Java

Struktur Kontrol PerulanganStruktur kontrol pengulangan adalah berupa pernyataan dari Java yang mengijinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah tertentu yang diinginkan. Ada tiga macam jenis dari struktur kontrol pengulangan yaitu while, dowhile, dan for-loops. while loopPernyataan while loop adalah pernyataan atau blok pernyataan yang diulang-ulang sampai mencapai kondisi yang cocok. Bentuk pernyataan while,while( boolean_expression ){statement1;statement2;. . .}Pernyataan di dalam while loop akan dieksekusi berulang-ulang selama kondisiboolean_expression bernilai benar (true). Contoh, pada kode dibawah ini,int i = 4;while ( i > 0 ){System.out.print(i);i--;}Contoh diatas akan mencetak angka 4321 pada layar. Perlu dicatat jika bagian i--; dihilangkan, akan menghasilkan pengulangan yang terus menerus (infinite loop). Sehingga, ketika menggunakan while loop atau bentuk pengulangan yang lain, pastikan Anda memberikan pernyataan yang membuat pengulangan berhenti pada suatu kondisi.

Page 74: Pemrograman Java

Berikut ini adalah beberapa contoh while loop,Contoh 1:int x = 0;while (x<10){System.out.println(x);x++;}Contoh 2://infinite loopwhile(true)System.out.println(“hello”);Contoh 3://no loops// statement is not even executedwhile (false)System.out.println(“hello”);

Page 75: Pemrograman Java

do-while loopDo-while loop mirip dengan while-loop. Pernyataan di dalam do-while loopakan dieksekusi beberapa kali selama kondisi bernilai benar(true).Perbedaan antara while dan do-while loop adalah dimana pernyataan di dalam do-while loop akan dieksekusi sedikitnya satu kali.Bentuk pernyataan do-while,do{ statement1;statement2;. . .}while( boolean_expression );Pernyataan di dalam do-while loop akan dieksekusi pertama kali, dan akan dievaluasi kondisi dari boolean_expression. Jika nilai pada boolean_expression tersebut bernilai true, pernyataan di dalam do-while loop akan dieksekusi lagi.Berikut ini beberapa contoh do-while loop:Contoh 1:int x = 0;do{System.out.println(x);x++;}while (x<10);

Page 76: Pemrograman Java

Contoh ini akan memberikan output 0123456789 pada layar.

Contoh 2://infinite loopdo{System.out.println(“hello”);} while (true);Contoh di atas akan melakukan pengulangan terus menerus yang menulis kata “hello”pada layar.

Contoh 3://one loop// statement is executed oncedo System.out.println(“hello”);while (false);Contoh di atas akan memberikan output hello pada layar.

Page 77: Pemrograman Java

for loopPernyataan for loop memiliki kondisi hampir mirip seperti struktur pengulangansebelumnya yaitu melakukan pengulangan untuk mengeksekusi kode yang samasebanyak jumlah yang telah ditentukan.Bentuk dari for loop,for (InitializationExpression; LoopCondition; StepExpression){statement1;statement2;. . .}dimana,InitializationExpression – inisialisasi dari variabel loop.LoopCondition - membandingkan variabel loop pada nilai batastertentu. StepExpression - melakukan update pada variabel loop.Berikut ini adalah contoh dari for loop,int i;for( i = 0; i < 10; i++ ){System.out.print(i);}

Page 78: Pemrograman Java

Pada contoh ini, pernyataan i=0 merupakan inisialisasi dari variabel. Selanjutnya,kondisi i<10 diperiksa. Jika kondisi bernilai true, pernyataan di dalam for loopdieksekusi. Kemudian, ekspresi i++ dieksekusi, lalu akan kembali pada bagianpemeriksaan terhadap kondisi i<10 lagi. Kondisi ini akan dilakukan berulang-ulangsampai mencapai nilai yang salah (false).Contoh tadi, adalah contoh yang sama dari while loop,int i = 0;while( i < 10 ){System.out.print(i);i++;}

Page 79: Pemrograman Java

Pernyataan PercabanganPernyataan percabangan mengijinkan kita untuk mengatur aliran eksekusi program. Java memberikan tiga bentuk pernyataan percabangan: break, continue dan return.Pernyataan break tidak berlabel (unlabeled)Pernyataan break tidak berlabel (unlabeled) digunakan untuk menghentikan jalannyapernyataan switch. Selain itu pernyataan break unlabeled juga bisa digunakanuntuk menghentikan pernyataan-pernyataan for, while atau do-while loop.Contohnya,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." );Pada contoh diatas, jika string “Yza” ditemukan, pengulangan pada for loop akandihentikan dan akan dilanjutkan ke pernyataan berikutnya yang terletak setelah pernyataan for.

Page 80: Pemrograman Java

Pernyataan break berlabelBentuk label dari pernyataan break akan menghentikan pernyataan di luarnya, dimanasebelumnya harus diberikan label yang sudah di spesifikasikan pada program padapernyataan break. Program berikut ini akan mencari nilai dalam array dua dimensi.Terdapat dua pengulangan bersarang (nested loop). Ketika sebuah nilai ditemukan,brea akan menghentikan pernyataan yang diberi label searchLabel yang terletak di luarpernyataan for loop. dan tidak menjalankan aliran kontrol apapun pada label. Aliran kontrol pada label akan diberikan secara otomatis pada pernyataan yang terletak dibawah label.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!" );

Page 81: Pemrograman Java

Pernyataan ContinuePernyataan continue memiliki dua bentuk: berlabel dan tidak berlabel. Anda dapat menggunakan pernyataan continue untuk melanjutkan pengulangan yang sedang dijalankan oleh pernyataan for, while, atau do- while loop.Pernyataan continue tidak berlabel (unlabeled)Bentuk pernyataan continue tidak berlabel (unlabeled) akan melewati bagian pernyataan setelah pernyataan ini dituliskan dan memeriksa eksepresi logika (boolean) yang mengkontrol pengulangan. Jika ekspresi logika (boolean) masih bernilai true, maka pengulangan tetap dilanjutkan. Pada dasarnya pernyataan ini akan melanjutkan bagian pengulangan pada pernyataan loop.Berikut ini adalah contoh dari penghitungan angka dari “Beah” dalam suatu array.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 thelist");

Page 82: Pemrograman Java

Labeled continue statementBentuk pernyataan continue berlabel (labeled) akan melanjutkan pengulangan yang sedang terjadi dan dilanjuti ke pengulangan berikutnya dari pernyataan pengulangan yang diberi label (tanda).outerLoop:for( int i=0; i<5; i++ ){for( int j=0; j<5; j++ ){System.out.println("Inside for(j) loop"); //message1if( j == 2 ) continue outerLoop;}System.out.println("Inside for(i) loop"); //message2}Pada contoh ini, bagian message2 tidak pernah akan dicetak, karena pernyataan continue akan melewati pengulangan.

Page 83: Pemrograman Java

Pernyataan ReturnPernyataan return digunakan untuk keluar dari sebuah method. Pernyataanreturn memiliki dua bentuk: memberikan sebuah nilai, dan tidak memberikan nilai. Untuk memberikan sebuah nilai, cukup berikan nilai (atau ekspresi yang menghasilkan sebuah nilai) sesudah kata return. Contohnya,return ++count;ataureturn "Hello";Tipe data dari nilai yang diberikan harus sama dengan tipe dari methodyang dibuat. Ketika sebuah method void dideklariskan, gunakan bentuk return yang tidak memberikan nilai. Contohnya,return;Kita akan membahas lebih lanjut tentang pernyataan return ketika mempelajari tentang method.

Page 84: Pemrograman Java

LatihanNilaiAmbil tiga nilai ujian dari user dan hitung nilai rata-rata dari nilai tersebut.Berikan output rata-rata dari tiga ujian. Berikan juga smiley face pada output jika nilai rata-rata lebih besar atau sama dengan 60, selain itu beri output :-(.1. Gunakan BufferedReader untuk mendapat input dari user, dan System.out untuk output hasilnya.2. Gunakan JOptionPane untuk mendapat input dari user dan output hasilnya.Membaca BilanganAmbil sebuah angka sebagai input dari user, dan outputnya berupa kata yang sesuai dengan angka. Angka yang dimasukkan antara 1-10. Jika user memasukkan nilai yangtidak sesuai berikan output “Invalid number”.1. Gunakan statement if-else untuk menyelesaikan2. Gunakan statement switch untuk menyelesaikanCetak Seratus KaliBuat sebuah program yang mencetak nama Anda selama seratus kali. Buat tiga versi program ini menggunakan while loop, do while dan for-loop.PerpangkatanHitung pangkat sebuah nilai berdasarkan angka dan nilai pangkatnya. Buat tiga versi dari program ini menggunakan while loop, do-while dan for-loop.

Page 85: Pemrograman Java

SESI04

Page 86: Pemrograman Java

Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian variabel, kita sering menggunakan sebuah tipe data beserta nama variabel atau identifier yang unik. Apabila kita ingin menggunakan variabel tersebut, kita akan memanggil dengan nama identifier-nya. Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier berbeda untuk tiap variabel.int number1;int number2;int number3;number1 = 1;number2 = 2;number3 = 3;Seperti yang dapat Anda perhatikan pada contoh diatas, kode tersebut akan sia-sia karena harus menginisialisasi dan menggunakan setiap variabel padahal sebenarnya variabel-variabel tersebut digunakan untuk tujuan yang sama. Pada bahasa pemrograman Java maupun di bahasa pemrograman yang lain, terdapat sebuah kemampuan untuk menggunakan satu variabel yang dapat menyimpan beberapa data dan memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut sebagai array.

Array

Page 87: Pemrograman Java

Array adalah sebuah variabel/sebuah lokasi tertentu yang memiliki satu nama sebagai identifier, namun identifier ini dapat menyimpan lebih dari sebuahnilai.Pendeklarasian ArrayArray harus dideklarasikan seperti layaknya sebuah variabel. Pada saat mendeklarasikan array, anda harus membuat sebuah daftar dari tipe data, yang diikuti oleh sepasang tanda kurung [], lalu diikuti oleh nama identifier-nya. Sebagai contoh,int []ages;atau Anda dapat menempatkan sepasang tanda kurung [] sesudah nama identifier. Sebagaicontoh,int ages[];

Array

Page 88: Pemrograman Java

Setelah pendeklarasian array , kita harus membuat array dan menentukan berapa panjangnya dengan sebuah konstruktor. Proses ini di Java disebut sebagai instantiation (istilah dalam Java yang berarti membuat). Untuk meng-instantiate sebuah obyek, kita membutuhkan sebuah konstruktor. Kita akan membicarakan lagi mengenai instantiate obyek dan pembuatan konstruktor pada bagian selanjutnya.Sebagai catatan bahwa ukuran dari array tidak dapat diubah setelah anda menginisialisasinya. Sebagai contoh,//deklarasiint ages[];//instantiate obyekages = new int[100];atau bisa juga ditulis dengan,//deklarasi dan instantiateobyekint ages[] = new int[100];Pada contoh diatas, pendeklarasian tersebut akan memberitahukan kepada compiler Java, bahwa identifier ages akan digunakan sebagai nama array yang berisi data bertipe integer, dan dilanjutkan dengan membuat atau meng-instantiate sebuah array baru yang terdiri dari 100elemen.

Array

Page 89: Pemrograman Java

Setelah pendeklarasian array , kita harus membuat array dan menentukan berapa panjangnya dengan sebuah konstruktor. Proses ini di Java disebut sebagai instantiation (istilah dalam Java yang berarti membuat). Untuk meng-instantiate sebuah obyek, kita membutuhkan sebuah konstruktor. Kita akan membicarakan lagi mengenai instantiate obyek dan pembuatan konstruktor pada bagian selanjutnya.Sebagai catatan bahwa ukuran dari array tidak dapat diubah setelah anda menginisialisasinya. Sebagai contoh,//deklarasiint ages[];//instantiate obyekages = new int[100];atau bisa juga ditulis dengan,//deklarasi dan instantiateobyekint ages[] = new int[100];Pada contoh diatas, pendeklarasian tersebut akan memberitahukan kepada compiler Java, bahwa identifier ages akan digunakan sebagai nama array yang berisi data bertipe integer, dan dilanjutkan dengan membuat atau meng-instantiate sebuah array baru yang terdiri dari 100elemen.

Array

Page 90: Pemrograman Java

new untuk meng-instantiate array, Anda juga dapat mendeklarasikan, membangun, kemudian memberikan sebuah nilai pada array sekaligus dalam sebuah pernyataan.Sebagai contoh,//membuat sebuah array yang berisi variabel-variabel//boolean pada sebuah identifier. Array ini terdiri dari 4//elemen yang diinisilisasikan sebagai value//{true,false,true,false}boolean results[] ={ true, false, true, false };

//Membuat sebuah array yang terdiri dari penginisialisasian//4variabel double bagi value {100,90,80,75}double []grades = {100, 90, 80, 75};

//Membuat sebuah array String dengan identifier days. Array//ini terdiri dari 7 elemen.String days[] = { “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”,“Sun”};

Array

Page 91: Pemrograman Java

Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian dari array, Anda 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, dimulai dari angka nol dan dilanjutkan ke angka berikutnya sampai akhir array. Sebagai catatan bahwa indeks didalam array dimulai dari 0sampai dengan (ukuranArray-1).Sebagai contoh, pada array yang kita deklarasikan tadi, kita mempunyai,

//memberikan nilai 10 kepada elemen pertama arrayages[0] = 10;

//mencetak elemen array yang terakhirSystem.out.print(ages[99]);

Perlu diperhatikan bahwa sekali array dideklarasikan dan dikonstruksi, nilai yang disimpan dalam setiap anggota array akan diinisialisasi sebagai nol. Oleh karena itu, apabila Anda menggunakan tipe data seperti String, array tidak akan diinisalisasi menjadi string kosong “”. Untuk itu Anda tetap harus membuat String array secara eksplisit.

Array

Page 92: Pemrograman Java

Berikut ini adalah contoh kode untuk mencetak seluruh elemen didalam array. Dalam contoh ini digunakanlah pernyataan for loop, sehingga kode kita menjadi lebih pendek.public class ArraySample{public static void main( String[] args ){int[] ages = new int[100];for( int i=0; i<100; i++ ){System.out.print( ages[i] );} } }menggunakan atribut length dari array. Atribut ini akan mengembalikan ukuran dari array itu sendiri. Sebagai contoh, arrayName.length Pada contoh sebelumnya, kita dapat menuliskannya kembali seperti berikut ini,public class ArraySample{public static void main( String[] args ){int[] ages = new int[100];for( int i=0; i<ages.length; i++ ){System.out.print( ages[i] );}}}

Array

Page 93: Pemrograman Java

Array MultidimensiArray multidimensi diimplementasikan sebagai array yang terl etak di dalam array. Array multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array. Sebagai contoh,// Elemen 512 x 128 dari integer arrayint[][] twoD = new int[512][128];// karakter array 8 x 16 x 24char[][][] threeD = new char[8][16][24];// String array 4 baris x 2 kolomString[][] dogs = {{ "terry", "brown" },{ "Kristin", "white" },{ "toby", "gray"},{ "fido", "black"}};Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses elemen pertama dari baris pertama didalam array dogs, kita akan menulis,System.out.print( dogs[0][0] );Kode diatas akan mencetak String “terry” di layar.

Array

Page 94: Pemrograman Java

1. Hari dalam semingguBuatlah sebuah String array yang akan menginisialisasi 7 hari dalam seminggu. Sebagai contoh,String days[] = {“Monday”, “Tuesday”….};Gunakan while-loop, kemudian print semua nilai dari array (Gunakan juga untuk dowhile dan for-loop)Using a while-loop.2. Nomor terbesarGunakanlah BufferedReader dan JoptionPane, tanyakan kepada user untuk 10 nomor. Kemudian gunakan array untuk menyimpan 10 nomor tersebut. ampilkan kepada user,input terbesar yang telah diberikan user.3. Buku AlamatBerikut ini adalah array multidimensi yang menyatakan isi dari sebuah buku alamat:String entry = {{"Florence", "735-1234", "Manila"},{"Joyce", "983-3333", "Quezon City"},{"Becca", "456-3322", "Manila"}};Cetak buku alamat tersebut dalam format berikut ini:Name : FlorenceTel. # : 735-1234Address : ManilaName : JoyceTel. # : 983-3333Address : Quezon CityName : BeccaTel. # : 456-3322Address : Manila

Latihan

Page 95: Pemrograman Java

SESI05

Page 96: Pemrograman Java

Argumen Command-lineSebuah aplikasi Java dapat menerima sejumlah argumen dari command-line. Argumen dari command line memberikan kesempatan bagi user untuk mengatur operasi dari sebuah aplikasi dalam sekali pemanggilan program. User memasukkan argumen command line pada saat memanggil aplikasi dan menspesifikasikan argumen tersebut setelah nama dari class yang akan dijalankan. Sebagai contoh, apabila Anda memiliki sebuah aplikasi Java dengan nama Sort, yang akan mengurutkan lima nomor, Anda dapat menjalankannya seperti berikut ini:

Perlu diperhatikan bahwa sebuah argumen dapat dipisahkan oleh ruang spasi. Pada bahasa pemrograman Java, jika kita akan memanggil sebuah aplikasi, sistem runtime akan memberikan argumen command-line ke method main yang dimiliki oleh aplikasi menggunakan sebuah array dari String. Lalu, setiap String di dalam array mewakili sebuah argumen commmand-line. Perhatikan deklarasi dari main method,public static void main( String[] args )Argumen yang diberikan kepada program Anda akan disimpan kedalam sebuah array String dengan identifier args.

Page 97: Pemrograman Java

Pada contoh sebelumnya, argumen dari command-line yang akan diberikankepada aplikasi sort command adalah sebuah array dengan lima buah String yaitu “5”,”4”,”3”,”2”, dan “1”. Anda dapat mengetahaui berapa banyak argumen dari command-line dengan cara melihat panjang dari attribute array.Sebagai contoh, int numberOfArgs = args.length;Jika program Anda membutuhkan argumen command-line yang bertipe angka. Anda harus mengkonversi argumen String tersebut untuk merepresantasikan sebuah angka, misalnya “34” menjadi sebuah angka 34. Kode dibawah ini adalah sebuah potongan program untuk mengkonversi sebuah argumen command-line menjadi tipe integer.int firstArg = 0;if (args.length > 0){firstArg = Integer.parseInt(args[0]); }parseInt akan melempar eksepsi NumberFormatException (ERROR) jika format args[0] tidak valid (bukan sebuah angka). membuat sebuah program Java yang akan mencetak jumlah argumen dan argumen pertama diberikan pada program tersebut.public class CommandLineExample{public static void main( String[] args ){System.out.println("Number of arguments=" +args.length);System.out.println("First Argument="+ args[0]); } }

Page 98: Pemrograman Java

SESI06

Page 99: Pemrograman Java

Pengenalan Pemrograman Berorientasi Obyek

OOP berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa obyek disekitar kita seperti mobil, singa, manusia dan seterusnya. Obyek ini dikarakterisasi oleh atribut dan tingkah lakunya.

Contohnya, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa. Coba perhatikan tabel dibawah ini sebagai contoh perbandingan :

Page 100: Pemrograman Java

Pengenalan Pemrograman Berorientasi ObyekDengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku sebagai method. Data dan method dapat digunakan dalam pemrograman game atau perangkat lunak interaktif untuk membuat simulasi obyek pada dunia nyata. Contohnya adalah perangkat lunak obyek mobil dalam permainan balap mobil atau perangkat lunak obyek singa dalam sebuah perangkat lunak pendidikan interaktif pada kebun binatang untuk anak anak.Perbedaan Class dan ObjectPada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat lunak yang stukturnya 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 obyek adalah sebuah perangkat lunak yang berisi sekumpulan variabel danmethod yg berhubungan. Variabel dan method dalam obyek Java secara formal diketahui sebagai variabel instance dan method instance. Hal ini dilakukan untuk membedakan dari variabel class dan method class, dimana akan dibahas kemudian. Class adalah sturktur dasar dari OOP. Class terdiri dari dua tipe dari anggota dimana disebutdengan field (attribut/properti) dan method. Field merupakan tipe data yang didefinisikan oleh class, sementara method merupakan operasi. Sebuah obyek adalah sebuah instance (keturunan) dari class.

Page 101: Pemrograman Java

Pengenalan Pemrograman Berorientasi ObyekUntuk dapat membedakanantara class dan obyek, mari kita mendiskusikan beberapa contoh berikut ini. Kita memiliki sebuah class mobil dimana dapat digunakan untuk medefinisikan beberapa obyek mobil. Pada tabel dibawah, mobil A dan mobil B adalah obyek dari class mobil. Class memiliki field nomor, plat, warna, manufaktur dan kecepatan yang diisi dengannilai pada obyek mobil A dan mobil B. Mobil juga dapat berakselerasi, berbelok dan melakukan rem.

Page 102: Pemrograman Java

Pengenalan Pemrograman Berorientasi ObyekUntuk dapat membedakanantara class dan obyek, mari kita mendiskusikan beberapa contoh berikut ini. Kita memiliki sebuah class mobil dimana dapat digunakan untuk medefinisikan beberapa obyek mobil. Pada tabel dibawah, mobil A dan mobil B adalah obyek dari class mobil. Class memiliki field nomor, plat, warna, manufaktur dan kecepatan yang diisi dengannilai pada obyek mobil A dan mobil B. Mobil juga dapat berakselerasi, berbelok dan melakukan rem.

Ketika diinisialisi, setiap obyek mendapat satu set variabel yang baru. Bagaimanapun, implementasi dari method dibagi diantara objek pada class yang sama. Class menyediakan keuntungan dari reusability. Programmer perangkat lunak dapat menggunakan sebuah kelas beberapa kali untuk membuat banyak objek.

Page 103: Pemrograman Java

Pengenalan Pemrograman Berorientasi ObyekInstansiasi ClassUntuk membuat sebuah objek atau sebuah instance pada sebuah class. Kita menggunakan operator new. Sebagai contoh, jika anda ingin membuat instance dari class string, kita menggunakan kode berikut :String str2 = new String(“Hello world!”);Ini juga sama dengan,String str2 = "Hello";Gambar 1: Instanstiasi ClassVariabel Class dan Variabel MethodSelain dari variabel instance, kita juga memungkinkan untuk mendefinisikan variabel dari class, yang nantinya variabel ini dimiliki oleh class. Ini berarti variabel ini dapat memiliki nilai yang sama untuk semua objek pada class yang sama. Mereka juga disebut static member variables.

Page 104: Pemrograman Java

Pengenalan Pemrograman Berorientasi ObyekMethodApakah Method itu dan mengapa menggunakan Method?Pada contoh yang telah kita diskusikan sebelumnya, kita hanya memiliki satu method, dan itu adalah method main(). Di dalam Java, kita dapat mendefinisikan banyak method yang akan kita panggil dari method yang berbeda. 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 :1. dapat mengembalikan satu nilai atau tidak sama sekali2. dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama sekali. Parameter bisa juga disebut sebagai argumen dari fungsi3. setelah method telah selesai dieksekusi, dia akan kembali pada method yang memanggilnya.Sekarang mengapa kita butuh untuk membuat banyak method? Mengapa kita tidak menuliskan semua kode pada sebuah method? Hal ini karena penyelesaian masalah yang sangat efektif adalah memecah masalah-masalah tersebut menjadi beberapa bagian. Kita juga dapat melakukan hal ini diJava dengan membuat method untuk mengatasi bagian tertentu dari masalah. Sebuah permasalahan dapat dipecah-pecah menjadi beberapa bagian kecil. Hal ini sangat baik sekali untuk membuat program yang sangat besar.

Page 105: Pemrograman Java

Pengenalan Pemrograman Berorientasi ObyekMemanggil Instance dan memberikan Variabel dari MethodSekarang, untuk mengilustrasikan bagaimana memanggil method, mari kita menggunakan class string sebagai contoh. Anda dapat menggunakan the dokumentasi dari Java API untuk melihat semua method yang tersedia dalam class string. Selanjutnya, kita akan membuat method, kita sendiri. Tapi untuk saat ini, mari terlebih dahulu kita gunakan method yang sudah disediakan olehJava. Untuk memanggil sebuah instance method, kita dapat menuliskan :nameOfObject.nameOfMethod( parameters );mari kita mengambil dua contoh method yang ditemukan dalam class String.

Menggunakan method :String str1 = "Hello";char x = str2.charAt(0); //will return thecharacter H//simpan pada variabel xString str2 = "hello";//return booleanboolean result = str1.equalsIgnoreCase( str1 );

Page 106: Pemrograman Java

Pengenalan Pemrograman Berorientasi ObyekPemberian Variabel Dalam MethodPada contoh kita sebelumnya , kita sudah pernah mecoba melewati variabel pada method. Walaupun kita belumdapat membedakan antara perbedaan tipe variabel yang diberikan (passing) ke method dalam Java. Ada dua tipe data variabel passing pada method, yang pertama adalah pass-by-value dan yang kedua adalah pass-by-reference.Pass-by-ValueKetika pass-by-values terjadi, method membuat sebuah salinan dari nilai variable yang dikirimkan ke method. Walaupun demikian, method tidak dapat secara langsung memodifikasi nilai variabel pengirimnya meskipun parameter salinannya sudah dimodifikasi nilainya di dalam method.

Page 107: Pemrograman Java
Page 108: Pemrograman Java

Pengenalan Pemrograman Berorientasi Obyek

Pada contoh diatas, kita memanggil method tes dan melewatkan nilai variabel i sebagai parameter. Nilai pada i disalinkan ke variable j pada method. Pada kondisi ini variabel j adalah merupakan variabel pengganti pada method tes, jika nilai j berubah maka nilai variabel i yang terletak pada main tidak akan ikut berubah walaupun awalnya variabel j merupakan salinan dari variabel i.Secara default, semua tipe data primitif ketika dilewatkan pada sebuah method adalah pass-by-value. Pada contoh diatas, kita memanggil method tes dan melewatkan nilai variabel i sebagai parameter. Nilai pada i disalinkan ke variable j pada method. Pada kondisi ini variabel j adalah merupakan variabel pengganti pada method tes, jika nilai j berubah maka nilai variabel i yang terletak pada main tidak akan ikut berubah walaupun awalnya variabel jmerupakan salinan dari variabel i. Secara default, semua tipe data primitif ketika dilewatkan pada sebuah method adalah pass-by-value.Pass-by-referenceKetika sebuah pass-by-reference terjadi, alamat memori dari nilai pada sebuah variabel dilewatkan pada saat pemanggilan method. Hal ini berarti bahwa method menyalin alamat memori dari variabel yang dilewatkan pada method. Ini tidak seperti pada pass-by-value, method dapat memodifikasi variabel asli dengan menggunakan alamat memori tersebut, meskipun berbeda nama variabel yang digunakan dalam method dengan variabel aslinya, kedua variabel ini menunjukkan lokasi dari data yang sama.

Page 109: Pemrograman Java
Page 110: Pemrograman Java
Page 111: Pemrograman Java

Pengenalan Pemrograman Berorientasi Obyek

Memanggil Method StaticMethod Static adalah method yang dapat dipakai tanpa harus menginisialisasi suatu class (maksudnya tanpa menggunakan variabel terlebih dahulu). Method static hanya dimiliki oleh class dan tidak dapat digunakan oleh instance (atau objek) dari suatu class. Method static dibedakan dari method yang dapat instance di dalam suatu class oleh kata kunci static.Untuk memanggil method static, ketik :Classname.staticMethodName(params);Contoh dari static method yang digunakan ://mencetak data pada layarSystem.out.println(“Hello world”);//convert string menjadi integerint i = Integer.parseInt(“10”);String hexEquivalent = Integer.toHexString( 10 );

Page 112: Pemrograman Java

Pengenalan Pemrograman Berorientasi Obyek

Lingkup VariabelSelain nama dan tipe data yang dimiliki oleh variabel, suatu variablejuga mempunyai jangkauan. Jangkauan ini menentukan kemampuan program dalam mengakses variable. Jangkauan ini juga menentukan siklus hidup dari suatu variable atau berapa lama variable itu berada dalam memori. Jangkauan ini ditentukan oleh letak pendeklarasian variabel didalam program. Untuk memudahkan anda mengenai jangkauan variabel, kita bedakan variabel yang terletak di dalam kurawal {.....}. Blok kode yang terdapat di luar kurung kurawal bisa disebut juga dengan blok luar, dan blok kode yang terletak di dalam kurung kurawal disebut dengan blok dalam.Jika kamu mendeklarasikan variabel di blok luar, variabel akan dapat dipakai oleh blok bagian dalam. Lain halnya jika kamu mendeklarasikan variabel di blok dalam, kamu tidak bisa harapkan blok terluar untuk menggunakan variabel tersebut. Jadi dapat disimpulkan, suatu jangkauan variable dapat terletak di dalam blok dimana variabel tersebut sudah di deklarasikan, dimulai dari tempat dimana variable itu di dklarasikan dan di blok-blok bagian dalam.

Page 113: Pemrograman Java
Page 114: Pemrograman Java

Kode yang kita miliki disini mempunyai lima jangkauan yang ditandai oleh baris dan keterangan yang mewakili jangkauan itu, dengan variable i,j,k,m dan n, dan 5 jangkauan A,B,C,D dan E, kita mempunyai beberapa jangkauan variable berikut:Jangkauan variable i adalah A.Jangkauan variable j adalah B.Jangkauan variable k adalah C.Jangkauan variable m adalah D.Jangkauan variable n adalah E.

Page 115: Pemrograman Java
Page 116: Pemrograman Java

Pada method main Jangkauan variabel adalah,ages[ ] - scope Ai in B - scope Bi in C – scope CPada method test, Jangkauan variabel adalah,arr[ ] - scope Di in E - scope EPada saat variabel di deklarasikan, hanya boleh terdapat sebuah variabel dengan identifier/nama dapat di deklarasikan di dalam sebuah jangkauan. Hal ini maksudnya jika kamu mempunyai deklarasi berikut,{int test = 10;int test = 20;}

Page 117: Pemrograman Java

Compiler akan menghasilkan error karena compiler mendeteksi nama yang lain dari variabel di satu blok, namun compiler tidak akan menghasilkan error jika menumukan dua variabel dengan nama yang sama jika kedua variabel tersebut tidak dideklarasikan pada blok yang sama, Contoh :int test = 0;System.out.print( test );//..some code here{int test = 20;System.out.print( test );}Manakala System.out.print (baris 2) pertama dipanggil, dia mencetak nilai dari variabel test pertama (nilai 0) pada saat variabel terlihat pada jangkauan. Pernyataan System.out.print yang kedua (baris6), nilai 20 dicetak mengambil nilai variabel test terdekat (baris 6)pada jangkauan blok kode tersebut.

Page 118: Pemrograman Java

Casting, Converting dan Comparing ObjectsPada bagian ini, kita akan belajar bagaimana mengunakan typecasting. Typecasting atau casting adalah proses konversi data dari tipe data tertentu ke tipe data yang lain. Kita juga akan belajar bagaimana mengkonversi tipe data primitif ke obyek dan sebaliknya. Kemudian, pada akhirnya kita akan belajar bagaimana membandingkan sebuah obyek.Casting Tipe data PrimitifCasting antara tipe primitif dapat mengijinkan Anda untuk mengkonversikan sebuah nilai dari sebuah tipe data tertentu kepada tipe primitif yang lain. Hal ini biasanya terjadi diantara tipe data angka. Ada sebuah tipe data primitif yang tidak dapat kita casting, yaitu tipe data boolean. Sebagai contoh dari typecasting adalah pada saat Anda menyimpan sebuah variabel dengantipe data integer kepada sebuah variabel dengan tipe data double. Sebagai contoh:int numInt = 10;double numDouble = numInt; //implicit castPada contoh ini dapat kita lihat bahwa, walaupun variabel yang dituju (double) memiliki ukuran yang lebih besar daripada nilai yang akan kita tempatkan didalamnya, data tersebut secara implisit dapat kita casting ke tipe data double.

Page 119: Pemrograman Java

Contoh yang lain adalah apabila kita ingin untuk melakukan typecasting sebuah int ke char atau sebaliknya. Sebuah karakter akan dapat digunakan sebagai nilai integer karena setiap karakter memiliki sebuah nilai numerik yang merepresentasikan posisinya dalam satu set karakter. Jika sebuah variable memiliki nilai 65, maka cast (char) i akan menghasilkan nilai 'A'. Kode numerik yang merepresentasikan huruf kapital A adalah 65, berdasarkan set karakter ASCII, dan Java telah mengadopsi bagian ini untuk mendukung karakter.char valChar = 'A';int valInt = valChar;System.out.print( valInt ); //casting explisit: keluaran 65Ketika kita mengkonversi data yang bertipe besar ke tipe data yang lebih kecil, kita harus menggunakan explicit cast. Explicit casts mengikuti bentuk sebagai berikut : (dataType)valuedimana,dataType, adalah nama dari tipe data yang Anda konversivalue, adalah pernyataan yang dihasilkan pada nilai dari the source type.Sebagai contoh,double valDouble = 10.12;int valInt = (int)valDouble; //men-convert valDouble ke tipe intdouble x = 10.2;int y = 2;int result = (int)(x/y); //hasil typecast operasi ke int

Page 120: Pemrograman Java

Contoh yang lain adalah apabila kita ingin untuk melakukan typecasting sebuah int ke char atau sebaliknya. Sebuah karakter akan dapat digunakan sebagai nilai integer karena setiap karakter memiliki sebuah nilai numerik yang merepresentasikan posisinya dalam satu set karakter. Jika sebuah variable memiliki nilai 65, maka cast (char) i akan menghasilkan nilai 'A'. Kode numerik yang merepresentasikan huruf kapital A adalah 65, berdasarkan set karakter ASCII, dan Java telah mengadopsi bagian ini untuk mendukung karakter.char valChar = 'A';int valInt = valChar;System.out.print( valInt ); //casting explisit: keluaran 65Ketika kita mengkonversi data yang bertipe besar ke tipe data yang lebih kecil, kita harus menggunakan explicit cast. Explicit casts mengikuti bentuk sebagai berikut : (dataType)valuedimana,dataType, adalah nama dari tipe data yang Anda konversivalue, adalah pernyataan yang dihasilkan pada nilai dari the source type.Sebagai contoh,double valDouble = 10.12;int valInt = (int)valDouble; //men-convert valDouble ke tipe intdouble x = 10.2;int y = 2;int result = (int)(x/y); //hasil typecast operasi ke int

Page 121: Pemrograman Java

Casting ObyekInstances dari class-class juga dapat di ubah ke instance-instance dari class-class yang lain dengan satu batasan: class-class sumber dan tujuan harus terhubung dengan mekanisme inheritance; satu class harus menjadi sebuah subclass terhadap class yang lain. Kita akan menjelaskan mengenai inheritance pada bab selanjutnya. Sejalan dengan konversi nilai primitif ke tipe yang lebih besar ukurannya, beberapa object mungkin tidak membutuhkan untuk ubah secara explisit. Faktanya karena semua subclass terdiri atas informasi yang sama seperti class induknya. Sebagai contoh, jika terdapat method yang memiliki dua argumen, satu tipe object dan tipe window yang lain. Anda dapat melewatkan instance dari class apapun untuk argumen object karena semua class java adalah subclass dari object. Untuk argumen window,anda dapat melewatkannya subclassnya, seperti dialog, FileDialog, dan frame. Hal ini dapat dituliskan dalam program dan bukan hanya dalam memanggil method. Jika anda mempunyai variabel yang didefinisikan sebagai class window, anda dapat memberikan obyek dari class tersebut atau dari subclassnya untuk dijadikan variabel tanpa konversi.

Page 122: Pemrograman Java

Untuk kebalikannya pun bisa dilakukan, Anda dapat menggunakan superclass ketika sebuah subclass dibentuk. Akan tetapi error akan ditemukan karena subclass kemungkinan memiliki lebih banyak tingkah laku daripada superclassnya, maka mungkin akan terjadi hilangnya kendali dari superclass untuk method tertentu. Superclass object mungkin tidak memiliki semua kemungkinan tingkah laku yang dapat dilakukan subclass object. Sebagai contoh jika anda memiliki operasi yang memanggil method dalam obyek dari class integer, mengunakan object dari class Number tidak akan didapat kan methodlebih banyak dar i yang dispesifikasikan dalam integer. Error akan terjadi jika Anda mencoba untuk memanggil method yang tidak dimiliki oleh obyek tujuan.

Page 123: Pemrograman Java

Untuk mengunakan obyek-obyek superclass dimana obyek-obyek subclass ditentukan terlebih dahulu, anda harus mengkonversi mereka secara eksplisit. Anda tidak akan kehilangan informasi sebelumnya setelah proses konversi, tapi anda mendapatkan semua method danvariabel yang didefinisikan oleh subclass. Untuk konversi sebuah obyek ke class yanglain, Anda dapat menggunakan operasi yang sama seperti konversi untuk tipe-tipe primitif : Untuk memilih,(classname)objectdimana,classname, adalah nama dari class tujuan.object, adalah sesuatu yang mengarah pada obyek sumber.Catatan: casting akan membuat pengalamatan ke obyek yang lama dari classname yang dituliskan; obyek yang lama akan dapat tetap dipakai seperti sebelumnya.

Page 124: Pemrograman Java

Contoh berikut konversi sebuah instance dari class VicePresident ke sabuah instance dari class Employee; VicePresident adalah sebuah subclass dari Employee dengan lebih banyak informasi, disini didefinisikan bahwa VicePresident memiliki akses menujuexecutive washroom,Employee emp = new Employee();VicePresident veep = new VicePresident();emp = veep; // tidak adah konversi yang diperlukan untuk penggunaanyang cenderung naikveep = (VicePresident)emp; // Harus memilih dengan pemilihan secara EksplisitConvert Tipe Primitive ke Object Dan SebaliknyaSatu hal yang tidak dapat Anda lakukan pada beberapa keadaan yaitu konversi dari sebuah obyek ke sebuah tipe data primitif, atau sebaliknya. Tipe-tipe data primitif dan obyek adalah sesuatu yang sangat berbeda dalam Java, dan Anda tidak bisa secara langsung konversi diantara keduanya. Sebagai sebuah alternatif, package java.lang yang terdiri atas class-class yang berhubungan untuk setiap tipe data primitif yaitu : Float, Boolean, Byte, dan sebagainya. Kebanyakan dari class-class ini memiliki nama yang sama seperti tipe datanya, kecuali jika nama classnya diawali dengan huruf besar (Short -> sort, Double -> double dan sebagainya). Selain itu terdapat dua class yang memiliki nama berbeda dari tipe data primitifnya yaitu: Character digunakan untuk variabel char dan Integer untuk variabel int. (Disebut dengan Wrapper Classes)

Page 125: Pemrograman Java

Java merepresentasikan tipe data primi ti f dan versi classnya dengan sangat berbeda. Sebuah program tidak akan berhasil tercompile jika Anda menggunakan hanya satu ketika yang lain juga diperlukan. Menggunakan class-class yang berhubungan untuk setiap tipe primitif, anda dapat membuat sebuah obyek yang memiliki nilai yang sama.Contoh ://Pernyataan berikut membentuk sebuah instance bertipe Integer// class dengan nilai integer 7801 (primitif -> Object)Integer dataCount = new Integer(7801);//Pernyataan berikut meng-konversi sebuah obyek Integer ke//tipe data primitif int nya. Hasilnya adalah sebuah int//dengan nilai 7801int newCount = dataCount.intValue();// Anda perlu suatu translasi biasa pada program// yang mengkonversi sebuah String ke sebuah tipe numeric,//seperti suatu int// Obyek->primitifString pennsylvania = "65000";int penn = Integer.parseInt(pennsylvania); PERHATIAN: class Void tidak mewakili apapun dalam Java, jadi class ini tidak akan digunakan ketika melakukan konversi antara nilai primitif dan obyek. Kata void digunakan dalam definisi method untuk mengindikasikan bahwa method tidak memiliki sebuah nilai yang dihasilkan.

Page 126: Pemrograman Java

Java merepresentasikan tipe data primi ti f dan versi classnya dengan sangat berbeda. Sebuah program tidak akan berhasil tercompile jika Anda menggunakan hanya satu ketika yang lain juga diperlukan. Menggunakan class-class yang berhubungan untuk setiap tipe primitif, anda dapat membuat sebuah obyek yang memiliki nilai yang sama.Contoh ://Pernyataan berikut membentuk sebuah instance bertipe Integer// class dengan nilai integer 7801 (primitif -> Object)Integer dataCount = new Integer(7801);//Pernyataan berikut meng-konversi sebuah obyek Integer ke//tipe data primitif int nya. Hasilnya adalah sebuah int//dengan nilai 7801int newCount = dataCount.intValue();// Anda perlu suatu translasi biasa pada program// yang mengkonversi sebuah String ke sebuah tipe numeric,//seperti suatu int// Obyek->primitifString pennsylvania = "65000";int penn = Integer.parseInt(pennsylvania); PERHATIAN: class Void tidak mewakili apapun dalam Java, jadi class ini tidak akan digunakan ketika melakukan konversi antara nilai primitif dan obyek. Kata void digunakan dalam definisi method untuk mengindikasikan bahwa method tidak memiliki sebuah nilai yang dihasilkan.

Page 127: Pemrograman Java

Membandingkan dua ObyekDalam diskusi kita sebelumnya, kita mempelajari tentang operator untuk membandingkan nilai — sama dengan, tidak sama dengan, lebih kecil daripada, dan sebagainya. Operator ini hanya bekerja pada tipe primitif, bukan pada obyek. Jika Anda berusaha untuk menggunakan nilai selain tipe data primitif sebagai operand, compiler Java akan menghasilkan error.Salah satu contoh untuk aturan ini adalah operator untuk persamaan : == (sama dengan)dan != (tidak samadengan), ketika operator ini dimasukkan ke sebuah obyek, operator initidak akan melakukan apa yang sebenarnya diinginkan. Penggunaan operator ini akan memeriksa kesamaan antara satu obyek ke obyek lain, bukan nilainya. Untuk membandingkan instance dari sebuah, Anda harus mengimplementasikan method khusus dalam class anda dan memanggil method tersebut. Sebuah contoh yang baik untuk ini adalah class String. Sangat mungkin memiliki dua object String yang memiliki nilai yang sama. Namun, jika Anda menggunakan operator == untuk membandingkan obyek ini, kedua obyek tersebut Akan menghasilkan hasil yang tidak sama. Walaupun isinya ternyata sama akan tetapi padakenyataannya mereka bukan merupakan obyek yang sama. Untuk melihat jika dua object String memiliki nilai yang sama, sebuah method dari classyaitu equals() digunakan. Method ini akan memeriksa setiap karakter dalam string dan mengembalikan nilai true jika dua obyek string memiliki nilai yang sama.

Page 128: Pemrograman Java

Kode berikut mengilustrasikan hal tersebut,class EqualsTest {public static void main(String[] arguments) {String str1, str2;str1 = "Free the bound periodicals.";str2 = str1;System.out.println("String1: " + str1);System.out.println("String2: " + str2);System.out.println("Same object? " + (str1 == str2));str2 = new String(str1);System.out.println("String1: " + str1);System.out.println("String2: " + str2);System.out.println("Same object? " + (str1 == str2));System.out.println("Same value? " + str1.equals(str2));}}Output program ini adalah sebagai berikut ,OUTPUT:String1: Free the bound periodicals.String2: Free the bound periodicals.Same object? true

Page 129: Pemrograman Java

String1: Free the bound periodicals.String2: Free the bound periodicals.Same object? falseSame value? TrueSekarang mari mendiskusikan tentang dua baris kode dari program sebagai berikut.String str1, str2;str1 = "Free the bound periodicals.";

Page 130: Pemrograman Java

Bagian pertama dari program mendeklarasikan dua variabel (str1 dan str2), memberikan kalimat "Free the bound periodicals." untuk str1, dan kemudian memberi nilai tersebut untuk str2. Seperti yang Anda pelajari sebelumnya, str1 dan str2 sekarang menunjuk ke alamat obyek yang sama, dan uji kesamaan membuktikan hal tersebut.str2 = new String(str1);Pada bagian yang kedua dari program ini, anda membuat obyek String baru dengan nilai yang sama dari str1 dan memberikkanya ke str2. Sekarang Anda memiliki dua obyek string yang berbeda yaitu str1 dan str2, keduanya memilki nilai yang sama. Ketika dilakukan pengujian untuk melihat jika mereka obyek yang sama dengan menggunakan operator ==, akan dihasilkan nilai: false — kedua obyek bukan obyek yang sama dalam memory. Ketika dilakukan pengujian menggunakan method equals() maka akan dihasilkan : true – keduaobyek tersebut memiliki nilai yang sama.

Page 131: Pemrograman Java

Catatan: Mengapa kita tidak dapat hanya menggunakan literal yang lain ketika ingin mengubah str2, selain menggunakan new? String literals sudah dioptimasi dalam Java; jika Anda membuat sebuah string menggunakan literal dan kemudian menggunakan literal yang lain dengan character yang sama, Java cukup memberikan Anda obyek String yang pertama kembali. Jadi kedua String tadi adalah obyek yang sama; Anda harus menghidari langkah anda untuk membuat dua obyek terpisah.

Page 132: Pemrograman Java

Menentukan Class dari sebuah ObjectJika kita ingin mengetahui class dari sebuah obyek dapat dilakukan dengan cara :1. Method getClass() mengembalikan sebuah obyek Class (dimana Class itusendiri merupakan sebuah class) yang memilki sebuah method getName(). Selanjutnya getName() akan mengembalikan sebuah string yang mewakili nama class. Sebagai contoh,String name = key.getClass().getName();2. operator InstanceOfinstanceOf memiliki dua operand: obyek pada sebelah kiri dan nama class pada sebelah kanan. Pernyataan ini mengembalikan nilai true atau false tergantung pada benar/salah obyek adalah sebuah instance dari penamaan class atau beberapa subclass milik class tersebut.Sebagai contoh,boolean ex1 = "Texas" instanceof String; // trueObject pt = new Point(10, 10);boolean ex2 = pt instanceof String; // falsePengenalan Pemrograman 1 18

Page 133: Pemrograman Java

SESI07

Page 134: Pemrograman Java

Membuat Class SendiriSebelum menulis class Anda, pertama pertimbangkan dimana Anda akan menggunakan class dan bagaimana class tersebut akan digunakan. Pertimbangkan pula nama yang tepat dan tuliskan seluruh informasi atau properti yang ingin Anda isi pada class. Jangan sampai terlupa untuk menuliskan secara urut method yang akan Anda gunakan dalam class.Dalam pendefinisian class, dituliskan :<modifier> class <name> {<attributeDeclaration>*<constructorDeclaration>*<methodDeclaration>* }dimana : <modifier> adalah sebuah access modifier, yang dapat dikombinasikan dengan tipe modifier lain. Pada bagian ini, kita akan membuat sebuah class yang berisi record dari siswa. Jika kita telah mengidentifikasikan tujuan dari pembuatan class, maka dapat dilakukan pemberian nama yang sesuai. Nama yang tepat pada class ini adalah StudentRecord. Untuk mendefinisikan class, kita tuliskan :public class StudentRecord{//area penulisan kode selanjutnya}dimana, Public - Class ini dapat diakses dari luar packageClass - Keyword yang digunakan untuk pembuatan class dalam Java Public Class ini dapat diakses dari luar packageStudentRecord - Identifier yang menjelaskan class

Page 135: Pemrograman Java

Membuat Class SendiriDeklarasi AtributDalam pendeklarasian atribut, kita tuliskan :<modifier> <type> <name> [= <default_value>];Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class. Untuk setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan. Contohnya, Anda tidak mungkin menginginkan untuk menggunakan tipe data integer untuk nama siswa, atau tipe data string pada nilai siswa.Berikut ini adalah contoh informasi yang akan diisikan pada class StudentRecord :name - Stringaddress - Stringage - Intmath grade - doubleenglish grade - doublescience grade - doubleaverage grade - doubleAnda dapat menambahkan informasi lain jika diperlukan.

Page 136: Pemrograman Java

Membuat Class SendiriInstance VariableJika kita telah menuliskan seluruh atribut yang akan diisikan pada class, selanjutnya kita akan menuliskannya pada kode. Jika kita menginginkan bahwa atribut – atribut tersebut adalah unik untuk setiap object (dalam hal ini untuk setiap siswa), maka kita harus mendeklarasikannya sebagai instance variable :Sebagai contoh :public class StudentRecord{private String name;private String address;private int age;private double mathGrade;private double englishGrade;private double scienceGrade;private double average;//area penulisan kode selanjutnya}dimana, private disini menjelaskan bahwa variabel tersebut hanya dapat diakses oleh class itu sendiri. Object lain tidak dapat menggunakan variabel tersebut secara langsung. Kita akan membahas tentang kemampuan akses pada pembahasan selanjutnya.

Page 137: Pemrograman Java

Membuat Class SendiriClass Variable atau Static VariablesDisamping instance variable, kita juga dapat mendeklarasikan class variable atau variabel yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua object di class yang sama. Anggaplah kita menginginkan jumlah dari siswa yang dimiliki dari seluruh class, kita dapat mendeklarasikan satu static variable yang akan menampung nilai tersebut. Kita beri nama variabel tersebut dengan nama studentCount.Berikut penulisan static variable :public class StudentRecord{//area deklarasi instance variablesprivate static int studentCount;//area penulisan kode selanjutnya}Kita gunakan keyword : ’static’ untuk mendeklarasikan bahwa variabel tersebut adalahstatic.

Page 138: Pemrograman Java

Membuat Class SendiriMaka keseluruhan kode yang dibuat terlihat sebagai berikut :public class StudentRecord{private String name;private String address;private int age;private double mathGrade;private double englishGrade;private double scienceGrade;private double average;Private static int studentCount;//area penulisan kode selanjutnya}

Page 139: Pemrograman Java

Membuat Class SendiriDeklarasi MethodsSebelum kita membahas method apa yang akan dipakai pada class, mari kita perhatikan penulisan method secara umum.Dalam pendeklarasian method, kita tuliskan :<modifier> <returnType> <name>(<parameter>*) {<statement>*}dimana,<modifier> dapat menggunakan beberapa modifier yang berbeda<returnType> dapat berupa seluruh tipe data, termasuk void<name> identifier atas class<parameter> ::= <tipe_parameter> <nama_parameter>[,]Accessor MethodsUntuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class sebagai private. Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses data private. Dalam hal ini kita gunakan accessor methods.

Page 140: Pemrograman Java

Membuat Class SendiriAccessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get<namaInstanceVariable>. Method ini juga mempunyai sebuah return value.Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca nama,alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa.Mari kita perhatikan salah satu contoh implementasi accessor method.public class StudentRecord{private String name;::public String getName(){return name;}} dimana,public - Menjelaskan bahwa method tersebut dapat diakses dari object luar class String - Tipe data return value dari method tersebut bertipe StringgetName - Nama dari method() - Menjelaskan bahwa method tidak memiliki parameter apapun

Page 141: Pemrograman Java

Membuat Class SendiriPernyataan berikut, return name;dalam program kita menandakan akan ada pengembalian nilai dari nama instance variable ke pemanggilan method. Perhatikan bahwa return type dari method harus sama dengan tipe data seperti data pada pernyataan return. Anda akan mendapatkan pesan kesalahan sebagai berikut bila tipe data yang digunakan tidak sama :StudentRecord.java:14: incompatible typesfound : intrequired: java.lang.Stringreturn age;^1 errorContoh lain dari penggunaan accessor method adalah getAverage,public class StudentRecord{private String name;::public double getAverage(){double result = 0;result = ( mathGrade+englishGrade+scienceGrade )/3;return result;}}Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan nilai return value dengan nama result.

Page 142: Pemrograman Java

Membuat Class SendiriMutator MethodsBagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable dalam class, baik itu berupa instance maupun static. Method semacam ini disebut dengan mutator methods. Sebuah mutator method umumnya tertulis set<namaInstanceVariabel>.Mari kita perhatikan salah satu dari implementasi mutator method :public class StudentRecord{ private String name;::public void setName( String temp ){name = temp;} }dimana, public - Menjelaskan bahwa method ini dapat dipanggil object luar classvoid - Method ini tidak menghasilkan return valuesetName - Nama dari method(String temp) - Parameter yang akan digunakan pada methodPernyataan berikut :name = temp;mengidentifikasi nilai dari temp sama dengan name dan mengubah data pada instance variable name. Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun berisi beberapa argumen dari program yang akan digunakan oleh method

Page 143: Pemrograman Java

Membuat Class SendiriMultiple Return StatementsAnda dapat mempunyai banyak return values pada sebuah method selama mereka tidak pada blok program yang sama. Anda juga dapat menggunakan konstanta disamping variabel sebagai return value. Sebagai contoh, perhatikan method berikut ini :public String getNumberInWords( int num ){String defaultNum = "zero";if( num == 1 ){return "one"; //mengembalikan sebuah konstanta}else if( num == 2){return "two"; //mengembalikan sebuah konstanta}// mengembalikan sebuah variabelreturn defaultNum;}

Page 144: Pemrograman Java

Membuat Class SendiriStatic MethodsKita menggunakan static method untuk mengakses static variable studentCount.public class StudentRecord{private static int studentCount;public static int getStudentCount(){return studentCount;}}dimana,public - Menjelaskan bahwa method ini dapat diakses dari object luar classstatic - Method ini adalah static dan pemanggilannya menggunakan[namaclass].[namaMethod]. Sebagai contoh :studentRecord.getStudentCountInt - Tipe return dari method. Mengindikasikan method tersebut harusmempunyai return value berupa integer public - Menjelaskan bahwa method ini dapat diakses dari object luar class getStudentCount - Nama dari method() - Method ini tidak memiliki parameter apapun Pada deklarasi di atas, method getStudentCount() akan selalu menghasilkan return value 0 jika kita tidak mengubah apapun pada kode program untuk mengatur nilainya. Kita akanmembahas pengubahan nilai dari studentCount pada pembahasan constructor.

Page 145: Pemrograman Java

Membuat Class SendiriContoh Kode Program dari class StudentRecordBerikut ini adalah kode untuk class StudentRecord :public class StudentRecord{private String name;private String address;private int age;private double mathGrade;private double englishGrade;private double scienceGrade;private double average;private static int studentCount;/*** Menghasilkan nama dari Siswa*/public String getName(){return name;}

Page 146: Pemrograman Java

/*** Mengubah nama siswa*/public void setName( String temp ){name = temp;}// area penulisan kode lain/*** Menghitung rata – rata nilai Matematik, Bahasa Inggris, * * IlmuPasti*/public double getAverage(){double result = 0;result = ( mathGrade+englishGrade+scienceGrade )/3;return result;}/*** Menghasilkan jumlah instance StudentRecord*/public static int getStudentCount(){return studentCount;}}

Page 147: Pemrograman Java

contoh kode dari class yang mengimplementasikan class StudentRecord :public class StudentRecordExample{public static void main( String[] args ){//membuat 3 object StudentRecordStudentRecord annaRecord = new StudentRecord();StudentRecord beahRecord = new StudentRecord();StudentRecord crisRecord = new StudentRecord();//Memberi nama siswaannaRecord.setName("Anna");beahRecord.setName("Beah");crisRecord.setName("Cris");//Menampilkan nama siswa “Anna”System.out.println( annaRecord.getName() );//Menampilkan jumlah siswaSystem.out.println("Count="+StudentRecord.getStudentCount());}}

Output dari program adalah sebagai berikut :AnnaStudent Count = 0

Page 148: Pemrograman Java

Reference thisReference this digunakan untuk mengakses instance variable yang dibiaskan oleh parameter. Untuk pemahaman lebih lanjut, mari kita perhatikan contoh pada method setAge. Dimisalkan kita mempunyai kode deklarasi berikut pada method setAge.public void setAge( int age ){age = age; //SALAH!!!}Nama parameter pada deklarasi ini adalah age, yang memiliki penamaan yang sama dengan instance variable age. Parameter age adalah deklarasi terdekat dari method, sehingga nilai dari parameter tersebut akan digunakan. Maka pada pernyataan :age = age;kita telah menentukan nilai dari parameter age kepada parameter itu sendiri. Hal ini sangat tidak kita kehendaki pada kode program kita. Untuk menghindari kesalahan semacam ini, kita gunakan metode referensi this. Untuk menggunakan tipe referensi ini, kita tuliskan :this.<namaInstanceVariable>Sebagai contoh, kita dapat menulis ulang kode hingga tampak sebagai berikut :public void setAge( int age ){this.age = age;}Method ini akan mereferensikan nilai dari parameter age kepada instance variable dariobject StudentRecord.

Page 149: Pemrograman Java

Overloading MethodsDalam class yang kita buat, kadangkala kita menginginkan untuk membuat method dengan nama yang sama namun mempunyai fungsi yang berbeda menurut parameter yang digunakan. Kemampuan ini dimungkinkan dalam pemrograman Java, dan dikenal sebagai overloading method.Overloading method mengijinkan sebuah method dengan nama yang sama namun memiliki parameter yang berbeda sehingga mempunyai implementasi dan return value yang berbeda pula. Daripada memberikan nama yang berbeda pada setiap pembuatan method, overloading method dapat digunakan pada operasi yang sama namun berbeda dalam implementasinya.Sebagai contoh, pada class StudentRecord kita menginginkan sebuah method yang akan menampilkan informasi tentang siswa. Namun kita juga menginginkan operasi penampilan data tersebut menghasilkan output yang berbeda menurut parameter yang digunakan. Jika pada saat kita memberikan sebuah parameter berupa string, hasil yang ditampilkan adalah nama, alamat dan umur dari siswa, sedang pada saat kita memberikan 3 nilai dengan tipedouble, kita menginginkan method tersebut untuk menampilkan nama dan nilai dari siswa.Untuk mendapatkan hasil yang sesuai, kita gunakan overloading method di dalam deklarasi class StudentRecord.

Page 150: Pemrograman Java

public void print( String temp ){System.out.println("Name:" + name);System.out.println("Address:" + address);System.out.println("Age:" + age);}public void print(double eGrade, double mGrade, double sGrade)System.out.println("Name:" + name);System.out.println("Math Grade:" + mGrade);System.out.println("English Grade:" + eGrade);System.out.println("Science Grade:" + sGrade);}Jika kita panggil pada method utama (main) :public static void main( String[] args ){StudentRecord annaRecord = new StudentRecord();annaRecord.setName("Anna");annaRecord.setAddress("Philippines");annaRecord.setAge(15);annaRecord.setMathGrade(80);annaRecord.setEnglishGrade(95.5);annaRecord.setScienceGrade(100);

Page 151: Pemrograman Java

//overloaded methodsannaRecord.print( annaRecord.getName() );annaRecord.print( annaRecord.getEnglishGrade(),annaRecord.getMathGrade(),annaRecord.getScienceGrade());}Kita akan mendapatkan output pada panggilan pertama sebagai berikut :Name:AnnaAddress:PhilippinesAge:15Kemudian akan dihasilkan output sebagai berikut pada panggilan kedua :Name:AnnaMath Grade:80.0English Grade:95.5Science Grade:100.0

Page 152: Pemrograman Java

//overloaded methodsannaRecord.print( annaRecord.getName() );annaRecord.print( annaRecord.getEnglishGrade(),annaRecord.getMathGrade(),annaRecord.getScienceGrade());}Kita akan mendapatkan output pada panggilan pertama sebagai berikut :Name:AnnaAddress:PhilippinesAge:15Kemudian akan dihasilkan output sebagai berikut pada panggilan kedua :Name:AnnaMath Grade:80.0English Grade:95.5Science Grade:100.0Jangan lupakan bahwa overloaded method memiliki property sebagai berikut :1. Nama yang sama2. Parameter yang berbeda3. Nilai kembalian (return) bisa sama ataupun berbeda

Page 153: Pemrograman Java

Deklarasi ConstructorTelah tersirat pada pembahasan sebelumnya, Constructor sangatlah penting pada pembentukan sebuah object. Constructor adalah method dimana seluruh inisialisasi object ditempatkan.Berikut ini adalah property dari Constructor :1. Constructor memiliki nama yang sama dengan class2. Sebuah Constructor mirip dengan method pada umumnya, namun hanya informasi – informasi berikut yang dapat ditempatkan pada header sebuah constructor, scopeatau identifikasi pengaksesan (misal: public), nama dari konstuktor dan parameter.3. Constructor tidak memiliki return value4. Constructor tidak dapat dipanggil secara langsung, namun harus dipanggil denganmenggunakan operator new pada pembentukan sebuah class.Untuk mendeklarasikan constructor, kita tulis,<modifier> <className> (<parameter>*) {<statement>*}

Page 154: Pemrograman Java

Default ConstructorSetiap class memiliki default constructor. Sebuah default constructor adalah constructor yang tidak memiliki parameter apapun. Jika sebuah class tidak memiliki constructor apapun, maka sebuah default constructor akan dibentuk secara implisit : Sebagai contoh, pada class StudentRecord, bentuk default constructor akan terlihat seperti dibawah ini :public StudentRecord(){//area penulisan kode}Overloading ConstructorSeperti telah kita bahas sebelumnya, sebuah constructor juga dapat dibentuk menjadioverloaded. Dapat dilihat pada 4 contoh sebagai berikut :public StudentRecord(){//area inisialisasi kode;}public StudentRecord(String temp){this.name = temp;}public StudentRecord(String name, String address){this.name = name;this.address = address;}

Page 155: Pemrograman Java

public StudentRecord(double mGrade, double eGrade, double sGrade){mathGrade = mGrade;englishGrade = eGrade;scienceGrade = sGrade;}Menggunakan ConstructorUntuk menggunakan constructor, kita gunakan kode – kode sebagai berikut :public static void main( String[] args ){//membuat 3 objekStudentRecord annaRecord=new StudentRecord("Anna");StudentRecord beahRecord=new StudentRecord("Beah","Philippines");StudentRecord crisRecord=new StudentRecord(80,90,100);//area penulisan kode selanjtunya}Sebelum kita lanjutkan, mari kita perhatikan kembali deklarasi variabel static studentCount yang telah dibuat sebelumnya. Tujuan deklarasi studentCount adalah untuk menghitung jumlah object yang dibentuk pada class StudentRecord. Jadi, apa yang akan kita lakukan selanjutnya adalah menambahkan nilai dari studentCount setiap kali setiap pembentukanobject pada class StudentRecord. Lokasi yang tepat untuk memodifikasi dan menambahkan

Page 156: Pemrograman Java

nilai studentCount terletak pada constructor-nya, karena selalu dipanggil setiap kali objek terbentuk. Sebagai contoh :public StudentRecord(){//letak kode inisialisasistudentCount++; //menambah student}public StudentRecord(String temp){this.name = temp;studentCount++; //menambah student}public StudentRecord(String name, String address){this.name = name;this.address = address;studentCount++; //menambah student}public StudentRecord(double mGrade, double eGrade, double sGrade){mathGrade = mGrade;englishGrade = eGrade;scienceGrade = sGrade;studentCount++; //menambah student}

Page 157: Pemrograman Java

Pemanggilan Constructor Dengan this()Pemanggilan constructor dapat dilakukan secara berangkai, dalam arti Anda dapat memanggil constructor di dalam constructor lain. Pemanggilan dapat dilakukan dengan referensi this(). Perhatikan contoh kode sebagai berikut :1: public StudentRecord(){2: this("some string");3:4: }5:6: public StudentRecord(String temp){7: this.name = temp;8: }9:10: public static void main( String[] args )11: {12:13: StudentRecord annaRecord = new StudentRecord();14: }

Page 158: Pemrograman Java

Pemanggilan Constructor Dengan this()Pemanggilan constructor dapat dilakukan secara berangkai, dalam arti Anda dapat memanggil constructor di dalam constructor lain. Pemanggilan dapat dilakukan dengan referensi this(). Perhatikan contoh kode sebagai berikut :1: public StudentRecord(){2: this("some string");3:4: }5:6: public StudentRecord(String temp){7: this.name = temp;8: }9:10: public static void main( String[] args )11: {12:13: StudentRecord annaRecord = new StudentRecord();14: }Dari contoh kode diatas, pada saat baris ke 13 dipanggil akan memanggil constructor dasar pada baris pertama. Pada saat baris kedua dijalankan, baris tersebut akan menjalankan constructor yang memiliki parameter String pada baris ke-6.

Page 159: Pemrograman Java

Beberapa hal yang patut diperhatikan pada penggunaan this() :1. Harus dituliskan pada baris pertama pada sebuah constructor2. Hanya dapat digunakan pada satu definisi constructor. Kemudian metode ini dapatdiikuti dengan kode – kode berikutnya yang relevanPackagesPackages dalam JAVA berarti pengelompokan beberapa class dan interface dalam satu unit. Fitur ini menyediakan mekanisme untuk mengatur class dan interface dalam jumlah banyak dan menghindari konflik pada penamaan.Mengimport PackagesSupaya dapat meggunakan class yang berada diluar package yang sedang dikerjakan, Anda harus mengimport package dimana class tersebut berada. Pada dasarnya, seluruh program JAVA mengimport package java.lang.*, sehingga Anda dapat menggunakan class seperti String dan Integer dalam program meskipun belum mengimport package sama sekali.Penulisan import package dapat dilakukan seperti dibawah ini :import <namaPaket>;Sebagai contoh, bila Anda ingin menggunakan class Color dalam package awt, Anda harus menuliskan import package sebagai berikut :import java.awt.Color;import java.awt.*;Baris pertama menyatakan untuk mengimport class Color secara spesifik pada package, sedangkan baris kedua menyatakan mengimport seluruh class yang terkandung dalam package java.awt.

Page 160: Pemrograman Java

Cara lain dalam mengimport package adalah dengan menuliskan referensi package secara eksplisit. Hal ini dilakukan dengan menggunakan nama package untuk mendeklarasikanobject sebuah class :java.awt.Color color;Membuat PackageUntuk membuat package, dapat dilakukan dengan menuliskan :package <packageName>;Anggaplah kita ingin membuat package dimana class StudentRecord akan ditempatkan bersama dengan class – class yang lain dengan nama package schoolClasses. Langkah pertama yang harus dilakukan adalah membuat folder dengan nama schoolClasses. Salin seluruh class yang ingin diletakkan pada package dalam folder ini. Kemudian tambahkan kode deklarasi package pada awal file. Sebagai contoh :package schoolClasses;public class StudentRecord{private String name;private String address;private int age;}Package juga dapat dibuat secara bersarang. Dalam hal ini Java Interpreter menghendaki struktur direktori yang mengandung class eksekusi untuk disesuaikan dengan struktur package.

Page 161: Pemrograman Java

Pengaturan CLASSPATHDiasumsikan package schoolClasses terdapat pada direktori C:\. Langkah selanjutnya adalah mengatur classpath untuk menunjuk direktori tersebut sehingga pada saat akan dijalankan, JVM dapat mengetahui dimana class tersebut tersimpan. Sebelum membahas cara mengatur classpath, perhatikan contoh dibawah yang menandakan kejadian bila kita tidak mengatur classpath.Asumsikan kita mengkompilasi dan menjalankan class StudentRecord :C:\schoolClasses>javac StudentRecord.javaC:\schoolClasses>java StudentRecordException in thread "main" java.lang.NoClassDefFoundError: StudentRecord(wrong name: schoolClasses/StudentRecord)at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(Unknown Source)at java.security.SecureClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.defineClass(Unknown Source)at java.net.URLClassLoader.access$100(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Page 162: Pemrograman Java

Kita akan mendapatkan pesan kesalahan berupa NoClassDefFoundError yang berarti JAVA tidak mengetahui dimana posisi class. Hal tersebut disebabkan oleh karena classStudentRecord berada pada package dengan nama studentClasses. Jika kita ingin menjalankan class tersebut, kita harus memberi informasi pada JAVA bahwa nama lengkap dari class tersebut adalah schoolClasses.StudentRecord. Kita juga harusmenginformasikan kepada JVM dimana posisi pencarian package, yang dalam hal ini beradapada direktori C:\. Untuk melakukan langkah – langkah tersebut, kita harus mengaturclasspath. Pengaturan classpath pada Windows dilakukan pada command prompt :C:\schoolClasses> set classpath=C:\dimana C:\ adalah direktori dimana kita menempatkan package. Setelah mengatur classpath, kita dapat menjalankan program di mana saja dengan mengetikkan :C:\schoolClasses> java schoolClasses.StudentRecordPada UNIX, asumsikan bahwa kita memiliki class - class yang terdapat dalam direktori /usr/local/myClasses, ketikkan :export classpath=/usr/local/myClassesPerhatikan bahwa Anda dapat mengatur classpath dimana saja. Anda juga dapat mengatur lebih dari satu classpath, kita hanya perlu memisahkannya dengan menggunakan ;(Windows), dan : (UNIX). Sebagai contoh :set classpath=C:\myClasses;D:\;E:\MyPrograms\Javadan untuk sistem UNIX :export classpath=/usr/local/java:/usr/myClasses

Page 163: Pemrograman Java

Access ModifiersPada saat membuat, mengatur properties dan class methods, kita ingin untukmengimplementasikan beberapa macam larangan untuk mengakses data. Sebagai contoh, jika Anda ingin beberapa atribut hanya dapat diubah hanya dengan method tertentu, tentu Anda ingin menyembunyikannya dari object lain pada class. Di JAVA, implementasi tersebut disebut dengan access modifiers.Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected dan default. 3 tipe akses pertama tertulis secara ekplisit pada kode untuk mengindikasikan tipe akses, sedangkan yang keempat yang merupakan tipe default, tidak diperlukan penulisan keywordatas tipe.Akses Default (Package Accessibility)Tipe ini mensyaratkan bahwa hanya class dalam package yang sama yang memiliki hak akses terhadap variabel dan methods dalam class. Tidak terdapat keyword pada tipe ini. Sebagai contoh :public class StudentRecord{//akses dasar terhadap variabelint name;//akses dasar terhadap metodeString getName(){return name;}}Pada contoh diatas, variabel nama dan method getName() dapat diakses dari object lain selama object tersebut berada pada package yang sama dengan letak dari file StudentRecord.

Page 164: Pemrograman Java

Akses PublicTipe ini mengijinkan seluruh class member untuk diakses baik dari dalam dan luar class. Object apapun yang memiliki interaksi pada class memiliki akses penuh terhadap member dari tipe ini. Sebagai contoh :public class StudentRecord{//akses dasar terhadap variabelpublic int name;//akses dasar terhadap metodepublic String getName(){return name;}}Dalam contoh ini, variabel name dan method getName() dapat diakses dari object lain.

Page 165: Pemrograman Java

Akses ProtectedTipe ini hanya mengijinkan class member untuk diakses oleh method dalam class tersebut dan elemen – elemen subclass. Sebagai contoh :public class StudentRecord{//akses pada variabelprotected int name;//akses pada metodeprotected String getName(){return name;}}Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh method internal class dan subclass dari class StudentRecord. Definisi subclass akan dibahas pada bab selanjutnya.

Page 166: Pemrograman Java

Akses PrivateTipe ini mengijinkan pengaksesan class hanya dapat diakses oleh class dimana tipe ini dibuat. Sebagai contoh :public class StudentRecord{//akses dasar terhadap variabelprivate int name;//akses dasar terhadap metodeprivate String getName(){return name;}}Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh method internal class tersebut. Petunjuk Penulisan Program :

Page 167: Pemrograman Java

LatihanEntry Buku AlamatTugas Anda adalah membuat sebuah class yang memuat data-data pada buku alamat. Tabel berikut mendefinisikan informasi yang dimiliki oleh buku alamat.

Buat implementasi dari method sebagai berikut :1. Menyediakan accessor dan mutator method terhadap seluruh atribut2. ConstructorBuku AlamatBuat sebuah class buku alamat yang dapat menampung 100 data. Gunakan class yang telah dibuat pada nomor pertama. Anda harus diimplementasikan method berikut pada bukualamat :1. Memasukkan data2. Menghapus data3. Menampilkan seluruh data4. Update data

Page 168: Pemrograman Java

SESI08

Page 169: Pemrograman Java

Pewarisan, Polimorfisme, dan Interface

Pewarisan

Dalam Java, semua class, termasuk class yang membangun Java API, adalah subclassesdari superclass Object. Contoh hirarki class diperlihatkan di bawah ini.Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass.Sementara beberapa class di bawah class pokok dalam hirarki lass

dikenal sebagai subclass dari class tersebut.

Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya perlu mengimplementasikan perbedaannya sendiri dan induknya.

Page 170: Pemrograman Java

Pewarisan, Polimorfisme, dan Interface

Mendefinisikan Superclass dan SubclassUntuk memperoleh suatu class, kita menggunakan kata kunci extend. Untukmengilustrasikan ini, kita akan membuat contoh class induk. Dimisalkan kita mempunyai class induk yang dinamakan Person.public class Person{protected String name;protected String address;/*** Default constructor*/public Person(){System.out.println(“Inside Person:Constructor”);name = "";address = "";}/**

Page 171: Pemrograman Java

* Constructor dengan dua parameter*/public Person( String name, String address ){this.name = name;this.address = address;}/*** Method accessor*/public String getName(){return name;}public String getAddress(){return address;}public void setName( String name ){this.name = name;}public void setAddress( String add ){this.address = add;}}

Page 172: Pemrograman Java

Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected. Alasannyakita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa diakses oleh subclassesdari superclassess. Jika kita mendeklarasikannya sebagai private, subclasses tidak dapat menggunakannya. Catatan bahwa semua properti dari superclass yang dideklarasikan sebagai public, protected dan default dapat diakses oleh subclasses-nya. Sekarang, kita ingin membuat class lain bernama Student. Karena Student juga sebagai Person, kita putuskan hanya meng-extend class Person, sehingga kita dapat mewariskansemua properti dan method dari setiap class Person yang ada. Untuk melakukan ini, kita tulis,public class Student extends Person{public Student(){System.out.println(“Inside Student:Constructor”);//beberapa kode di sini}// beberapa kode di sini}Ketika object Student di-instantiate, default constructor dari superclass secara mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu, pernyataan di dalam subclass dieksekusi. Untuk mengilustrasikannya, perhatikan kode berikut,

Page 173: Pemrograman Java

public static void main( String[] args ){

Student anna = new Student();

}

Dalam kode ini, kita membuat sebuah object dari class Student. Keluaran dari program adalah,

Inside Person:Constructor

Inside Student:Constructor

Page 174: Pemrograman Java

Kata Kunci SuperSubclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini dilakukan dengan pemanggil construktor super. Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan, berdasar dari argumen sebelumnya.Sebagai contoh, pada contoh class sebelumnya. Person dan Student, kita tunjukkan contoh dari pemanggil constructor super. Diberikan kode berikut untuk Student,public Student(){super( "SomeName", "SomeAddress" );System.out.println("Inside Student:Constructor");}Kode ini memanggil constructor kedua dari superclass terdekat (yaitu Person) dan mengeksekusinya. Contoh kode lain ditunjukkan sebagai berikut,public Student(){super();System.out.println("Inside Student:Constructor");}Kode ini memanggil default constructor dari superclass terdekat (yaitu Person) dan mengeksekusinya.

Page 175: Pemrograman Java

Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super:

1.Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor.

2. Pemanggil super() hanya dapat digunakan dalam definisi constructor.3. Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI

DALAM constructor YANG SAMA. Pemakaian lain dari super adalah untuk menunjuk anggota dari

superclass(seperti reference this). Sebagai contoh,public Student(){super.name = “somename”;super.address = “some address”;}Overriding Method Untuk beberapa pertimbangan, terkadang class asal perlu mempunyai

implementasiberbeda dari method yang khusus dari superclass tersebut. Oleh karena itulah, method overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut.

Misalnya kita mempunyai implementasi berikut untuk method getName dalam superclass Person,

Page 176: Pemrograman Java

public class Person{::public String getName(){System.out.println("Parent: getName");return name;}:}Untuk override, method getName dalam subclass Student, kita tulis,public class Student extends Person{::public String getName(){System.out.println("Student: getName");return name;}:}Jadi, ketika kita meminta method getName dari object class Student,

methodoverriddeakan dipanggil, keluarannya akan menjadi,Student: getName

Page 177: Pemrograman Java

Method final dan class finalDalam Java, juga memungkinkan untuk mendeklarasikan class-class yang

tidak lama menjadi subclass. Class ini dinamakan class final. Untuk mendeklarasikan class untuk menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class. Sebagai contoh, jika kita ingin class Person untuk dideklarasikan final, kita tulis,

public final class Person{//area kode}Beberapa class dalam Java API dideklarasikan secara final untuk memastikan

sifatnya tidak dapat di-override. Contoh-contoh dari class ini adalah Integer, Double, dan String.

Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. Method inidapat kita panggil method final. Untuk mendeklarasikan method untuk menjadi final, kita tambahkan kata kunci final ke dalam deklarasi method. Contohnya, jika kita ingin method getName dalam class Person untuk dideklarasikan final, kita tulis,

public final String getName(){return name;}Method static juga secara otomatis final. Ini artinya Anda tidak dapat

membuatnyaoverride.

Page 178: Pemrograman Java

PolimorfismeSekarang, class induk Person dan subclass Student dari contoh sebelumnya,

kitatambahkan subclass lain dari Person yaitu Employee. Di bawah ini adalah hierarkinya,

Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah object dari subclass tersebut. Sebagai contohnya,public static main( String[] args ){Person ref;Student studentObject = new Student();Employee employeeObject = new Employee();ref = studentObject; //Person menunjuk kepada// object Student//beberapa kode di sini}

Page 179: Pemrograman Java

Sekarang dimisalkan kita punya method getName dalam superclass Person kita, dan kita override method ini dalam kedua subclasses Student dan Employee,

public class Person{public String getName(){System.out.println(“Person Name:” + name);return name;}}public class Student extends Person{public String getName(){System.out.println(“Student Name:” + name);return name;}}public class Employee extends Person{public String getName(){System.out.println(“Employee Name:” + name);return name;}

Page 180: Pemrograman Java

Kembali ke method utama kita, ketika kita mencoba memanggil method getName dari reference Person ref, method getName dari object Student akan dipanggil. Sekarang, jika kita berikan ref ke object Employee, method getName dari Employee akan dipanggil.

public static main( String[] args ){Person ref;Student studentObject = new Student();Employee employeeObject = new Employee();ref = studentObject; //Person menunjuk kepada// object StudentString temp = ref.getName(); //getName dari Student//class dipanggilSystem.out.println( temp );ref = employeeObject; //Person menunjuk kepada// object EmployeeString temp = ref.getName(); //getName dari Employee//class dipanggilSystem.out.println( temp ); }Kemampuan dari reference untuk mengubah sifat menurut object apa yang

dijadikan acuan dinamakan polimorfisme. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk method yang tepat untuk

Page 181: Pemrograman Java

menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya.

Contoh lain yang menunjukkan properti polimorfisme adalah ketika kita mencoba melalui reference ke method. Misalkan kita punya method static printInformation yang mengakibatkan object Person sebagai reference, kita dapat me-reference dari tipe Employee dan tipe Student ke method ini selama itu masih subclass dari class Person.

public static main( String[] args ){Student studentObject = new Student();Employee employeeObject = new Employee();printInformation( studentObject );printInformation( employeeObject );}public static printInformation( Person p ){. . . .}Abstract ClassMisalnya kita ingin membuat superclass yang mempunyai method tertentu

yang berisiimplementasi, dan juga beberapa method yang akan di-overridden oleh subclasses nya. Sebagai contoh, kita akan membuat superclass bernama LivingThing. class ini mempunyai method tertentu seperti breath, eat, sleep, dan walk. Akan tetapi, ada beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi.

Page 182: Pemrograman Java

Kita ambil contoh, method walk.Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia

sebagai misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti anjing berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah biasa, itulah kenapa kita inginkan membuat superclass umum dalam hal ini.

Kita dapat membuat superclass yang mempunyai beberapa method dengan implementasi sedangkan yang lain tidak. Class jenis ini yang disebut dengan class abstract. Sebuah class abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan aksi yang mungkin pada object dari seluruh subclasses dalam class. Method ini dalam class abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuhclass dan digunakan menggunakan kata kunci abstract. Contohnya,public abstract void someMethod();

Page 183: Pemrograman Java

Sekarang mari membuat contoh class abstract.public abstract class LivingThing{public void breath(){System.out.println("Living Thing breathing...");}public void eat(){System.out.println("Living Thing eating...");}/*** abstract method walk* Kita ingin method ini di-overridden oleh subclasses*/public abstract void walk();}Ketika class meng-extend class abstract LivingThing, dibutuhkan untuk

override method abstract walk(), atau lainnya, juga subclass akan menjadi class abstract, oleh karena itu tidak dapat di-instantiate. Contohnya,

public class Human extends LivingThing{public void walk(){System.out.println("Human walks...");}}

Page 184: Pemrograman Java

Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error berikut ini, Human.java:1: Human is not abstract and does not override

abstract method walk() in LivingThingpublic class Human extends LivingThing^1 errorInterfaceInterface adalah jenis khusus dari blok yang hanya berisi method

signature(atau constant). Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh.Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class.

Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwainterface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung daritipe object yang melewati pemanggil method interface.

Page 185: Pemrograman Java

Kenapa Kita Memakai Interface?Kita akan menggunakan interface jika kita ingin class yang tidak berhubunganmengimplementasikan method yang sama. Melalui interface-interface, kita

dapatmenangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya seolaholah class yang berhubungan. Mari kita ambil contoh class Line dimana berisi method yang menghitung panjang dari garis dan membandingkan object Line ke object dari class yang sama. Sekarang, misalkan kita punya class yang lain yaitu MyInteger dimana berisi method yang membandingkan object MyInteger ke object dari class yang sama. Seperti yang kita lihat disini, kedua class-class mempunyai method yang mirip dimana membandingkan mereka dari object lain dalam tipe yang sama, tetapi mereka tidak berhubungan sama sekali. Supaya dapat menjalankan cara untuk memastikan bahwa dua class-class ini mengimplementasikan beberapa method dengan tanda yang sama, kita dapat menggunakan sebuah interface

untuk hal ini. Kita dapat membuat sebuah class interface, katakanlah interface Relation dimana mempunyai deklarasi method pembanding. Relasi interface dapat dideklarasikan sebagai,

public interface Relation{public boolean isGreater( Object a, Object b);public boolean isLess( Object a, Object b);public boolean isEqual( Object a, Object b);}

Page 186: Pemrograman Java

Alasan lain dalam menggunakan interface pemrograman object adalah untuk menyatakan sebuah interface pemrograman object tanpa menyatakan classnya. Seperti yang dapat kita lihat nanti dalam bagian Interface vs class, kita dapat benar-benar menggunakan interface sebagai tipe data. Pada akhirnya, kita perlu menggunakan interface untuk pewarisan model jamak dimana menyediakan class untuk mempunyai lebih dari satu superclass. Pewarisan jamak tidak ditunjukkan di Java, tetapi ditunjukkan di bahasa berorientasi object lain seperti C++.

Interface vs. Class AbstractBerikut ini adalah perbedaan utama antara sebuah interface dan sebuah class

abstract: method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka didefinisikan secara independent.

Interface vs. ClassSatu ciri umum dari sebuah interface dan class adalah pada tipe mereka

berdua. Ini artinya bahwa sebuah interface dapat digunakan dalam tempat-tempat dimana sebuah class dapat digunakan. Sebagai contoh, diberikan class Person dan interface PersonInterface, berikut deklarasi yang benar:

PersonInterface pi = new Person();Person pc = new Person();Bagaimanapun, Anda tidak dapat membuat instance dari sebuah interface.Contohnya:PersonInterface pi = new PersonInterface(); //COMPILE//ERROR!!!

Page 187: Pemrograman Java

Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method. Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class memiliki salah satunya.

Membuat InterfaceUntuk membuat interface, kita tulis,public interface [InterfaceName]{//beberapa method tanpa isi}Sebagai contoh, mari kita membuat sebuah interface yang mendefinisikan

hubungan antaradua object menurut urutan asli dari object.public interface Relation{public boolean isGreater( Object a, Object b);public boolean isLess( Object a, Object b);public boolean isEqual( Object a, Object b);}

Page 188: Pemrograman Java

Sekarang, penggunaan interface, kita gunakan kata kunci implements. Contohnya,

/*** Class ini mendefinisikan segmen garis*/public class Line implements Relation{private double x1;private double x2;private double y1;private double y2;public Line(double x1, double x2, double y1, double y2){this.x1 = x1;this.x2 = x2;this.y1 = y1;this.y2 = y2;}public double getLength(){double length = Math.sqrt((x2-x1)*(x2-x1) +(y2-y1)* (y2-y1));return length;}

Page 189: Pemrograman Java

public boolean isGreater( Object a, Object b){double aLen = ((Line)a).getLength();double bLen = ((Line)b).getLength();return (aLen > bLen);}public boolean isLess( Object a, Object b){double aLen = ((Line)a).getLength();double bLen = ((Line)b).getLength();return (aLen < bLen);}public boolean isEqual( Object a, Object b){double aLen = ((Line)a).getLength();double bLen = ((Line)b).getLength();return (aLen == bLen);}}Ketika class Anda mencoba mengimplementasikan sebuah interface, selalu

pastikan bahwa Anda mengimplementasikan semua method dari interface, jika tidak, Anda akan menemukan kesalahan ini,

Page 190: Pemrograman Java

Line.java:4: Line is not abstract and does not override abstractmethod isGreater(java.lang.Object,java.lang.Object) inRelationpublic class Line implements Relation^1 errorHubungan dari Interface ke ClassSeperti yang telah kita lihat dalam bagian sebelumnya, class dapat

mengimplementasikansebuah interface selama kode implementasi untuk semua method yang didefinisikan dalam interface tersedia.

Hal lain yang perlu dicatat tentang hubungan antara interface ke class-class yaitu, class hanya dapat mengEXTEND SATU superclass, tetapi dapat mengIMPLEMENTASIkan BANYAK interface. Sebuah contoh dari sebuah class yang mengimplementasikan interface adalah,

public class Person implements PersonInterface,LivingThing,WhateverInterface {//beberapa kode di sini}Contoh lain dari class yang meng-extend satu superclass dan

mengimplementasikan sebuah interface adalah,

Page 191: Pemrograman Java

public class ComputerScienceStudent extends Studentimplements PersonInterface,LivingThing {//beberapa kode di sini}Catatan bahwa sebuah interface bukan bagian dari hirarki pewarisan class.

Class yang tidak berhubungan dapat mengimplementasikan interface yang sama.

Pewarisan Antar InterfaceInterface bukan bagian dari hirarki class. Bagaimanapun, interface dapat

mempunyai hubungan pewarisan antara mereka sendiri. Contohnya, misal kita punya dua interface StudentInterface dan PersonInterface. Jika StudentInterface meng-extend PersonInterface, maka ia akan mewariskan semua deklarasi method dalam PersonInterface.

public interface PersonInterface {. . .}public interface StudentInterface extends PersonInterface {. . .}

Page 192: Pemrograman Java

SESI09

Page 193: Pemrograman Java

Dasar Exception HandlingApa itu Exception?Exception adalah sebuah peristiwa yang menjalankan alur proses normal pada program. Peristiwa ini biasanya berupa kesalahan(error) dari beberapa bentuk. Ini disebabkan program kita berakhir tidak normal. Beberapa contoh dari exception yang Anda mungkin jumpai pada latihan-latihan sebelumnyaadalah: exception ArrayIndexOutOfBounds, yang terjadi jika kita mencoba mengakses elemen array yang tidak ada, atau NumberFormatException, yang terjadi ketika kita mencoba melalui parameter bukan angka dalam method Integer.parseInt.Menangani ExceptionUntuk menangani exception dalam Java, kita gunakan blok try-catch-finally. Apa yang kita lakukan dalam program kita adalah kita menempatkan pernyataan yang mungkin menghasilkan exception dalam blok ini.Bentuk umum dari blok try-catch-finally adalah,

Page 194: Pemrograman Java

Dasar Exception Handlingtry{//tulis pernyataan yang dapat mengakibatkan exception//dalam blok ini}catch( <exceptionType1> <varName1> ){//tulis aksi apa dari program Anda yang dijalankan jika ada//exception tipe tertentu terjadi}. . .catch( <exceptionTypen> <varNamen> ){//tulis aksi apa dari program Anda yang dijalankan jika ada//exception tipe tertentu terjadi}finally{//tambahkan kode terakhir di sini}Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan ditangani dalam blok catch. Kode dalam blok finally selalu di-eksekusi.

Page 195: Pemrograman Java

Dasar Exception HandlingBerikut ini adalah aspek kunci tentang sintak dari konstruksi try-catch-finally: Notasi blok bersifat perintah Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satu blok finally. Blok catch dan blok finally harus selalu muncul dalam konjungsi dengan blok try, dan diatas urutan Blok try harus diikuti oleh paling sedikit satu blok catch ATAU satu blok finally, atau keduanya. Setiap blok catch mendefinisikan sebuah penanganan exception. Header dari blok catch harus membawa satu argumen, dimana exception pada blok tersebut akan ditangani. Exception harus menjadi class pelempar atau satu dari subclassesnya.

Page 196: Pemrograman Java

Dasar Exception Handling

Page 197: Pemrograman Java

Dasar Exception HandlingMarilah mengambil contoh kode yang mencetak argumen kedua ketika kita mencoba menjalankan kode menggunakan argumen command-line. Perkirakan, tidak ada pengecekan dalam kode Anda untuk angka dari argumen dan kita hanya mengakses argumen kedua args[1] segera, kita akan mendapatkan exception berikut. Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 1at ExceptionExample.main(ExceptionExample.java:5)Untuk mencegah kejadian ini, kita dapat menempatkan kode ke dalam blok try-catch. Blok finally hanya sebagai pilihan lain saja. Sebagai contoh, kita tidak akan menggunakan blok finally.

Page 198: Pemrograman Java

Dasar Exception HandlingUntuk mencegah kejadian ini, kita dapat menempatkan kode ke dalam blok try-catch. Blok finallyhanya sebagai pilihan lain saja. Sebagai contoh, kita tidak akan menggunakan blok finally.public class ExceptionExample{public static void main( String[] args ){try{System.out.println( args[1] );}catch( ArrayIndexOutOfBoundsException exp ){System.out.println("Exception caught!");}}}Jadi kita akan menjalankan program lagi tanpa argumen, keluarannya akan menjadi,Exception caught!

Page 199: Pemrograman Java

Dasar Exception HandlingLatihanMenangkap Exception 1Diberikan kode berikut:public class TestExceptions{public static void main( String[] args ){for( int i=0; true; i++ ){System.out.println("args["+i+"]="+args[i]);}}}Compile dan jalankan program TestExceptions. Keluarannya akan tampak seperti ini:javac TestExceptions one two threeargs[0]=oneargs[1]=twoargs[2]=threeException in thread "main"java.lang.ArrayIndexOutOfBoundsException: 3at TestExceptions.main(1.java:4)

Page 200: Pemrograman Java

Dasar Exception HandlingUbah program TestExceptions untuk menangani exception, keluaran program setelah ditangkapexception-nya akan seperti ini:javac TestExceptions one two threeargs[0]=oneargs[1]=twoargs[2]=threeException caught:java.lang.ArrayIndexOutOfBoundsException: 3Menangkap Exception 2Melakukan percobaan pada beberapa program yang telah Anda tulis adalah hal yang baik sebelummenghadapi exception. Karena pada program di atas Anda tidak menangkap exception, makaeksekusi dengan mudahnya berhenti mengeksekusi program Anda. Kembali kepada programdiatas dan gunakan penanganan exception.

Page 201: Pemrograman Java

SESI10

Page 202: Pemrograman Java

Desain Berorientasi object

Desain berorientasi object adalah sebuah teknik yang memusatkan desain pada object dan class berdasarkan pada skenario dunia nyata. Hal ini menegaskan keadaan(state), behaviour dan interaksi dari object. Selain itu juga menyediakan manfaat akan kebebasan pengembangan, meningkatkan kualitas, mempermudah pemeliharaan, mempertinggi kemampuan dalammodifikasi dan meningkatkan penggunaan kembali software.ClassClass mengizinkan Anda dalam mendeklarasikan tipe data baru. Ia dijalankan sebagai blueprint, dimana model dari object yang Anda buat berdasarkan pada tipe data baru ini.ObjectSebuah object adalah sebuah entiti yang memiliki keadaan, behaviour dan identitas yang yang tugasnya dirumuskan dalam suatu lingkup masalah dengan baik. Inilah instance sebenarnya dari sebuah class. Ini juga dikenal sebagai instance. Instance dibuat sewaktu Anda meng-instantiate class menggunakan kata kunci new. Dalam sistem registrasi siswa, contoh dari sebuah objectyaitu entiti Student.AtributAtribut menunjuk pada elemen data dari sebuah object. Atribut menyimpan informasi tentang object. Dikenal juga sebagai member data, variabel instance, properti atau sebuah field data. Kembali lagi ke contoh sistem registrasi siswa, atribut dari sebuah siswa adalah nomor siswa.

Page 203: Pemrograman Java

Desain Berorientasi objectMethodSebuah method menjelaskan behaviour dari sebuah object. Method juga dikenal sebagai fungsi atau prosedur. Sebagai contoh, method yang mungkin tersedia untuk entiti siswa adalah method register.ConstructorConstructor adalah sebuah tipe khusus dari method yang digunakan untuk membuat dan menginisialisasi sebuah object baru. Ingat bahwa constructor bukan member (yaitu atribut, method atau inner class dari sebuah object).PackagePackage menunjuk pada pengelompokkan class dan/atau subpackages. Strukturnya dapat disamakan dengan direktorinya.EnkapsulasiEnkapsulasi menunjuk pada prinsip dari menyembunyikan desain atau mengimplementasikan informasi yang tidak sesuai pada object yang ada.AbstraksiSementara enkapsulasi menyembunyikan detail, abstraksi mengabaikan aspek dari subyek yang tidak sesuai dengan tujuan yang ada supaya lebih banyak mengkonsentrasikan yang ada.PewarisanPewarisan adalah hubungan antara class dimana dalam satu class ada superclass atau class induk dari class yang lain. Pewarisan menunjuk pada properti dan behaviour yang diterima dari nenek moyang dari class. Ini dikenal juga sebagai hubungan “is-a”. Perhatikan pada hirarki berikut.

Page 204: Pemrograman Java

Desain Berorientasi object

Page 205: Pemrograman Java

Desain Berorientasi objectPolimorfismePolimorfisme adalah kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara harfiah, “poli” berarti banyak sementara “morph” berarti bentuk. Menunjuk pada contoh sebelumnya pada pewarisan, kita lihat bahwa object SuperHero dapat jugamenjadi object FlyingSuperHero atau object UnderwaterSuperHero.InterfaceSebuah interface adalah sebuah contract dalam bentuk kumpulan method dan deklarasi konstanta. Ketika sebuah class implements sebuah interface, ini mengimplementasikan semua method yang dideklarasikan dalam interface.Struktur Program JavaPada bagian ini meringkaskan syntax dasar yang digunakan dalam pembuatan aplikasi Java. Mendeklarasikan class Java<classDeclaration> ::=<modifier> class <name> {<attributeDeclaration>*<constructorDeclaration>*<methodDeclaration>*}dimana <modifier> adalah sebuah access modifier, yang mana boleh dikombinasikan dengan tipe yang lain dari modifier.

Page 206: Pemrograman Java

Desain Berorientasi objectContoh berikut ini mendeklarasikan blueprint SuperHero.Class SuperHero {String superPowers[];void setSuperPowers(String superPowers[]) {this.superPowers = superPowers;}void printSuperPowers() {for (int i = 0; i < superPowers.length; i++) {System.out.println(superPowers[i]);}}}Mendeklarasikan Atribut<attributeDeclaration> ::=<modifier> <type> <name> [= <default_value>];<type> ::=byte | short | int | long | char | float | double | boolean| <class>Petunjuk Penulisan Program:[] = Menunjukkan bahwa bagian ini hanya sebagai pilihan.

Page 207: Pemrograman Java

Desain Berorientasi objectInilah contohnya.public class AttributeDemo {private String studNum;public boolean graduating = false;protected float unitsTaken = 0.0f;String college;}Mendeklarasikan Method<methodDeclaration> ::=<modifier> <returnType> <name>(<parameter>*) {<statement>*}<parameter> ::=<parameter_type> <parameter_name>[,]

Page 208: Pemrograman Java

Desain Berorientasi objectSebagai contoh:class MethodDemo {int data;int getData() {return data;}void setData(int data) {this.data = data;}void setMaxData(int data1, int data2) {data = (data1>data2)? data1 : data2;}}Mendeklarasikan sebuah Constructor<constructorDeclaration> ::=<modifier> <className> (<parameter>*) {<statement>*}Jika tidak ada constructor yang disediakan secara jelas, constructor default secara otomatis membuatkannya untuk Anda. Constructor default tidak membawa argumen dan tidak berisi pernyataan pada tubuh class.

Page 209: Pemrograman Java

Perhatikan contoh berikut.class ConstructorDemo {private int data;public ConstructorDemo() {data = 100;}ConstructorDemo(int data) {this.data = data;}}Meng-instantiate sebuah classUntuk meng-instantiate sebuah class, dengan sederhana kita gunakan kata kunci new diikuti dengan pemanggilan sebuah constructor. Mari lihat langsung ke contohnya.class ConstructObj {int data;ConstructObj() {/* menginisialisasi data */ } public static void main(String args[]) {ConstructObj obj = new ConstructObj(); //di-instantiate}}

Page 210: Pemrograman Java

Mengakses Anggota objectUntuk mengakses anggota dari sebuah object, kita gunakan notasi “dot”. Penggunaanya sepertiberikut:<object>.<member>Contoh selanjutnya berdasar pada sebelumnya dengan pernyataan tambahan untuk mengakses anggota dan method tambahan.class ConstructObj {int data;ConstructObj() {/* inisialisasi data */}void setData(int data) {this.data = data;}public static void main(String args[]) {ConstructObj obj = new ConstructObj(); //instantiationobj.setData = 10; //access setData()System.out.println(obj.data); //access data}}

Page 211: Pemrograman Java

PackageUntuk menunjukkan bahwa file asal termasuk package khusus, kita gunakan syntax berikut:<packageDeclaration> ::=package <packageName>;Untuk mengimpor package lain, kita gunakan syntax berikut:<importDeclaration> ::=import <packageName.elementAccessed>;Dengan ini, source code Anda harus memiliki format berikut:[<packageDeclaration>]<importDeclaration>*<classDeclaration>+Sebagai contoh.package registration.reports;import registration.processing.*;import java.util.List;import java.lang.*; //imported by defaultclass MyClass {/* rincian dari MyClass */

Page 212: Pemrograman Java

Acces ModifierTabel berikut meringkas acces modifier dalam Java.

Page 213: Pemrograman Java

EnkapsulasiMenyembunyikan elemen dari penggunaan sebuah class dapat dilakukan dengan pembuatan anggota yang ingin Anda sembunyikan secara private.Contoh berikut menyembunyikan field secret. Catatan bahwa field ini tidak langsung diakses oleh program lain menggunakan method getter dan setter.class Encapsulation {private int secret; //field tersembunyipublic boolean setSecret(int secret) {if (secret < 1 || secret > 100) {return false;}this.secret = secret;return true;}public getSecret() {return secret;}}

Page 214: Pemrograman Java

PewarisanUntuk membuat class anak atau subclass berdasarkan class yang telah ada, kita gunakan kata kunci extend dalam mendeklarasikan class. Sebuah class hanya dapat meng-extend satu class induk. Sebagai contoh, class Point di bawah ini adalah superclass dari class ColoredPoint.import java.awt.*;class Point {int x;int y;}class ColoredPoint extends Point {Color color;}Method OverridingMethod subclass override terhadap method superclass ketika subclass mendeklarasikan method yang signaturenya serupa ke method dalam superclass. Signature dari method hanyalah informasi yang ditemukan dalam definisi method bagian atas. Signature mengikutkan tipe return, nama dan daftar parameter method tetapi itu tidak termasuk acces modifier dan tipe yang lain dari kata kunci seperti final dan static. Inilah perbedaan dari method overloading. Method overloading secara singkat didiskusikan dalam sub bagian pada kata kunci this.

Page 215: Pemrograman Java

class Superclass {void display(int n) {System.out.println("super: " + n);}}class Subclass extends Superclass {void display(int k) { //method overridingSystem.out.println("sub: " + k);}}class OverrideDemo {public static void main(String args[]) {Subclass SubObj = new Subclass();Superclass SuperObj = SubObj;SubObj.display(3);((Superclass)SubObj).display(4);}}Ini akan menghasilkan keluaran sebagai berikut.sub: 3sub: 4

Page 216: Pemrograman Java

Pemanggilan method ditentukan oleh tipe data sebenarnya dari object yang diminta method. Acces modifier untuk method yang dibutuhkan tidak harus sama. Bagaimanapun, acces modifier dari method overridding mengharuskan salah satunya punya acces modifier yang sama seperti itu dari method overridden atau acces modifier yang kurang dibatasi. Perhatikan contoh selanjutnya. Periksa yang mana dari method overridding berikut akan menyebabkan waktu meng-compile akan menyebabkan error.class Superclass {void overriddenMethod() {}}class Subclass1 extends Superclass {public void overriddenMethod() {}}class Subclass2 extends Superclass {void overriddenMethod() {}}

Page 217: Pemrograman Java

class Subclass3 extends Superclass {protected void overriddenMethod() {}}class Subclass4 extends Superclass {private void overriddenMethod() {}}Class Abstract dan MethodBentuk umum dari sebuah method abstract adalah sebagai berikut:abstract <modifier> <returnType> <name>(<parameter>*);Sebuah class yang berisi method abstract harus dideklarasikan sebagai sebuah class abstract.abstract <modifier> <returnType> <name>(<parameter>*);abstract class<name> {/* constructors, fields and methods */}Kata kunci tidak dapat digunakan pada constructor atau method static. Ini juga penting untuk diingat bahwa class abstract tidak dapat di-instantiate.Class yang meng-extends sebuah class abstract harus mengimplementasikan semua method abstract. Jika tidak subclass sendiri dapat dideklarasikan sebagai abstract.

Page 218: Pemrograman Java

Sebagai contoh:abstract class SuperHero {String superPowers[];void setSuperPowers(String superPowers[]) {this.superPowers = superPowers;}void printSuperPowers() {for (int i = 0; i < superPowers.length; i++) {System.out.println(superPowers[i]);}}abstract void displayPower();}class UnderwaterSuperHero extends SuperHero {void displayPower() {System.out.println("Communicate with sea creatures...");System.out.println("Fast swimming ability...");}}

Page 219: Pemrograman Java

class FlyingSuperHero extends SuperHero {void displayPower() {System.out.println("Fly...");}}InterfaceMendeklarasikan sebuah interface pada dasarnya mendeklarasikan sebuah class tetapi sebagaipenggantinya menggunakan kata kunci class, kata kunci interface digunakan. Berikut syntax-nya.<interfaceDeclaration> ::=<modifier> interface <name> {<attributeDeclaration>*[<modifier> <returnType> <name>(<parameter>*);]*}Anggotanya adalah public ketika interface dideklarasikan public.Class mengimplementasikan sebuah interface yang telah ada dengan menggunakan kata kunci implements. Class ini dibuat untuk mengimplementasikan semua method interface. Sebuah classboleh mengimplementasikan lebih dari satu interface. Contoh berikut menunjukkan bagaimana mendeklarasikan dan menggunakan sebuah interface.

Page 220: Pemrograman Java

interface MyInterface {void iMethod();}class MyClass1 implements MyInterface {public void iMethod() {System.out.println("Interface method.");}void myMethod() {System.out.println("Another method.");}}class MyClass2 implements MyInterface {public void iMethod() {System.out.println("Another implementation.");}}class InterfaceDemo {public static void main(String args[]) {MyClass1 mc1 = new MyClass1();MyClass2 mc2 = new MyClass2();mc1.iMethod();mc1.myMethod(); mc2.iMethod(); } }

Page 221: Pemrograman Java

Kata kunci thisKata kunci this dapat digunakan untuk beberapa alasan berikut:1. Adanya ambigu pada atribut lokal dari variabel lokal2. Menunjuk pada object yang meminta method non-static3. Menunjuk pada constructor lain.Sebagai contoh pada maksud pertama, perhatikan kode berikut dimana variabel data disediakansebagai sebuah atribut dan parameter lokal pada saat yang sama.class ThisDemo1 {int data;void method(int data) {this.data = data;/* this.data menunjuk ke atributsementara data menunjuk ke variabel lokal */}}Contoh berikut menunjukkan bagaimana object this secara mutlak menunjuk ketika anggota non.static dipanggil.

Page 222: Pemrograman Java

class ThisDemo2 {int data;void method() {System.out.println(data); //this.data}void method2() {method(); //this.method();}Sebelum melihat ke contoh yang lain, mari pertama meninjau pengertian method overloading. Constructor seperti juga method dapat juga menjadi overload. Method yang berbeda dalam class dapat memberi nama yang sama asalkan list parameter juga berbeda. Method overloaded harus berbeda dalam nomor dan/atau tipe dari parameternya. Contoh selanjutnya memiliki constructor overloaded dan referensi this yang dapat digunakan untuk menunjuk versi lain dari constructor.class ThisDemo3 {int data;ThisDemo3() {this(100);}ThisDemo3(int data) {this.data = data; } }

Page 223: Pemrograman Java

Kata kunci superPenggunaan kata kunci super berhubungan dengan pewarisan. Super digunakan untuk meminta constructor superclass. Super juga dapat digunakan seperti kata kunci this untuk menunjuk pada anggota dari superclass. Program berikut mendemonstrasikan bagaimana referensi super digunakan untuk memanggilconstructor superclass.class Person {String firstName;String lastName;Person(String fname, String lname) {firstName = fname;lastName = lname;}}class Student extends Person {String studNum;Student(String fname, String lname, String sNum) {super(fname, lname);studNum = sNum;}}

Page 224: Pemrograman Java

Kata kunci dapat juga digunakan untuk menunjuk anggota superclass seperti yang ditunjukkanpada contoh berikut.class Superclass{int a;void display_a(){System.out.println("a = " + a);}}class Subclass extends Superclass {int a;void display_a(){System.out.println("a = " + a);}void set_super_a(int n){super.a = n;}void display_super_a(){super.display_a();}}

Page 225: Pemrograman Java

class SuperDemo {public static void main(String args[]){Superclass SuperObj = new Superclass();Subclass SubObj = new Subclass();SuperObj.a = 1;SubObj.a = 2;SubObj.set_super_a(3);SuperObj.display_a();SubObj.display_a();SubObj.display_super_a();System.out.println(SubObj.a);}}Program tersebut akan menampilkan hasil berikut.a = 1a = 2a = 32

Page 226: Pemrograman Java

Kata Kunci staticKata kunci static dapat digunakan untuk anggota dari sebuah class. Kata kunci ini menyediakan static atau anggota class untuk diakses sama sebelum beberapa instance dari class dibuat. Variabel class bersifat seperti variabel umum. Ini artinya bahwa variabel dapat diakses oleh semua instance dari class. Method class mungkin dapat diambil tanpa membuat sebuah object dari class tersebut. Bagaimanapun, mereka hanya dapat mengakses anggota static dari class. Ditambahkan juga, mereka tidak dapat menunjuk this dan super.Kata kunci static dapat juga diaplikasikan pada blok. Ini dinamakan dengan blok static. Blok ini dieksekusi hanya sekali, ketika class diisi. Hal ini biasanya digunakan untuk menginisialisasi variabel class.class Demo {static int a = 0;static void staticMethod(int i) {System.out.println(i);}static { //blok staticSystem.out.println("This is a static block.");a += 1;}}

Page 227: Pemrograman Java

class StaticDemo {public static void main(String args[]) {System.out.println(Demo.a);Demo.staticMethod(5);Demo d = new Demo();System.out.println(d.a);d.staticMethod(0);Demo e = new Demo();System.out.println(e.a);d.a += 3;System.out.println(Demo.a+", " +d.a +", " +e.a);}}Keluaran dari source kode ditunjukkan di bawah ini.This is a static block.151014, 4, 4

Page 228: Pemrograman Java

Kata Kunci finalKata kunci final dapat diaplikasikan pada variabel, method dan class. Untuk mengingat fungsi dari kata kunci, ingat bahwa itu secara mudah dibatasi apa yang kita dapat lakukan dengan variabel, method dan class. Nilai dari variabel final dapat tidak lama diubah sesudah nilainya telah diatur. Sebagai contoh,final int data = 10;Pernyataan berikut akan menyebabkan terjadi compilation error:data++;Method final tidak dapat di-override dalam class anak.final void myMethod() { //in a parent class}myMethod tidak dapat lama di-override dalam class anak.class final tidak dapat diwariskan tidak seperti class yang biasanya.final public class MyClass {}Pernyataan ini akan menyebabkan kesalahan compilation terjadi karena MyClass dapat tidak lama di-extended.public WrongClass extends MyClass {}

Page 229: Pemrograman Java

Inner ClassesSebuah inner class secara mudah dideklarasikan dalam class lain.class OuterClass {int data = 5;class InnerClass {int data2 = 10;void method() {System.out.println(data);System.out.println(data2);}}public static void main(String args[]) {OuterClass oc = new OuterClass();InnerClass ic = oc.new InnerClass();System.out.println(oc.data);System.out.println(ic.data2);ic.method();}}Untuk mampu mengakses anggota dari inner class, kita butuh sebuah instance dari inner class. Method-method dari inner class dapat secara langsung mengakses anggota dari outer class.

Page 230: Pemrograman Java

Tabel PerkalianTulis program yang mempunyai masukkan size dari user dan mencetak tabel perkalian dengan size yang ditetapkan.Size untuk tabel perkalian : 5Tabel perkalian dari size 5:

Greatest Common Factor(GCF)Tulis sebuah program yang mempunyai tiga integer dan menghitung nilai GCF dari tiga angka. GCF adalah angka terbesar yang secara rata dibagi ke semua angka yang diberikan.

Page 231: Pemrograman Java

ShapeBuatlah class Shape. class memiliki dua field String: name dan size. class mempunyai method printShapeInfo, dimana hanya mengeluarkan nilai name dan field size dari object Shape. Juga memiliki method printShapeName dan printShapeSize, dimana mencetak nama dan size dari object, berturut-turut.Menggunakan pewarisan, buat class Square dengan field yang sama dan method seperti itu dari class Shape. Class ini mempunyai dua tambahan field integer: length dan width. Method printShapeLength dan printShapeWidth yang mencetak panjang dan lebar object yang juga termasuk dalam class ini. Anda juga harus meng-override printShapeInfo untuk mencetak keluaran field tambahan dalam subclass juga.BinatangBuatlah interface Animal yang mempunyai tiga method:eat dan move. Semua method ini tidak punya argumen atau nilai return. Method ini hanya mengeluarkan bagaimana object Animal makan dan bergerak. Sebagai contoh, seekor kelinci memakan wortel dan bergerak dengan melompat. Buat class Fish dan Bear yang menggunakan interface Animal. Terserah kepada Andabagaimana menggunakan method eat dan move.

Page 232: Pemrograman Java

SESI11

Page 233: Pemrograman Java

Exceptional

PendahuluanBugs dan error dalam sebuah program sangat sering muncul meskipun program tersebut dibuat oleh programmer berkemampuan tinggi. Untuk menghindari pemborosan waktu pada proses error-checking, Java menyediakan mekanisme penanganan exception. Exception adalah singkatan dari Exceptional Events. Kesalahan (errors) yang terjadisaat runtime, menyebabkan gangguan pada alur eksekusi program. Terdapatbeberapa tipe error yang dapat muncul. Sebagai contoh adalah error pembagian 0, mengakses elemen di luar jangkauan sebuah array, input yang tidak benar dan membuka file yang tidak ada.Error dan Exception ClassesSeluruh exceptions adalah subclasses, baik secara langsung maupun tidak langsung, dari sebuah root class Throwable. Kemudian, dalam class ini terdapat dua kategori umum : Error class dan Exception class.Exception class menunjukkan kondisi yang dapat diterima oleh user program.Umumnya hal tersebut disebabkan oleh beberapa kesalahan pada kode program. Contoh dari exceptions adalah pembagian oleh 0 dan error di luar jangkauan array. Error class digunakan oleh Java run-time untuk menangani error yang muncul pada saat dijalankan. Secara umum hal ini di luar control user karena kemunculannya disebabkan oleh run-time environment. Sebagai contoh adalah out of memory dan harddisk crash.

Page 234: Pemrograman Java

Sebuah ContohPerhatikan contoh program berikut :class DivByZero {public static void main(String args[]) {System.out.println(3/0);System.out.println(“Cetak.”);}}Jika kode tersebut dijalankan, akan didapatkan pesan kesalahan sebagai berikut :Exception in thread "main" java.lang.ArithmeticException: / byzero at DivByZero.main(DivByZero.java:3)Pesan tersebut menginformasikan tipe exception yang terjadi pada baris dimana exception itu berasal. Inilah aksi default yang terjadi bila terjadi exception yang tidak tertangani. Jika tidak terdapat kode yang menangani exception yang terjadi, aksi default akan bekerja otomatis. Aksi tersebut pertama-tama akan menampilkan deskripsi exception yang terjadi. Kemudian akan ditampilkan stack trace yang mengindentifikasi method dimana exception terjadi. Pada bagian akhir, aksi default tersebut akan menghentikan program secara paksa. Bagaimana jika Anda ingin melakukan penanganan atas exception dengan cara yang berbeda? Untungnya, bahasa pemrograman Java memiliki 3 keywords penting dalam penanganan exception, yaitu try, catch dan finally.

Page 235: Pemrograman Java

Menangkap ExceptionTry - CatchSeperti yang telah dijelaskan sebelumnya, keyword try, catch dan finally digunakan dalam menangani bermacam tipe exception. 3 Keyword tersebut digunakan bersama, namun finally bersifat opsional. Akan lebih baik jika memfokuskan pada dua keyword pertama, kemudian membahas finally pada bagian akhir. Berikut ini adalah penulisan try-catch secara umum :try {<code to be monitored for exceptions>} catch (<ExceptionType1> <ObjName>) {<handler if ExceptionType1 occurs>}...} catch (<ExceptionTypeN> <ObjName>) {<handler if ExceptionTypeN occurs>}

Page 236: Pemrograman Java

Gunakan contoh kode tersebut pada program DivByZero yang telah dibuatsebelumnya :class DivByZero {public static void main(String args[]) {try {System.out.println(3/0);System.out.println(“Cetak.”);} catch (ArithmeticException exc) {//Reaksi atas kejadianSystem.out.println(exc);}System.out.println(“Setelah Exception.”);}}Kesalahan pembagian dengan bilangan 0 adalah salah satu contoh dariArithmethicException. Tipe exception kemudian mengindikasikan klausa catch pada class ini. Program tersebut menangani kesalahan yang terjadi dengan menampilkan deskripsi dari permasalahan.Output program saat eksekusi akan terlihat sebagai berikut :java.lang.ArithmeticException: / by zeroAfter exception.

Page 237: Pemrograman Java

Bagian kode yang terdapat pada blok try dapat menyebabkan lebih dari satu tipe exception. Dalam hal ini, terjadinya bermacam tipe kesalahan dapat ditangani menggunakan beberapa blok catch. Perlu dicatat bahwa blok try dapat hanya menyebabkan sebuah exception pada satu waktu, namun dapat pula menampikan tipe exception yang berbeda di lain waktu.Berikut adalah contoh kode yang menangani lebih dari satu exception :class MultipleCatch {public static void main(String args[]) {try {int den = Integer.parseInt(args[0]); //baris 4System.out.println(3/den); //baris 5} catch (ArithmeticException exc) {System.out.println(“Nilai Pembagi 0.”);} catch (ArrayIndexOutOfBoundsException exc2) {System.out.println(“Missing argument.”);}System.out.println(“After exception.”);}}Pada contoh ini, baris ke-4 akan menghasilkan kesalahan berupaArrayIndexOutOfBoundsException bilamana seorang user alpa dalam memasukkan argument,

Page 238: Pemrograman Java

sedang baris ke-5 akan menghasilkan kesalahan ArithmethicException jika pengguna memasukkan nilai 0 sebagai sebuah argument. Penggunaan try bersarang diperbolehkan dalam pemrograman Java.class NestedTryDemo {public static void main(String args[]){try {int a = Integer.parseInt(args[0]);try {int b = Integer.parseInt(args[1]);System.out.println(a/b);} catch (ArithmeticException e) {System.out.println(“Divide by zero error!");}} catch (ArrayIndexOutOfBoundsException) {System.out.println(“2 parameters are required!");}}}

Page 239: Pemrograman Java

sedang baris ke-5 akan menghasilkan kesalahan ArithmethicException jika pengguna memasukkan nilai 0 sebagai sebuah argument. Penggunaan try bersarang diperbolehkan dalam pemrograman Java.class NestedTryDemo {public static void main(String args[]){try {int a = Integer.parseInt(args[0]);try {int b = Integer.parseInt(args[1]);System.out.println(a/b);} catch (ArithmeticException e) {System.out.println(“Divide by zero error!");}} catch (ArrayIndexOutOfBoundsException) {System.out.println(“2 parameters are required!");} } }Pelajari apa yang akan terjadi pada program jika argument berikut dimasukkan:a) Tidak ada argumenb) 15c) 15 3d) 15 0

Page 240: Pemrograman Java

Keyword FinallySaatnya Anda mengimplementasikan finally dalam blok try-cacth. Berikut ini carapenggunaan keyword tersebut :try {<kode monitor exception>} catch (<ExceptionType1> <ObjName>) {<penanganan jika ExceptionType1 terjadi>} ...} finally {<kode yang akan dieksekusi saat blok try berakhir>}Blok finally mengandung kode penanganan setelah penggunaan try dan catch. Blok kode ini selalu tereksekusi walaupun sebuah exception terjadi atau tidak pada blok try. Blok kode tersebut juga akan menghasilkan nilai true meskipun return, continue ataupun break tereksekusi. Terdapat 4 kemungkinan skenario yang berbeda dalam blok try-catch-finally. Pertama, pemaksaan keluar program terjadi bila control program dipaksa untuk melewati blok try menggunakan return, continue ataupun break. Kedua, sebuah penyelesaian normal terjadi jika try-catch-finally tereksekusi secara normal tanpa terjadi error apapun. Ketiga, kode program memiliki spesifikasi tersendiri dalam blok catch terhadap exception yang terjadi.

Page 241: Pemrograman Java

Yang terakhir, kebalikan skenario ketiga. Dalam hal ini, exception yang terjadi tidak terdefinisikan pada blok catch manapun. Contoh dari skenario – skenario tersebut terlihat pada kode berikut ini :class FinallyDemo {static void myMethod(int n) throws Exception{try {switch(n) {case 1: System.out.println("case pertama");return;case 3: System.out.println("case ketiga");throw new RuntimeException("demo caseketiga");case 4: System.out.println("case keempat");throw new Exception("demo casekeempat");

Page 242: Pemrograman Java

case 2: System.out.println("case Kedua");}} catch (RuntimeException e) {System.out.print("RuntimeException terjadi: ");System.out.println(e.getMessage());} finally {System.out.println("try-block entered.");}}public static void main(String args[]){for (int i=1; i<=4; i++) {try {FinallyDemo.myMethod(i);} catch (Exception e){System.out.print("Exception terjadi: ");System.out.println(e.getMessage());}System.out.println();}}}

Page 243: Pemrograman Java

Melempar Exception dengan Keyword ThrowDisamping menangkap exception, Java juga mengijinkan seorang user untukmelempar sebuah exception. Sintaks pelemparan exception cukup sederhana.throw <exception object>;Perhatikan contoh berikut ini./* Melempar exception jika terjadi kesalahan input */class ThrowDemo {public static void main(String args[]){String input = “invalid input”;try {if (input.equals(“invalid input”)) {throw new RuntimeException("throw demo");} else {System.out.println(input);}System.out.println("After throwing");} catch (RuntimeException e) {System.out.println("Exception caught here.");System.out.println(e);}}}

Page 244: Pemrograman Java

Keyword ThrowsJika sebuah method dapat menyebabkan sebuah exception namun tidakmenangkapnya, maka digunakan keyword throws. Aturan ini hanya berlaku pada checked exception. Anda akan mempelajari lebih lanjut tentang checked exception dan unchecked exception pada bagian selanjutnya, “Kategori Exception”.Berikut ini penulisan syntax menggunakan keyword throws :<type> <methodName> (<parameterList>) throws <exceptionList> {<methodBody>}Sebuah method perlu untuk menangkap ataupun mendaftar seluruh exceptions yang mungkin terjadi, namun hal itu dapat menghilangkan tipe Error, RuntimeException, ataupun subclass-nya. Contoh berikut ini menunjukkan bahwa method myMethod tidak menangani

Page 245: Pemrograman Java

ClassNotFoundException.class ThrowingClass {static void myMethod() throws ClassNotFoundException {throw new ClassNotFoundException ("just a demo");}}class ThrowsDemo {public static void main(String args[]) {try {ThrowingClass.myMethod();} catch (ClassNotFoundException e) {System.out.println(e);}}}Kategori ExceptionException Classes dan HierarkiSeperti yang disebutkan sebelumnya, root class dari seluruh exception classesadalah Throwable class. Yang disebutkan dibawah ini adalah exception class hierarki. Seluruh exceptions ini terdefinisi pada package java.lang.

Page 246: Pemrograman Java
Page 247: Pemrograman Java

Sekarang Anda sudah cukup familiar dengan beberapa exception classes, saatnya untuk mengenalkan aturan : catch lebih dari satu harus berurutan dari subclass ke superclass.class MultipleCatchError {public static void main(String args[]){try {int a = Integer.parseInt(args [0]);int b = Integer.parseInt(args [1]);System.out.println(a/b);} catch (Exception e) {System.out.println(e);} catch (ArrayIndexOutOfBoundsException e2) {System.out.println(e2);}System.out.println("After try-catch-catch.");}}Setelah mengkompilasi kode tersebut akan menghasilkan pesan error jika Exception class adalah superclass dari ArrayIndexOutOfBoundsException class. MultipleCatchError.java:9: exceptionjava.lang.ArrayIndexOutOfBoundsException has already been caught} catch (ArrayIndexOutOfBoundsException e2) {

Page 248: Pemrograman Java

Checked dan Unchecked ExceptionsException terdiri atas checked dan unchecked exceptions.Checked exceptions adalah exception yang diperiksa oleh Java compiler. Compiler memeriksa keseluruhan program apakah menangkap atau mendaftar exception yang terjadi dalam sintax throws. Apabila checked exception tidak didaftar ataupun ditangkap, maka compiler error akan ditampilkan.Tidak seperti checked exceptions, unchecked exceptions tidak berupa compile-time checking dalam penanganan exceptions. Pondasi dasar dari unchecked exception classes adalah Error, RuntimeException dan subclass-nya.User Defined ExceptionsMeskipun beberapa exception classes terdapat pada package java.lang namun tidak mencukupi untuk menampung seluruh kemungkinan tipe exception yang mungkin terjadi. Sehingga sangat mungkin bahwa Anda perlu untuk membuat tipe exception tersendiri. Dalam pembuatan tipe exception Anda sendiri, Anda hanya perlu untuk membuat sebuah extended class terhadap RuntimeException class, maupun Exception class lain. Selanjutnya tergantung pada Anda dalam memodifikasi class sesuai permasalahan yang akan diselesaikan. Members dan constructors dapat dimasukkan pada exception class milik Anda.

Page 249: Pemrograman Java

Berikut ini contohnya :class HateStringException extends RuntimeException{/* Tidak perlu memasukkan member ataupun construktor */}class TestHateString {public static void main(String args[]) {String input = "invalid input";try {if (input.equals("invalid input")) {throw new HateStringException();}System.out.println("String accepted.");} catch (HateStringException e) {System.out.println("I hate this string: " + input +".");}}}

Page 250: Pemrograman Java

AssertionsUser Defined ExceptionsAssertions mengijinkan programmer untuk menentukan asumsi yang dihadapi.Sebagai contoh, sebuah tanggal dengan area bulan tidak berada antara 1 hingga 12 dapat diputuskan bahwa data tersebut tidak valid. Programmer dapat menentukan bulan harus berada diantara area tersebut. Meskipun hal itu dimungkinkan untuk menggunakan contructor lain untuk mensimulasikan fungsi dari assertions, namun sulit untuk dilakukan karena fitur assertion dapat tidak digunakan. Hal yang menarik dari assertions adalah seorang user memiliki pilihan untuk digunakan atau tidak pada saat runtime. Assertion dapat diartikan sebagai extensi atas komentar yang enginformasikan pembaca kode bahwa sebagian kondisi harus terpenuhi. Dengan menggunakan assertions, maka tidak perlu untuk membaca keseluruhan kode melalui setiap komentar untuk mencari asumsi yang dibuat dalam kode. Namun, menjalankanprogram tersebut akan memberitahu Anda tentang assertion yang dibuat benar atau salah. Jika assertion tersebut salah, maka AssertionError akan terjadi.

Page 251: Pemrograman Java

Mengaktifkan dan Menonaktifkan ExceptionsPenggunaan assertions tidak perlu melakukan import package java.util.assert.Menggunakan assertions lebih tepat ditujukan untuk memeriksa parameter dari nonpublic methods jika public methods dapat diakses oleh class lain. Hal itu mungkin terjadi bila penulis dari class lain tidak menyadari bahwa mereka dapat menonaktifkan assertions. Dalam hal ini program tidak dapat bekerja dengan baik. Pada non-public methods, hal tersebut tergunakan secara langsung oleh kode yang ditulis oleh programmer yang memiliki akses terhadap methods tersebut. Sehingga mereka menyadari bahwa saat menjalankannya, assertion harus dalam keadaan aktif.Untuk mengkompilasi file yang menggunakan assertions, sebuah tambahanparameter perintah diperlukan seperti yang terlihat dibawah ini :javac –source 1.4 MyProgram.java Jika Anda ingin untuk menjalankan program tanpa menggunakan fitur assertions, cukup jalankan program secara normal.java MyProgramNamun, jika Anda ingin mengaktifkan assertions, Anda perlu menggunakanparameter –enableassertions atau –ea.java –enableassertions MyProgram

Page 252: Pemrograman Java

Sintaks AssertionsPenulisan assertions memiliki dua bentuk.Bentuk yang paling sederhana terlihat sebagai berikut :assert <expression1>;dimana <expression1> adalah kondisi dimana assertion bernilai true.Bentuk yang lain menggunakan dua ekspresi, berikut ini cara penulisannya :assert <expression1> : <expression2>;dimana <expression1> adalah kondisi assertion bernilai true dan <expression2> adalah informasi yang membantu pemeriksaan mengapa program mengalami kesalahan.class AgeAssert {public static void main(String args[]) {int age = Integer.parseInt(args[0]);assert(age>0);/* jika masukan umur benar (misal, age>0) */if (age >= 18) {System.out.println(“Congrats! You're an adult!=)”);}}}

Page 253: Pemrograman Java

LatihanHeksadesimal ke DesimalTentukan sebuah angka heksadesimal sebagai input. Konversi angka tersebutmenjadi bilangan desimal. Tentukan exception class Anda sendiri dan lakukanpenanganan jika input dari user bukan berupa bilangan heksadesimal.Menampilkan Sebuah BerlianTentukan nilai integer positif sebagai input. Tampilkan sebuah berlianmenggunaakan karakter asterisk (*) sesuai angka yang diinput oleh user. Jika user memasukkan bilangan integer negatif, gunakan assertions untuk menanganinya. Sebagai contoh, jika user memasukkan integer bernilai 3, program Anda harus menampilkan sebuah berlian sesuai bentuk berikut :

****

*********