oop - rekayasawebbl.files.wordpress.com · memahami sintaks dan grammar bahasa java 3. java...

74
OOP: OOP: OOP: OOP: J Ad d J Ad d Java Advanced Java Advanced Romi Romi Satria Satria Wahono Wahono Romi Romi Satria Satria Wahono Wahono [email protected] [email protected] http //romisatriawahono net http //romisatriawahono net http://romisatriawahono.net http://romisatriawahono.net HP: 0878 HP: 0878- -80480485 80480485 YM YM r mi s r mi s YM: YM: romi_sw romi_sw

Upload: vandieu

Post on 26-Apr-2019

253 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

OOP:OOP:OOP:OOP:J Ad dJ Ad dJava AdvancedJava Advanced

RomiRomi SatriaSatria WahonoWahonoRomiRomi SatriaSatria [email protected]@romisatriawahono.nethttp //romisatriawahono nethttp //romisatriawahono nethttp://romisatriawahono.nethttp://romisatriawahono.net

HP: 0878HP: 0878--8048048580480485YM YM r mi sr mi sYM: YM: romi_swromi_sw

Page 2: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Romi Satria WahonoRomi Satria Wahono

Lahir di Madiun, 2 Oktober 1974Lahir di Madiun, 2 Oktober 1974 SD Sompok SD Sompok Semarang (1987)Semarang (1987) SMPN 8SMPN 8 Semarang (1990)Semarang (1990)gg SMA Taruna NusantaraSMA Taruna Nusantara, Magelang (1993), Magelang (1993) S1 S2 dan S3 (onS1 S2 dan S3 (on leave) dari leave) dari Department Department of Computer of Computer S1, S2 dan S3 (onS1, S2 dan S3 (on--leave) dari leave) dari Department Department of Computer of Computer

Sciences, Sciences, Saitama UniversitySaitama University, Japan (1994, Japan (1994--2004)2004)C C t C C t S ft S ft E i iE i i L i L i Core Competence: Core Competence: Software Software EngineeringEngineering, eLearning , eLearning System, Knowledge ManagementSystem, Knowledge Management

ll Founder Founder dandan KoordinatorKoordinator IlmuKomputer.ComIlmuKomputer.Com CEO CEO PT Brainmatics Cipta InformatikaPT Brainmatics Cipta Informatikapp

Page 3: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MateriMateri

1.1. OOP ConceptsOOP Concepts::K p d P di Obj tK p d P di Obj t O i t d O i t d Konsep dan Paradigma ObjectKonsep dan Paradigma Object--Oriented Oriented

2.2. Java FundamentalsJava Fundamentals::Memahami Sintaks dan Grammar Bahasa JavaMemahami Sintaks dan Grammar Bahasa Java

33 Java AdvancedJava Advanced::3.3. Java AdvancedJava Advanced::Eksepsi, Thread, Java APIEksepsi, Thread, Java API

4.4. Java GUIJava GUI::Swing, GUI Component, Event HandlingSwing, GUI Component, Event Handling

5.5. Java GUI with NetbeansJava GUI with Netbeans::Mengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan Java

Page 4: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MateriMateri DiskusiDiskusi

PP Ek iEk i1.1. PenangananPenanganan EksepsiEksepsi22 Thread Thread dandan MultithreadingMultithreading2.2. Thread Thread dandan MultithreadingMultithreading33 I/O StreamI/O Stream3.3. I/O StreamI/O Stream4.4. OperasiOperasi BerkasBerkas ((File)File)pp

Page 5: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

PenangananPenangananPenangananPenangananEk iEk iEksepsiEksepsi

Page 6: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

EksepsiEksepsi

EksepsiEksepsi adalahadalah kondisikondisi abnormal abnormal yang yang pp y gy gterjaditerjadi pada pada saat suatu perintah dieksekusisaat suatu perintah dieksekusiK tikK tik k p ik p i t j dit j di p dp d tt th d th d KetikaKetika eksepsieksepsi terjaditerjadi padapada suatusuatu method, method, adaada dua pilihan yang dapat dilakukan:dua pilihan yang dapat dilakukan:p y g pp y g p1.1. MenanganiMenangani sendirisendiri eksepsieksepsi

ll hh2.2. MeneruskannyaMeneruskannya keke luarluar (throw)(throw) Keyword Keyword eksepsieksepsi Keyword Keyword eksepsieksepsi::

try, catch, finally, try, catch, finally, throw,throwsthrow,throwsy yy y

Page 7: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

BentukBentuk PenangananPenanganan EksepsiEksepsi

try{try{// code // code ygyg mengakibatkanmengakibatkan eksepsieksepsi

}catch(TipeEksepsi1 }catch(TipeEksepsi1 objekEksepsiobjekEksepsi){){// code utk menangani eksepsi yg cocok dg TipeEksepsi1// code utk menangani eksepsi yg cocok dg TipeEksepsi1

}}......catch(catch(TipeeksepsiNTipeeksepsiN objekEksepsiobjekEksepsi){){

// code utk menangani eksepsi yg cocok dg TipeEksepsiN// code utk menangani eksepsi yg cocok dg TipeEksepsiN}finally{}finally{

//code yg pasti dieksekusi setelah blok try//code yg pasti dieksekusi setelah blok try--catch dieksekusicatch dieksekusi}}

Page 8: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

HirarkiHirarki Class Class EksepsiEksepsi

Page 9: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

3 3 TipeTipe EksepsiEksepsi

11 Eksepsi yang Eksepsi yang Tidak DicekTidak Dicek1.1. Eksepsi yang Eksepsi yang Tidak DicekTidak Dicek22 ErrorError2.2. ErrorError33 EksepsiEksepsi yang yang DDicekicek3.3. EksepsiEksepsi yang yang DDicekicek

Page 10: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

TipeTipe EksepsiEksepsi Yang Yang TidakTidak DicekDicek SemuaSemua eksepsieksepsi bertipebertipe RuntimeExceptionRuntimeException dandan

turunannyaturunannya tidaktidak harusharus secarasecara eksplisiteksplisit ditanganiditanganiturunannyaturunannya tidaktidak harusharus secarasecara eksplisiteksplisit ditanganiditanganidalamdalam programprogram.. ContohnyaContohnya: : ArrayIndexOutofBoundExceptionArrayIndexOutofBoundException ArrayIndexOutofBoundExceptionArrayIndexOutofBoundException, , AritmeticExceptionAritmeticException, , dsbdsbP d k P d k t t d t t t d t Program dengan eksepsi ini Program dengan eksepsi ini tetap dapat tetap dapat dikompilasidikompilasi, meskipun ketika dijalankan akan , meskipun ketika dijalankan akan

llmengeluarkanmengeluarkan pesanpesan eksepsieksepsi dandan eksekusieksekusiberakhirberakhir

Supaya ekseksi tidak berakhir, bisa Supaya ekseksi tidak berakhir, bisa menggunakanmenggunakanblokblok trytry--catchcatchblokblok trytry catchcatch

Page 11: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoEksepsi.javaDemoEksepsi.javallclass class DemoEksepsiDemoEksepsi{{

public static void main(String[] public static void main(String[] argsargs){){public static void main(String[] public static void main(String[] argsargs){){intint[] [] arrarr = new = new intint[1];[1];aa ;;System.out.printlnSystem.out.println((arrarr[1]);[1]);

}}}}}}

Page 12: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

TipeTipe EksepsiEksepsi ErrorError

TTipeipe eksepsieksepsi yang yang seharusnyaseharusnya tidak tidak TTipeipe eksepsieksepsi yang yang seharusnyaseharusnya tidak tidak ditangani dengan blok tryditangani dengan blok try--catch catch g g yg g ykarena berhubungan dengan Java karena berhubungan dengan Java

ti ti ttruntime runtime systemsystemError Error merupakanmerupakan eksepsieksepsi yang yang Error Error merupakanmerupakan eksepsieksepsi yang yang

sangatsangat kritiskritis dandan tidaktidak perluperlugg ppditanganiditangani oleholeh program program kitakita

Page 13: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

TipeTipe EksepsiEksepsi Yang Yang DicekDicek

Semua eksepsi yang Semua eksepsi yang bukan turunan bukan turunan Semua eksepsi yang Semua eksepsi yang bukan turunan bukan turunan class class RuntimeExceptionRuntimeException adalahadalahppeksepsieksepsi yang yang harusharus ditanganiditangani dengan dengan bl kbl k tt t ht hblokblok trytry--catchcatch

Program Program tidak bisa dikompilasi tidak bisa dikompilasi Program Program tidak bisa dikompilasi tidak bisa dikompilasi apabila apabila eksepsieksepsi tidaktidak ditanganiditanganipp pp gg

Page 14: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoEksepsi2.javaDemoEksepsi2.javaimport java.io.*;import java.io.*;

class DemoEksepsi2{class DemoEksepsi2{Public static void main(String[] Public static void main(String[] argsargs){){

File File myFilemyFile = new File(“test txt”);= new File(“test txt”);File File myFilemyFile new File( test.txt ); new File( test.txt );myFile.createNewFilemyFile.createNewFile();();

}}}}}}

Page 15: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoEksepsi3.javaDemoEksepsi3.javaimp rt ja a i *imp rt ja a i *import java.io.*;import java.io.*;

l D Ek i3{l D Ek i3{class DemoEksepsi3{class DemoEksepsi3{public static void main(String[] public static void main(String[] argsargs){){

tt {{trytry{{File File myFilemyFile = new File("test.txt");= new File("test.txt");

l ll l ()()myFile.createNewFilemyFile.createNewFile();();System.out.printlnSystem.out.println("File ("File berhasilberhasil dibuatdibuat");");

}}catchcatch((IOExceptionIOException e){e){ll ll llSystem.out.printlnSystem.out.println(“File (“File gagalgagal dibuatdibuat");");

}}}}

}}

Page 16: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MengapaMengapa EksepsiEksepsi PerluPerlu DitanganiDitangani

Kita Kita inginingin program program kitakita bisabisa memperbaikimemperbaikikesalahan akibat eksepsikesalahan akibat eksepsi dan terus dan terus melanjutkan melanjutkan kesalahan akibat eksepsikesalahan akibat eksepsi dan terus dan terus melanjutkan melanjutkan eksekusi eksekusi seolahseolah--olah tidak pernah terjadi eksepsiolah tidak pernah terjadi eksepsi

f )f ) PenggunaPengguna program(software) program(software) umumnyaumumnyatidaktidak pedulipeduli ((mengertimengerti) ) bagaimanabagaimana sebuahsebuahpp gg ggprogram program dieksekusidieksekusi sehinggasehingga akhirnyaakhirnyamunculmuncul pesanpesan kesalahan Kita ingin kesalahan Kita ingin pesan pesan munculmuncul pesanpesan kesalahan. Kita ingin kesalahan. Kita ingin pesan pesan kesalahan tadi kesalahan tadi dipahamidipahami oleholeh penggunapenggunaK t K t t tt t b lb l dd Kita Kita inginingin program program tetaptetap berjalanberjalan dandanbukannyabukannya dihentikan dihentikan pada saat eksepsi terjadipada saat eksepsi terjadiyy p p jp p j

Page 17: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Catch Catch BertingkatBertingkat Code yang Code yang adaada dalamdalam blokblok try try bisabisa sajasaja

kib tk l bih d i t j i k ikib tk l bih d i t j i k imengakibatkan lebih dari satu jenis eksepsimengakibatkan lebih dari satu jenis eksepsi Kita Kita dapatdapat menuliskanmenuliskan lebihlebih daridari satusatu blokblok catch catch

untukuntuk setiapsetiap blokblok trytry Blok catch Blok catch dengandengan tipetipe data subclass data subclass harusharus ditulis ditulis Blok catch Blok catch dengandengan tipetipe data subclass data subclass harusharus ditulis ditulis

terlebih dahulu terlebih dahulu daripada tipe data daripada tipe data superclasssuperclass--nyanyaE pti E pti adalahadalah p lap la da ida i Exception Exception adalahadalah superclasssuperclass daridariArithmeticExceptionArithmeticException dandanA I d O tOfB d E tA I d O tOfB d E t hhArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException sehinggasehinggaharusharus ditulisditulis paling paling akhirakhir

Page 18: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoEksepsi4.javaDemoEksepsi4.javal D Ek 4{l D Ek 4{class DemoEksepsi4{class DemoEksepsi4{

public static void main(String[] public static void main(String[] argsargs){){trytry{{yy

intint x = x = args.lengthargs.length; ; intint y = 100/x;y = 100/x;intint[] [] arrarr = {0,1,2,3};= {0,1,2,3};y = y = arrarr[x][x]y = y = arrarr[x];[x];System.out.printlnSystem.out.println("("JumlahJumlah argument: " + y);argument: " + y);System.out.printlnSystem.out.println("("TidakTidak terjaditerjadi eksepsieksepsi");");

}}catch(catch(ArithmeticExceptionArithmeticException e)e){{System.out.printlnSystem.out.println("("TerjadiTerjadi eksepsieksepsi karenakarena pembagianpembagian dengandengan nolnol“ +“ +e.getMessagee.getMessage());());e.getMessagee.getMessage());());

}}catch(catch(ArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException e)e){{System.out.println("Terjadi eksepsi karena indeks di luar kapasitas");System.out.println("Terjadi eksepsi karena indeks di luar kapasitas");

}} t h(t h(Th blTh bl )){{}}catch(catch(ThrowableThrowable e)e){{System.out.printlnSystem.out.println("("TerjadiTerjadi eksepsieksepsi ygyg tidaktidak diketahuidiketahui");");

}}System.out.printlnSystem.out.println("("SetelahSetelah blokblok try catch");try catch");

}}}}

Page 19: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoEksepsi5.javaDemoEksepsi5.javal k {l k {class DemoEksepsi5{class DemoEksepsi5{

public static void main(String[] public static void main(String[] argsargs){){double BILANGAN = 100 0;double BILANGAN = 100 0;double BILANGAN 100.0;double BILANGAN 100.0;System.out.printlnSystem.out.println("("SebelumSebelum pembagianpembagian");");

for(for(intint ii=5; =5; ii>=0; >=0; ii----){){trytry{{

S t t tlS t t tl (BILANGAN "/" (BILANGAN "/" " ") " ")System.out.printlnSystem.out.println(BILANGAN + "/" + (BILANGAN + "/" + ii + " = ");+ " = ");System.out.printlnSystem.out.println(BILANGAN/(BILANGAN/ii););

}}finallyfinally{{System.out.printlnSystem.out.println("("BagianBagian finally finally dijalankandijalankan");");

}}}}S t t i tlS t t i tl ("P ("P l il i")")System.out.printlnSystem.out.println("Program ("Program selesaiselesai");");

}}}}

Page 20: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MelontarkanMelontarkan EksepsiEksepsi (throw)(throw)

Keyword throw Keyword throw digunakandigunakan untukuntuky dy d d g a ad g a amelontarkanmelontarkan eksepsieksepsiB t kB t k BentukBentuk::throw throw variabelObjekvariabelObjek;;throw throw variabelObjekvariabelObjek;;

Page 21: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoThrow.javaDemoThrow.javall hhclass class DemoThrowDemoThrow{{

public static void main(String[] public static void main(String[] argsargs){){p gp g ggRuntimeExceptionRuntimeException r = new r = new

RuntimeExceptionRuntimeException("("EksepsiEksepsi RuntimeExceptionRuntimeException");");RuntimeExceptionRuntimeException(( EksepsiEksepsi RuntimeExceptionRuntimeException ););

S t t pri tlS t t pri tl ("("S b lS b l Thr ")Thr ")System.out.printlnSystem.out.println("("SebelumSebelum Throw");Throw");throw(r);throw(r);

}}}}}}

Page 22: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

throws throws untukuntuk EksepsiEksepsi MethodMethodhh kk kk Keyword throws Keyword throws digunakandigunakan untukuntuk

memberitahumemberitahu bahwabahwa suatusuatu method method adaadakemungkinankemungkinan menghasilkanmenghasilkan suatusuatu eksepeksepsisi

BentukBentuk BentukBentuk::public public tipetipe namaMethodnamaMethod() throws () throws JenisEksepsiJenisEksepsi{{......}}atauataupublic public tipetipe namaMethodnamaMethod() throws JenisEksepsi1,() throws JenisEksepsi1,JenisEksepsi2, JenisEksepsi3...{JenisEksepsi2, JenisEksepsi3...{......}}

Page 23: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoThrows.javaDemoThrows.java

import java.io.*;import java.io.*; class class DemoThrowsDemoThrows{{public static void main(String[] public static void main(String[] argsargs){){

class class SuatuKelasSuatuKelas{{public static void main(String[] public static void main(String[] argsargs){){

SuatuKelasSuatuKelas objobj = new = new SuatuKelasSuatuKelas();();obj.metodeAobj.metodeA();();

// Method // Method tanpatanpa throwsthrowspublic void public void metodeAmetodeA(){(){

S t t tlS t t tl (“(“M t d AM t d A”)”)

obj.metodeBobj.metodeB();();}}

}}System.out.printlnSystem.out.println(“(“MetodeAMetodeA”);”);}}

}}

// Method // Method dengandengan throwsthrowspublic void public void metodeBmetodeB() throws() throws

IOExceptionIOException{{System.out.printlnSystem.out.println(“(“MetodeBMetodeB”);”);

}}}}}}

Page 24: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

DemoThrows2.javaDemoThrows2.java import java.io.*;import java.io.*;

class class SuatuKelasSuatuKelas{{public class public class DemoThrowsDemoThrows{{

public static void main(String[] public static void main(String[] argsargs){){class class SuatuKelasSuatuKelas{{public void public void metodeAmetodeA(){(){

System.out.printlnSystem.out.println("("MetodeAMetodeA");");

public static void main(String[] public static void main(String[] argsargs){){SuatuKelasSuatuKelas objobj = new = new SuatuKelasSuatuKelas();();obj.metodeAobj.metodeA();();

}}

bl d bl d t d Bt d B() th () th

obj.metodeBobj.metodeB();();}}

}}public void public void metodeBmetodeB() throws () throws IOExceptionIOException{{

System.out.printlnSystem.out.println("("MetodeBMetodeB");");

}}

y py p dd ;;}}

}}

Page 25: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Th dTh d ddThread Thread dandanMultithreadingMultithreading

Page 26: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

KonsepKonsep ThreadThread ThreadThread: : sekumpulansekumpulan instruksiinstruksi ((prosesproses) yang ) yang

dieksekusidieksekusi secarasecara independenindependendie se sidie se si se a ase a a independenindependen MultithreadingMultithreading: : suatusuatu kemampuankemampuan yang yang

memungkinkanmemungkinkan beberapabeberapa kumpulankumpulan instruksiinstruksimemungkinkanmemungkinkan beberapabeberapa kumpulankumpulan instruksiinstruksi(proses) dijalankan secara bersamaan (time slicing) (proses) dijalankan secara bersamaan (time slicing) dalamdalam sebuahsebuah programprogramdalamdalam sebuahsebuah programprogram

Multithreading Multithreading bermanfaatbermanfaat untukuntuk membuatmembuat prosesprosesyang interaktifyang interaktif misalnya pada program permainan misalnya pada program permainan yang interaktifyang interaktif, misalnya pada program permainan , misalnya pada program permainan (game). Program tetap dapat menggerakkan (game). Program tetap dapat menggerakkan beberapabeberapa objekobjek sambilsambil memberimemberi kesempatankesempatanbeberapabeberapa objekobjek sambilsambil memberimemberi kesempatankesempatanpenggunapengguna melakukanmelakukan responrespon melaluimelalui mouse mouse atauataukeyboardkeyboardkeyboardkeyboard

Page 27: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

PenggunaanPenggunaan ThreadThread1.1. MembuatMembuat class yang class yang mengimplementasimengimplementasi

interface interface RunnableRunnable dandan method run()method run()interface interface RunnableRunnable dandan method run()method run()class class NamaClassNamaClass implements implements RunnableRunnable{{

public void run(){public void run(){public void run(){public void run(){... }... }

}}}}

2.2. MembuatMembuat class yang class yang merupakanmerupakan turunanturunan classclassThread Thread dandan mengmeng--override method run()override method run()

class class NamaClassNamaClass extends Thread {extends Thread {public void run(){public void run(){... }... }

}}

Page 28: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

KiatKiat MemilihMemilih PenggunaanPenggunaan ThreadThread JikaJika perluperlu mengmeng--override override beberapabeberapa method method

milikmilik class Thread class Thread gunakangunakan turunanturunan class class milikmilik class Thread class Thread gunakangunakan turunanturunan class class ThreadThread

ll ff blbl TeknikTeknik mengimplementasimengimplementasi interface interface RunnableRunnableharusharus digunakandigunakan, , jikajika kitakita membuatmembuat class yang class yang gg ,, jj y gy gmerupakan turunan dari class lainmerupakan turunan dari class lain. Karena . Karena java java tidaktidak mengenalmengenal multiple inheritancemultiple inheritance tekniktekniktidaktidak mengenalmengenal multiple inheritancemultiple inheritance, , teknikteknikmembuatmembuat turunanturunan class Thread class Thread tidaktidak bisabisadigunakandigunakandigunakandigunakan

Page 29: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

ThreadBeraksi1.javaThreadBeraksi1.javaclass Mobil implements class Mobil implements RunnableRunnable{{a p na p n nnanna {{

String String namanama;;public Mobil(String id){public Mobil(String id){

namanama = id;= id;namanama = id;= id;}}public void run(){public void run(){

f (f ( tt 0 5 0 5 ){){for(for(intint ii=0;i<5; =0;i<5; ii++){++){try{try{

Thread.currentThreadThread.currentThread().sleep(1000);().sleep(1000);}catch(}catch(InterruptedExceptionInterruptedException ieie){){

System.out.printlnSystem.out.println("("TerinterupsiTerinterupsi");");}}}}

}} }} System.out.printlnSystem.out.println("Thread" + ("Thread" + namanama + ": + ": PosisiPosisi " +" +ii););}}}}}}

public class ThreadBeraksi1{public class ThreadBeraksi1{public class ThreadBeraksi1{public class ThreadBeraksi1{public static void main(String[] public static void main(String[] argsargs){){

Thread m1 = new Thread(new Mobil("MThread m1 = new Thread(new Mobil("M--1"));1"));Th d 2 Th d( M bil("MTh d 2 Th d( M bil("M 2"))2"))Thread m2 = new Thread(new Mobil("MThread m2 = new Thread(new Mobil("M--2"));2"));m1.start(); m2.start();m1.start(); m2.start();

}}}}

Page 30: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

ThreadBeraksi2.javaThreadBeraksi2.javaclass Mobil extends Thread{class Mobil extends Thread{a nd ad{a nd ad{

public Mobil(String id){public Mobil(String id){super(id);super(id);

}}}}public void run(){public void run(){

String nama = getName();String nama = getName();f ( t 0 5 ){f ( t 0 5 ){for(int i=0; i<5; i++){for(int i=0; i<5; i++){

try{try{sleep(1000);sleep(1000);

}catch(InterruptedException ie){}catch(InterruptedException ie){System.out.println("Terinterupsi");System.out.println("Terinterupsi");

}}}}}} System.out.println("Thread" + nama + ": Posisi " +i);}} System.out.println("Thread" + nama + ": Posisi " +i);

}}}}}}public class ThreadBeraksi2{public class ThreadBeraksi2{public class ThreadBeraksi2{public class ThreadBeraksi2{

public static void main(String[] args){public static void main(String[] args){Mobil m1 = new Mobil("MMobil m1 = new Mobil("M--1");1");M bil 2 M bil("MM bil 2 M bil("M 2")2")Mobil m2 = new Mobil("MMobil m2 = new Mobil("M--2");2");m1.start(); m2.start();m1.start(); m2.start();

}}}}

Page 31: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Method Class ThreadMethod Class Thread

MethodMethod DeskripsiDeskripsi

static Thread static Thread currentThreadcurrentThread()() CekCek didi Java APIJava API

String String getNamegetName()()

intint getPrioritygetPriority()()

Boolean Boolean isAliveisAlive()()

void join()void join()

id j i (lid j i (l illiilli ))void join(long void join(long millismillis))

void join(long void join(long millismillis))

void run()void run()void run()void run()

String String setNamesetName()()

static void sleep(static void sleep(longmillislongmillis))

static void sleep(static void sleep(longmillislongmillis, , intint nanosnanos))

void start()void start()

Page 32: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Method Method isAliveisAlive()()

Method Method isAliveisAlive() () digunakandigunakan untukuntukggmengetahuimengetahui apakahapakah suatusuatu thread thread

ihih hidhid tt d hd h titimasihmasih hiduphidup atauatau sudahsudah matimatiMethod Method isAliveisAlive() () memberikanmemberikan nilainilaiMethod Method isAliveisAlive() () memberikanmemberikan nilainilai

balikbalik true true apabilaapabila thread thread masihmasihpphiduphidup dandan false false apabilaapabila sudahsudah matimati( t l ( t l b lb l ))(return value = (return value = booleanboolean))

Page 33: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

ThreadBeraksi3.javaThreadBeraksi3.javaTambahkanTambahkan code code didi bawahbawah padapada method main method main padapada classclassThreadBeraksi2, ThreadBeraksi2, ubahubah class class menjadimenjadi ThreadBeraksi3ThreadBeraksi3

booleanboolean m1Berakhir = false;m1Berakhir = false;booleanboolean m2Berakhir = falsem2Berakhir = falsebooleanboolean m2Berakhir = false;m2Berakhir = false;do{do{

if(!m1Berakhir && !m1 isAlive()){if(!m1Berakhir && !m1 isAlive()){if(!m1Berakhir && !m1.isAlive()){if(!m1Berakhir && !m1.isAlive()){m1Berakhir = true;m1Berakhir = true;System.out.printlnSystem.out.println(“Thread m1 (“Thread m1 berakhirberakhir”);”);System.out.printlnSystem.out.println( Thread m1 ( Thread m1 berakhirberakhir ););

}}if(!m2Berakhir && !m2.isAlive()){if(!m2Berakhir && !m2.isAlive()){

m2Berakhir = true;m2Berakhir = true;System.out.printlnSystem.out.println(“Thread m2 (“Thread m2 berakhirberakhir”);”);

}}} while (!m1Berakhir || !m2Berakhir);} while (!m1Berakhir || !m2Berakhir);

Page 34: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

SinkronisasiSinkronisasi PadaPada berapaberapa kondisikondisi, , prosesproses secarasecara bersamaanbersamaan

terkadangterkadang tidaktidak memungkinkanmemungkinkanterkadangterkadang tidaktidak memungkinkanmemungkinkan ContohContoh: : prosesproses I/O stream I/O stream khususnyakhususnya pada proses pada proses

membaca dan menulis suatu data atau membaca dan menulis suatu data atau filefilemembaca dan menulis suatu data atau membaca dan menulis suatu data atau filefile ProsesProses thread thread pembacaanpembacaan atauatau penulisanpenulisan data data

dd t d kt d k bb kk hh d t d t dd f l f l menjadimenjadi tidaktidak benarbenar karenakarena seharusnyaseharusnya data data dandan file file tersebuttersebut berubahberubah--ubahubah ((sedangsedang dibukadibuka dandan ditulisditulis

l hl h th d lth d l ))oleholeh thread lainthread lain)) Untuk kondisi diatas perlu dilakukan Untuk kondisi diatas perlu dilakukan proses proses

sinkronisasisinkronisasi dengandengan menggunakanmenggunakan keyword keyword synchronizedsynchronized

Page 35: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Cara Cara PenggunaanPenggunaan SynchronizedSynchronized

1.1. SinkronisasiSinkronisasi padapada methodmethod: : mendeklarasikanmendeklarasikanhhsuatusuatu method method dengandengan menggunakanmenggunakan

keyword synchronizedkeyword synchronizedy d y dy d y d

S k d b kS k d b k b hk bl k b hk bl k 2.2. Sinkronisasi pada objekSinkronisasi pada objek: menambahkan blok : menambahkan blok di di bawahbawah padapada pemanggilanpemanggilan objekobjekpp p ggp gg jjsynchronized (synchronized (objekobjek){){

......}}

Page 36: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

SinkronisasiSinkronisasi padapada MMethodethod (ThreadBeraksi4.java)(ThreadBeraksi4.java)

1.1. PadaPada ThreadBeraksi2.java, ThreadBeraksi2.java, ubahubah run() run() padapadaclass Mobil:class Mobil:class Mobil:class Mobil:public void run(){public void run(){

String String namanama = = getNamegetName();();Si k i iK l i f (Si k i iK l i f ( ))SinkronisasiKeluaran.info(SinkronisasiKeluaran.info(namanama););

}}

2 2 Buat class SinkronisasiKeluaran dengan code:Buat class SinkronisasiKeluaran dengan code:2. 2. Buat class SinkronisasiKeluaran dengan code:Buat class SinkronisasiKeluaran dengan code:class SinkronisasiKeluaran{class SinkronisasiKeluaran{

public static synchronized void info(String nama){public static synchronized void info(String nama){f ( 5 ){f ( 5 ){for(int i=0; i<5; i++){for(int i=0; i<5; i++){

try{try{

Thread.sleep(1000);Thread.sleep(1000);}catch(InterruptedException ie){}catch(InterruptedException ie){

System.out.println("Terinterupsi");}System.out.println("Terinterupsi");}y p n n n p );}y p n n n p );}System.out.println("Thread" + nama + ": Posisi " +i);System.out.println("Thread" + nama + ": Posisi " +i);

}}}}}}

Page 37: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

SinkronisasiSinkronisasi padapada method (ThreadBeraksi5.java)method (ThreadBeraksi5.java)

h kh k b hb h hhPadaPada ThreadBeraksi4.java, ThreadBeraksi4.java, ubahubah methodmethodrun() run() padapada class Mobil:class Mobil:

public void run(){public void run(){

pp

synchronized(this){synchronized(this){String String namanama = = getNamegetName();();String String namanama getNamegetName();();SinkronisasiKeluaran.info(SinkronisasiKeluaran.info(namanama););

}}}}}}

Page 38: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

PrioritasPrioritas ThreadThread

Method Method setPrioritysetPriority((intint level) level) dapatdapat dipanggildipanggilhhuntukuntuk menentukanmenentukan prioritasprioritas daridari threadthread

NilaiNilai level level bisabisa berupaberupa bilanganbilangan bulatbulat daridari 11--1010 NilaiNilai level level bisabisa berupaberupa bilanganbilangan bulatbulat daridari 11 1010 PrioritasPrioritas normalnormal memilikimemiliki nilainilai level level 55 PerluPerlu dicatatdicatat bahwabahwa tidaktidak semuasemua sistemsistem operasioperasi

mendukungmendukung operasioperasi iniini, , sehinggasehingga kadangkadangmend ngmend ng pe asipe asi iniini, , sehinggasehingga adangadangpemanggilanpemanggilan method method iniini tidaktidak memberikanmemberikanefekefek apaapa apaapaefekefek apaapa--apaapa

Page 39: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

ThreadBeraksi6.javaThreadBeraksi6.javaclass Mobil extends Thread{class Mobil extends Thread{class Mobil extends Thread{class Mobil extends Thread{

public Mobil(String id){public Mobil(String id){super(id);super(id);

}}}}public void run(){public void run(){

String String namanama = = getNamegetName();();gg ggfor(for(intint ii=0; =0; ii<5; <5; ii++){++){

System.out.printlnSystem.out.println(“Thread” + (“Thread” + namanama + “: + “: PosisiPosisi “ +“ +ii););}}}}}}}}}}}}

public class ThreadBeraksi6{public class ThreadBeraksi6{public static void main(String[] public static void main(String[] argsargs){){

Mobil m1 = new Mobil(new Mobil(“MMobil m1 = new Mobil(new Mobil(“M--1”));1”));Mobil m2 = new Mobil(new Mobil(“MMobil m2 = new Mobil(new Mobil(“M--2”));2”));M bi m n w M bi (n w M bi ( MM bi m n w M bi (n w M bi ( M ));));

m2.setPriority(8);m2.setPriority(8);1 t t() 2 t t()1 t t() 2 t t()m1.start(); m2.start();m1.start(); m2.start();

}}}}

Page 40: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

I/O StreamI/O StreamI/O StreamI/O Stream

Page 41: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

ApaApa ItuItu I/O StreamI/O Stream

Stream adalah Stream adalah proses membaca data dari proses membaca data dari tt tt bb (i t) (i t) ttsuatusuatu suatusuatu sumbersumber (input) (input) atauatau

mengirimkanmengirimkan data data keke suatusuatu tujuantujuan (output)(output) System.out.printlnSystem.out.println() () adalahadalah contohcontoh stream, stream,

yang yang berfungsiberfungsi menampilkanmenampilkan data data yang yang berfungsiberfungsi menampilkanmenampilkan data data ((informasiinformasi) ) keke layarlayar

b lb l VariabelVariabel standard stream:standard stream: System.inSystem.in (default: keyboard)(default: keyboard)y ny n d a y a d)d a y a d) System.outSystem.out (default: (default: layarlayar)) System err (default console)System err (default console) System.err (default: console)System.err (default: console)

Page 42: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

KonsepKonsep I/O Stream (Input)I/O Stream (Input)

Page 43: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

KonsepKonsep I/O Stream (Output)I/O Stream (Output)

Page 44: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

JenisJenis I/O StreamI/O Stream

1.1. Byte StreamByte Streamk l b bk l b b Untuk menulis atau membaca data binerUntuk menulis atau membaca data biner

InputStreamInputStream dandan OutputStreamOutputStream adalahadalah duadua class class pp ppabstrakabstrak tertinggitertinggi daridari Byte StreamByte Stream

2.2. Character StreamCharacter Stream UntukUntuk menulismenulis dandan membacamembaca data data karakterkarakter

((unicodeunicode) ) Reader Reader dandan Writer Writer adalahadalah duadua class class abstrakabstrak

tertinggitertinggi daridari Character StreamCharacter Streamgggg dada a a aa a a

Page 45: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

1. Byte Stream1. Byte Stream

Page 46: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Class Class TurunanTurunan Byte StreamByte StreamClassClass DeskripsiDeskripsi

BufferedInputStreamBufferedInputStreampp

BufferedOuputStreamBufferedOuputStream

ByteArrayInputStreamByteArrayInputStream

ByteArrayOuputStreamByteArrayOuputStream

DataInputStreamDataInputStream

DataOutputStreamDataOutputStream

FileInputStreamFileInputStream

Fil O SFil O SFileOutputStreamFileOutputStream

PrintStreamPrintStream

Page 47: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Method Class Method Class InputStreamInputStreamMethodMethod DeskripsiDeskripsi

intint available()available()()()

void close()void close()

void mark(void mark(intint readLimitreadLimit))

booleanmarkSupportedbooleanmarkSupported()()

intint read()read()

intint read(byte[] b)read(byte[] b)

intint read(byte[] b, read(byte[] b, intint off, off, intint

lenlen))lenlen))

void reset()void reset()

long skip(long n)long skip(long n)g p( g )g p( g )

Page 48: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MembacaMembaca Input Input daridari ConsoleConsoleimport java io *;import java io *;import java.io. ;import java.io. ;

class class InputStreamBeraksiInputStreamBeraksi{{class class InputStreamBeraksiInputStreamBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

byte[ ] data = new byte[10]byte[ ] data = new byte[10]byte[ ] data = new byte[10];byte[ ] data = new byte[10];System.out.printlnSystem.out.println("("KetikKetik 10 10 buahbuah karakterkarakter:");:");System in readSystem in read(data)(data)System.in.readSystem.in.read(data);(data);

S t t p i tlS t t p i tl ("("K ktK kt dd k tikk tik d l hd l h ")")System.out.printlnSystem.out.println("("KarakterKarakter yang yang andaanda ketikketik adalahadalah:");:");for(for(intint ii=0; =0; ii<<data.lengthdata.length; ; ii++){++){

S t t i tS t t i t(( h ) d t [(( h ) d t [ii])])System.out.printSystem.out.print((char) data[((char) data[ii]);]);}}

}}}}}}

Page 49: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MembacaMembaca Input Input daridari FileFileimport java.io.*;import java.io.*;p j ;p j ;class class FileInputStreamBeraksiFileInputStreamBeraksi{{

public static void main(String[] public static void main(String[] argsargs) {) {if (if (args.lengthargs.length==0) { ==0) { System.out.printlnSystem.out.println("("MasukkanMasukkan namanama file file sebagaisebagai parameter!"); }parameter!"); }if (if (args.lengthargs.length 0) { 0) { System.out.printlnSystem.out.println(( MasukkanMasukkan namanama file file sebagaisebagai parameter! ); }parameter! ); }byte data;byte data;FileInputStreamFileInputStream fin=null;fin=null;try{try{try{try{

fin = new fin = new FileInputStreamFileInputStream((argsargs[0]);[0]);do{do{

data = byte)data = byte)fin readfin read();();data byte)data byte)fin.readfin.read();();System.out.printSystem.out.print((char)data);((char)data);

}while(data!=}while(data!=--1);1);}catch(}catch(FileNotFoundExceptionFileNotFoundException e){e){}catch(}catch(FileNotFoundExceptionFileNotFoundException e){e){

System.out.printlnSystem.out.println("File: " + ("File: " + argsargs[0] + "[0] + "tidaktidak ditemukanditemukan.");.");}catch(}catch(IOExceptionIOException e){e){

System out printlnSystem out println("("EkspresiEkspresi tidaktidak diketahuidiketahui " + e) " + e) System.out.printlnSystem.out.println(( EkspresiEkspresi tidaktidak diketahuidiketahui : + e) ;: + e) ;}finally{}finally{

if(fin!=null){if(fin!=null){t { t { fi lfi l ()()try{ try{ fin.closefin.close();();}catch(}catch(IOExceptionIOException err){ err){ System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + err);}: " + err);}}}}}}}}}

Page 50: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Method Class Method Class OutputStreamOutputStreamMethodMethod DeskripsiDeskripsi

void close()void close()

void flush()void flush()

void write(byte[] b)void write(byte[] b)

void write(byte[] b, void write(byte[] b, intint off, off, intint lenlen))

abstract void write(abstract void write(intint b)b)

Page 51: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MenulisMenulis Output Output keke ConsoleConsoleimp rt ja a i *imp rt ja a i *import java.io.*;import java.io.*;

l l O t tSt B k iO t tSt B k i{{class class OutputStreamBeraksiOutputStreamBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

byte[] data = {'byte[] data = {'a','b','c','d','e','f','ga','b','c','d','e','f','g'};'};

System.out.writeSystem.out.write(data,3,4);(data,3,4);System.out.writeSystem.out.write('('\\n');n');System.out.writeSystem.out.write(data);(data);

}}}}

Page 52: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MenulisMenulis Output Output keke FileFileimport java.io.*;import java.io.*;p jp jclass class FileOutputStreamBeraksiFileOutputStreamBeraksi{{

public static void main (String[] public static void main (String[] argsargs) {) {if (if (args.lengthargs.length==0) {==0) {System.out.printlnSystem.out.println("Error: ("Error: tulistulis namanama file!");}file!");}byte data;byte data;OutputStreamOutputStream foutfout=null;=null;try{try{

foutfout = new = new FileOutputStreamFileOutputStream((argsargs[0]);[0]);System.out.printlnSystem.out.println ("("KetikKetik data yang data yang inginingin AndaAnda tulistulis keke file. Q file. Q untukuntuk berhentberhent");");data = (byte)data = (byte)System.in.readSystem.in.read();();

h l d b ) )h l d b ) )while(data!=(byte)'Q') {while(data!=(byte)'Q') {fout.writefout.write(data);(data);data = (byte)data = (byte)System.in.readSystem.in.read();();

}}}}}catch(}catch(FileNotFoundExceptionFileNotFoundException e) {e) {

System.out.printlnSystem.out.println("file : " + ("file : " + argsargs[0] + " [0] + " tidaktidak dapatdapat dibukadibuka atauatau dibuatdibuat.");.");}catch(}catch(IOExceptionIOException e) {e) {}catch(}catch(IOExceptionIOException e) {e) {

System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + e);: " + e);}finally {}finally {

if(if(foutfout!=null) {!=null) {if(if(foutfout! null) {! null) {try{ try{ fout.closefout.close();();}catch(}catch(IOExceptionIOException err) { err) { System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + err); }}}}}: " + err); }}}}}

Page 53: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Program Copy Isi File (Byte)Program Copy Isi File (Byte)t *t *import java.io.*;import java.io.*;

public class public class CopyBytesCopyBytes {{pp py ypy ypublic static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException {{

FileInputStreamFileInputStream in = null; in = null; FileOutputStreamFileOutputStream out = null;out = null;try {try {try {try {

in = new in = new FileInputStreamFileInputStream("filesumber.txt");("filesumber.txt");out = new out = new FileOutputStreamFileOutputStream("filetujuan.txt");("filetujuan.txt");intint c;c;

while ((c = while ((c = in.readin.read()) != ()) != --1) {1) {while ((c while ((c in.readin.read()) ! ()) ! 1) {1) {out.writeout.write(c); }(c); }

} finally {} finally {f ( ! ll) {f ( ! ll) {if (in != null) {if (in != null) {

in.closein.close(); }(); }if (out != null) {if (out != null) {

out.closeout.close(); }(); }}}}}}}

Page 54: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

ProsesProses dalamdalam CopyBytes.javaCopyBytes.java

Page 55: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

2. Character Stream2. Character Stream

Page 56: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Class Class TurunanTurunan Character StreamCharacter StreamClassClass

BufferedReaderBufferedReader

BufferedWriteBufferedWrite

CharArrayReaderCharArrayReader

CharArrayWriterCharArrayWriter

InputStreamReaderInputStreamReaderpp

OutputStreamWriterOutputStreamWriter

FileReaderFileReadereReadeeReade

FileWriterFileWriter

PrintWriterPrintWriterPrintWriterPrintWriter

StringReaderStringReader

StringWriterStringWriterStringWriterStringWriter

Page 57: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Method Class ReaderMethod Class ReaderMethodMethod DeskripsiDeskripsi

abstract void close()abstract void close()

void mark(void mark(intint readAheadlimitreadAheadlimit

booleanboolean markSupportedmarkSupported()()

intint read()read()

intint read(char[] read(char[] cbufcbuf))( []( [] ))

abstract abstract intint read(char[] read(char[] cbufcbuf,,

intint off, off, intint lenlen))

void reset()void reset()

long skip(long n)long skip(long n)g p( g )g p( g )

Page 58: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Membaca Input dari Console (Karakter)Membaca Input dari Console (Karakter)t *t *import java.io.*;import java.io.*;

class class CharReaderBeraksiCharReaderBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

char data;char data;String String strstr = ""= ""String String strstr = ;= ;BufferedReaderBufferedReader brbr = new = new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));));

System.out.printlnSystem.out.println("("KetikKetik sejumlahsejumlah karakterkarakter, , akhiriakhiri dg Q");dg Q");data =(char) data =(char) br.readbr.read();();while(data!='Q'){while(data!='Q'){while(data! Q ){while(data! Q ){

strstr += data;+= data;data = (char) data = (char) br.readbr.read();();

}}}}System.out.printlnSystem.out.println("("KarakterKarakter yang yang andaanda ketikketik: " + : " + strstr););

}}}}

Page 59: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Membaca Input dari Console (Baris) Membaca Input dari Console (Baris) --11--t *t *import java.io.*;import java.io.*;

class class LineReaderBeraksiLineReaderBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

String String hasilhasil = "";= "";String String strstrString String strstr;;BufferedReaderBufferedReader brbr = new = new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));));

System.out.printlnSystem.out.println("("KetikKetik sejumlahsejumlah string string dandan akhiriakhiri dengandengan KELUAR");KELUAR");strstr = = br.readLinebr.readLine();();while(!while(!str.equalsstr.equals("KELUAR")){("KELUAR")){while(!while(!str.equalsstr.equals( KELUAR )){( KELUAR )){

hasilhasil += += strstr + '+ '\\n';n';strstr = = br.readLinebr.readLine();();

}}}}System.out.printlnSystem.out.println();();System.out.printlnSystem.out.println("String yang ("String yang andaanda ketikketik: " + : " + hasilhasil););y py p g y gg y g

}}}}

Page 60: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Method Class WriterMethod Class WriterMethodMethod DeskripsiDeskripsi

abstract void close()abstract void close()

abstract void flush()abstract void flush()

void write(char[] void write(char[] cbufcbuf, , intint off, off, intint lenlen))( []( [] ))

void write(void write(intint c)c)

void write(Stringvoid write(String strstr))void write(String void write(String strstr))

void write(String void write(String strstr, , intint off, off, intint lenlen))

Page 61: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MenulisMenulis Output Output keke ConsoleConsoleimport java.io.*;import java.io.*;

llclass class WriterBeraksiWriterBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

PrintWriterPrintWriter pw = new pw = new PrintWriterPrintWriter((System.out,trueSystem.out,true););pw.printlnpw.println("("MenulisMenulis keke console console dengandengan karakterkarakter stream");stream");

}}}}

Page 62: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MenulisMenulis Output Output keke FileFilet *t *import java.io.*;import java.io.*;

class class FileWriterBeraksiFileWriterBeraksi{{public static void main (String[] public static void main (String[] argsargs) {) {

ff l hl h ll ll f lf lif (if (args.lengthargs.length==0){ ==0){ System.out.printlnSystem.out.println("Error: ("Error: tulistulis namanama file!");}file!");}String data; String data; FileWriterFileWriter foutfout=null;=null;BufferedReaderBufferedReader brbr=new =new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));));try{try{

foutfout = new = new FileWriterFileWriter((argsargs[0]);[0]);System.out.printlnSystem.out.println("("KetikKetik data data keke file.Ketikfile.Ketik BERHENTI BERHENTI untukuntuk berhentiberhenti");");data = data = br.readLinebr.readLine();();while(!while(!data.equalsdata.equals("BERHENTI")) {("BERHENTI")) {

fout.writefout.write (data + "(data + "\\rr\\n");n");data = data = br.readLinebr.readLine();}();}

}catch(}catch(FileNotFoundExceptionFileNotFoundException e) {e) {System.out.printlnSystem.out.println("File : " + ("File : " + argsargs[0] + " [0] + " tidaktidak dapatdapat dibukadibuka atauatau dibuatdibuat.");.");y py p gg pp

}catch(}catch(IOExceptionIOException e) {e) {System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + e);: " + e);

}finally {}finally {yyif(if(foutfout!=null) { try{ !=null) { try{ fout.closefout.close();();

}catch(}catch(IOExceptionIOException err) {err) {System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + err); }}}}}: " + err); }}}}}

Page 63: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Program Copy Program Copy IsiIsi File (Character)File (Character)t *t *import java.io.*;import java.io.*;

public class public class CopyCharactersCopyCharacters {{pp pypypublic static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException {{

FileReaderFileReader inputStreaminputStream = null; = null; FileWriterFileWriter outputStreamoutputStream = null;= null;

try {try {inputStreaminputStream = new = new FileReaderFileReader("filesumber.txt");("filesumber.txt");outputStreamoutputStream = new = new FileWriterFileWriter("filetujuan.txt");("filetujuan.txt");intint c;c;while ((c = while ((c = inputStream.readinputStream.read()) != ()) != --1) {1) {while ((c while ((c inputStream.readinputStream.read()) ! ()) ! 1) {1) {

outputStream.writeoutputStream.write(c); }(c); }} finally {} finally {

f (f ( tSttSt ! ll) {! ll) {if (if (inputStreaminputStream != null) {!= null) {inputStream.closeinputStream.close(); }(); }

if (if (outputStreamoutputStream != null) {!= null) {ppoutputStream.closeoutputStream.close();}();}

}}}}}}

Page 64: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Program Copy Program Copy IsiIsi File (Line)File (Line)t *t *import java.io.*;import java.io.*;

public class public class CopyLinesCopyLines {{pp pypypublic static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException {{

BufferedReaderBufferedReader inputStreaminputStream = null; = null; PrintWriterPrintWriter outputStreamoutputStream = null;= null;

try {try {inputStreaminputStream = new = new BufferedReaderBufferedReader(new (new FileReaderFileReader("filesumber.txt"));("filesumber.txt"));outputStreamoutputStream = new = new PrintWriterPrintWriter(new (new FileWriterFileWriter("filetujuan.txt"));("filetujuan.txt"));String l;String l;while ((l = while ((l = inputStream.readLineinputStream.readLine()) != null) {()) != null) {while ((l while ((l inputStream.readLineinputStream.readLine()) ! null) {()) ! null) {

outputStream.printlnoutputStream.println(l); }(l); }} finally {} finally {

f (f ( tSttSt ! ll) {! ll) {if (if (inputStreaminputStream != null) {!= null) {inputStream.closeinputStream.close();}();}

if (if (outputStreamoutputStream != null) {!= null) {ppoutputStream.closeoutputStream.close();}();}

}}}}}}

Page 65: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

OperasiOperasi BerkasBerkas (File)(File)pp ( )( )dengandengan Class FileClass File

Page 66: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Class FileClass File

Class File Class File adalahadalah class yang class yang mendukungmendukunghhberbagaiberbagai operasi yang berhubungan dengan operasi yang berhubungan dengan

berkas (file) berkas (file) dandan direktoridirektori(folder)(folder)dd dd dd PenggunaannyaPenggunaannya misalnyamisalnya untukuntuk menggantimengganti

namanama atauatau membuatmembuat file file atauatau direktoridirektorinamanama atauatau membuatmembuat file file atauatau direktoridirektori KonstruktorKonstruktor class File:class File: File(String File(String namanama)) File(String induk String anak)File(String induk String anak) File(String induk, String anak)File(String induk, String anak) File(File induk, String anak)File(File induk, String anak)

Page 67: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Method Class FileMethod Class FileMethodMethod DeskripsiDeskripsi

abstract void close()abstract void close()abstract void close()abstract void close()

abstract void flush()abstract void flush()

void write(char[]void write(char[] cbufcbuf intint offoff intint lenlen))void write(char[] void write(char[] cbufcbuf, , intint off, off, intint lenlen))

void write(char[] void write(char[] cbufcbuf, , intint off, off, intint lenlen))

id it (St iid it (St i tt ))void write(String void write(String strstr))

void write(String void write(String strstr, , intint off, off, intint lenlen))

Page 68: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MenampilkanMenampilkan AtributAtribut FileFileimport java io *;import java io *;import java.io. ;import java.io. ;public class public class InfoFileInfoFile{{

public static void main(String[] public static void main(String[] argsargs){){BufferedReaderBufferedReader StreamTeksStreamTeks=new =new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader ((System.inSystem.in));));BufferedReaderBufferedReader StreamTeksStreamTeks new new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader ((System.inSystem.in));));System.out.printlnSystem.out.println("("MasukanMasukan namanama file:"); String file:"); String namaBerkasnamaBerkas = "";= "";try {try {namaBerkasnamaBerkas = = StreamTeks.readLineStreamTeks.readLine();();}catch (}catch (IOExceptionIOException ii){}){}ppFile File berkasberkas = new File(= new File(namaBerkasnamaBerkas););if (!if (!berkas.existsberkas.exists()){ ()){ System.out.printlnSystem.out.println("("BerkasBerkas iniini taktak adaada");}");}if (if (berkas.isDirectoryberkas.isDirectory()) ()) System.out.printlnSystem.out.println("("DirektoriDirektori""if (if (berkas.isFileberkas.isFile()) ()) System.out.printlnSystem.out.println("("BerkasBerkas biasabiasa");");if (if (berkas.isHiddenberkas.isHidden()) ()) System.out.printlnSystem.out.println("("TersembunyiTersembunyi");");if (if (berkas.canReadberkas.canRead()) ()) System.out.printlnSystem.out.println("("BisaBisa dibacadibaca");");if (if (berkas.canWriteberkas.canWrite()) ()) System.out.printlnSystem.out.println("("BisaBisa ditulisiditulisi");");if (if (berkas.canReadberkas.canRead()) ()) System.out.printlnSystem.out.println("("BisaBisa dibacadibaca");");if (if (berkas.isAbsoluteberkas.isAbsolute()) ()) System.out.printlnSystem.out.println("path ("path absolutabsolut");");ll ll hh l fl felse else System.out.printlnSystem.out.println("path ("path relatifrelatif");");

System.out.printlnSystem.out.println("("IndukInduk : " + : " + berkas.getParentberkas.getParent());());System.out.printlnSystem.out.println("Path : " + ("Path : " + berkas.getPathberkas.getPath());());S t t i tlS t t i tl ("P th ("P th Ab l tAb l t " " b k tAb l t P thb k tAb l t P th())())System.out.printlnSystem.out.println("Path ("Path AbsolutAbsolut : " + : " + berkas.getAbsolutePathberkas.getAbsolutePath());());System.out.printlnSystem.out.println("("NamaNama : " + : " + berkas.getNameberkas.getName());());System.out.printlnSystem.out.println("("UkuranUkuran : " + : " + berkas.lengthberkas.length() +" byte");}}() +" byte");}}

Page 69: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MenghapusMenghapus FileFilet *t *import java.io.*;import java.io.*;

public class public class HapusFileHapusFile{{public static void main (String[] public static void main (String[] argsargs) {) {p gp g ggString String namaFilenamaFile = "filetujuan.txt";= "filetujuan.txt";try {try {

FileOutputStreamFileOutputStream berkasTemberkasTem = new = new FileOutputStreamFileOutputStream((namaFilenamaFile))FileOutputStreamFileOutputStream berkasTemberkasTem = new = new FileOutputStreamFileOutputStream((namaFilenamaFile););berkasTem.closeberkasTem.close();();

} catch (} catch (IOExceptionIOException ii) {}) {}File File berkasberkas = new File (= new File (namaFilenamaFile););if (if (berkas.existsberkas.exists()) ()) System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " adaada");");else else System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " sudahsudah dihapusdihapus");");else else System.out.printlnSystem.out.println(( BerkasBerkas namaFilenamaFile sudahsudah dihapusdihapus ););

berkas.deleteberkas.delete();();S t t tlS t t tl ("("S t l hS t l h hh ")")System.out.printlnSystem.out.println("("SetelahSetelah penghapusanpenghapusan....");....");

if (if (berkas.existsberkas.exists()) ()) System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " adaada");");y py pelse else System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " sudahsudah dihapusdihapus");");

}}}}

Page 70: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MenggantiMengganti NamaNama FileFile import java.io.*;import java.io.*;

public class public class GantiNamaFileGantiNamaFile {{public class public class GantiNamaFileGantiNamaFile {{public static void main(String[] public static void main(String[] argsargs) {) {

String String namaFilenamaFile = "FileBaru.txt";= "FileBaru.txt";ggtry {try {

FileOutputStreamFileOutputStream berkasTemberkasTem=new =new FileOutputStreamFileOutputStream ((namaFilenamaFile););b k Tb k T l ()l ()berkasTemberkasTem close()close()

}catch (}catch (IOExceptionIOException ii) {}) {}

File File berkasSemulaberkasSemula= new File(= new File(namaFilenamaFile););File File berkasBaruberkasBaru = new File("NamaBaru.txt");= new File("NamaBaru.txt");

berkasSemula.renameToberkasSemula.renameTo((berkasBaruberkasBaru););S t t i tlS t t i tl ("("NN d hd h di tidi ti")")System.out.printlnSystem.out.println("("NamaNama sudahsudah digantidiganti");");

}}}}

Page 71: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MembuatMembuat DirektoriDirektoriimport java.io.*;import java.io.*;

public class public class BuatDirBuatDir {{public static void main(String [] public static void main(String [] argsargs) {) {public static void main(String [] public static void main(String [] argsargs) {) {

l hl hString String namaDirnamaDir = "= "latihanlatihan";";File dir = new File (File dir = new File (namaDirnamaDir););dir.mkdirdir.mkdir();();

}}}}}}

Page 72: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

MengaksesMengakses Data Data NonSekuensialNonSekuensialt *t *import java.io.*;import java.io.*;

public class public class RandomAccessFileBeraksiRandomAccessFileBeraksi{{public static void main(String [] public static void main(String [] argsargs) throws ) throws IOExceptionIOException{{p gp g gg pp

RandomAccessFileRandomAccessFile berkasberkas = new = new RandomAccessFileRandomAccessFile("latihan.txt", "("latihan.txt", "rwrw");");berkas.writeBytesberkas.writeBytes("ABCDEFGHIJKLMNOPQRSTUVW");("ABCDEFGHIJKLMNOPQRSTUVW");char char karkar = ' ‘= ' ‘char char karkar = ;= ;berkas.seekberkas.seek(0); (0); System.out.printlnSystem.out.println("("isiisi berkasberkas: ");: ");while(while(berkas.getFilePointerberkas.getFilePointer() < () < berkas.lengthberkas.length()) {()) {

karkar = (char) = (char) berkas.readByteberkas.readByte(); (); System.out.printSystem.out.print((karkar);});}System.out.printlnSystem.out.println();();

berkas.seekberkas.seek(3); (3); berkas.writeByteberkas.writeByte((((intint)'z');)'z');System.out.printlnSystem.out.println("("SesudahSesudah penggantianpenggantian");");

berkas.seekberkas.seek(0); (0); System.out.printlnSystem.out.println("("isiisi berkasberkas: ");: ");while (while (berkas.getFilePointerberkas.getFilePointer() < () < berkas.lengthberkas.length()) {()) {gg gg

karkar = (char) = (char) berkas.readByteberkas.readByte(); (); System.out.printSystem.out.print((karkar););}}}}}}

Page 73: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Referensi Referensi --11--

Sharon Zakhour et al, Sharon Zakhour et al, The Java Tutorial Fourth The Java Tutorial Fourth EditionEdition http //java sun com/docs/books/tutorial http //java sun com/docs/books/tutorialEditionEdition, http://java.sun.com/docs/books/tutorial, http://java.sun.com/docs/books/tutorial

Deitel & Deitel, Deitel & Deitel, Java How to ProgramJava How to Program Sixth EditionSixth Edition, , P t H ll 2004P t H ll 2004Prentice Hall, 2004Prentice Hall, 2004

Kathy Sierra & Bert Bates, Kathy Sierra & Bert Bates, Head First Java 2nd Head First Java 2nd EditionEdition, O’Reilly, 2005, O’Reilly, 2005

Rogers Cadenhead & Laura Lemay, Rogers Cadenhead & Laura Lemay, Teach Yourself Teach Yourself g d d y,g d d y,Java 6 in 21 DaysJava 6 in 21 Days, Sams Publishing, 2007, Sams Publishing, 2007

Robert Robert LaforeLafore Data Structures and Algorithms in Data Structures and Algorithms in Robert Robert LaforeLafore, , Data Structures and Algorithms in Data Structures and Algorithms in Java Second EditionJava Second Edition, , SamsSams Publishing, 2003 Publishing, 2003

Page 74: OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java Advanced:: Eksepsi, Thread, Java API 4. Java GUI:: Swing, GUI Component, Event Handling

Referensi Referensi --22--

Tim Pengembang JENI, Tim Pengembang JENI, JENI 1JENI 1--66, Depdiknas, , Depdiknas, 2007200720072007

Abdul Kadir, Abdul Kadir, Dasar Pemrograman Java 2Dasar Pemrograman Java 2, Penerbit , Penerbit A d 2004A d 2004Andi, 2004Andi, 2004

Indrajani dan Martin, Indrajani dan Martin, Pemrograman Berbasis Objek Pemrograman Berbasis Objek dengan Javadengan Java, Elex Media Komputindo, 2007, Elex Media Komputindo, 2007

LN LN HarnaningrumHarnaningrum, , AlgoritmaAlgoritma dandan PemrogramanPemrogramangg ,, gg dd ggJavaJava, , GrahaGraha IlmuIlmu, 2009, 2009

RachmadRachmad Hakim & Hakim & SutartoSutarto Mastering JavaMastering Java ElexElex RachmadRachmad Hakim & Hakim & SutartoSutarto, , Mastering JavaMastering Java, , ElexElexMedia Media KomputindoKomputindo, 2009, 2009