P. 1
Modul Pelatihan Java Rev 2.0

Modul Pelatihan Java Rev 2.0

|Views: 311|Likes:
Published by Eka Handayani
modul java
modul java

More info:

Published by: Eka Handayani on Jun 14, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/22/2015

pdf

text

original

1 Pengenalan Java

Overview Bab ini akan menjelaskan tentang dasar-dasar pemrograman menggunakan bahasa Java. Penjelasan tentang karakteristik bahasa Java, identifier, tipe data, dan operator pada Java. Tujuan 1. Mengaplikasikan dasar-dasar pemrograman menggunakan Java 2. Menggunakan identifier dan tipe data pada Java 1.1 Sejarah Java

Pada tahun 1991, Sun dipimpin Patric Naughton dan James Gosling ingin merancang bahasa computer untuk perangkat consumer seperti cable TV Box. Karena perangkat itu tidak mempunyai banyak memori, bahasa harus berukuran kecil dan menghasilkan kode program yang liat. Juga karena manufaktur-manufaktur berbeda memilih pemroses-pemroses yang berbeda, maka bahasa harus bebas dari arsitektur manapun. Proyek ini diberi nama kode “Green”. Kebutuhan untuk kecil, liat dan kode netral terhadap platform mengatur tim mempelajari implementasi pascal yang pernah dicoba. Niklaus Wirth, pencipta bahasa Pascal telah merancang bahasa portable yang menghasilkan kode intermediate untuk mesin hipotetis. Mesin ini sering disebut Virtual machine. Kode antara ini kemudian dapat digunakan disembarang mesin yang memiliki interpreter. Proyek Green menggunakan virtual machine untuk mengatasi isu utama netral terhadap arsitektur mesin. Karena orang-orang di proyek Green berbasis C++ bukan Pascal maka kebanyakan Sintaks diambil dari C++, serta mengadopsi orientasi obyek bukan procedural. Mulanya bahasa yang diciptakan diberi nama “Oak” kemudian diganti “Java” karena telah ada bahasa pemrograman bernama “Oak” Produk pertama proyek Green adalah “*7”, sebuah kendali jauh yang sangat cerdas. Karena pasar masih belum tertarik dengan produk consumer cerdas maka proyek Green harus menemukan pasar lain dari teknologi yang diciptakan. Kemudian, penerapan mengarah menjadi teknologi yang berperan di web. Pada 1995, Netscape memutuskan membuat browser yang dilengkapi dengan Java. Setelah itu diikuti oleh IBM, Symantec, Inprise, bahkan Microsoft. Setelah itu Java mulai didengar. Dengan strategi terbukanya, banyak industri yang meliriknya. Bersamaan itu disusul berbagai universitas Amerika, Jepang, dan Eropa yang mengubah pengenalan bahasa pemrograman komputer menjadi Java, meninggalkan C++. Java lebih sederhana dan telah mengakomodasikan hampir seluruh fitur penting bahasa-bahasa pemrograman yang ada semenjak perkembangan komputasi modern. Java pertama kali diluncurkan sebagai bahasa pemrograman umum (general purpose programming language) dengan kelebihan dia bisa dijalankan di web browser sebagai applet. Sejak awal, para pembuat Java telah menanamkan visi mereka ke dalam Java untuk small embedded customer device)seperti TV, telepon, radio, dan sebagainya supaya dapat berkomunikasi satu sama lain. Langkah pertama yang diambil oleh Sun Microsistem adalah dengan membuat JVM (Java Virtual machine) yang kemudian diimplementasikan dalam bentuk JRE (Java Runtime Environment). JVM adalah lingkungan tempat eksekusi program Java berlangsung di mana para obyek saling berinteraksi satu dengan yang lainnya. Virtual machine inilah yang menyebabkan Java mempunyai kemampuan penanganan memori yang lebih baik, keamanan yang lebih tinggi serta portabilitas yang besar. Apabila kita hanya ingin menjalankan program Java, maka kita cukup memiliki JRE saja. Tapi seandainya kita 1

ingin mengembangkan perangkat lunak sendiri, JRE saja tidak cukup. Untuk lebih meningkatkan produktivitas pengembang perangkat lunak, Sun juga meluncurkan SDK (Standard Development Kit) yang berisi kakas dan API untuk membuat program aplikasi berbasis Java. Pada tahun 1999 Sun meluncurkan J2EE (Java 2 Enterprise Edition) sebagai framework untuk membuat aplikasi enterprise berskala besar. Pada tahun 2001, Sun meluncurkan J2ME yang kelak menjadi salah satu standar pemrograman di dalam PDA maupun handphone. 1.2 Karakteristik Bahasa Java

1. Sederhana, semudah C dan seampuh C++: berlawanan dengan anggapan orang-orang bahwa bahasa Java sulit untuk dipelajari, Java gampang untuk dipelajari terutama untuk orang yang sudah mengenal pemrograman tapi belum terlalu terikat pada paradigma pemrograman prosedural. Tentu saja ini berarti bahwa kita harus siap mempelajari salah satu teknologi yang berkembang paling cepat di dunia dalam dua tahun terakhir ini dengan banyak membaca tentunya baik dari buku maupun melalui web. 2. Sangat berorientasi obyek (OOP) dengan implementasi yang sangat baik sehingga kita bukan hanya belajar bagaimana membuat program yang baik (reusable, scalable, dan maintanable) tetapi juga kita belajar bagaimana cara berfikir yang baik untuk mengenali struktur masalah yang sedang kita hadapi dan memecahkannya secara sistematis dengan pola-pola tertentu (patterns OpenPlatform, Write Once Run Anywhere (WORA), portable atau multiplatform, program yang kita buat dapat dijalankan di Windows, Linux/Unix, Solaris, dan Macintosh tanpa perlu diubah maupun di kompilasi ulang. Java adalah juga bahasa yang paling sesuai digunakan bersama dengan XML yang membuat data menjadi portable, ini karena kelahiran XML tidak terlepas dari dukungan parser-parser berbahasa Java. 3. Arsitekturnya yang kokoh dan pemrograman yang aman. Dalam Java program yang kita buat tidak mudah untuk “hang” karena konflik pada memori biasanya diselesaikan dengan mengumpulkan obyek-obyek yang sudah tak terpakai lagi secara otomatis oleh garbage collector. Penanganan kesalahan juga dipermudah dalam Java dengan konsep Exception. 4. Bukan sekedar bahasa tapi juga platform sekaligus arsitektur. Java mempunyai portabilitas yang sangat tinggi. Ia dapat berada pada smartcard, pager, POS (Point of Service), handphone, PDA, palm, TV, Embedded device (PLC, micro controller), laptop, pc, dan bahkan server). Menyadari akan hal ini Sun membagi arsitektur Java membagi tiga bagian, yaitu: a. Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi sistem tersebar dengan beraneka ragam klien dengan kompleksitas yang tinggi. Merupakan superset dari Standar Java b. Standard Java (J2SE), ini adalah yang biasa kita kenal sebagai bahasa Java, dan merupakan fokus kita sekarang. c. Micro Java (J2ME) merupakan subset dari J2SE dan salah satu aplikasinya yang banyak dipakai adalah untuk wireless device/mobile device 5. Program Java dijalankan menggunakan interpreter melalui Java Virtual machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda. 6. Fitur-fitur utama yang lain: a. Mendukung multithreading. b. Selalu memeriksa tipe obyek pada saat runtime. c. Mempunyai automatic garbage collection untuk membersihkan obyek yang tidak terpakai dari memori 2

d. Mendukung exception sebagai salah satu cara penanganan kesalahan 1.3 Bagaimana Java Bekerja?

Lingkungan pemrograman pada Java menggunakan compiler sekaligus interpreter agar dapat berjalan pada platform yang berbeda. Java compiler melakukan kompilasi pada source code (.java) menjadi Java bytecodes (.class) seperti ditunjukkan oleh Gambar 2.1 berikut.

Gambar 1.1 Mekanisme Kompilasi dan Eksekusi Program Java Java bytecodes merupakan instruksi mesin yang tidak spesifik terhadap processor. Oleh karena itu, program Java hasil kompilasi akan dapat dijalankan pada berbagai platform sistem komputer dengan menggunakan Java Virtual machine (JVM), "write once, run anywhere" (lihat Gambar 2.2). JVM disebut juga bytecodes interpreter atau Java runtime interpreter.

Gambar 1.2 Konsep Write Once, Run Anywhere pada Java 1.4 Platform Java

Platform dapat diartikan sebagai lingkungan perangkat keras atau perangkat lunak di mana program dijalankan. Umumnya platform dinyatakan berdasarkan nama sistem operasi yang digunakan, misalnya Windows 2000, Linux, Solaris, atau MacOS. Tidak seperti bahasa pemrograman lainnya, platform Java mempunyai dua komponen, yaitu: 1. Java Virtual machine (Java VM) Merupakan fondasi untuk platform Java yang dapat digunakan di berbagai platform perangkat keras. 2. Java Application Programming Interface (Java API) Kumpulan komponen-komponen perangkat lunak siap pakai (ready-made software components) untuk berbagai keperluan penulisan program, seperti graphical user interface (GUI). Gambar 2.3. berikut memperlihatkan gambaran program yang berjalan di atas di kedua 3

dan interface untuk unik mengidentifikasikan bagi kompilator dan memberikan nama yang berarti bagi pemrogram.6 Applets melakukan extends dari class applets.komponen platform Java. yaitu aplikasi di sisi server yang ditulis dalam bahasa script yang melekat pada halaman HTML untuk memberikan efek tampilan pada web browser. Dimulai dengan huruf atau underscore (garis bawah) atau tanda ($). Simbol-simbol seperti „+‟ dan spasi tidak dapat digunakan 4 . Java Micro Edition. 1. kelas. method. seperti tidak diperbolehkan membaca atau menulis file pada sistem komputer. Aplikasi berbasis Windows. Applets mempunyai beberapa batasan keamanan. Identifier di Java Selain kedua tipe aplikasi tersebut. Applets tidak mempunyai fungsi main(). 2. Karakter berikutnya dapat berupa huruf atau angka 0 sampai 9. Java Server Pages. yaitu aplikasi untuk program multitiers.3 Platform Java 1. 2. Java Beans dan Enterprise Java Beans. huruf kapital dan kecil dibedakan 2. 5. misalnya dengan menggunakan fasilitas Swing. Java Servlet. Case sensitive. Aplikasi stand alone merupakan aplikasi yang dijalankan langsung di atas platform Java. 3. ada beberapa tipe aplikasi Java yang lain yaitu: Identifier adalah nama yang diberikan kepada variabel.5 Aplikasi Java Ada dua tipe aplikasi pada Java yang umumnya sering ditulis. Identifier yang diberikan oleh pemrogram tidak boleh sama dengan keyword yang ada di Java 3. yaitu aplikasi yang diperuntukan bagi perangkat genggam (handheld devices). 4. 4. Adapun tatacara penamaan identifier: 1. Sedangkan applets adalah aplikasi yang dijalankan melalui web browser ataupun applet viewer. Perbedaan applets dengan Java stand alone adalah: 1. seperti telepon genggam. 3. Namun sebisa mungkin diawali dengan huruf karena mungkin identifier dengan awalan underscore dan ($) digunakan unruk pemrosesan internal dan file import 4. 1. Gambar 2. yaitu aplikasi seperti applets tetapi dijalankan di sisi server. Applets tidak dapat menjalankan program lain pada komputer yang menjalankan applets. yaitu aplikasi stand alone dan applets. paket.

8 Tipe Data di Java Tipe data dalam Java dibagi dalam dua kategori: 1.Empat tipe adalah untuk bilangan bulat: byte. yaitu char .Dua untuk tipe angka pecahan (floating point): float.Satu untuk tipe karakter. Terdapat delapan tipe data primitif di Java: .1.1 Jangkauan nilai integer Jangkauan Panjang Integer Tipe data Nilai 7 8 bit byte -2 to 27-1 16 bit short -215 to 215-1 5 . Komposit 1. Daftar keyword Java adalah sebagai berikut: Tabel 1.1 Keyword dalam Java abstract do implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while boolean double break byte case catch char class continue default else extends false final finally float for if 1. int.1 Tipe data sederhana Tipe data sederhana merupakan tipe inti. double . Tipe ini adalah tipe data primitif.Satu untuk tipe boolean yang berisi nilai logika: true/false Tipe data integer Tipe data integer memiliki jangkauan nilai sebagai berikut: Tabel 1. long . short.8. Tipe sederhana tidak diturunkan dari tipe lain.7 Keyword di Java Keyword adalah identifier yang digunakan Java untuk suatu tujuan khusus. Sederhana 2.

536 karakter.14F sedangkan kalau tidak diberi akhiran F akan dipandang sebagai bertipe double. Presisi float kebanyakan tidak memadai untuk banyak aplikasi komputasi.79769e+308 Masing-masing tipe data floating point memiliki kebutuhan memori yang berbeda. Literal dari char harus berada di antara single quotes („ „) Contohnya : „a‟ huruf a „\t‟ karakter tab Unicode dirancang untuk menangani semua karakter di dunia dalam kode 2 byte. tipe int paling banyak dipakai.535.32 bit 64 bit int long -231 to 231-1 -263 to 263-1 Pada kebanyakan situasi. Terdapat pula beberapa barisan escape untuk karakter Unicode yang spesial. digunakan tipe data long. Tipe data Char Tipe data char merupakan tipe data yang direpresentasikan dengan 16-bit Unicode character. Nama double mengacu pada presisinya yang sebesar dua kali dibandingkan float. Himpunan karakter ASCII dipandang sebagai bagian dari Unicode dan ditempatkan sebagai 256 karakter pertama dari Unicode. Untuk data yang berukuran besar. seperti perhitungan kosinus. Kode 2 byte memungkinkan 65. Tipe short dan byte terutama digunakan untuk aplikasi khusus yang menangani file level rendah. Tipe data float memerlukan 32 bit sebagai single-precision. Java mengimplementasikan standar himpunan tipe dan operator titik mengambang IEEE-754. Keakuratan nilai untuk tipe data floating point adalah sebagai berikut: Tabel 1. contoh 3.3 Karakter Unicode spesial Barisan Escape Nama Nilai Unicode \b Backspace \u008 \t Tab \u009 \n Linefeed \u00a \r Carriage return \u00d \” Petik ganda \u0022 \‟ Petik tunggal \u0027 \\ Backslash \u005c 6 . dan sebagainya. sedangkan tipe data double memerlukan 64 bit sebagai double precision. akar persamaan. seperti berikut: Tabel 1.2 Presisi nilai float Panjang Float Tipe data Nilai terbesar 32 bit Float 3.40282e+38 64 bit Double 1. Angka literal bertipe float berakhiran F. dimulai dari nilai byte 0 sampai 65. Tipe data Floating Point Tipe data ini digunakan untuk perhitungan yang melibatkan bilangan pecahan.

Khusus untuk String pada Java dikenali sebagai kelas. string. statement : boolean truth = true.”).. Tipe ini dapat berupa array. bukan sebagai array of character..9 Operator di Java Operator unary: Tabel 1.5 Operator aritmatika Simbol Deskripsi + * / % Menambahkan dua buah nilai Pengurangan dua buah nilai Perkalian dua buah nilai Pembagian dua buah nilai Sisa pembagian dua buah nilai Java memiliki beberapa jenis operator di antaranya: - Operator relasi: 7 .2 Tipe data komposit Tipe data komposit merupakan tipe data yang disusun dari tipe data sederhana atau tipe komposit lain yang sudah ada. pada kasus di atas. Operator aritmatika: Nama Operator Penambahan Pengurangan Perkalian Pembagian Sisa bagi Tabel 1.4 Operator unary Nama Operator Simbol Definisi Increment ++ Akan menambahkan nilai sejumlah satu Decrement -Akan mengurangi nilai sejumlah satu Contoh penggunaan: int x = 5.. int y = ++x. String pada Java diapit oleh tanda petik ganda (“. Contoh. contoh: String s=”Saya makan nasi”. kelas. 1. int y = x++. mendeklarasikan variabel truth sebagai tipe data boolean dan memberikan nilai true 1. berbeda kasusnya pada contoh di bawah ini: int x = 5. pada kasus di atas nilai y akan berisi 5 dan nilai x akan berisi 6 karena nilai y akan mengambil nilai x dahulu setelah itu baru nilai x ditambahkan satu. nilai y akan berisi 6 dan x berisi 6 karena nilai x akan ditambahkan satu dahulu baru kemudian dimasukkan ke variabel y..8.Tipe data Boolean Tipe data boolean memiliki 2 literal yaitu : true dan false. dan interface.

7 Operator boolean Simbol Deskripsi && AND || OR ^ XOR ! NOT 8 .Tabel 1.6 Operator relasi Simbol Deskripsi < Kurang dari > Lebih dari <= Kurang dari atau sama dengan >= Lebih dari atau sama dengan == Sama dengan != Tidak sama dengan Operator boolean: Tabel 1.

Sintaks switch sebagai berikut : switch (expression) { case constant1 : statements. maka akan dilakukan aksi pada else-nya. Jika ditemukan nilai yang cocok dengan variabel yang dicek. Mampu menggunakan flow control pengulangan pada Java 2. sebagai berikut : if (boolean expression) { statement or block } else if (boolean expression) { statement or block } else { statement or block } Contohnya: public class CobaIf { public static void main(String[] args) { int i = 3. Jika tidak terpenuhi.println(“Bilangan genap”): } else { System. Sintaks if Sintaks if digunakan untuk menyatakan alur percabangan dengan pengecekan kondisi. break. 9 . Variabel yang bisa dicek pada sintaks switch adalah variabel bertipe int. case constant2 : statements. terdapat beberapa jenis sintaks untuk alur percabangan.out.2 Flow Control Overview Bab ini akan menjelaskan tentang flow control pada Java. yakni percabangan dan pengulangan. maka aksi tertentu akan dilakukan.out.println(“Bilangan ganjil”). Pada Java. Mampu menggunakan flow control percabangan pada Java 2. default : statements. Jika suatu kondisi yang dicek terpenuhi. char dan boolean.1 Percabangan pada Java Percabangan merupakan sebuah alur pemilihan berdasarkan kondisi tertentu. Jika tidak ada kondisi yang terpenuhi. akan dijalankan aksi pada default. 1. Tujuan 1. maka akan dilakukan pengecekan kondisi pada else if berikutnya. Jika tidak ditemukan nilai yang cocok. } } } 2. Sintaks switch Sintaks switch digunakan untuk menyatakan alur percabangan dengan pengecekan pada sebuah nilai variabel. break. Sintaks if-else. if (i%2==0){ System. maka dilakukan aksi yang pada case yang bersesuaian dengan nilai tersebut. Flow control yang dasar pada pemrograman ada dua.

break.out.println(“Juni”). default: System.break.break. case 4: System.println(“Januari”).out.println(“Oktober”).println(“Agustus”).2 Perulangan pada Java Perulangan adalah sebuah alur yang memungkinkan satu atau beberapa proses dilakukan beberapa kali.println(“Juli”). Perulangan while Sintaks while digunakan untuk melakukan pengulangan selama kondisi tertentu terpenuhi.out.break.println(“Februari”).break.out.break. case 11: System. } } } 2.out. case 9: System. Perulangan akan dilakukan mulai dari nilai tertentu hingga nilai tertentu dicapai.break. case 7: System. Beberapa sintaks perulangan yang ada di Java antara lain sebagai berikut.out. Perulangan for Sintaks for digunakan untuk melakukan pengulangan sejumlah nilai tertentu. sehingga ada kemungkinan sebuah pengulangan tidak dilakukan sama sekali. } } } Pada kode di atas.i<10.println(“Mei”).break.i++) { System. 1. case 6: System.break.println(“Maret”).break. Sintaks looping while sebagai berikut : while (boolean testexpr) { 10 .out.out. program akan mengulang proses mencetak nilai variabel i di layar angka. case 2: System.break. 2. Sintaks for sebagai berikut : for (init_expr.println(“November”).println(“Desember”).break.out.out.out.break. case 5: System. Nilai variabel i mulai dari 1 kemudian setiap iterasi ditambahkan 1 (i++) hingga bernilai 10.out. case 12: System.println(i).println(“Salah input”). case 3: System.boolean testexpr. case 8: System. case 10: System.alter_expr) { statement or block } Contoh penggunaan sintaks for adalah sebagai berikut: public class ContohFor { public static void main(String[] args) { for (int i=0.println(“April”). } Contohnya public class CobaSwitch { public static void main(String[] args) { int x = 7.out.out.println(“September”). switch(x){ case 1: System.break. Pengecekan kondisi dilakukan sebelum memasuki pengulangan.

.while loop.. } } 11 . program akan mengulang proses mencetak nilai variabel i di layar angka. while (i<10) { System.. 3.out. } } } Pada kode di atas.. Perulangan do.while adalah sebagai berikut: public class ContohDoWhile { public static void main(String[] args) { int i = 0.out... Proses akan diulangi selama nilai i<10.. sebagai berikut do { statement or block } while (boolean testexpr) Contoh penggunaan sintaks do... i++.println(i)..while Sintaks do......while adalah di akhir sehingga proses pengulangan pasti akan dilakukan minimal sekali. } while (i<10). do { System. i++. Sintaks do.statement or block } Contoh penggunaan sintaks while adalah sebagai berikut: public class ContohWhile { public static void main(String[] args) { int i = 0.while digunakan seperti pada sintaks while.println(i). Perbedaannya adalah pengecekan kondisi pada do.

Fitur Abstraksi yaitu mengkarakteristikan obyek yaitu dengan pemberian atribut pada suatu obyek. Penjelasan tentang karakteristik kelas dan obyek. <object name> = new <class name>(). sehingga class yang sudah dibuat akan dibuat obyeknya atau diinstansiasi. Mampu membuat atribut bertipe obyek di Java 3. dan Polymorphism.3 Kelas dan Obyek Overview Bab ini akan menjelaskan tentang dasar Pemrograman Berorientasi Obyek yaitu Kelas dan Obyek. Mampu menggunakan array pada Java 3. hal ini diimplementasikan dengan access specifier. o protected : kelas dapat diakses oleh kelas turunan o default : kelas dapat diakses dari manapun tetapi harus berada dalam package yang sama. serta cara pembuatan dan pendeklarasian kelas di dalam Java. cara pembuatan obyek dari kelas adalah : <class name> <object name>. 12 . Pembuatan kelas di dalam java : class <classname> { //declaration of data member //declaration of methods } Pembuatan kelas lengkap dengan access specifier class <classname> { <access specifier> <deklarasi atribut> <access specifier> <deklarasi method> } Karena dasar pemrograman OOP adalah obyek. Sedangkan fitur Enkapsulasi digunakan untuk menyembunyikan informasi atau detil dari obyek yang tidak penting. Fitur dari OOP adalah Abstraksi. Mampu membuat kelas dan obyek 2. Kelas mempunyai 2 komponen yaitu Atribut dan Method. Access Specifiers di dalam Java terdiri dari : o public : kelas dapat diakses dari manapun termasuk dari kelas lain dan kelas-kelas yang berada dalam package yang berbeda o private : kelas dapat diakses oleh anggota kelas itu sendiri. komponen kelas. Akan dijelaskan juga tentang cara pengaksesan komponen kelas. hal ini akan diimplementasikan dengan pembuatan kelas (class). Enkapsulasi. Tujuan 1.1 Kelas dan Obyek Obyek merupakan dasar dari struktur Pemograman Berorientasi Obyek (OOP). Pewarisan.

out.println("Books Price : "+price). System. Method main() dapat dideklarasikan di kelas manapun tetapi nama kelas tempat method main() berada harus sama dengan nama file .100).println("Books Information"). this.price=price.2 Konstruktor Konstruktor merupakan method yang akan dieksekusi secara otomatis ketika sebuah obyek dibuat. Konstruktor tidak mengembalikan nilai dan tidak dapat dideklarasikan sebagai static. Konstruktor biasanya digunakan untuk memberikan nilai pada atribut ketika obyek dibuat dari kelas. javabook. int pages.Untuk menjalankan program dibutuhkan sebuah method main(). berikut dengan main method-nya class book { int price. javabook.pages=pages.out.println("Number of pages : "+pages). } } 3. public void set(int price.set(60000. Deklarasi method main : public static void main(String[] args) { //code for the main method } Berikut adalah contoh pembuatan kelas dan obyek secara lengkap.out. } } public class MainBook { public static void main(String[] args) { book javabook=new book().show().int pages) { this. System.java nya. } 13 . Sintaks konstruktor adalah : public class <class name> { <constructor name same with class name>(). Method ini mempunyai nama yang sama dengan nama kelas tempat konstruktor dideklarasikan. } public void show() { System.

.. } Tanda bintang pada deklarasi import menyatakan bahwa semua kelas di dalam package yang bersangkutan ikut dipanggil oleh kelas tersebut.10010. Employee (String name. tidak dapat digunakan pada kelas.out.out. } void Show() { System. EmpID = Id. Contoh penulisan lengkap deklarasi package.out.int Id. } public static void main(String args[]) { Employee Empobj.out.*.Contoh dengan menggunakan konstruktor public class Employee { String EmpName. Modifier static hanya digunakan pada atribut/method. System.util.Show().println("Employee Information"). System. import java. int EmpID. EmpPosition = position. 3. Import merupakan cara sebuah kelas untuk menggunakan kelas dari package yang berbeda..3 Package dan Import Package merupakan sebuah cara untuk menyatukan beberapa kelas yang memiliki fungsi yang berhubungan ke dalam sebuah paket.println("ID : "+EmpID). Emp_obj = new Employee("Mark". class ex { . class ex { static value. } public class Main { public static void main(String[] args) { 14 . String EmpPosition.println("Name : "+EmpName). } 3.. String position) { EmpName = name..4 Penggunaan modifier static Modifier static digunakan untuk memastikan bahwa sebuah atribut/method dialokasikan hanya sekali di memory tanpa mempedulikan jumlah obyek yang diinstansiasi dari kelas tersebut. import dan nama kelas."Manager"). package new. Deklarasi sebuah package diletakkan pada posisi paling atas dari sebuah kode program.println("Position : "+EmpPosition). Empobj. Deklarasi import dituliskan di atas nama kelas dan di bawah nama package. System..

Besarnya memori yang digunakan oleh elemen-elemen Array akan dialokasikan secara dinamis dengan menggunakan pernyataan new atau dengan array initializer. dengan menggunakan kurung siku setelah nama variabel. System.out. C++ dan Java. ketika mendeklarasikan Array belum dibentuk sebuah obyek Array. point p[]. Deklarasi Array hanya membuat sebuah referensi yang dapat digunakan untuk mengacu ke sebuah obyek Array. kurung siku tersebut berlaku bagi semua variabel yang berada di sebelah kanannya. Ketika mendeklarasikan array dengan kurung siku yang berada di sebelah kiri nama variabel. baik itu yang bertipe data primitif maupun obyek.println(“Nilai untuk a = ”+a. Array dapat dideklarasikan dengan tipe apa saja. } } Hasil dari program tersebut adalah sebagai berikut: Nilai untuk a = 10 Nilai untuk a = 10 Nilai untuk a = 10 Nilai untuk a = 10 Atribut/method non-static tidak dapat diakses oleh method static.5. merupakan standar penulisan array dalam C.println(“Nilai untuk c = ”+c. Dalam deklarasi array. System.value = 10.5 Array 3. Array memungkinkan untuk mengacu ke sekumpulan obyek dengan nama yang sama.println(“Nilai untuk kelas ex = ”+ex.value). Contoh di bawah ini membuat sebuah Array dengan tipe primitif char: 15 . Contoh deklarasi array di atas.5.ex a = new ex().value). ex c = new ex(). // point adalah sebuah kelas Sebuah deklarasi array dapat ditulis sebagai pendeklarasian tipe array di bagian kiri dan nama variabel di bagian kanan. Array merupakan sebuah obyek meskipun ia terdiri dari elemen yang bertipe data primitif. // point adalah sebuah kelas Dalam bahasa pemrograman Java. bahasa Java menggunakan bentuk deklarasi array alternatif dengan menggunakan kurung siku di sebelah kiri seperti dalam contoh berikut : char [] s.2 Membuat Array Array dibuat dengan menggunakan keyword new. Untuk mengakses atribut/method non-static pada method static. System.out. tetapi sebaiknya konsisten dalam menggunakan satu bentuk saja. Oleh karenanya. Format demikian agak sulit untuk dibaca. point [] p. a. Kedua bentuk deklarasi array di atas dapat digunakan.1 Mendeklarasikan Array Array biasanya digunakan untuk mengelompokkan data atau obyek yang memiliki tipe yang sama. Seperti halnya kelas yang lain. tidak ditentukan ukuran aktual dari array. 3.out. // Pemanggilan atribut static oleh kelasnya System.value). harus dibuat dulu obyek dari atribut/method kelas yang ingin diakses.println(“Nilai untuk b = ”+b. 2. ex b = new ex().value). Berikut contoh deklarasi Array : char s[].out.

1).. Apabila program berusaha mengakses array di luar batas yang legal. dapat dibuat Array dari Array sehingga dinamai Array multidimensi. twoDim[3] = new int[8].5."Simon"}. gunakan bentuk berikut ini : int twoDim[][] = new int[4][5]. gunakan cara penulisan berikut p = new point[10]. Contoh berikut ini memperlihatkan cara membuat Array dua dimensi : int twoDim [][] = new int[4][]. new MyDate(22. gunakan pernyataan berikut : p[0] = new point(0. Jumlah elemen di dalam Array disimpan sebagai bagian dari obyek Array di dalam atribut length. new MyDate(1.4 Array Multidimensi Dalam Java. twoDim[2] = new int[6]. 3."Jen". }. 3. names[2] = "Simon". Atribut ini dapat digunakan untuk melakukan proses iterasi pada Array seperti dalam contoh berikut : 16 . 7. 2000).3 Menginisialisasi Array Java memiliki cara singkat untuk membuat sebuah obyek Array dengan elemen-elemennya memiliki nilai awal : String names[] = {"Georgianna".5 Batasan Array Dalam bahasa Java. Array dari Array yang bersifat non-rectangular dapat dibuat seperti dalam contoh berikut : twoDim[0] = new int[2].s = new char[26]. indeks Array dimulai dengan angka nol. twoDim[1] = new int[4]. 1964). maka akan muncul runtime exception. 1964). 12.5. names[1] = "Jen". Cara singkat ini dapat digunakan untuk Array dengan berbagai jenis tipe. Untuk membuat obyek Point. Untuk membuat Array dengan elemen obyek. p[1] = new point(1. twoDim[0] = new int[5]. names[0] = "Georgianna". . 2). Batasan legal untuk nilai indeks ini adalah dari nol hingga jumlah elemen array – 1. 3. Indeks array dimulai dengan angka 0. Pernyataan tersebut tidak membuat 10 obyek Point. Kode di atas adalah sama dengan kode berikut ini: String names[]. seperti dalam contoh berikut : MyDate dates[] = { new MyDate(22. Untuk membuat Array dari Array yang rectangular dengan cara mudah. twoDim[1] = new int[5].5. 1..

public Jurusan(String kode. public mahasiswa(String no. dapat digunakan variabel referensi yang sama untuk menunjuk ke sebuah obyek Array baru seperti dalam contoh di bawah ini : int myArray[] = new int[6]. } Dengan menggunakan atribut length. 3. i++) { System. myArray = new int[10]. Hal ini dapat dilihat pada contoh berikut: //mahasiswa.out.JmlMhs++. obyek Array yang pertama akan hilang kecuali ada variabel lain yang dibuat untuk merujuk ke obyek Array tersebut.length. kelas-kelas yang terbentuk dapat memiliki atribut dengan tipe obyek lainnya.java public class Jurusan { private String KodeJurusan.6 Atribut bertipe obyek Dalam Object Oriented Programming.out. String nama) { this. } } //jurusan. Dalam kode program ini. this. } private static int JmlMhs = 0. } } public void DisplayMahasiswa() { int i.out. 17 .KodeJurusan). this. Nama.int list[] = new int[10]. } public String GetNIM() { return (NIM).NIM = no. private Mahasiswa[] Daftar=new Mahasiswa[10]. String nm) { this.KodeJurusan = kode. this. pemeliharaan kode program menjadi mudah karena program tidak perlu mengetahui jumlah eleman Array pada saat kompilasi.println(list[i]). ukuran Array tersebut tidak dapat diubah.JmlMhs<10){ this. System.java public class mahasiswa { private String NIM.NamaJurusan). Setelah membuat obyek Array.println("Kode Jurusan : "+this.out. } public String GetNama() { return (Nama). namun demikian. NamaJurusan.Daftar[JmlMhs] = m.NamaJurusan = nama. for(int i = 0. System.println("Nama Jurusan : "+this. System. public void AddMahasiswa(Mahasiswa m) { if(this. i < list.println("Daftar Mahasiswa :").Nama = nm.

for (i=0.GetNama()).1 Diagram kelas Jurusan-Mahasiswa Dari gambar dapat dilihat bahwa satu kelas Jurusan dapat memiliki beberapa atribut bertipe kelas Mahasiswa.GetNIM()+" "+Daftar[i]. } } Pada kode program di atas dapat dilihat bahwa pada satu kelas jurusan terdapat atribut bernama Daftar yang bertipe array dari obyek Mahasiswa.println(Daftar[i].i<JmlMhs.i++) System. Penggambaran kode program di atas pada diagram kelas adalah sebagai berikut: Gambar 3.out. 18 .

Memahami penggunaan kelas abstrak dalam OOP 3. Konstruktor dari kelas induk tidak dapat diturunkan kepada kelas turunannya. Memahami dan menerapkan konsep pewarisan dalam OOP 2. Dengan mengaplikasikan konsep inheritance. public String getDetails() {.java public class Employee { public String name. public Date birthDate. Dengan mengaplikasikan konsep polymorphism. Pada Java.. overriding. Tujuan 1. public double salary. programmer dapat memperlakukan seluruh object yang berasal dari superclass yang sama seakan-akan mereka adalah object dari superclass. Memahami dan menerapkan konsep polimorfisme dalam OOP 4.} } //Manager.1 Pewarisan di Java Pewarisan di Java hanya mengenal pewarisan tunggal. dan salary serta method getDetails() diturunkan ke kelas Manager sehingga kelas Manager dapat menggunakan atribut dan method tersebut. konsep polymorphism diimplementasikan melalui beberapa cara yaitu overloading.java public class Manager extends Employee { public String department. Untuk menggunakan pewarisan di Java digunakan keyword extends. sebuah kelas dapat menurunkan fungsi dan atribut yang dimilikinya kepada kelas yang menjadi turunannya.4 Inheritance dan Polimorfisme Overview Inheritance dan Polymorphism merupakan konsep OOP yang memberikan fleksibilitas kepada programmer dalam menulis program. Memahami penggunaan interface dalam OOP 4. abstract class dan melalui interface.1 Contoh Pewarisan Kelas Implementasi dari diagram kelas di atas dalam Java adalah sebagai berikut: //Employee.. artinya sebuah kelas hanya mewarisi atribut dan method dari satu kelas induk. 19 . Contoh pewarisan dapat dilihat pada diagram kelas berikut ini: Employee +name : String = "" +salary : double +birthDate : Date +getDetails() : String Manager +departement : String Gambar 4. birthDate. } Atribut name.

} public abstract void walk().").java public class Manager extends Employee { private String alamat. Di dalam kelas abstrak dapat dideklarasikan atribut dan method sama seperti kelas konkret. maka kelas tersebut akan menjadi kelas abstrak juga. Kelas abstrak dideklarasikan menggunakan keyword abstract. double g) { name = s. namun ada juga method abstrak. private double bonus. } public double getgaji() { return gaji. gaji=g.Untuk menggunakan method dan konstruktor dari kelas induk pada kelas anak digunakan keyword super.println("Living Thing eating. Jika tidak didefinisikan implementasinya.java public class Employee { private String name. contoh: //Employee. private double tunjangan.")... public Manager(String nama. } Public double getgaji() { return (super.getgaji()+tunjangan+bonus). public Employee (String s.1 Kelas Abstrak Kelas abstrak merupakan suatu bentuk khusus dari kelas di mana kelas tersebut tidak dapat diinstansiasi dan digunakan hanya untuk diturunkan ke dalam bentuk kelas konkret atau kelas abstrak berikutnya. alamat = s.out. } } 4. private double gaji. //merupakan method abstrak } Ketika sebuah kelas mewarisi sebuah kelas abstrak. contoh: public abstract class LivingThing { public void breath(){ System.1..out. yaitu suatu method yang tidak mempunyai implementasi hanya memiliki deklarasi saja. } public void eat(){ System. } } //Manager..println("Living Thing breathing. kelas tersebut harus mendefinisikan implementasi dari method abstrak yang ada dalam kelas induknya. String s) { super(nama). contoh: public class Human extends LivingThing { 20 .

1.//implementasi dari method abstrak walk() public void walk(){ System. double x2.2 Interface Interface adalah prototype kelas yang berisi definisi konstanta dan deklarasi method (hanya nama method tanpa definisi kode programnya). jika tidak dideklarasikan secara eksplisit. Object b)."). double y2){ this.y1 = y1.Semua atribut adalah public. Artinya. } //Line. private double x2. maka sebuah atribut memiliki sifatsifat tersebut secara otomatis.java public class Line implements Relation { private double x1. this. .Interface dapat meng-extend satu atau beberapa interface lainnya. Dalam sebuah interface: . } } 4.Tidak boleh ada deklarasi konstruktor. public boolean isLess( Object a. Contoh interface dan kegunaannya: Gambar 4.2 Contoh Interface Untuk membuat interface di Java digunakan keyword interface. Dengan adanya interface..out.Semua method adalah abstract dan public secara default. Source code untuk diagram kelas di atas dalam Java adalah sebagai berikut: //Relation. Java menyediakan sebuah fitur untuk keperluan pewarisan jamak (multiple inheritance).x2 = x2.x1 = x1. static dan final (semua atribut bertindak sebagai konstanta) secara default.java public interface Relation { public boolean isGreater( Object a. public boolean isEqual( Object a. . private double y2. } 21 .y2 = y2. jika tidak dideklarasikan secara eksplisit. . Object b). private double y1. this. maka sebuah method memiliki sifat-sifat tersebut secara otomatis. public Line(double x1..println("Human walks. Object b). Artinya. this. double y1.

(aLen < bLen). bLen = ((Line)b).getLength(). length. f. boolean isEqual( Object a. d. boolean isGreater( Object a. Tidak diberi modifier abstract. ii. Membuat instance dari kelas lain yang visible b. (aLen > bLen). bLen = ((Line)b).getLength().sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)). Visibilitas kelas berarti sebuah kelas dapat: a. Sebuah kelas tidak dapat final dan abstract sekaligus. Sebuah kelas dengan akses public bersifat visible oleh semua kelas dari semua package. Sebuah kelas abstract dapat memiliki beberapa abstract dan juga beberapa concrete method. Object b){ aLen = ((Line)a). Mengakses method dan atribut dari kelas lain yang visible 2. 22 . e.2 Konsep Poliformisme Memahami proses terjadinya Virtual Method Invocation Tulislah listing program berikut ini dan amati yang terjadi pada saat terjadinya Virtual Method Invocation. Sebuah kelas concrete yang meng-extend sebuah kelas abstract harus mengimplementasikan seluruh method abstract pada superclass-nya. Concrete method ditandai dengan: i. Sebuah kelas yang final tidak dapat diturunkan. boolean isLess( Object a.3 Beberapa Catatan tentang Pewarisan 1. Meng-extend sebuah kelas lain yang visible c. 4. Object b){ aLen = ((Line)a). b. 4.getLength().getLength(). (aLen == bLen). Kelas dapat diberi modifier final atau abstract.public double return } public double double return } public double double return } public double double return } } double getLength(){ length = Math.getLength().getLength(). Object b){ aLen = ((Line)a). Sebuah method abstract di dalam sebuah kelas berarti kelas tersebut adalah abstract. Memiliki kurung kurawal dan penutup pada deklarasi method-nya. a.1. c. Sebuah kelas yang abstract tidak dapat diinstansiasi. bLen = ((Line)b).

Buatlah suatu program yang menerapkan konsep polymorphic argument sebagaimana yang telah disinggung dalam pembahasan sebelumnya. Gambar 4. akan tampak hasil seperti di bawah ini : Nilai x = 5 Ini class Child  Mengimplementasikan UML class diagram dalam program Suatu program terdiri dari class Pegawai sebagai parent class.Gambar 4.3 Virtual Method Invocation Ketika program tersebut dijalankan. dan class Manajer dan class Kurir sebagai subclass.4 Contoh Class diagram 23 .

Tulislah listing program berikut ini sebagai pengetesan. desainlah suatu class yang memenuhi konsep enkapsulasi. Untuk nilai inisialisasi. 24 .5 Implementasi class diagram Lakukan kompilasi pada program di atas dan jalankan. dipakai 1-1-2000. Tulislah listing program berikut ini sebagai pengetesan.1 Overloading Mengimplementasikan UML class diagram dalam program untuk class Kalender Gambar 4. Bayaran untuk Manajer : 850 Bayaran untuk Programmer : 630 4.2.Transformasikan class diagram di atas ke dalam bentuk program?.6 Kelas Kalender Dari class diagram di atas. Gambar 4. Pakailah kata kunci this untuk mempersingkat pengkodean.

Return type harus sama atau bertipe turunan dari return type parent class Berikut ini contoh terjadinya overriding di mana method Info() pada class Child mengoverride method Info() pada class parent: 25 . tahun setelah itu : 20-10-2005 4.7 Penggunaan kelas Kalender Lakukan kompilasi pada program di atas dan jalankan.2.2 Overriding Overriding adalah suatu keadaan di mana method pada subclass menolak method pada parent class-nya. Waktu awal : 8-1-2000 1 hari setelah waktu awal : 9-1-2000 Waktu berubah : 1-6-2003 1 bulan setelah itu : 1-7-2003 Waktu berubah : 20-10-2004 1. Overriding mempunyai ciri-ciri sebagai berikut : 1.Gambar 4. Nama method harus sama 2. Daftar parameter harus sama 3.

Sebuah reference variable tidak dapat berubah tipe. 5. bukan tipe reference variable.Gambar 4. Downcasting: Sebuah reference variable merujuk kepada obyek bertipe subclass dapat diassign ke reference variable bertipe subclass dengan melakukan casting secara explisit. 26 . Sebuah obyek dapat diacu oleh beberapa reference variable selama memiliki tipe yang sama atau merupakan tipe superclass obyek tersebut. Reference variable bertipe subclass tersebut dapat mengakses properti dari kelas tipenya. parent b = a. } } iii.8 Contoh overloading Method yang terkena override (overridden method) diharuskan tidak boleh mempunyai modifier yang lebih luas aksesnya dari method yang meng-override (overriding method). tapi dapat merujuk ke obyek yang bertipe subclass variabel tersebut. class parent { } class child extends parent { } public class Main { public static void main(String[] args) { parent a = new child().3 Beberapa Catatan Penting tentang Polimorfisme 1. Method yang di-override yang digunakan ditentukan oleh tipe obyek. 4. Upcasting: Sebuah reference variable dapat di-assign ke reference variable bertipe superclassnya secara implisit. class parent { } class child extends parent { } public class Main { public static void main(String[] args) { child a = new child(). Terdapat dua jenis reference variable casting: ii. 3.2. child b = (child) a. 2. 4. bukan tipe obyeknya. Method yang dapat dipanggil ditentukan oleh tipe reference variable.

7. Sebuah subclass menggunakan super. Method yang bersifat private tidak diturunkan.overridden_Method_Name() untuk memanggil versi superclass dari overridden method. Boleh memiliki return type berbeda c. Hanya method yang diturunkan yang dapat di-override. Boleh memiliki access specifier yang berbeda d.} } 6. Method dari superclass dapat di-overload oleh subclass 27 . Sebuah method yang di-overload: a. Harus memiliki daftar argumen yang berbeda b.

Ketika sebuah exception dilempar. Umumnya. InterruptedException. Obyek ini membawa informasi dari tempat di mana exception di tangkap dan dikelola. dapat dibaca di javadoc manual. dan subclass ini diatur dalam hirarki kelas yang kompleks. Exception RunTimeException mengelola exception yang muncul di dalam program ketika runtime. Biasanya sebuah obyek exception mengandung pesan error yang mendeskripsikan apa yang terjadi sehingga menyebabkan exception dan dapat berisi data lain. Class Throwable mempunyai turunan Class yaitu class Error dan Exception. Kedua kelas ini nanti yang akan mempunyai beberapa turunan.Throwable. Kelas Exception mempunyai beberapa subclass seperti RunTimeException. kegagalan program dapat dihindari jika exception yang dilempar dapat ditangkap dan dikelola sebagaimana mestinya. apa yang dimaksud dengan Exception. Contoh : Jika terjadi pembagian dengan nol atau membuka file yang tidak ada. Untuk lebih lengkapnya. Mengetahui kelas-kelas exception di Java Mengetahui bagaimana Exception muncul dan cara menangkap Exception Mengetahui cara melempar Exception Mengetahui tentang User Define Exception Ketika sebuah exception muncul selama eksekusi program. 4. sebaiknya tidak dilakukan try catch pada error.lang. Sebuah exception dapat dilempar di suatu bagian program dan dapat ditangkap di bagian lain dari program tersebut. bagaimana menangkap Exception. Mengetahui tentang Exception di Java. 5. Tujuan 1. Serta akan dijelaskan throwing exception dan membuat user define exception. 3. Exception yang tidak ditangkap akan membuat program gagal. maka exception akan muncul. hal yang sebenarnya dilempar adalah sebuah obyek. 2. Ketika hal ini terjadi program diberhentikan dan program bisa rusak. Semua obyek exception merupakan subclass dari kelas standar java. Bagaimanapun.5 Exception Handling Overview Bab ini akan menjelaskan tentang Exception di Java. dan IOException. Subclass yang ada di bawah Error merupakan kelas yang merepresentasikan error serius di dalam Java Vitual Machine yang membuat program di terminasi karena terdapat masalah.1 Contoh Exception Penyebab Muncul ketika memberikan argumen yang tidak sesuai dengan tipe data pada suatu method ArrayIndexOutOfBoundsException Muncul ketika mengakses elemen array yang tidak terdapat pada array tersebut (melampui batas indeks) NumberFormatException Muncul ketika ingin mengubah sebuah string ke format numerik 28 . Berikut beberapa penyebab exception muncul : Exception IllegalArgumentException Tabel 5. dikatakan bahwa exception telah dilempar (exception is thrown). Subclass Exception merepresentasikan exception yang biasanya disebut error tetapi error ini merupakan error yang dapat di atasi dengan cara tertentu.

2. Lingkup dari blok catch dibatasi oleh Statement yang ada di dalam blok try. Klausa catch menspesifikasikan tipe exception yang akan ditangani.1 Mengimplementasikan Exception Handling Ketika sebuah error muncul di dalam method. yakni exception yang tidak dicek pada saat dilakukan kompilasi. Exception ini terdiri dari turunan kelas Error dan RunTimeException beserta seluruh turunannya. Statement untuk mendeklarasikan blok try catch : try { //Statements that cause an exception } catch(<exception name> <object name>){ //error handling code } Komputer akan mengeksekusi statement yang ada di dalam blok try. num2=0. Blok catch digunakan sebagai exception handler.1 Statement Try dan Catch Untuk menangkap exception di dalam program java. Java mengirimkannya ke program dengan melemparkan exception (throwing exception).1. Exception ini terdiri dari seluruh turunan kelas Exception kecuali RunTimeException. Blok Statement try membingkai kode yang kemungkinan akan memunculkan exception dan mendefinisikan exception handler yang dapat menanganinya. Unchecked exception. Exception yang dlempar perlu ditangani menggunakan exception handler dan diproses.ArithmeticException NullPointerException ClassCastException Muncul ketika membuat sebuah error aritmatika seperti pembagian dengan nol dalam Muncul ketika suatu aplikasi berusaha menggunakan obyek tanpa mengalokasikan memori Muncul ketika terjadi kesalahan melakukan casting sebuah obyek Exception secara umum dibagi dua: 1. 29 . Contoh : public class ArithmeticException{ public static void main (String[] args){ int num1=5. diperlukan Statement try. Java membuat sebuah obyek Exception. Setelah membuat obyek exception. Blok try harus mempunyai minimal satu buah blok catch yang mengikutinya. 5. Checked exception. Exception ini harus ditangani secara explisit menggunakan mekanisme exception handling. Jika tidak ada exception yang muncul ketika dieksekusi maka Statement catch tidak akan di jalankan. yakni exception yang akan dicek pada saat dilakukan kompilasi. Jika sebuah exception muncul maka blok catch akan langsung dijalankan. int num3=num1/num2. Untuk mengimplementasikan Exception handling digunakan keyword berikut : o Try o Catch o Finally o Throw o Throws 5.

out. Contoh : public class MultipleCatch{ public static void main (String[] args){ int num1=5.System. System.2.out. 5.2 Multiple Catch Sebuah blok try dapat diikuti oleh banyak blok catch.println(“Division by zero”). handler pada Java runtime sistem akan melempar sebuah exception ketika terjadi pembagian dengan nol sehingga akan dibuat sebuah obyek dari kelas exception yang dilempar yaitu ArithmeticException. Sebelum isi dari catch dieksekusi. Jika sebuah exception muncul di dalam blok try maka exception handler yang berkaitan akan menangani exception tersebut. try{ int num3=num1/num2. num2=0. tetapi setelah di eksekusi. } catch(ArithmeticException obj){ System.out. } } Jika program di atas di compile maka tidak ada error.1. yang berisi data tentang exception. } catch(ArrayIndexOutOfBondException obj){ System.out. try{ int num3=num1/num2.println(“Error…Out Of Bounds”). Hal ini penting ketika sebuah blok try mempunyai Statement yang mungkin akan memunculkan berbagai tipe exception.println(“The 3 elemen is “+ArrNum[3]). int arrNum[]= {1. } } } Dengan menangani exception maka program terhindar dari kerusakan.println(“The num3 = “+num3).println(“The num3 = “+num3). } 30 .println(“Division by zero”).out. obyek yang merepresentasikan exception diletakkan ke dalam variabel obj. pada contoh di atas karena muncul exception ArithmeticException maka akan dibuat exception handler untuk ArithmeticException public class ArithmeticException{ public static void main (String[] args){ int num1=5. System.out. System. num2=0.3 }.out.println(“The num3 = “+num3). } catch(ArithmeticException obj){ System.

Blok finally merupakan pilihan. Kelas Exception merupakan superclass dari semua tipe kelas exception. boleh ada atau tidak di dalam try catch blok. Exception yang dilempar oleh Statement throw akan ditangkap oleh blok catah yang ada. Statement throw akan menyebabkan terminasi dari aliran control program Java dan menghentikan eksekusi ketika Statement tersebut dieksekusi.println(“Other error”). ArrayIndexOutOfBoundException. Statement finally digunakan untuk melakukan sesuatu yang penting ketika terdapat exception atau tidak. dan blok catch yang terakhir akan menangkap exception yang lain. meskipun tidak ada exception yang muncul atau ada exception yang muncul.1. Hal ini dapat dilakukan dengan melempar exception secara eksplisit dengan menggunakan Statement throw.4 Throwing Exception Suatu saat dibutuhkan untuk melempar exception pada program yang dibuat. Sintaks try-catch-finaly : try{ //block of code } catch (<exception name> <object name>){ //block of exception code } finally{ //block of code that is always executed } Jika sebuah exception dilempar atau tidak dilempar. 5. maka ArithmeticException akan muncul dan akan ditangkap oleh blok catch yang pertama (ArithmeticException obj).3 Statement Finally Statement yang berada di dalam blok finally akan dieksekusi paling akhir ketika sedang mengeksekusi blok try.catch(Exception obj){ System. hal ini disebut unreachable code. 5. Ketika program mengeksekusi int num3=num1/num2. Jika blok catch yang pertama berisi obyek dari kelas Exception maka blok catch berikutnya tidak akan dieksekusi. blok finally akan dieksekusi meskipun tidak ada Statement catch yang cocok dengan exception yang muncul. dan Exception. Contoh pengggunaan Statement throw: public class ThrowingStatement{ 31 .out. jika tidak ada blok catch yang sesuai dengan exception yang dilempar maka program akan diterminasi. } } } Pada kode di atas terdapat tiga catch untuk menangani exception yaitu ArithmeticException. Program dapat melempar sebuah exception dengan harapan dapat ditangkap dan ditangani oleh blok catch. blok catch yang kedua akan dieksekusi jika di dalam blok try melempar ArrayIndexOutOfBoundException. Untuk menghindari duplikasi kode maka dapat diletakkan di dalam blok finally.1. Hal ini terjadi jika di dalam program ditemukan beberapa exceptional atau kondisi error tetapi tidak ada alasan untuk menangani error tersebut di mana permasalahan ditemukan. Untuk menghindari error unreachable code.. Blok catch yang pertama akan dieksekusi jika di dalam blok try melempar ArithmeticException. maka catch yang di dalamnya mengandung kelas Exception diletakkan pada urutan blok catch yang terakhir. Contoh: dibutuhkan untuk melempar exception ketika user salah memasukkan nilai. tetapi hanya satu blok finally saja yang dapat dibuat dalam satu buah blok try.

Jika method yang melempar exception tidak dapat menanganinya maka exception harus ditangani oleh bagian yang memanggil method tersebut. melempar sebuah exception merupakan cara yang masuk akal. } } Program di atas mempunyai kondisi A!= 0dan B*B-4*A*C>=0. Method akan melempar sebuah exception IllegalArgumentException jika kondisi tersebut tidak terpenuhi.sqrt(disc))/(2*A)).double B. Ketika sebuah kondisi illegal ditemukan dalam method. Contoh : class ThrowingStatement{ static double root(double IllegalArgumentException{ double disc=0. Statement Throws digunakan oleh method untuk menspesifikasikan tipe-tipe exception yang akan dilempar di dalam method. if (disc<0) throw new IllegalArgumentException("Discriminant< 0").static double root(double A. Jika program yang memanggil method mengetahui cara menangani error. maka dapat menangkap exception. double C) throws . if(A==0){ throw new IllegalArgumentException("A can't be zero").4). } else{ disc = (B*B)-(4*A*C).println("Illegal Argument in : "+obj). Hal ini dilakukan dengan Statement throws. } public static void main(String[] args){ double Ans = root(0. } return ((-B + Math. try { if(A==0){ throw new IllegalArgumentException("A can't be zero"). } } //endtry catch(IllegalArgumentException obj){ System.double B. } 32 A. double C){ double disc=0. Statement throws digunakan untuk menuliskan tipe-tipe exception yang terdapat di dalam method.out. jika tidak maka program akan rusak dan harus diperbaiki.2.

static void setValue(int UAQ. 33 .4).out.sqrt(disc))/(2*A)). catch. } public static void main (String[] args){ double Ans. } } public class UserException { static int TestUAQ. User defined exception juga menuruni semua method yang didefinisikan di dalam kelas Throwable. if (disc<0) throw new IllegalArgumentException("Discriminant< 0"). throws. Tiap aplikasi yang dibuat kemungkinan mempunyai batasan yang spesifik. } catch(IllegalArgumentException obj){ System.println("The value UAQ : "+TestUAQ+". Kelas Exception menuruni semua method yang ada di dalam kelas Throwable. TestUTQ=UTQ. TestUTQ.int UTQ) throws MyException{ if ((UAQ<0)||(UTQ<0)) throw new MyException(). } return ((-B + Math.2. try.2 User defined Exception User defined exception merupakan exception yang dibuat oleh programmer sesuai dengan permintaan pada aplikasi. UTQ : "+TestUTQ). try{ Ans = root(0.println("Illegal Argument in : "+obj). TestUAQ=UAQ. System. Statement throw.out. dan finally digunakan dalam mengimplementasikan user define exception.else{ disc = (B*B)-(4*A*C). Contoh : class MyException extends Exception{ public String toString(){ return "MyException caught : The Input value cannot less than 0". } } } 5.

Sebuah method yang meng-override dapat mendeklarasikan checked exception yang merupakan turunan dari exception yang dideklarasikan pada method yang di-override. 34 . Sebuah method yang meng-override dapat mendeklarasikan segala jenis unchecked exception tanpa peduli apakah exception tersebut dideklarasikan oleh method yang di-override.} public static void main (String[] args){ try{ setValue(80.println("The Exception raised : "+obj). 6. exception yang merupakan superclass harus berada di bawah exception subclass-nya. } } } 5. meskipun exception yang ada berhasil ditangani atau tidak. 5. Pada multiple catch exception.60). 4.out. } catch(MyException obj){ System. 2.90). setValue(-70. 3. Kode program pada klausa finally akan selalu dieksekusi. Sebuah method yang meng-override tidak dapat mendeklarasikan checked exception yang merupakan superclass dari exception yang dideklarasikan pada method yang di-override. meskipun terjadi exception atau tidak.3 Beberapa Catatan tentang Exception 1. Sebuah method yang meng-override tidak dapat mendeklarasikan checked exception baru yang tidak dideklarasikan oleh method yang di-override.

dan lain-lain. String namaFile): Membuat sebuah instance pada kelas File di mana obyekDirektori adalah sebuah obyek dari kelas File yang menunjuk sebuah direktori. Keterangan: Alamat disini bisa berupa alamat absolut atau alamat relatif. alamatDirektori menentukan alamat direktori dari file sedangkan nama file menentukan file mana yang akan diakses. String namaFile): Membuat sebuah obyek dari kelas File. 3. alamat dari direktori di mana file tersebut berada. tanggal pembuatan dan akses. File (String alamatDirektori): Membuat sebuah obyek dari kelas File. 3. sedang namaFile adalah file yang akan diakses. Penggunaan file menggunakan kelas File. Pengaksesan dengan random-access file 6. Jika tidak akan mengembalikan nilai false. antara lain: Tabel 6. 4. Jika bukan file atau direktori akan mengembalikan nilai false. Terdapat beberapa method yang bisa digunakan di dalam sebuah obyek dari kelas File. Jika tidak akan mengembalikan nilai false Akan mengembalikan nilai true jika argumen yang ditunjuk pada konstruktor instantiasi obyek merupakan sebuah file atau direktori.1 Method dalam kelas File Method Keterangan boolean canRead() Akan mengembalikan nilai true jika file yang sedang diakses saat ini dapat dibaca (readable). File(File obyekDirektori. Akan mengembalikan nilai true jika argumen yang ditulis dalam 35 boolean isFile() . Tujuan 1. Terdapat beberapa konstruktor yang bisa kita gunakan untuk membuat instance pada kelas File: 1. baik melakukan proses pembacaan ataupun penulisan. alamatDirektori merupakan alamat di direktori mana file yang akan diakses berada. Penggunaan byte stream.6 Input/Output Overview Dalam bab ini akan dibahas tentang bagaimana cara melakukan pengaksesan data kedalam file.io menyediakan berbagai macam method untuk mengakses atributatribut dari file dan direktori. Penggunaan character stream. 2. File(String alamatDirektori. Akan dibahas tentang pengaksesan data menggunakan stream dan random access file. Sebuah obyek yang dibuat dari kelas File yang akan merepresentasikan file atau direktori. boolean canWrite() boolean exists() Akan mengembalikan nilai true jika file bisa ditulis (writable).1 Implementasi Kelas File Kelas file dalam package java. seperti hak akses dari. 2.

(direktori di mana file atau direktori tersebut disimpan) Mengembalikan panjang dari file.IOException. : "+obj1. : "+obj1.println("Sebuah obyek file"). import java.out.println("getPath System. import java. Berikut adalah contoh penggunaan kelas File.konstruktor merupakan sebuah file.java"). System. Akan mengembalikan sebuah string alamat induk dari file atau direktori tersebut.getAbsolutePath()). Akan mengembalikan nilai true jika argument yang ditulis dalam konstruktor adalah sebuah alamat absolut dari file atau direktori. Selain itu akan mengembalikan nilai false. System.println("Panjang : "+obj1. 36 System. Akan mengembalikan sebuah representasi waktu kapan terakhir kali file atau direktori tersebut dimodifikasi.io.println("Lokasi System. class AksesFile{ String daftar[] = new String[20].out. Akan mengembalikan sebuah string alamat absolut dari sebuah file atau String getAbsolutePath() direktori.length()).io.getPath()).out. File obj2 = new File("D:\\IO"). . dalam ukuran byte.out.println("Nama File System.getParent()). String getName() String getPath() String getParent() long length() long lastModified() String[] list() Akan mengembalikan sebuah string nama dari file atau direktori. Selain itu akan mengembalikan nilai false. : "+obj1.File."KelasFile. Selain itu akan bernilai false.out. Jika berupa sebuah direktori akan mengembalikan nilai 0 (nol).getName()).println("getAbsolutPath : "+obj1.out. Akan mengembalikan sebuah string alamat dari di mana file atau direktori tersebut. Akan mengembalikan sebuah array berbentuk string yang akan menyimpan daftar isi (file dan direktori) dari sebuah direktori. public void displayData() { try { File obj1 = new File("D:\\IO". boolean isDirectory() boolean isAbsolute() Akan mengembalikan nilai true jika argumen yang ditulis dalam konstruktor adalah sebuah direktori. Jika bukan sebuah direktori akan mengembalikan nilai null.

System.out.length()).System. System.out.out. System. } } Keluaran dari program di atas adalah: : "+obj2.println("Last Modif System.lastModified()).out.out. aksesFile.out.length. : "+obj2.out.i++) { System.println().println("\t"+daftar[i]). : "+obj2. System.out.out.out. for (int i=0.println("last Modif daftar = obj2.getPath()).i<daftar.println("Sebuah obyek Direktori"). System.println("Panjang System.println(e).getAbsolutePath()).list().println("Isi dari direktori : ").getParent()).displayData().println("getAbsolutPath : "+obj2.out.println("getPath System.println("Lokasi System.getName()).lastModified()). 37 . } } catch (Exception e) { System.out. } } } public class KelasFile { public static void main(String[] args){ AksesFile aksesFile = new AksesFile(). : "+obj2. : "+obj1.println("Nama Direktori : "+obj2.

file). jaringan komputer.print("Masukkan data try { panjang=System. Stream dibagi menjadi dua jenis.2 Method pada kelas OutputStream Keterangan Menulis sekian b byte kedalam sebuah file. byte stream dengan unit dasar satu byte data dan character stream dengan dasar satu karakter Unicode. Di dalam Java. Operasi Input output (I/O) terdiri dari dua bagian. package java.2.out. . Contoh penggunaannya sebagai berikut. import java. public class CobaSystemOut { public static void main(String[] args) { byte[] data = new byte[10].Gambar 6.out. Terdapat dua Kelas byte stream yaitu InputStream dan OutputStream.io.1.1 Implementasi Byte Stream Byte stream menggunakan byte sebagai unit dasar operasi baca dan tulis terhadap streamnya. Kelas System dalam package java.read(data). Beberapa method yang digunakan dalam kelas OutputStream Method write(byte b) write(byte b[]) write(byte b[].1 Contoh penggunaan File 6. Menulis kedalam byte di mana datanya berasal dari sebuah array b.*. int offset. jaringan komputer.io terdiri dari berbagai macam kelas dan interface stream I/O yang mendukung operasi I/O.2 Penggunaan Stream dalam Java Stream dalam sebuah program java digunakan untuk melakukan pembacaan atau penulisan kedalam sebuah asal (source) atau tujuan (destination).1 Ouput Stream Kelas OutputStream merupakan stream yang digunakan untuk menulis data dalam bentuk byte. Beberapa contohnya adalah digunakan untuk menulis kedalam layar monitor atau file. Menghapus buffer stream output. yang merupakan instance dari kelas PrintStream yang bisa menggunakan method write() untuk menulis kedalam layar monitor. 6. 6.in. int length) close() flush() Tabel 6. int panjang=0. 38 : "). file) kemudian data masukan tadi akan diproses dan akan dikeluarkan menuju sebuah tujuan (misal monitor. yaitu input yang berasal dari sebuah sumber (misal sebuah keyboard.lang memiliki sebuah variabel statik yang digunakan untuk merepresentasikan sebuah layar monitor. Variabel tersebut adalah System. System. dimulai dari lokasi offset sebanyak sekian length byte.2. Menulis array berisi byte kedalam sebuah file. Menutup stream output.

} } } Untuk melakukan operasi penulisan ke dalam sebuah file digunakan kelas FileOutputStream. int length) Tabel 6.3 Method dalam kelas FileOutputStream Keterangan Menulis byte b kedalam file stream. System.3).print("Terjadi Exception"). } catch (IOException e) { System. Berikut adalah contoh dari penggunaan FileOutputStream. sebanyak length byte. int offset. System. 3. boolean bool): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file. sedang boolean bool jika bernilai true menunjukkan bahwa penulisan file dilakukan dalam mode append (penambahan data di akhir file) 4.write(data). : "). FileOutputStream(String s.out. objFile merupakan sebuah file obyek yang merepresentasikan sebuah file. FileOutputStream(String alamatFile): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file. Menulis sejumlah length byte dari posisi offset kedalam file stream. import java. boolean bool): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file.print("index ke-1 sebnyk 3 : "). sedang boolean bool jika bernilai true menunjukkan bahwa penulisan file dilakukan dalam mode append (penambahan data di akhir file) Beberapa method untuk melakukan penulisan kedalam stream dengan kelas FileOutputStream Method write(byte b) write(byte b[].out. System.println("Panjang Karakter : "+panjang). FileOutputStream(File objFile): Membuat sebuah obyek File stream yang menghubungkan dengan sebuah file.out.out. public class ContohFOS { public static void main(String args[]){ 39 .write(data.out.1. String alamatFile merupakan alamat dari file yang akan dijadikan tujuan penulisan. 2. FileOutputStream(File objFile. String alamatFile merupakan alamat dari file yang akan dijadikan tujuan penulisan.System. Beberapa konstruktor yang bisa digunakan dalam kelas FileOutputStream adalah: 1.out.print("Yang anda ketik System.io.*. objFile merupakan sebuah file obyek yang merepresentasikan sebuah file.

} } } Runtime dari kode di atas Gambar 6.").out.println(e).println(f). 0. } catch(FileNotFoundException f){ System.in. 100).read(buffer.println("Masukkan data:").out.out.println("Data telah ditulis.2 Contoh FOS Hasil penulisan dalam file textFOS.txt 40 .println(i). } catch(IOException e){ System.. objFOS.txt"). } try{ FileOutputStream objFOS. objFOS= new FileOutputStream("textFOS. System.out. try{ System.out.byte buffer[]=new byte[100].. } catch(IOException i){ System.write(buffer). System.

in merupakan sebuah instance dari kelas InputStream yang dapat digunakan untuk membaca dari dari keyboard. Jika memasuki akhir dari stream akan mengembalikan nilai -1 available() long skip(long n) mark(int nbyte): reset(): void close() Mengembalikan jumlah byte yang bisa dibaca dari sebuah stream. Melewatkan sekian n byte dari input stream.2 Input Stream Input stream adalah stream yang membaca data dalam bentuk byte.println("menekan tombol enter"). int length) Keterangan Membaca satu byte data dari input stream. Mengembalikan posisi kepada lokasi yang telah ditandai dari method mark. Variabel dengan nama System.lang memiliki satu anggota static yang merupakan referensi dari sebuah keyboard. public class CobaSystemIn{ public static void main(String args[]){ byte buffer[]=new byte[80].Gambar 6. Beberapa method yang digunakan dalam kelas InputStream. try { System.read(buffer).print("Ketik sesuatu. System.print("akhiri dengan ").1.txt 6.2. Kelas System dalam package java. ").out. int offset. System. } catch(Exception e) { 41 . keyboard dan jaringan) dan menampilkan datanya kedalam layar monitor. Menutup input stream dan melepaskan sumber daya yang terikat pada stream tersebut. Menandai posisi yang ada pada input stream saat ini.out.4 Method InputStream Method int read() int read(byte b[]) int read(byte b[]. Java menyediakan kelas InputStream yang merupakan kelas abstrak untuk melakukan proses input untuk membaca data dari berbagai macam sumber (seperti file.in yang akan digunakan untuk membaca inputan user dari keyboard. Berikut adalah contoh penggunaan System.out. System.in.3 textFOS. Tabel 6. Membaca beberapa byte dari input stream dan memasukkannya kedalam array b Membaca sebanyak length byte dari stream dan memasukkannya kedalam array b.

System.out.println(e); } System.out.println(); String str=new String(buffer); System.out.println("isi Teks:"); System.out.print(str); } } Berikut adalah hasil dari kode di atas:

Gambar 6.4 Obyek System.in Untuk melakukan operasi input pembacaan data dari dalam file digunakan kelas FileInputStream. Berikut adalah beberapa konstruktor yang bisa digunakan dalam kelas FileInputStream. 1. FileInputStream(File namaFile): Membuat sebuah obyek yang akan menggunakan file dengan nama namaFile sebagai sumber inputannya. 2. FileInputStream(String alamatFile): Membuat sebuah obyek yang akan menggunakan sebuah file dengan alamat alamatFile (berbentuk string) sebagai sumber inputannya. 3. FileInputStream(FileDescriptor obyekFile): Membuat sebuah obyek yang akan menggunakan sebuah obyekfile yang sudah ditentukan sebelumnya sebagai sumber inputannya. Beberapa method yang digunakan dalam kelas FileInputStream Tabel 6.5 Method dalam kelas FileInputStream Method read() read(byte b[], int offset, int length) long skip(long n) Keterangan Membaca satu byte data dari stream inputan. Membaca sekian length byte data dari stream input dan memasukkannya kedalam sebuah array b. Melewatkan sekian n byte data dari stream input.

Berikut adalah contoh penggunaan FileInputStream. 42

import java.io.*; public class ContohFIS{ public static void main(String args[]){ byte buffer[]=new byte[100]; try{ FileInputStream file=new FileInputStream("dokumen.txt"); file.read(buffer,0,50); } catch(Exception e){ System.out.println(e); } System.out.println("Isi file dokumen.txt adalah:"); String str=new String(buffer); System.out.println(str); } } Berikut adalah hasil dari kode di atas

Gambar 6.5 Contoh FIS 6.2.2 Implementasi Character Stream Kelas-kelas stream karakter menangani proses I/O dengan basis unit adalah sebuah karakter dengan menggunakan representasi Unicode yang disimbolkan dengan 16 bit. Stream karakter terdiri dari kelas-kelas Reader dan Writer dalam package java.io. 6.2.2.1 Kelas Reader Kelas java.io.Reader merupakan sebuah kelas abstrak yang menyediakan berbagai macam method untuk melakukan proses pembacaan dalam bentuk karakter Unicode dari berbagai sumber data seperti harddisk, keyboard atau memori. Karena merupakan sebuah kelas abstrak, maka kelas ini tidak bisa diinstantiasi, tetapi sub-kelasnya lah yang akan digunakan untuk proses pembacaan data. Terdapat berbagai macam method dalam kelas Reader, tetapi sebenarnya hanya method read() dan close() saja yang kita perlukan. Method int read() Tabel 6.6 Method dalam kelas Reader Keterangan Membaca satu karakter dan mengembalikan sebuah nilai 43

integer dari karakter yang dibaca. Jika yang dibaca adalah EOF maka akan dikembalikan nilai -1. int read(char buffer[]) Membaca karakter dan memasukkannya kedalam sebuah array buffer dan mengembalikan sebuah bilangan dari karakter yang dibaca. Jika EOF akan mengembalikan nilai -1 Menutup stream.

abstract void close() Kelas FileReader

Kelas FileReader digunakan untuk membaca karakter dari dalam file, tetapi kelas ini tidak memiliki method di dalamnya. Method-nya sendiri diturunkan dari kelas induknya yaitu Reader dan InputStreamReader. Terdapat beberapa konstruktor dala kelas FileReader ini. 1. FileReader(File objFile) Membuat sebuah kelas FileReader dengan inputan sebuah obyek objFile. 2. FileReader(String namaFile) Membuat sebuah kelas FileReader dengan inputan sebuah nama namaFile. Berikut adalah contoh penggunaan FileReader import java.io.*; public class contohFR{ public static void main(String args[]){ try{ File file=new File("cthFileReader.txt"); FileReader f=new FileReader(file); int ch; while((ch=f.read())!=-1){ System.out.print((char)ch); } } catch(FileNotFoundException fnf){ System.out.println(fnf); } catch(IOException io){ System.out.println(io); } } } File yang akan dibaca dari kode di atas berisi hal berikut.

44

BufferedReader(Reader objStream.out. 1.readLine(). sehingga bisa lebih meningkatkan performansi dari aplikasi. Dengan menggunakan buffer. maka proses pembacaan bisa dilakukan lebih dari satu kali pada saat yang sama.Gambar 6. public class contohBR{ public static void main(String args[]){ System. String str=new String(). Beberapa konstruktor dari kelas BufferedReader ini. } catch(IOException io){ 45 . 2. BufferedReader(Reader objStream) Membuat sebuah obyek BufferedReader dengan ukuran buffer default.*.in)).7 Hasil eksekusi FileReader Kelas BufferedReader Kelas BufferedReader membaca teks dalam bentuk stream karakter dan memasukkannya kedalam sebuah buffer di dalam stream input. int ukuranBuffer) Membuat sebuah obyek BufferedReader dengan ukuran buffer sebesar ukuranBuffer.6 Contoh FileReader Berikut adalah hasil eksekusi dari kode di atas Gambar 6. Contoh penggunaan dari kelas ini adalah untuk mendapatkan inputan dari user melalui konsole.println("Ketik :"). try{ str=br. Berikut adalah contoh dari BufferedReader import java.io. BufferedReader br= new BufferedReader(new InputStreamReader(System.

out. } System.out. 2.7 Method dalam kelas Writer Keterangan Menulis sebuah karakter kedalam stream output-karakter. tetapi kelas ini tidak memiliki method di dalamnya.out.out. } } Hasil dari kode di atas adalah Gambar 6. tetapi hanya method write(). Menutup stream.2 Kelas Writer Kelas java.2. Karena merupakan sebuah kelas abstrak. Methodnya sendiri diturunkan dari kelas induknya yaitu Writer dan OutputStreamReader.println().println(io). Mem-flush buffer output .8 Contoh BufferedReader 6. boolean boolAppend) Membuat sebuah obyek FileWriter dengan parameter inputan nama file yang akan ditulis. 1. Method int write(int ch) int write(char buffer[]) abstract void close() Void flush() Kelas FileWriter Kelas FileWriter digunakan untuk menulis data kedalam sebuah file.2. sedangkan boolAppend digunakan untuk menentukan bahwa penulisan akan dilakukaan secara menambahkan data di bagian paling bawah jika boolAppend bernilai true.println("Isi ketikan: "). flush() dan close() saja yang kita butuhkan. Terdapat beberapa konstruktor dala kelas FileWriter ini.io. Berikut adalah kelas-kelas turunan dari kelas Writer. System. Menulis sebuah array karakter kedalam stream outputkarakter.println(str). 46 Tabel 6. Terdapat banyak method dalam kelas Writer. System.System.Writer merupakan sebuah kelas abstrak yang menyediakan berbagai macam method untuk melakukan proses penulisan dalam bentuk karakter Unicode ke berbagai tujuan data seperti harddisk dan monitor. tetapi sub-kelasnya lah yang akan digunakan untuk proses pembacaan data. maka kelas ini tidak bisa diinstantiasi. FileWriter(String namaFile) Membuat sebuah obyek FileWriter dengan parameter inputan nama file yang akan ditulis. FileWriter(String namaFile.

str2. } catch (IOException io){ System.9 Contoh FileWriter File cthFileWriter. Gambar 6. } } } Hasil dari kode di atas Gambar 6. fout. System. fout. 0. fout.txt 47 .txt" ).10 Isi cthFileWriter.out.*.. public class ContohFW{ public static void main (String args[]){ String str="contoh dari". FileWriter(File objFile) Membuat sebuah obyek FileWriter dengan parameter inputan sebuah obyek dari kelas File. String str2="penggunaan kelas FileWriter". try{ FileWriter fout = new FileWriter("cthFileWriter.out.println("Data sudah ditulis. import java.length() ). str.io.3.txt akan berisi.length() ).close().write(str2. 0.println(io). Berikut adalah contoh dari penggunaan kelas FileWriter.write(str..").

PrintWriter(Writer outWriter. 1. import java. PrintWriter(OutputStream streamObj) Membuat sebuah obyek dari kelas PrintWriter dengan menggunakan obyek dari kelas OutputStream. 3. boolean autoflush) Membuat sebuah obyek dari kelas PrintWriter dengan menggunakan obyek dari karakter stream output. pw. public class contohPW{ public static void main(String args[]){ PrintWriter pw=null. pw. pw.io. 48 .txt"). pw. pw. Parameter autoflush menandakan bahwa method println() akan memflush kedalam buffer output.print("Bandung"). Terdapat beberapa konstruktor dalam kelas ini.println().print("Chairil Anwar:").print("Jakarta").print("Agus Subagus:"). boolean autoflush) Membuat sebuah obyek dari kelas PrintWriter dengan menggunakan obyek dari kelas OutputStream.Kelas PrintWriter Kelas PrintWriter merupakan turunan dari kelas Writer dan akan menuliskan karakter yang telah terformat kedalam stream karakter output. } catch(IOException io){ System. pw. pw=new PrintWriter(file). Contoh penggunaan kelas PrintWriter. Parameter autoflush menandakan bahwa method println() akan memflush kedalam buffer output. } pw. pw.println(). Di dalam kelas ini terdapat beberapa method yang akan digunakan yaitu print() dan println(). pw. PrintWriter(OutputStream streamObj.*.out.print("Subang").print("30308999:"). pw.println(io). 2.print("Budiman:"). try{ FileWriter file=new FileWriter("cthPrintWriter.print("30208999:").print("30108999:"). pw.

String mode): 49 . antara lain: 1. kita harus mendefinisikan proses apa yang akan kita lakukan. Ambil sebuah kasus ketika yang kita inginkan tidak semua teks dari sebuah file kita butuhkan. Di dalam kelas ini. String mode): Membuat sebuah obyek dari kelas RandomAccessFile. sedangkan argumen mode menentukan jenis hak akses pembukaan file tersebut.. RandomAccessFile(File obyekFile.11 Contoh PrintWriter Hasil penyimpanan data di atas pada file cthPrintWriter. tetapi hanya pada posisi tertentu saja.txt 6.RandomAccessFile mengimplementasikan sebuah interface DataInput dan DataOutput yang bisa digunakana untuk melakukan proses baca dan tulis kedalam file. misal pada baris ke-sekian. Terdapat beberapa konstruktor yang bisa digunakan dalam kelas RandomAccessFile.pw.println().io.. Dengan cara ini kita bisa membaca dan menulis data teks dan byte pada lokasi manapun dalam sebuah file.").12 Isi cthPrintWriter. apakah membaca atau juga akan menulis kedalam file tersebut.3 Implementasi RandomAccessFile Random access file (pengaksesan file secara acak) memungkinkan kita untuk mengakses isi dari sebuah file secara tidak berurutan.out.txt Gambar 6. di mana argumen obyekFile adalah obyek yang menentukan file mana yang akan dibuka. } } Eksekusi dari kode di atas Gambar 6.close().println("Data Telah Ditulis. 2. RandomAccessFile(String namaFile. Kelas java. System. Maka dengan menggunakan Random access file ini kita bisa langsung menuju ke posisi yang diinginkan dan mengambil teks yang kita butuhkan saja. pw.

di mana argumen namaFile adalah nama dari file yang akan dibuka. sedang argumen mode menentukan jenis hak akses pembukaan file tersebut. yang akan dituliskan secara tersinkronisasi.Membuat sebuah obyek dari kelas RandomAccessFile.9 Method dalam kelas RandomAccessFile Method void close() Keterangan Menutup sebuah obyek RandomAccessFile dan melepas semua sumber daya yang digunakan. Menentukan posisi pointer kepada lokasi yang ditentukan (posisi sebelum lokasi tersebut). sebagaimana mode “rw”. import java. long getFilePointer() long length() void seek(long position) int skipBytes(int n) Berikut adalah contoh penggunaan RandomAccessFile. sebagaimana mode “rw”. 50 . Membuka sebuah file untuk dilakukan proses baca dan tulis. Jika dilakukan proses penulisan pada obyek ini maka akan menghasilkan sebuah IOException Membuka sebuah file untuk dilakukan proses baca dan tulis.io.8 Jenis akses pembukaan file Keterangan Membuka file hanya untuk dilakukan proses pembacaan saja. untuk mode “s” juga akan dilakukan proses update terhadap isi dan metadata dari file tersebut. maka akan dibuat sebuah file baru. antara lain: Tabel 6. import java. Mendapatkan posisi pointer saat ini di dalam sebuah file. "rw" "rws" "rwd" Terdapat beberapa method yang bisa digunakan di dalam sebuah obyek dari kelas File. Membuka sebuah file untuk dilakukan proses baca dan tulis. Jika file yang ditunjuk tidak ada. antara lain: Nilai "r" Tabel 6. Mendapatkan panjang dari sebuah file.RandomAccessFile. Akan melewati sekian n byte karakter dari posisi sekarang. yang akan dituliskan secara tersinkronisasi. class RAC{ RandomAccessFile file=null.IOException. seperti stream dan pointer yang digunakan dalam file tersebut. Terdapat beberapa jenis hak akses pembukaan file. untuk mode “s” juga akan dilakukan proses update terhadap isi dari file tersebut.io.

file.println(file.public void aksesFile(){ try{ /* membuka file work. System. file.readInt()).txt.readChar()).println("Exception: " +e).out. dengan mode akses read dan write jika file tidak ditemukan.close(). file. file.out. file. System.println(file.writeChar('K').writeChar('A'). obj. } catch(IOException e){ System.txt".readInt()). } } Ouput dari contoh di atas 51 .aksesFile(). System.println(file. file.readChar())."rw").out. System. } } } class ContohRandomAccessFile{ public static void main(String[] args){ RAC obj = new RAC().println(file.out.writeInt(4). maka akan dibuat sebuah file baru */ file=new RandomAccessFile("work.out.writeInt(6).seek(0).

sebuah thread utama akan dibuat oleh Java untuk mengeksekusi Program tersebut. Mengerti dan menggunakan kemampuan concurency 7. kemudian sebuah sekuen eksekusi. Mengerti konsep prioritas dalam threads 4. di dunia nyata. terdapat dua cara yang dapat dilakukan yakni:  Membuat class yang mengimplementasikan interface Runnable dan mengimplementasikan method run()  Membuat class yang merupakan turunan dari class Thread dan meng-override method run(). Untuk membuat thread baru yang terpisah dari thread utama. Membuat sendiri sebuah thread 6. pasti dibutuhkan sesuatu yang dapat mengatur proses yang terjadi dan berjalan bersamasama. ia memiliki sebuah titik awal eksekusi. thread hadir untuk menjadi solusi dalam mengatasi permasalahan tersebut. Menggunakan sinkronisasi pada thread yang bekerja bersama-sama dan saling bergantung satu dengan yang lainya 7. Mengetahui bagaimana menggunakan method di dalam class Thread 5. class HelloRunner { int i. pasti hanya satu proses yang telah dieksekusi. Mampu mendefinisikan threads 2. Setiap eksekusi. Memungkinkan thread untuk dapat berkomunikasi dengan thread lain yang sedang berjalan 8. Java mendukung adanya Multithreading. Tujuan 1. yang dimulai dengan memanggil method main().1 Multithreading di Java Sebuah thread merupakan sebuah pengontrol aliran program. Berikut terdapat sebuah contoh kelas yang tidak menggunakan Thread. Untuk lebih mudahnya. Selama runtime. bayangkanlah thread sebagai sebuah proses yang akan dieksekusi di dalam sebuah program tertentu. Mengerti perbedaan state dalam threads 3. while (i<5) { System.out. dan kemudian berakhir.Oleh karena itu.13 Contoh RandomAccessFile 7 Multithreading Overview Sebuah program sekuensial berarti sebuah program yang hanya memiliki satu aliran eksekusi. public void tampil() { i = 0. Pada saat menjalankan Program. } } } public class DemoThread1 { 52 .println("Hello " + i++). Bagaimanapun juga.Gambar 6.

out. try { Thread. } } Berikut kode program untuk membuat Thread dengan mengimplementasikan interface Runnable.println(tr.out. public void run() { Thread tr = Thread.public static void main(String args[]) { HelloRunner r1 = new HelloRunner().start().println("Selesai"). HelloRunner r2 = new HelloRunner(). t2.out.start(). i = 0. System. i = 0. } 53 . r1. r2. HelloRunner r2 = new HelloRunner(). System.out.currentThread().sleep(500). class HelloRunner extends Thread{ int i. while (i<5) { System.out. t1.sleep(500).println("Jalankan Hello Runner 2"). try { Thread. Thread t1 = new Thread(r1). } catch (InterruptedException e) { System.println("Program di interrupt").tampil(). class HelloRunner implements Runnable{ int i.out.getName()+" : Hello " + i++).println("Program di interrupt").currentThread().println(tr. } } } } public class DemoThread3 { public static void main(String args[]) { HelloRunner r1 = new HelloRunner(). System. @Override public void run() { Thread tr = Thread.getName()+" : Hello " + i++). Thread t2 = new Thread(r2).tampil(). while (i<5) { System. } } Jika menggunakan turunan kelas Thread.println("Jalankan Hello Runner 1").out. } catch (InterruptedException e) { System. maka kode programnya sebagai berikut.

HelloRunner r2 = new HelloRunner(). Blocked: Sebuah thread yang di-block merupakan sebuah thread yang tidak mampu berjalan. Sebuah prioritas adalah sebuah nilai integer dari angka 1 sampai dengan 10.sleep(500). try { Thread. berarti semakin besar kesempatan dari thread tersebut untuk dieksekusi terlebih dahulu. r2. 2. Running: Sebuah thread yang pada saat ini sedang dieksekusi dan di dalam control dari CPU.print(str1). 5.start(). 7. penggunaan turunan kelas Thread akan membatasi jika programmer ingin Thread mewarisi sifat dari kelas lain dikarenakan Java tidak memperbolehkan adanya multiple inheritance. Resumed: Setelah sebelumnya di block atau diberhentikan sementara. } catch (InterruptedException ie) { 54 . End 7. 4. setiap thread akan diberikan sebuah prioritas. 6. digunakan method setPriority.} } } public class DemoThread5 { public static void main(String args[]) { HelloRunner r1 = new HelloRunner(). Di lain sisi.out.4 Sinkronisasi Thread Marilah kita perhatikan sebuah kode sederhana yang mencetak sebuah string dengan urutan tertentu.2 Priority Thread Untuk menentukan thread mana yang akan menerima control dari CPU dan akan dieksekusi pertama kali. Untuk memberikan nilai prioritas kepada Thread. 7. String str2) { System. maka terlihat proses yang mengalami Multithreading. } } Lakukan eksekusi terhadap ketiga kode program di atas. Penggunaan interface Runnable mensyaratkan pembuatan obyek tambahan selain HelloRunner. Untuk kode kedua (mengimplementasikan interface Runnable) dan kode ketiga (menurunkan kelas Thread) memiliki kelebihan dan kekurangan masing-masing. Suspended: Sebuah thread yang berhenti sementara. di mana semakin tinggi prioritas dari sebuah thread. 3. Ready to run: Thread yang sudah siap untuk dieksekusi.start(). tetapi masih belum ada kesempatan untuk melakukannya. r1. Berikut ini adalah listing program tersebut: class TwoStrings { static void print(String str1. karena ia akan menunggu sebuah resource tersedia atau sebuah event terjadi. yakni obyek Thread. dan kemudian memperbolehkan CPU untuk menjalankan thread lain bekerja.3 State dari Thread Sebuah thread memungkinkan untuk memiliki beberapa state: 1. state ini kemudian siap untuk dijalankan.

try { Thread.out. } } class PrintStringsThread implements Runnable { Thread thread. } } class PrintStringsThread implements Runnable { Thread thread.print(str1).str2 = str2. String str2) { System. } } Program ini diharapkan dapat mencetak dua argument object Runnable secara berurutan. Solusi dari masalah ini adalah dengan melakukan sinkronisasi terhadap method print. PrintStringsThread(String str1. thread = new Thread(this). 55 .sleep(500). thread.out.str1 = str1. String str2) { this.str2 = str2. PrintStringsThread(String str1. "you?"). str2. thread. } catch (InterruptedException ie) { } System. new PrintStringsThread("How are ". String str2) { this. pendeklarasian method sleep akan menyebabkan thread yang lain akan dieksekusi walaupun thread yang pertama belum selesai dijalankan pada saat eksekusi method print dari class TwoStrings. } } class TestThread { public static void main(String args[]) { new PrintStringsThread("Hello ". str2. class TwoStrings { synchronized static void print(String str1.print(str1.start(). str2).out.println(str2). thread = new Thread(this). this."). Berikut contoh proses sinkronisasi terhadap kasus di atas. } public void run() { TwoStrings. sehingga pada satu saat hanya boleh ada satu Thread yang menggunakan method print tersebut.} System. "very much!"). String str1. String str1. this. new PrintStringsThread("Thank you ". "there.start().println(str2).str1 = str1. Permasalahannya adalah. Proses sinkronisasi juga dapat dilakukan kepada obyek.print(str1. } public void run() { TwoStrings. str2).

Berikut contohnya.random()*100)).set((int)(Math.sd = sd. i++) { sd. new Producer(sd).out. "you?"). } synchronized int get() { System.} } class TestThread { public static void main(String args[]) { new PrintStringsThread("Hello ". new PrintStringsThread("How are ". "there.start(). Producer(SharedData sd) { this. } } class Producer implements Runnable { SharedData sd.out.println("Get " + data). Consumer(SharedData sd) { this. i++) { sd. } public void run() { for (int i = 0. } } } class Consumer implements Runnable { SharedData sd.sd = sd.5 Komunikasi antar Thread Java juga menyediakan mekanisme untuk Thread saling berkomunikasi."). new PrintStringsThread("Thank you ". } } 7. return data. i < 5 .println("Generate " + value). synchronized void set(int value) { System.get(). } public void run() { for (int i = 0. 56 . "very much!"). new Thread(this. new Thread(this. "Producer"). class SharedData { int data. "Consumer").start(). data = value. i < 5. } } } class TestProducerConsumer { public static void main(String args[]) throws Exception { SharedData sd = new SharedData().

println("Generate " + value). Berikut solusinya. return data. valueSet = false. Untuk mengatasi problem di atas. notify(). diinginkan setiap kali producer melakukan generate sebuah nilai. } catch (InterruptedException ie) { } } System. dibuat sebuah mekanisme komunikasi antara producer dan consumer menggunakan method wait() dan notify(). boolean valueSet = false. data = value. } } class Producer implements Runnable { SharedData sd. Dari program di atas. } catch (InterruptedException ie) { } } System. } synchronized int get() { if (!valueSet) { //produsen belum men-set sebuah nilai try { wait(). maka consumer akan mendapatkan nilai tersebut.println("Get " + data).new Consumer(sd). Producer(SharedData sd) { this.out.out. synchronized void set(int value) { if (valueSet) { //baru saja membangkitkan sebuah nilai try { wait(). class SharedData { int data. valueSet = true. notify().sd = sd. 57 . } } Di bawah ini adalah contoh dari keluaran program : Generate 8 Generate 45 Get 52 Generate 65 Get 65 Generate 23 Get 23 Generate 49 Get 49 Get 35 Hasil tersebut bukanlah yang diharapkan.

} } 58 .get(). i++) { sd. "Consumer"). new Consumer(sd). } } } class Consumer implements Runnable { SharedData sd.start(). i < 5 . } public void run() { for (int i = 0.set((int)(Math. } public void run() { for (int i = 0. i < 5. Consumer(SharedData sd) { this. new Producer(sd).random()*100)).new Thread(this. "Producer").sd = sd.start(). } } } class TestProducerConsumer { public static void main(String args[]) throws Exception { SharedData sd = new SharedData(). i++) { sd. new Thread(this.

jika hal tersebut telah diinputkan. 4. public Iterator iterator() Mengembalikan sebuah iterator yang menunjukkan kita pada isi collection ini. namun menyediakan method yang tersinkronisasi. 6. 8. public int size() Mengembalikan jumlah dari elemen pada collection ini. Tujuan 1. public boolean add(Object o) Memasukkan Object o ke dalam collection ini. Mampu menggunakan List 3. Mampu menggunakan Set 4. 3. Struktur data ini sudah banyak dimengerti dan diprogram ribuan kali sebelumnya. Java telah menyajikan classes dan interfaces Collection yang lain. Beberapa implementasi dari interface Collection beserta karakteristiknya. Memahami pemrograman generik pada Java 2.8 Collection Overview Programmer yang perlu menggunakan list atau pohon biner. Class tersebut benar-benar implementasi dari collection interfaces yang berbeda. 1. Kepada kita. public boolean equals(Object o) Mengembalikan nilai true jika Object o sama dengan yang ada pada collection ini. public void clear() Menghapus semua elemen dari collection ini. 9. ArrayList: Menyediakan iterasi yang cepat dan random access. 5. List. Collection memperbolehkan penggandaan/salinan dan tidak membutuhkan pemesanan elemen secara spesifik. public boolean contains(Object o) Mengembalikan nilai true jika collection ini berisi Object o. public int hashCode() Mengembalikan nilai hash code (yaitu ID) untuk collection ini. Di bagian ini kita akan melihat bagaimana Java menyelesaikan masalah ini. Contoh dari classes Collection termasuk LinkedList. 2. ArrayList. Sebuah collection hanyalah sebuah grup dari object yang diketahui sebagai elemennya sendiri. public boolean remove(Object o) Menghapus single instance dari Object o pada collection ini. Induk hirarki dari collection interfaces adalah interfaces Collection itu sendiri. antara lain: a. Vector: ArrayList yang performa lebih lambat. Mengembalikan nilai true jika o telah sukses ditambahkan ke dalam collection. Masalahnya adalah bagaimana agar struktur data yang tangguh tersedia dan siap digunakan oleh programmer. 7. HashSet dan TreeSet. Mengembalikan nilai true jika o telah ditemukan dan dihapus dari collection. 59 .1 Pemrograman Generik Pemrograman generik adalah penulisan kode yang bisa digunakan oleh berbagai macam tipe data. Objects atau collections yang sama memiliki nilai hash code atau ID yang sama. di mana semuanya dapat ditemukan di java.util package. Beberapa method yang ada di interface Collection. 1. Mampu menggunakan Map 8. public boolean isEmpty() Mengembalikan nilai true jika collection ini tidak berisi object atau elemen apapun. b. seharusnya tidak perlu lagi membuat data struktur ini dari awal.

} Mulai dari java versi 1. myString).. membolehkan nilai null. Pada ArrayList di atas didefinisikan Generic untuk tipe String. terdapat juga interface Map yang dapat digunakan seperti Collection.add("Mikalai").iterator(). menggunakan pasangan kunci dan nilai. for (Object name:nameList) { System.get(0). . nameList. Contoh penggunaannya adalah sebagai berikut. iterasi berdasarkan urutan input. TreeMap: Map yang terurut... PriorityQueue: List yang diurutkan berdasarkan prioritas elemen.out. nameList.. Berikut contoh proses iterasi sebuah Collection.add("Michael"). membolehkan nilai null. menjamin tidak ada duplikasi. Maka. digunakan kelas Iterator.. } . proses looping sudah menyediakan fitur untuk mengakses elemen Collection secara langsung. c. antara lain: a. String myString = genArrList. namun data tidak terurut. iterasi dilakukan terurut. namun dengan menambahkan properti key sebagai unique atributte dari sebuah elemen. b. LinkedList: Bagus untuk menambahkan elemen di ujung struktur data. System. Hashtable: HashMap yang lebih lambat karena ada method yang tersinkronisasi. Tidak membolehkan nilai null. d.add("A generic string")..2 Generic Generic adalah sebuah mekanisme yang digunakan mulai dari Java 1. HashMap: Update data tercepat.add("Craig"). nameList. genArrList.c. iterasi berdasarkan urutan input.showMessageDialog(this. contohnya Stack dan Queue..5 untuk mendefinisikan elemen yang boleh ditampung ke dalam sebuah Collection.. 8. LinkedHashSet: Tidak ada duplikat. Set. 2. a. HashSet: Akses cepat. 60 .println(item). TreeSet: Tidak ada duplikat. Untuk melakukan iterasi terhadap sebuah Collection. c.out. Iterator iter = kol. ArrayList nameList = new ArrayList(). Selain implementasi interface Collection. d. JoptionPane.println(name). while ( iter.hasNext() ) { Object item = iter. b. ArrayList hanya akan dapat menampung elemen bertipe String atau turunan dari String. LinkedHashMap: Iterasi lebih cepat.5. ArrayList<String> genArrList = new ArrayList<String>().next().

jRadioButton. border layout.1 FlowLayout Manager FlowLayout Manager adalah default manager untuk class Panel dan subclassnya. 1. 9.1. Memiliki GUI yang baik dapat memberi efek pada penggunaan aplikasi. Anda dapat mengisi null sebagai argumen untuk method ini. public void setBounds(int x. 9. FlowLayout(int align.1 Layout Manager Posisi dan ukuran suatu komponen ditentukan oleh layout manager. 3. GridLayout 4. Tujuan 1.9 Aplikasi Desktop GUI Overview Tanpa mempelajari tentang grapichal user interface (GUI) API masih tetap bisa membuat suatu program. FlowLayout() Membuat object baru FlowLayout dengan posisi di tengah dan lima unit horizontal dan vertikal gap dimasukkan pada komponen sebagai default. Anda akan mengatur posisi elemen secara manual dengan menggunakan method setBounds dari class Components. dan grid layout dalam komponen GUI. Membuat komponen Swing jButton. termasuk class applet. FlowLayout 2. 3. di mana memiliki tiga constructor seperti daftar di bawah ini. 2. Tetapi. BorderLayout 3. Layout manager mengatur tampilan dari komponen di dalam kontainer. FlowLayout(int align) Membuat object baru FlowLayout dengan posisi spesifik dan lima unit horizontal dan vertikal gap dimasukkan pada komponen sebagai default. Menjelaskan tentang flow layout. Java menyediakan banyak tool seperti Abstract Windowing Toolkit dan Swing untuk mengembangkan aplikasi GUI yang interaktif. int hgap. jComboBox dalam GUI 4. Tetapi selanjutnya. Cara meletakkan komponen dari FlowLayout Manager dimulai dari kiri ke kanan dan dari atas ke bawah. Anda akan memanggil method ini untuk setiap komponen. Membuat tampilan yang komplek dalam mendesain aplikasi GUI. CardLayout Layout manager dapat diatur menggunakan method setLayout dari class Container. int width. Seperti pada saat Anda mengetik menggunakan editor kata pada umumnya. 1. Berikut ini beberapa layout manager yang terdapat di dalam Java. int height) Method ini mengatur posisi berdasarkan pada argumen x dan y. jTextField. 2. dimulai dari pojok kiri atas. void setLayout(LayoutManager mgr) Jika Anda memilih untuk tidak menggunakan layout manager. Berikut adalah bagaimana FlowLayout Manager bekerja. program akan kelihatan tidak menarik dan tidak nyaman digunakan bagi para user. Mendesain aplikasi GUI menggunakan Swing. int y. int vgap) Membuat object baru FlowLayout dengan argumen pertama sebagai posisi pada komponen 61 . jCheckBox. Hal ini akan cukup menyulitkan dan membosankan untuk aplikasi jika Anda memiliki beberapa obyek komponen di dalam object container. dan ukuran berdasarkan argumen width dan height. Method ini dapat ditulis sebagai berikut. GridBagLayout 5.

CENTER 3.FlowLayout. Constructor BorderLayout antara lain: 1. Posisi argumen mengikuti penulisan sebagai berikut: 1.add(new Button("THREE")).add(new Button("TWO")). fld. fld. dan tengah.add(new Button("ONE")). Perlu diperhatikan bahwa hanya satu komponen yang dapat dimasukkan dalam satu region. 10. BorderLayout(int hgap. BorderLayout.FlowLayout. Dan region tengah berada pada perpotongan jalur horizontal dan vertikal. timur.2 BorderLayout Manager BorderLayout membagi kontainer menjadi lima bagian di antaranya utara. BorderLayout() Membuat object BorderLayout baru tanpa spasi yang diaplikasikan di antara komponen yang berbeda. Untuk menambahkan komponen kedalam region yang spesifik. selatan.awt. 1.1. parameter hgap dan vgap disini juga menjelaskan jarak antara komponen dengan kontainer.setSize(100. int vgap) Membuat object BorderLayout baru dengan spasi unit hgap horizontal dan unit vgap vertikal yang diaplikasikan di antara komponen yang berbeda. fld. 10)).*. import java.1 Contoh FlowLayout 9. 2. class FlowLayoutDemo extends Frame { public static void main(String args[]) { FlowLayoutDemo fld = new FlowLayoutDemo(). maka komponen yang terakhir ditambahkan yang akan ditampilkan.NORTH 62 . fld. } } Gambar 9.LEFT 2. 100).FlowLayout. Seperti pada FlowLayout Manager. gunakan method menambahkan dan melewatkan dua argumen yaitu : komponen yang ingin dimasukkan ke dalam region dan region mana yang ingin dipakai untuk meletakkan komponen. Tampilan ini adalah bersifat default untuk object Window. fld.dan hgap untuk horizontal dan vgap untuk vertikal pada komponen Gap dapat dikatakan sebagai jarak antara komponen dan biasanya diukur dengan satuan pixel. barat. Setiap komponen dimasukkan ke dalam region yang spesifik.setVisible(true). fld. Berikut ini adalah daftar dari kelima region. Region utara dan selatan membentuk jalur horizontal sedangkan region timur dan barat membentuk jalur vertikal.RIGHT Berikut contoh program menggunakan FlowLayout.setLayout(new FlowLayout(FlowLayout. Menambahkan lebih dari satu komponen pada kontainer yang bersangkutan.RIGHT. termasuk object dari subclass Window yaitu tipe Frame dan Dialog.

Semua region memiliki ukuran yang sama.CENTER). BorderLayout.SOUTH). BorderLayout.2 Contoh BorderLayout 9.add(new Button("WEST").CENTER Berikut ini adalah contoh program yang menunjukkan bagaimana BorderLayout bekerja. GridLayout manager membagi kontainer menjadi baris dan kolom.1. bld. bld.WEST).setVisible(true). GridLayout(int rows. Hal tersebut tidak mempedulikan ukuran sebenarnya dari komponen.add(new Button("NORTH"). Unit spasi hgap horizontal dan vgap vertikal diaplikasikan ke dalam komponen. bld. komponen juga diposisikan dari kiri ke kanan dan dari atas ke bawah seperti pada FlowLayout manager.WEST 5.add(new Button("SOUTH"). bld.awt. bld. BorderLayout. } } Berikut ini adalah hasil dari contoh program tersebut. 10)). BorderLayout. class BorderLayoutDemo extends Frame { public static void main(String args[]) { BorderLayoutDemo bld = new BorderLayoutDemo(). GridLayout() Membuat object GridLayout baru dengan satu baris dan satu kolom sebagai default 2. int cols) Membuat object GridLayout baru dengan jumlah baris dan kolom sesuai dengan keinginan 3. class GridLayoutDemo extends Frame { public static void main(String args[]) { 63 .EAST 4.add(new Button("EAST"). int hgap.add(new Button("CENTER"). BorderLayout.EAST).*. int cols.2. 200). BorderLayout.setSize(200. GridLayout(int rows.awt.SOUTH 3. import java. int vgap) Membuat object GridLayout baru dengan jumlah baris dan kolom yang ditentukan. Gambar 9.NORTH).setLayout(new BorderLayout(10. 1.3 GridLayout Manager Dengan GridLayout manager. BorderLayout. import java. bld. Berikut contoh GridLayout. bld. Berikut ini adalah daftar dari constructor untuk class GridLayout. bld. BorderLayout.*. BorderLayout.

add(new Checkbox("I'm here!").add(new Button("FOUR")).4)). /* Panel tengah */ panelCenter. panelCenter. 3.setLayout(new GridLayout(2. 4)). Panel adalah kontainer dan komponen pada saat yang sama.add(new Button("THREE")).setVisible(true). gld. 64 . BorderLayout.3 Contoh GridLayout Untuk membuat tampilan yang lebih lengkap. 200). panelCenter. Komponen dapat ditambahkan ke dalam panel.setSize(200. 4.EAST). gld. /* Panel selatan */ panelSouth. gld. Panel panelNorth = new Panel().add(new Button("TWO")).add(new TextField("2nd")). } } Berikut ini adalah output dari program. gld. layout manager yang berbeda dapat digabungkan dengan menggunakan panel. gld. BorderLayout.add(new Button("TWO")). gld.add(new Checkbox("Choose me!"). panelSouth.add(new TextField("1st")).*. Panel panelSouth = new Panel().add(new Button("ONE")).add(new Button("THREE")).add(new TextField("3rd")). panelCenter. class ComplexLayout extends Frame { public static void main(String args[]) { ComplexLayout cl = new ComplexLayout().add(new Button("FIVE")).GridLayoutDemo gld = new GridLayoutDemo(). import java. Gambar 9. gld. /* Panel utara */ // Panel menggunakan FlowLayout sebagai default panelNorth. Perhatikan teknik yang digunakan pada contoh berikut.CENTER).setLayout(new GridLayout(4. panelCenter. gld. panelNorth.add(new TextField("4th")).setLayout(new BorderLayout()). panelNorth.awt.add(new Button("ONE")). Panel panelCenter = new Panel(). panelSouth.

300).setSize(300. } } Berikut ini adalah output dari program. Komponen Swing JComponent Tabel 9. diperlukan content pane sebelum menambah sebuah komponen Class Container sederhana tetapi bukan top-level Menampilkan popup kotak dialog Digunakan untuk menginformasikan sesuatu kepada pengguna atau prompt pengguna untuk input JColorChooser Memungkinkan pengguna untuk memilih warna yang diinginkan 65 .add(new Checkbox("Pick me!").SOUTH). BorderLayout. 9.setVisible(true). BorderLayout.add(panelCenter. /* Menambahkan panel pada container Frame */ // Frame menggunakan BorderLayout sebagai default cl.1 Komponen Swing Penjelasan class induk untuk semua komponen Swing. cl. Kesimpulannya. cl. tidak termasuk top-level kontainer JButton JCheckBox JFileChooser JTextField JFrame JPanel JOptionPane JDialog Tombol “push” Item yang dapat dipilih atau tidak oleh pengguna.panelSouth.2 Komponen Swing Seperti pada package AWT. Package tersebut dapat ditemukan di javax. BorderLayout. Lebih dari itu. BorderLayout.add(panelNorth.WEST). package dari Swing menyediakan banyak class untuk membuat aplikasi GUI. Swing menyediakan komponen yang lebih menarik seperti color chooser dan option pane. cl. pemilihan dapat lebih dari satu Form untuk memilih sebuah file Form text satu baris Frame tempat meletakkan komponen.add(panelSouth.swing.CENTER). Perbedaan utama antara keduanya adalah komponen Swing ditulis menyeluruh menggunakan Java. program GUI ditulis menggunakan banyak class dari package Swing yang mempunyai tampilan look and feel yang sama meski dijalankan pada paltform yang berbeda.NORTH). cl.

lakukan langkah-langkah berikut ini: 1. Hasilnya terlihat seperti pada gambar di bawah ini: 66 . Buat project baru di Netbeans (kalau sudah membuat project.3. kemudian klik di jendela Design untuk menempatkan komponen yang sudah dipilih tadi ke dalam form. Pilih kategori: Java GUI Forms > JFrame Form Seperti terlihat di dialog New File dialog di atas. Buat tampilan form seperti gambar bawah ini.4 Contoh aplikasi penjumlahan Untuk membuat aplikasi ini menggunakan Matisse. kemudian beri nama Penjumlahan. Berikut beberapa contoh cara membuat aplikasi dengan Netbeans GUI Builder menggunakan beberapa komponen Swing. caranya dengan klik Jendela Pallete di sebalah kanan untuk memilih komponen apa yang akan dibuat. tidak perlu membuat lagi) dengan cara memilih menu: File > New Project Kemudian ikuti petunjuk yang diberikan dialog. Buat class JFrame baru.1 Contoh Penggunaan JButton dan JTextField Berikut contoh aplikasi penjumlahan menggunakan Netbeans Gambar 9.java 4.5 Jendela dialog new file 3.9. Tools ini sangat powerful dan produktif dalam membuat komponen GUI. 9.3 Membuat Swing HelloWorld dengan Netbeans Netbeans dilengkapi dengan GUI builder yang dikenal dengan Matisse. caranya dengan memilih menu: File > New File Kemudian akan muncul dialog seperti di bawah ini : Gambar 9. 2.

parseInt(txtA.ActionEvent evt) { // TODO add your handling code here: } JLabel dan JTextField mempunyai method getText dan setText untuk mengambil dan mengeset text yang ditampilkan. Ganti nama setiap komponen agar mudah dikenali. 7.. Tekan tombol SHIFT + F6. btnHitung.java kemudian pilih menu Run File. Ganti nama komponen-komponen tersebut (sesuai urutan dari kiri ke kanan. Ubah kode program di atas menjadi : private void btnHitungActionPerformed( java. 6. Klik tombol Source untuk membuka jendela yang menampilkan kode sumber dari program di atas kemudian tambahkan kode di bawah ini tepat di bawah definisi dari class Penjumlahan: private String str = "Hasilnya adalah : ". dan akan menemukan kode program seperti di bawah ini: private void btnHitungActionPerformed( java. } 8..event.ActionEvent evt) { // TODO add your handling code here: a = Integer. private int a.event. atas ke bawah) menjadi : lblKeterangan. b = Integer.getText()). Klik kanan di atas setiap komponen yang ada dalam Jendela Design di atas. txtA. lblHasil. lblPlus.getText()).parseInt(txtB. atau klik kanan file Penjumlahan. lblHasil. int hasil = a + b. Menambahkan variable untuk menampung nilai yang akan dijumlahkan.6 Jendela design Netbens Matisse 5.Gambar 9.awt. b.setText(str + hasil). kemudian pilih menu: Klik kanan > Change Variable Name . Compile dan jalankan program.awt. txtB. 67 . Menangani penekanan tombol btnHitung. Klik kanan di atas komponen btnHitung kemudian pilih menu: Events > Action > actionPerformed Anda akan dibawa ke jendela Source.

Buat class baru bertipe JFrame Form. chkKuning)  satu object JTextArea (txtWarna)  satu object JScrollPane (scrollWarna) Untuk melihat semua komponen yang ada dalam Jendela Design. kemudian pilih menu: Event > Action > actionPerformed g. komponen yang harus dibuat adalah:  dua object JradioButton (radioBerwarna dan radioTransparan)  satu object ButtonGroup (groupTipeWarna)  empat object JCheckBox (chkHijau. JRadioButton yang mempunyai group yang sama.9.awt. Klik kanan komponen radioBerwarna.getText()). harus dimasukkan dalam sebuah object ButtonGroup yang sama.isSelected()){ lblTipeWarna.7 Contoh check box dan radio button Untuk membuat program di atas ikuti langkah-langkah berikut ini: 1. 3. Caranya dengan: a. Anda akan dibawa ke dalam Jendela Code.event. Masukkan object radioBerwarna dan radioTransparan ke dalam object groupTipeWarna. 4. kemudian beri nama Pilihan.3. Klik tab code di Jendela Properties c. chkMerah. Menangani event ketika JRadioButton diklik. Pilih properti : Post-Creation Code d.java 2. chkBiru.awt. dan menemukan kode berikut ini : private void radioBerwarnaActionPerformed( java. Buat tampilan di atas menggunakan Matisse. Gambar 9. Memilih komponen radioBerwarna di Jendela Design f.add(radioBerwarna).ActionEvent evt) { // TODO add your handling code here: if(radioBerwarna.ActionEvent evt) { // TODO add your handling code here: } Ubahlah kode di atas menjadi : private void radioBerwarnaActionPerformed( java.setText("Tipe warna : " + radioBerwarna. Lakukan langkah yang sama terhadap object radioTransparan.event. Masukkan kode berikut ini kedalam dialog yang muncul : groupTipeWarna.2 Contoh Penggunaan JCheckBox dan JRadioButton Berikut contoh aplikasi menggunakan JCheckBox dan JRadioButton. Memilih komponen radioBerwarna di Jendela Design b. 68 . Caranya dengan: e. gunakan Jendela Inspector di sisi kiri bawah.

Jika sedang dipilih maka text dari JCheckBox tersebut akan ditampilkan dalam txtWarna.append(chkKuning. Method tampilkanWarna ini nantinya akan dipanggil setiap kali salah satu dari JCheckBox dipilih. } Lakukan hal ini untuk semua JCheckBox. b. Buat sebuah private method untuk menangani event pemilihan terhadap JCheckBox. 5.setText(warna.isSelected()){ warna. 7.getText() + " ").append(chkBiru. private void tampilkanWarna(){ StringBuffer warna = new StringBuffer(). seperti di bawah ini : private void chkHijauActionPerformed( java.append(chkMerah. Compile dan jalankan program dengan menekan tombol SHIFT + F6.} } Lakukan langkah yang sama terhadap radioTransparan.3. } if(chkKuning. } txtWarna. Klik kanan komponen chkHijau untuk memunculkan context (popup) menu.awt. Yang dilakukan oleh metod tampilkanWarna adalah mengecek status setiap JCheckBox. Pilih komponen chkHijau di Jendela Design. 9. Menangani event pemilihan JCheckBox.getText() + " "). kemudian dalam method chkHijauActionPerformed tersebut panggil method tampilkanWarna. Caranya sebagai berikut: a. c.append(chkHijau.getText() + " "). Class StringBuffer digunakan untuk menampung nilai text dari JCheckBox yang statusnya terpilih.toString()).isSelected()){ warna. } if(chkHijau. 69 . if(chkBiru. Pilih menu: Event > Action > actionPerformed d.event.ActionEvent evt) { // TODO add your handling code here: tampilkanWarna().getText() + " "). apakah sedang dipilih atau tidak.3 Contoh Penggunaan JList dan JComboBox Berikut contoh program menggunakan JList dan JComboBox.isSelected()){ warna. Anda akan dibawa ke Jendela Code. } if(chkMerah. } 6.isSelected()){ warna.

Trekking. b. Jendela ini letaknya di sebelah kanan bawah. 2. Programmer. kemudian pilih menu: Events > Action > actionPerformed Jendela Code akan terbuka. Coding. Technical Writer dan Tester dipisahkan dengan koma. Pilih JList di Jendela Design maka Jendela Properties untuk JList akan muncul. lblHobby. Di bagian model isikan item : Membaca. Satu buah JtextArea : txtPilihanHobby 3. 4. Buatlah class JFrame Form baru dan beri nama ListAndCombo. 5. Untuk merubah isi dari JComboBox dan JList kita akan menggunakan Jendela Properties. Satu buah JList : lstHobby d. Satu buah JComboBox : cmbPekerjaan c.8 Contoh JList dan JComboBox Ikuti langkah-langkah berikut ini untuk membuat program di atas: 1. Pada bagian model di dalam Jendela Properties masukkan item Pelajar. lblPilihanPekerjaan. tambahkan code seperti di bawah ini: 70 . Olahraga. Empat buah JLabel : lblPekerjaan. lblPilihanHobby.Gambar 9. di bawah Jendela Pallete dan akan muncul hanya jika jendela Design yang dipilih. Bersepeda dan Mengajar. Menonton Film. Setiap item dipisahkan dengan koma.java. Buat tampilan program di atas menggunakan Matisse. Klik kanan JComboBox di Jendela Design.9 Jendela Properties Pilih komponen JComboBox di Jendela Design. Gambar 9. Jendela Properties akan menampilkan properties dari JComboBox. Mahasiswa. kemudian tambahkan komponenkomponen: a. Menangani pemilihan JComboBox.

ActionEvent evt) { // TODO add your handling code here: lblPilihanPekerjaan.swing.3.event.setText("Pekerjaan: "+cmbPekerjaan.java 2. Popup Menu dan Toolbar Untuk membuat menu pada program sebagai berikut. kemudian pilih menu: Add > JMenu Ganti nama JMenu tersebut menjadi menuFile. Untuk menangani event ini. for(Object item : selectedItems){ strValues. Untuk menangani pemilihan item dari JList berbeda dengan JComboBox. } Method getSelectedItem dari JComboBox digunakan untuk memperoleh item yang sedang di pilih dalam JComboBox.length()-2)).append(item.private void cmbPekerjaanActionPerformed( java. } } Method getSelectedValues dari JList mengembalikan item-item yang terpilih.event. 6. 9.setText("").setText(strValues.getSelectedItem()).4 Contoh Penggunaan Menu. Ganti namanya menjadi menuBar. Pilih komponen Menu Bar dari Jendela Pallete kemudian klik JFrame di Jendela Design.ListSelectionEvent evt) { // TODO add your handling code here: Object[] selectedItems = lstHobby. lakukan langkah-langkah berikut : a.length == 0) txtPilihanHobby.awt. strValues.getSelectedValues(). Kemudian alihkan perhatian anda ke Jendela Properties 71 . } txtPilihanHobby. Sebuah class JMenuBar akan ditambahkan di dalam JFrame. 3. kemudian pilih menu: Events > ListSelection > valueChanged b. Klik kanan JMenuBar yang baru saja kita buat di Jendela Inspector. else{ StringBuffer strValues = new StringBuffer(). Dalam jendela kode yang ketik kode seperti berikut ini: private void lstHobbyValueChanged( javax."). Buat sebuah class JFrame dan beri nama ToolbarMenu. if(selectedItems == null || selectedItems. JList akan mengaktifkan ListSelection event ketika user memilih item dalam JList.toString()+". Klik kanan pada JList di dalam Jendela Design.substring(0. 1.

Cara menambahkan JCheckBoxMenuItem sama dengan komponen lain: klik kanan JMenu menuSetting kemudian pilih menu: Add > JCheckBoxMenuItem Beri nama chkLineNumber. set text dan mnemonic yang sesuai pada Jendela Properties. JMenu yang baru ini akan bertindak sebagai sub menu.10 Jendela Properties dari class JMenu Isi properti text dengan string “File”. klik item ButtonGroup dari Jendela Pallete kemudian klik Jendela Design. Klik kanan di JMenu menuFile kemudian pilih menu: Add > JSeparator Berikutnya kita akan menambahkan JMenu baru ke dalam JMenu menuFile. hal ini akan menyebabkan tampilanya menuFile menjadi File dan user dapat menekan tombol ALT + F untuk mengaktifkan menu menuFile. Dalam struktur menu yang bagus. JRadioButtonMenuItem juga memerlukan ButtonGroup agar hanya satu buah JRadioButtonMenuItem yang bisa dipilih. Menambahkan ButtonGroup.Gambar 9. kemudian pilih menu: Add > JMenuItem Tambahkan berturut-turut menuNew. Langkah berikutnya adalah menambahkan JMenuItem ke dalam JMenu menuFile yang telah dibuat di langkah sebelumnya. Properties selected ini digunakan untuk menentukan apakah JCheckBoxMenuItem dalam keadaan terpilih atau tidak. Dalam contoh ini kita akan mempunyai dua buah JRadioButtonMenuItem. klik kanan di JMenu menuSetting. JCheckBoxMenuItem sedikit spesial dibandingkan dengan JMenuItem. ButtonGroup yang baru 72 4. kemudian untuk masing-masing JMenuItem set text dan mnemonic yang sesuai dari Jendela Properties. Keduanya dibuat dengan langkah yang sama dengan komponen lain. Dalam Jendela Inspector. Seperti halnya JRadioButton. Pilih JMenuItem dari Jendela Inspector. caranya. klik kanan di JMenu menuFile di Jendela Inspector. Ganti namanya menjadi groupOpenMethod. 8. 7. bedanya hanyalah JCheckBoxMenuItem berada dalam struktur menu. menuOpen dan menuSave. 5. 6. kemudian pilih menu: Add > JRadioButtonMenuItem Set text dan mnemonic yang sesuai dari Jendela Properties. 9. Kemudian set isi properti mnemonic dengan string “f”. Caranya juga sama : klik kanan di JMenu menuFile kemudian pilih menu: Add > JMenu Beri nama menuSetting. maka otomatis ButtonGroup akan ditambahkan. . Cara menambahkan ButtonGroup sangat mudah. radioBinary dan radioText. set text dan mnemonic yang sesuai pada Jendela Properties. menu yang mempunyai fungsi serupa diletakkan dalam urutan berdekatan dan dipisahkan dengan separator (pemisah). karena JCheckBoxMenuItem memiliki properties selected. Perilaku JCheckBoxMenuItem tidak berbeda jauh dengan JCheckBox biasa.

Secara otomatis JPopupMenu akan ditambahkan dalam class ToolbarMenu. 3. Compile dan jalankan class ToolbarMenu. kemudian klik Jendela Design. dalam Jendela Design. Seperti halnya JMenuBar. Menambahkan JMenuItem ke dalam JPopupMenu sangat sederhana.12 Properties dari JRadioButtonMenuItem 11. caranya: klik kanan pada JPopupMenu di Jendela Design. pada bagian groupButton pilih item groupOpenMethod. JMenuItem. lakukan langkah berikut ini.java. Untuk menambahkan aplikasi dengan PopUp Menu. JCheckBoxMenuItem. 2. Pilih masing-masing JRadioButtonMenuItem dari Jendela Inspector. JPopupMenu dapat memiliki child berupa JMenu. kemudian pilih menu: Add > JMenuitem 73 . kemudian perahatikan Jendela Properties dari JRadioButtonMenuItem tersebut.java. namun anda bisa mengkasesnya melalui Jendela Inspector. Buka class ToolbarMenu. yang telah dibuat dalam langkah sebelumnya.dibuat tadi akan berada dalam kategori Other Components.11 ButtonGroup berada dalam kategori Other Components 10. Klik Jendela Pallete dan pilih JPopupMenu. 1. seperti terlihat dalam gambar di bawah ini: Gambar 9. JRadioButtonMenuItem dan JSeparator. Klik kanan class ToolbarMenu dari Jendela Design kemudaian pilih menu Run File atau tekan tombol SHIFT + F6.java. JPopupMenu tidak terlihat dalam Jendela Design. seperti terlihat dalam gambar di bawah ini: Gambar 9.

caranya klik kanan di jendela Projects bagian nama project. 2.getX(). kemudian pilih menu: Events > Mouse > mouseClicked b. Lakukan build setiap kali menambahkan file nonjava ke dalam folder source file. Ganti namanya menjadi toolBar. 1. JPopupMenu akan tampil. parameter pertama diisi dengan Component di mana nantinya popup menu akan ditampilkan. 4. compile dan jalankan. Build Project akan berhasil jika tidak ada satupun error dalam kode program. pilih menu: New > Java Package Beri nama images untuk java package yang baru saja kita buka. 5. misalkan project disimpan dalam folder: c:\javaswing Buka file explorer. Buat sebuah object JToolBar.MouseEvent evt){ // TODO add your handling code here: if(evt. Letakkan lagi satu buah JButton di atas JToolBar dan beri nama btnMaximize. Untuk menambahkan toolbar pada aplikasi. menuCopy dan menuPaste. beralihlah ke Jendela Properties kemudian set text dan mnemonic yang sesuai. kita perlu mengeset beberapa nilai dari properti JButton.getY()).show( (Component)evt. Caranya : a. Memasukkan Icon ke dalam package. jika nilai kembalian method getButton sama dengan nilai BUTTON3 maka benar tombol kanan yang ditekan.getButton() == MouseEvent. ganti nama JButton tersebut menjadi btnNew. Klik kanan JFrame di Jendela Design. Buka class ToolbarMenu. 4. evt. Sebelum melakukan build project pastikan terlebih dahulu tidak ada error dalam kode. seperti terlihat pada gambar di bawah ini: 74 . Ketika tombol kanan mouse di klik di atas JFrame. 6.Ganti nama objectnya menjadi menuCut. Lakukan langkah ini untuk JMenuItem yang lain. Build project. sedangkan parameter kedua dan ketiga diisi dengan letak koordinat popup menu akan ditampilkan. Buatlah sebuah java package baru untuk menampung semua icon yang akan digunakan. caranya: klik item JToolBar dari Jendela Pallete. JButton baru akan diletakkan di atas JToolBar. Simpan file ToolbarMenu. Agar tampilan JButton terlihat cantik.evt.getSource(). Klik item JButton dalam Jendela Pallete kemudian klik komponen JToolBar yang baru saja kita buat tadi. kemudian navigasi ke folder c:\javaswing\src\images Copy semua icon yang diperlukan ke dalam folder di atas. 5. Agar behavior tersebut berjalan. Untuk memasukkan image ke dalam package kita perlu tahu di mana project disimpan. Agar file tersebut ikut tercopy ke dalam folder build\classes penting 3.awt. kemudian klik JFrame di Jendela Design. Kemudian coba munculkan popup menu dengan mengklik kanan JFrame. 7.event.java. kita perlu menangani event mouseClick terhadap JFrame. Secara otomatis sebuah object JToolBar akan dimasukkan ke dalam JFrame.java yang sudah dibuat di langkah sebelumnya. lakukan langkah berikut ini.BUTTON3){ popUpMenu. Di dalam jendela source yang terbuka masukkan kode berikut ini: private void formMouseClicked(java. Method show digunakan untuk memunculkan popup menu. } } Kondisi if di atas digunakan apakah tombol yang diklik mouse adalah tombol sebelah kanan.

Gambar 9. Untuk mengedit border dari JButton. Opaque.5.5. Matisse menyediakan Jendela Border untuk memilih border yang kita inginkan untuk Jbutton. uncheck nilai opaque. Tujuan pemberian empty border ini agar tombol berukuran lebih besar dibandingkan dengan icon yang akan digunakan nanti. Text.13 Jendela Properties JButton a.14 Jendela Border Editor dari Jbutton c. ada efek transisi yang cantik. Icon. ganti iconya dengan icon yang telah disiapkan. Untuk memasukkan icon ke dalam JButton. dan setiap mouse melewati JButton. atau composite border yang terdiri dari beberapa border. sehingga mempunyai warna background yang sama dengan background JToolBar. b. Border.Gambar 9. d. kemudianakan muncul Dialog Icon Editor seperti di bawah ini: 75 .5]. Border yang dipilih bisa single border. pilih bordernya menjadi empty border dan set nilai bordernya menjadi [5. Bertujuan agar tombolnya berwarna transparan. tekan tombol di samping pilihan Icon di dalam Jendela Properties. hapus nilai textnya.

9. "Your action was succeed.17 Tampilan dialog dengan tipe dialog Information JOptionPane. Lakukan langkah-langkah yang sama terhadap JButton yang lain. Tekan OK. "Simple plain dialog". JOptionPane. Gambar 9. kemudian tekan tombol Select File dan pilih salah satu icon yang telah disiapkan.PLAIN_MESSAGE). "Information dialog". "You neet to be sure to do this action!". 76 .WARNING_MESSAGE).Gambar 9. Compile dan jalankan class ToolbarMenu untuk melihat hasilnya.showMessageDialog(null. JOptionPane. “ + “you can proceed to next assigment".showMessageDialog(null. JOptionPane. "Plain dialig".showMessageDialog(null. "Dialog Peringatan". Gambar 9.5 JDialog Beberapa contoh penggunaan JDialog sebagai berikut. JOptionPane.16 Tampilan dialog sederhana JOptionPane. 8.15 Jendela icon editor Pilih radio button Classpath.INFORMATION_MESSAGE).3.

YES_NO_CANCEL_OPTION. Gambar 9. "Choose yes. JOptionPane.Gambar 9.18 Dialog dengan tipe Warning JOptionPane.YES_NO_OPTION.20 Option dialog dengan tipe Information dan pilihan YES_NO JOptionPane. JOptionPane. JOptionPane. "Input your Dialog".INFORMATION_MESSAGE).WARNING_MESSAGE). no or cancel".showConfirmDialog(null.21 OptionDialog dengan tipe Plain dan pilihan YES_NO_CANCEL JOptionPane. Gambar 9.showInputDialog(null. name here"."Confirmation Dialog". JOptionPane. JOptionPane.ERROR_MESSAGE). "Something goes wrong and generate error message".showConfirmDialog(null."Confirmation Dialog". "Error Dialog"."Input 77 . Gambar 9.19 Dialog dengan tipe Error JOptionPane. "Choose yes or no".PLAIN_MESSAGE).showMessageDialog(null. JOptionPane.

JOptionPane. Gambar 9."Input dialog"."Mango".WARNING_MESSAGE.3.showInputDialog(null.24 Contoh program menggunakan JFileChooser Tampilan JFileChooser ketika tombol open ditekan adalah seperti di bawah ini: Gambar 9. JOptionPane.Gambar 9."Grape"."Apple").6 JFileChooser Aplikasi berikut ini adalah contoh penggunaan JFileChooser untuk membuka dan menyimpan file. Gambar 9. Options berupa array of String dan initialValue = 'Apple' 9.null.22 InputDialog dengan tipe message Information String[] options = {"Apple".options."Guava"}. "Choose this one Option".23 InputDialog dialog dengan tipe Warning.25 Tampilan JFileChooser 78 .

if(ret == JFileChooser. maka file dengan ekstensi “jpg”. //kode lain di sini } 4. public class Chooser{ JFileChooser chooser = new JFileChooser(). Buat class JFrame Form baru. } } 8. 3. Compile dan jalankan aplikasinya dengan menekan tombol SHIFT + F6 79 . beri nama Chooser.getAbsolutePath()).”JPG”.java 2. “jpeg”.Untuk membuat aplikasi di atas lakukan langkah-langkah berikut ini: 1. 5.getSelectedFile(). chooser.setCurrentDirectory(new File(dir)). Kode untuk menangani penekanan tombol btnOpen mirip dengan kode untuk menangani penenakan tombol btnSave.”JPEG”).APPROVE_OPTION){ File f = chooser. Metode filteringnya adalah mencocokkan ekstensi file dalam file system dengan ekstensi yang ada dalam FileNameExtentionFilter."jpeg".getAbsolutePath()). Untuk mengetahui di mana direktori aktif aplikasi. FileNameExtensionFilter JPEGFilter = New FileNameExtensionFilter( "JPEG File". Sesuaikan penataan komponen sesuai dengan gambar di atas. dua buah Jbutton: btnOpen dan btn save. txtSave. Tambahkan sebuah object JFileChooser sebagai field dari class Chooser.APPROVE_OPTION){ File f = chooser. berikit ini kodenya: private void btnBrowseActionPerformed(ActionEvent evt){ // TODO add your handling code here: int ret = chooser. kita bisa menggunakan system property “user. Menghandle event penekanan tombol btnSave. sebuah JLabel: lblStatus. kemudian mengambil nama file yang dipilih dan menampilkannya dalam txtSave. chooser. Menghandle penekanan tombol btnOpen. Kode berikut ini akan menyebabkan JFileChooser dibuka pada direktori aktif aplikasi: String dir = System. FileNameExtentionFilter digunakan sebagai file filter dalam JFileChooser. Masukkan dua buah JTextField: txtOpen dan txtSave. dan jika pilihan tersebut dipilih. Ketika tombol btnSave ditekan.dir”. if(ret == JFileChooser.showOpenDialog(this). serta menampilkanya dalam lblStatus. perbedaanya adalah btnOpen akan menampilkan dialog open file. 6.setText("Status : saving file" + f.setText(f. } } 7.dir").”JPG” atau“JPEG” saja yang akan ditampilkan oleh JFileChooser.getAbsolutePath()). chooser akan menampilkan dialog save file.getSelectedFile(). lblStatus. beri nama chooser.getAbsolutePath()). Set direktori yang akan dituju oleh JFileChooser. Berikut ini kodenya : private void btnSaveActionPerformed(ActionEvent evt) { // TODO add your handling code here: int ret = chooser.addChoosableFileFilter(JPEGFilter).setText("Status : opening file" + f."jpg". lblStatus. Contoh kode di bawah ini akan menyebabkan JFileChooser mempunyai pilihan “JPEG File”.setText(f.getProperty("user. txtOpen.showSaveDialog(this).

Sintaks di atas digunakan untuk me‐load database driver milik MySQL ke dalam system property “jdbc. kita dapat membuat aplikasi yang bisa melakukan penyimpanan data ke dalam storage dan juga mengakses untuk keperluan proses bisnis tertentu.10 Akses Database Via JDBC Overview Bagian ini akan membahas bagaimana mengakses database via JDBC. Dengan mengakses database.forName(“com.drivers”. method getConnection() dari Driver manager digunakan untuk membuat koneksi JDBC. Data Access Object (DAO.drivers”. 80 . misal menggunakan SpringDAO). Memahami konsep JDBC 2. Setelah driver di‐load.DriverManager dibutuhkan untuk me‐load system property “jdbc. diperlukan langkah-langkah berikut: a. contoh: Class.2 Menggunakan JDBC Pada dasarnya. Connection con = DriverManager. Buat koneksi c. untuk mengakses database dengan JDBC. Posisi JDBC dalam program Java dapat dilihat pada gambar berikut: Gambar 10.Driver”).getConnection( "jdbc:mysql://host:port/dbname".mysql.com ) supaya JDBC bisa mengakses database dari vendor tersebut.1 Posisi JDBC dalam program Java 10.class javax. yang memungkinkan untuk mengakses segala database menggunakan Java. Tujuan 1. Load Database Driver b.sql. dan Object Relational Mapping (ORM.sql.jdbc. Tutup koneksi Berdasarkan langkah di atas maka kita memerlukan Database Driver dari masing‐masing vendor database (misal untuk MySQL bisa diunduh dari http://mysql.*. Dari JDBC ini kemudian muncul konsep‐konsep yang berdiri di atas JDBC. Saat koneksi dibutuhkan.1 Pengenalan JDBC Java Database Connectivity (JDBC) merupakan Application Programming Interface (API). Untuk me‐load sebuah driver digunakan dynamic class loading. seperti SQL‐Mapping (misal menggunakan iBatis). Myenggunakan JDBC 10. misal menggunakan Oracle Toplink dan Hibernate). Lakukan pemrosesan query d. dalam paket java.

SQLQuery merupakan suatu String yang berisi query ke database. Statement stmt = con. .out. Delete) sederhana menggunakan JDBC. Pilih File > New File > Swing GUI Form > JFrame Form.close(). kedua dan ketiga. . . } . . Update. lakukan langkah-langkah berikut ini. . perintah while di atas akan mengambil hasil kolom pertama. . System. . digunakan variabel rset yang kemudian dimasukkan dalam suatu loop sebagai berikut: . . Read. ResultSet rset = stmt.out. System. Sebelumnya dibuat dulu database dengan satu tabel mahasiswa dengan 4 atribut (Nama. }catch(SQLException ex){} 10.executeQuery(SQLQuery).getString(2)+"--").print(rset. .println().next()){ System. .getString(3)). 81 . JenisKelamin dan Jurusan). Setelah koneksi berhasil terbentuk. .print(rset. . "dbpass" ). maka bisa dilakukan interaksi dengan database melalui perintah‐perintah SQL. .out. while(rset. . 1. System. . Untuk menampilkan hasil dari query tersebut. dengan terlebih dahulu membuat objek Statement sebagai berikut: . . Untuk membuat form CRUD. Hasil query tersebut disimpan di objek ResultSet. Bila koneksi telah dilakukan dan aplikasi tidak lagi membutuhkan koneksi ke database."dbuser". NIM. .getString(1)+"--").out.print(rset.3 Membuat Form CRUD dengan JDBC Pada bagian ini.createStatement(). session yang terbentuk antara aplikasi dengan database sebaiknya ditutup dengan kode sebagai berikut: try{ con. kita akan mencoba untuk membuat sebuah aplikasi CRUD (Create. Pertama kita buat aplikasi desktop menggunakan JTable sesuai gambar di bawah ini.

Buat fungsi getDefaultTabelModel(). Setting di source code nya.table. Isi nama Classnya dan pilih packagenya sesuai anak panah.Gambar 10. Kita beri nama dgn klik kanan pilih “change variable name”. 3.swing.kita beri nama misal : “table” 4.2 Dialog window 2.4 JTable Model 6. Pilih Table klik kanan Properties. 7.DefaultTableModel tblModel = getDefaultTabelModel(). Buat kolom dengan klik Model lalu isi nama kolom – kolomnya seperti gambar di bawah ini sesuai anak panah: Gambar 10. Pada baris paling akhir di sourcenya buat obyek untuk TableModel langsung ketik code di bawah ini: private javax. Pertama kita membuat Table dengan Mendrag JTable pada Palette. dan Tabel untuk pengaturan tablenya seperti pada gambar di bawah ini. juga diketik secara manual: 82 .3 Tabel Properties 5.seperti gambar di bawah ini : Gambar 10.

caranya pilih Inspector kemudian ikuti petunjuk di bawah ini: 83 . 9. Pertama kali kita deklarasikan dulu variable array satu dimensi di luar fungsi supaya dikenal disemua fungsi yang lain. Cara menginput data kedalam ke JTable.setModel(tblModel). untuk pengaturan lebar kolomnya. Di dalam fungsi private void cmdsimpanactionperformed() tambahkan kode berikut. 10.180. Tambahkan source code berikut: tabel.120. Setting di konstruktornya. Cara Menampilkan Data dari JTable kedalam Form di Netbeans. Tabel(tabel.new int[]{120.120}). String data[] = new String [4]. Nanti kita akan mengklik 2x baris dalam JTable yang berisi data yang akan ditampilkan kedalam Form di Netbeans.8.

Gambar 10. Cara mengedit data dalam JTable.event.awt. Setelah data muncul dalam Form untuk mengeditnya ikuti code di bawah ini: 84 . 11.MouseEvent evt) { } Kita modifikasi Fungsi tersebut sehingga menjadi seperti di bawah ini : Dengan code di atas maka secara otomatis jika kita klik 2x baris dalam JTable maka data dalam baris terpilih akan muncul dalam Form kemudian bisa kita edit dan delete.5 Inspector window Setelah itu akan muncul Fungsi : private void tabelMouseClicked(java.

Cara menghapus data dalam JTable.ini pada folder lib dengan terlebih dahulu membuat folder lib(misal : database. Ketikan code di bawah ini: private void cmdhapusActionPerformed( java. 1.12.ini yang isinya: 85 .6 Setting JDBC 2. yang isinya seperti di bawah ini: Gambar 10. Lalu kita buat file Database.ini).event.removeRow(row).awt.ActionEvent evt) { tblModel.java untuk melakukan relasi dengan file Database. Pertama kita buat file dengan extention . } Langkah berikutnya adalah melakukan setting terhadap database dan koneksi JDBC yang digunakan.

java jika kita ingin melakukan pemrosesan data yang berhubungan ke database. Untuk mengambil data dari file database.3.ini kita akan memodifikasi program seperti di bawah ini pada sebelum dan dalam Konstruktor: 4. Memanggil class Database. Lalu kita buat Function setDefaultTable(): 86 .

5. Berikut langkahlangkahnya. 1. Untuk pembuatan menu input . data dari mysql akan tertampil pada table di Form javanya seperti gambar di bawah ini: Gambar 10. Setelah code di atas selesai.7 Aplikasi jadi Berikutnya adalah membuat fungsi untuk pemrosesan data dengan Java. klik kanan tombol “Input” lalu pilih Event ->action->Action Performed Setelah itu buatlah code dalam function yg baru terbentuk seperti di bawah ini: 87 .

2. Untuk pembuatan menu cari . klik kanan tabel di Netbeans lalu pilih Event ->Mouse->Mouse Click. Kita menggunakan metode “klik”,jika tablenya diklik maka data dari table akan tertampil di Formnya.Lalu tambahkan coding dalam Fungsi tabelMouseClicked seperti code di bawah ini:

3. Untuk pembuatan menu edit . klik kanan tombol ”ubah” di Netbeans lalu pilih Event ->Action->ActionPerformed. Untuk lebih jelasnya lihat code berikut:

88

4. Untuk pembuatan menu Hapus . klik kanan tombol ”Hapus” di Netbeans lalu pilih Event ->Action->ActionPerformed. Setelah data dicari, Menu yang terakhir adalah delete (untuk menghapus data):

89

11 Networking
Overview Java memberikan kemudahan dalam pengembangan aplikasi yang meliputi berbagai fungsi yang melalui jaringan. Pada bagian ini, akan dibahas tentang konsep dasar jaringan dan aplikasi via jaringan sederhana menggunakan Java. Tujuan 1. Mengerti konsep dasar jaringan 2. Membuat aplikasi menggunakan package jaringan Java 11.1 Konsep Dasar Jaringan Jika sebelumnya Anda telah mengetahui, bahwa internet adalah jaringan global dengan berbagai jenis komputer yang berbeda yang tersambung dalam berbagai cara. Walaupun terdapat perbedaan dalam software dan hardware yang tersambung bersama-sama, hal tersebut sangatlah bagus bahwa internet masih dapat berfungsi. Hal ini memungkinkan karena standar komunikasi memiliki ketetapan dan juga keselarasan. Standar ini menjamin kesesuaian dan kekuatan komunikasi di antara luasnya sistem pada internet. Mari kita pelajari beberapa standar yang berlaku. 11.1.1 IP Address Pada setiap komputer yang tersambung dengan internet memiliki alamat IP yang unik. Alamat IP secara logika hampir sama dengan alamat pengiriman surat tradisional di mana memiliki arti bahwa alamat yang bersifat unik tersebut mewakili dari keterangan sebuah object. Alamat tersebut diwakilkan dalam 32-bit nomor yang digunakan sebagai pengenal yang bersifat unik dari setiap komputer yang tersambung dengan internet. 192.1.1.1 adalah contoh dari sebuah alamat IP. Mereka juga bisa ditulis dengan bentuk simbol seperti docs.rinet.ru. 11.1.2 Protokol Karena terdapat jenis komunikasi yang berbeda-beda yang mungkin terjadi pada internet, di sana harus terdapat suatu jumlah yang sama untuk mekanisme penangangan komunikasi. Setiap jenis komunikasi membutuhkan protokol yang spesifik dan unik. Protokol mengatur peraturan dan standar yang menetapkan jenis komunikasi internet yang khusus. Hal tersebut menjelaskan format data yang dikirim lewat internet, seiring dengan bagaimana dan kapan itu dikirim. Konsep dari protokol tentunya tidak terlalu asing untuk kita. Mengingat sudah beberapa kali Anda telah menggunakan jenis percakapan ini: "Hallo." "Hallo. Selamat siang. Bolehkah saya berbicara dengan Joan?" "Okay, mohon tunggu sebentar." "terima kasih." ... Ini adalah protokol sosial yang digunakan ketika dalam pembicaraan melalui telepon. Jenis protokol tipe ini memberikan kita kepercayaan untuk mengetahui apa yang harus dilakukan dalam situasi tersebut. Mari kita lihat beberapa protokol penting yang digunakan pada internet. Hypertext Transfer Protocol (HTTP) adalah salah satu protokol yang sering digunakan. Digunakan untuk mentransfer dokumen HTML pada Web. Kemudian, ada juga File Transfer Protocol (FTP) di mana lebih umum dibandingkan dengan HTTP dan memperbolehkan Anda untuk mentransfer file biner lewat intenet. Kedua protokol tersebut memiliki peraturan masing-masing dan standar dalam pengiriman data. Java juga mendukung kedua protokol tersebut.

90

1. Kemudian server mengingat permintaan dan mengembalikan informasi yang tersedia kepada client. Client adalah mesin yang membutuhkan beberapa jenis informasi sedangkan server adalah mesin yang menyimpan informasi dan menunggu untuk menyampaikannya pada client. sebuah port 0 menugaskan sebuah server kepada port bebas manapun.4 Paradigma client/server Paradigma client/server adalah dasar untuk framework jaringan Java. Setiap komputer pada internet dapat menyediakan berbagai jenis layanan melalui berbagai jenis protokol yang mendukung. Port adalah 16-bit nomor di mana mengenal setiap layanan yang ditawarkan oleh server jaringan. Port dihubungkan dengan nomor dan beberapa nomor bersifat spesifik yang berhubungan dengan jenis layanan khusus. Paradigma ini menjelaskan sebuah skenario sederhana. penetapan ini terdiri dari dua elemen besar.net menyediakan banyak class yang berguna untuk pengembangan aplikasi jaringan. MulticastSocket.2. Port dengan layanan pekerjaan tertentu disebut port standar. 11. jalur komunikasi yang melewati protokol tertentu. socket adalah point terakhir untuk komunikasi antara dua mesin. Anda harus mencari nilai lain yang tidak digunakan. 11. semua standar layanan tertentu diberikan nilai port di bawah 1024. protokol HTTP digunakan ketika Anda menyediakan isi Web melalui layanan HTTP. kita harus mengetahui jenis layanan sebelum sebuah informasi dapat ditransfer. Untuk itulah port digunakan.11. port dengan nilai di atas 1024 disediakan untuk komunikasi custom. Tentunya. Untuk daftar lengkap dari class jaringan dan interface. Anda perlu terhubung dengan port 21 pada komputer Anda. client terhubung dengan server dan meminta informasi. Socket adalah software abstrak untuk media input atau output komunikasi. Jika terdapat kasus di mana port dengan nilai di atas 1024 telah digunakan oleh beberapa komunikasi custom. Pembelajaran akan difokuskan pada empat class yaitu : class ServerSocket. Singkatnya.2 Java Networking Package Package dari java. yaitu client dan server. bagaimanapun juga. layanan FTP terletak pada port 21 sedangkan layanan HTTP terletak pada port 80. dan DatagramPacket. Sebagai contoh.1 Class ServerSocket dan Socket Class ServerSocket menyediakan fungsi-fungsi dasar dari sebuah server. 11. Untuk menggunakan layanan khusus dan oleh karena itu. Socket digunakan oleh Java untuk mengatasi komunikasi pada jaringan level rendah. Anda perlu menyambungkan pada port yang sesuai.1. dapat dilihat pada dokumentasi API.3 Port Sekarang. 11.5 Socket Konsep umum jaringan yang terakhir sebelum kita membahas lebih dalam tentang Java networking adalah dengan memperhatikan sockets. Tabel berikut menjelaskan dua dari empat constructor pada class ServerSocket: Nama Constructor ServerSocket(int port) Tabel 11. Sebagai contoh.1 Contructor class ServerSocket Fungsi Ketika sebuah server menetapkan suatu port tertentu. 91 . Jika Anda ingin menggunakan file transfer FTP. Kebanyakan pemrograman Java network menggunakan jenis khusus dari komunikasi jaringan yang diketahui sebagai sockets. Masalahnya. Jalur komunikasi ini memungkinkan untuk mentransfer data melalui port khusus. Sekarang.1. Tentunya. Socket. protokol hanya bisa dipertimbangkan jika digunakan dalam konteks suatu jasa.

Berikut ini adalah beberapa method class pada ServerSocket: Nama method public Socket accept() public void close() public int getLocalPort() public boolean isClosed() Tabel 11.io. } while(true) { try { client = server. int backlog) Ketika sebuah server menetapkan suatu port tertentu.exit(1). try { server = new ServerSocket(1234).*. di mana sebuah informasi sederhana dikirim oleh client dapat dilihat pada listing program berikut ini: import java.println("Cannot open socket. System. PrintWriter pw = new PrintWriter(clientOut.").*. panjang antrian maksimum untuk koneksi yang akan datang berdasarkan pada parameter backlog.readLine()). Client tidak dapat lagi terhubung ke server hingga dibuka kembali Mengembalikan port di mana socket juga membatasi Mendeteksi apakah socket tertutup atau belum Contoh yang berhasil melakukan implementasi sebuah server sederhana.out. kemudian menerimanya.getOutputStream(). pw. true). //1234 nomor port yang belum digunakan } catch (IOException ie) { System. OutputStream clientOut = client. InputStream clientIn = client.Panjang antrian maksimum untuk koneksi yang akan datang diatur sebanyak 50 sebagai defaultnya. Menutup socket server.accept().2 Method class ServerSocket Fungsi Menyebabkan server untuk menunggu dan mendengarkan dari koneksi client. ServerSocket(int port.getInputStream(). import java.net. BufferedReader br = new BufferedReader(new InputStreamReader(clientIn)). } catch (IOException ie) { } } 92 . public class EchoingServer { public static void main(String [] args) { ServerSocket server = null. Socket client.println(br.

*.net. Mengembalikan alamat IP kepada socket ini pada saat masih terhubung. 1234). Berikut adalah beberapa dari method class pada Socket: Nama Method public void close() public InputStream getInputStream() public OutputStream getOutputStream() public InetAddress getInetAddress() public int getPort() public boolean isClosed() Tabel 11. Mendeteksi apakah socket telah tertutup atau tidak Contoh yang berhasil melakukan implementasi sebuah client sederhana.io.3 Constructor class Socket Fungsi Membuat sebuah socket client di mana dihubungkan dengan diberikan nomor port pada host tertentu. import java.*.0. Nama Constructor Socket(String host.getInputStream().0.1". true). di mana mengirim data kepada server dapat dilihat pada listing program di bawah ini: import java. Tabel 11. BufferedReader br = new BufferedReader(new 93 . Class Socket mengimplementasikan socket client. int port) Socket(InetAddress port) address. Menerima kembali output stream yang berhubungan dengan socket ini.getOutputStream(). dua di antaranya siap dipanggil. public class MyClient { public static void main(String args[]) { try { //Socket client = new Socket("133.} } Ketika class ServerSocket mengimplementasikan server socket. Class Socket memiliki delapan constructor. 1234).getLocalHost(). Langsung saja kita lihat dua constructor tersebut. InputStream clientIn = client.4 Method class Socket Fungsi Menutup socket client Menerima kembali input stream yang berhubungan dengan socket ini. Mengembalikan remote port kepada socket ini pada saat masih terhubung. Socket client = new Socket(InetAddress. PrintWriter pw = new PrintWriter(clientOut. int Membuat sebuah socket client di mana dihubungkan dengan diberikannya nomor port pada alamat IP tertentu. OutputStream clientOut = client.

Jika Anda telah selesai berbicara dengan kelompok. Class ini memiliki tiga constructor tetapi yang akan dibahas hanya salah satu dari ketiga constructor ini. Meskipun begitu. System. } } } 11.0 hingga 239.println(br. pw.println("Type a message for the server: "). Alamat IP untuk kelompok multicast berkisar antara 224. client. Anda dapat menggunakan method leaveGroup untuk melepaskan keanggotaan Anda.255. pw.").close().println("Cannot connect to the server. Sekarang seorang anggota dapat mengirim pesan melalui method send. 94 .255. } catch (ConnectException ce) { System.0 telah dipesan dan seharusnya tidak digunakan.2. System.0.").out. Nama Method Tabel 11.0.out.close(). System.println("I/O Error.out.out. Nama Constructor Tabel 11.readLine()).5 Constructor class MulticastSocket Fungsi MulticastSocket(int port) Membuat multicast socket dibatasi dengan pemberian nomor port Tabel berikutnya memberikan penjelasan beberapa method MulticastSocket.readLine()).out.in)). br.0. } catch (IOException ie) { System. BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.0.println("Server message: ").255. pertama kali yang harus dilakukan oleh orang tersebut adalah harus menjadi anggota dari multicast kelompok dengan menggunakan method joinGroup.println(stdIn.close(). alamat 224.6 Method class MulticastSocket Fungsi Bergabung dengan kelompok multicast pada alamat tertentu Meninggalkan kelompok multicast pada alamat tertentu Metode turunan dari class DatagramSocket. Mengirim p dari socket ini.2 Class MulticastSocket dan DatagramPacket Class MulticastSocket sangat berguna untuk aplikasi yang mengimplementasikan komunikasi secara berkelompok.InputStreamReader(clientIn)). public void joinGroup(InetAddress mcastaddr) public void leaveGroup(InetAddress mcastaddr) public void send(DatagramPacket p) Sebelum seseorang dapat mengirim pesan kepada suatu kelompok.

Seharusnya kurang dari atau sama dengan ukuran dari buffer buf. boolean infinite = true.6. DatagramPacket(byte[] buf. Mari kita perhatikan dua dari enam constructor.getByName("234.8 Method class DatagramPacket Fungsi Mengembalikan buffer di mana data telah disimpan Mengembalikan alamat IP mesin di mana paket yang dikirim atau yang diterima Mengembalikan panjang data yang dikirim atau diterima Mengembalikan nomor port pada remote host di mana paket yang dikirim atau yang diterima Contoh multicast kita juga mengandung dua class. 95 . int length. kita harus mengerti object jenis ini sebelum menggunakan method send. /* Server terus-menerus menerima data dan mencetaknya*/ while(infinite) { byte buf[] = new byte[1024]. Server menerima pesan dari client dan mencetak pesan tersebut. public class ChatServer { public static void main(String args[]) throws Exception { MulticastSocket server = new MulticastSocket(1234). server. DatagramPacket data = new DatagramPacket(buf.5. pertama-tama mari kita lihat pada class DatagramPacket. dibutuhkan parameter yaitu object DatagramPacket. InetAddress group = InetAddress.Sebelum melihat contoh dalam menggunakan class multicastSocket. Nama Method public byte[] getData() public InetAddress getAddress() public int getLength() public int getPort() Tabel 11. int port) Constructor dari datagramPacket untuk mengirim paket dengan panjang length dengan nomor port tertentu dan host tertentu. Berikut adalah beberapa method dari class DatagramPacket. server dan client.buf.7 Constructor class DatagramPacket Fungsi DatagramPacket(byte[] buf. InetAddress address. Sehingga.receive(data). Class DatagramPacket digunakan untuk mengirim data melalui protokol connectionless seperti multicast. Masalah yang ditimbulkan bahwa pengiriman packet tidak terjamin. int length) Constructor dari datagramPacket untuk menerima paket dengan panjang length. Berikut adalah class server: import java. Perhatikan bahwa dalam method send dari class multiSocket.*.length).net.joinGroup(group). //getByName – Mengembalikan alamat IP yang diberikan oleh Host server.7"). Nama Constructor Tabel 11.

joinGroup(group). msg = br. System. import java. chat.5. } } 96 .getBytes().6. String msg = "".out. chat. group. BufferedReader br = new BufferedReader(new InputStreamReader(System.readLine().net. msg. chat. System.getByName("234. 1234).in)). InetAddress group = InetAddress.getData()). } } Berikut adalah class client: import java. public class ChatClient { public static void main(String args[]) throws Exception { MulticastSocket chat = new MulticastSocket(1234).*. } server.length().out.io.println("Type a message for the server:"). DatagramPacket data = new DatagramPacket(msg.close().*. 0.println(msg).send(data).String msg = new String(data.close().trim().7").

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->