• Tidak ada hasil yang ditemukan

HP:

N/A
N/A
Protected

Academic year: 2021

Membagikan "HP:"

Copied!
74
0
0

Teks penuh

(1)

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

romi@romisatriawahono.net

romi@romisatriawahono.net

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:

(2)

Romi Satria Wahono

Romi Satria Wahono

Lahir di Madiun, 2 Oktober 1974

Lahir di Madiun, 2 Oktober 1974

SD Sompok

SD Sompok

Semarang (1987)

Semarang (1987)

SMPN 8

SMPN 8

Semarang (1990)

Semarang (1990)

gg

SMA Taruna Nusantara

SMA Taruna Nusantara

, Magelang (1993)

, Magelang (1993)

S1 S2 dan S3 (on

S1 S2 dan S3 (on leave) dari

leave) dari Department

Department of Computer

of Computer

S1, S2 dan S3 (on

S1, S2 dan S3 (on--leave) dari

leave) dari Department

Department of Computer

of Computer

Sciences,

Sciences,

Saitama University

Saitama University

, Japan (1994

, Japan (1994--2004)

2004)

C

C

t

C

C

t

S ft

S ft

E i

E i

i

i

L

L

i

i

Core Competence:

Core Competence:

Software

Software Engineering

Engineering

, eLearning

, eLearning

System, Knowledge Management

System, Knowledge Management

ll

Founder

Founder dan

dan Koordinator

Koordinator

IlmuKomputer.Com

IlmuKomputer.Com

(3)

Materi

Materi

1.1.

OOP Concepts

OOP Concepts

::

K

p d P di

Obj t

K

p d P di

Obj t O i t d

O i t d

Konsep dan Paradigma Object

Konsep dan Paradigma Object--Oriented

Oriented

2.

2.

Java Fundamentals

Java Fundamentals

::

Memahami Sintaks dan Grammar Bahasa Java

Memahami Sintaks dan Grammar Bahasa Java

33

Java Advanced

Java Advanced

::

3.

3.

Java Advanced

Java Advanced

::

Eksepsi, Thread, Java API

Eksepsi, Thread, Java API

4.

4.

Java GUI

Java GUI

::

Swing, GUI Component, Event Handling

Swing, GUI Component, Event Handling

5.

5.

Java GUI with Netbeans

Java GUI with Netbeans

::

Mengembangkan Aplikasi Berbasis GUI dengan Java

Mengembangkan Aplikasi Berbasis GUI dengan Java

Mengembangkan Aplikasi Berbasis GUI dengan Java

Mengembangkan Aplikasi Berbasis GUI dengan Java

(4)

Materi

Materi Diskusi

Diskusi

PP

Ek

Ek

i

i

1.1.

Penanganan

Penanganan Eksepsi

Eksepsi

22

Thread

Thread dan

dan Multithreading

Multithreading

2.

2.

Thread

Thread dan

dan Multithreading

Multithreading

33

I/O Stream

I/O Stream

3.

3.

I/O Stream

I/O Stream

4.

(5)

Penanganan

Penanganan

Penanganan

Penanganan

Ek

i

Ek

i

Eksepsi

Eksepsi

(6)

Eksepsi

Eksepsi

Eksepsi

Eksepsi adalah

pp

adalah

kondisi

kondisi abnormal

abnormal

yang

yang

y g

y g

terjadi

terjadi pada

pada

saat suatu perintah dieksekusi

saat suatu perintah dieksekusi

K tik

K tik k p i

k p i t j di

t j di p d

p d

tt

th d

th d

Ketika

Ketika eksepsi

eksepsi terjadi

terjadi pada

pada suatu

suatu method,

method,

ada

ada dua pilihan yang dapat dilakukan:

dua pilihan yang dapat dilakukan:

p

p

y g p

y g p

1.1.

Menangani

Menangani sendiri

sendiri

eksepsi

eksepsi

ll

hh

2.

2.

Meneruskannya

Meneruskannya ke

ke luar

luar

(throw)

(throw)

Keyword

Keyword eksepsi

eksepsi

Keyword

Keyword eksepsi

eksepsi::

try, catch, finally,

(7)

Bentuk

Bentuk Penanganan

Penanganan Eksepsi

Eksepsi

try{

try{

// code

// code yg

yg mengakibatkan

mengakibatkan eksepsi

eksepsi

}catch(TipeEksepsi1

}catch(TipeEksepsi1 objekEksepsi

objekEksepsi){

){

// code utk menangani eksepsi yg cocok dg TipeEksepsi1

// code utk menangani eksepsi yg cocok dg TipeEksepsi1

}}

...

...

catch(

catch(TipeeksepsiN

TipeeksepsiN objekEksepsi

objekEksepsi){

){

// 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 dieksekusi

catch dieksekusi

(8)

Hirarki

(9)

3

3 Tipe

Tipe Eksepsi

Eksepsi

11

Eksepsi yang

Eksepsi yang

Tidak Dicek

Tidak Dicek

1.1.

Eksepsi yang

Eksepsi yang

Tidak Dicek

Tidak Dicek

22

Error

Error

2.

2.

Error

Error

33

Eksepsi

Eksepsi yang

yang

D

Dicek

icek

3.

(10)

Tipe

Tipe Eksepsi

Eksepsi Yang

Yang Tidak

Tidak Dicek

Dicek

Semua

Semua eksepsi

eksepsi bertipe

bertipe

RuntimeException

RuntimeException

dan

dan

turunannya

turunannya

tidak

tidak harus

harus secara

secara eksplisit

eksplisit ditangani

ditangani

turunannya

turunannya

tidak

tidak harus

harus secara

secara eksplisit

eksplisit ditangani

ditangani

dalam

dalam program

program

.. Contohnya

Contohnya: :

ArrayIndexOutofBoundException

ArrayIndexOutofBoundException

ArrayIndexOutofBoundException

ArrayIndexOutofBoundException, ,

AritmeticException

AritmeticException, , dsb

dsb

P

d

k

P

d

k

t t d

t t d

t

t

Program dengan eksepsi ini

Program dengan eksepsi ini

tetap dapat

tetap dapat

dikompilasi

dikompilasi

, meskipun ketika dijalankan akan

, meskipun ketika dijalankan akan

ll

mengeluarkan

mengeluarkan

pesan

pesan eksepsi

eksepsi dan

dan eksekusi

eksekusi

berakhir

berakhir

Supaya ekseksi tidak berakhir, bisa

Supaya ekseksi tidak berakhir, bisa menggunakan

menggunakan

blok

blok try

try--catch

catch

blok

(11)

DemoEksepsi.java

DemoEksepsi.java

ll

class

class DemoEksepsi

DemoEksepsi{{

public static void main(String[]

public static void main(String[] args

args){

){

public static void main(String[]

public static void main(String[] args

args){

){

int

int[]

[] arr

arr = new

aa

= new int

int[1];

[1];

;;

System.out.println

System.out.println((arr

arr[1]);

[1]);

}}

}}}}

(12)

Tipe

Tipe Eksepsi

Eksepsi Error

Error

TTipe

ipe eksepsi

eksepsi yang

yang seharusnya

seharusnya

tidak

tidak

TTipe

ipe eksepsi

eksepsi yang

yang seharusnya

seharusnya

tidak

tidak

ditangani dengan blok try

ditangani dengan blok try--catch

g

g

g

g

y

y

catch

karena berhubungan dengan Java

karena berhubungan dengan Java

ti

ti

tt

runtime

runtime system

system

Error

Error merupakan

merupakan eksepsi

eksepsi yang

yang

Error

Error merupakan

merupakan eksepsi

eksepsi yang

yang

sangat

sangat kritis

gg

kritis dan

dan

tidak

tidak perlu

perlu

pp

ditangani

(13)

Tipe

Tipe Eksepsi

Eksepsi Yang

Yang Dicek

Dicek

Semua eksepsi yang

Semua eksepsi yang

bukan turunan

bukan turunan

Semua eksepsi yang

Semua eksepsi yang

bukan turunan

bukan turunan

class

class RuntimeException

RuntimeException

pp

adalah

adalah

eksepsi

eksepsi yang

yang

harus

harus ditangani

ditangani dengan

dengan

bl k

bl k tt

t h

t h

blok

blok try

try--catch

catch

Program

Program

tidak bisa dikompilasi

tidak bisa dikompilasi

Program

Program

tidak bisa dikompilasi

tidak bisa dikompilasi

apabila

(14)

DemoEksepsi2.java

DemoEksepsi2.java

import java.io.*;

import java.io.*;

class DemoEksepsi2{

class DemoEksepsi2{

Public static void main(String[]

Public static void main(String[] args

args){

){

File

File myFile

myFile = new File(“test txt”);

= new File(“test txt”);

File

File myFile

myFile new File( test.txt );

new File( test.txt );

myFile.createNewFile

myFile.createNewFile();

();

}}

(15)

DemoEksepsi3.java

DemoEksepsi3.java

imp 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[] args

args){

){

tt

{{

try

try

{{

File

File myFile

myFile = new File("test.txt");

= new File("test.txt");

l

l

l

l ()

()

myFile.createNewFile

myFile.createNewFile();

();

System.out.println

System.out.println("File

("File berhasil

berhasil dibuat

dibuat");

");

}}

catch

catch

((IOException

IOException e){

e){

ll

ll

ll

System.out.println

System.out.println(“File

(“File gagal

gagal dibuat

dibuat");

");

}}

}}

}}

(16)

Mengapa

Mengapa Eksepsi

Eksepsi Perlu

Perlu Ditangani

Ditangani

Kita

Kita ingin

ingin program

program kita

kita bisa

bisa

memperbaiki

memperbaiki

kesalahan akibat eksepsi

kesalahan akibat eksepsi

dan terus

dan terus

melanjutkan

melanjutkan

kesalahan akibat eksepsi

kesalahan akibat eksepsi

dan terus

dan terus

melanjutkan

melanjutkan

eksekusi

eksekusi

seolah

seolah--olah tidak pernah terjadi eksepsi

olah tidak pernah terjadi eksepsi

f

)

f

)

Pengguna

Pengguna program(software)

program(software) umumnya

umumnya

tidak

tidak peduli

peduli ((mengerti

pp

mengerti)

gg

) bagaimana

bagaimana sebuah

gg

sebuah

program

program dieksekusi

dieksekusi sehingga

sehingga akhirnya

akhirnya

muncul

muncul pesan

pesan kesalahan Kita ingin

kesalahan Kita ingin

pesan

pesan

muncul

muncul pesan

pesan kesalahan. Kita ingin

kesalahan. Kita ingin

pesan

pesan

kesalahan tadi

kesalahan tadi dipahami

dipahami oleh

oleh pengguna

pengguna

K t

K t

t t

t t b

b

l

l dd

Kita

Kita ingin

ingin

program

program tetap

tetap berjalan

berjalan dan

dan

bukannya

(17)

Catch

Catch Bertingkat

Bertingkat

Code yang

Code yang ada

ada dalam

dalam blok

blok try

try bisa

bisa saja

saja

kib tk l bih d i t j i k

i

kib tk l bih d i t j i k

i

mengakibatkan lebih dari satu jenis eksepsi

mengakibatkan lebih dari satu jenis eksepsi

Kita

Kita dapat

dapat menuliskan

menuliskan

lebih

lebih dari

dari satu

satu blok

blok catch

catch

untuk

untuk setiap

setiap blok

blok try

try

Blok catch

Blok catch dengan

dengan tipe

tipe data subclass

data subclass harus

harus

ditulis

ditulis

Blok catch

Blok catch dengan

dengan tipe

tipe data subclass

data subclass harus

harus

ditulis

ditulis

terlebih dahulu

terlebih dahulu

daripada tipe data

daripada tipe data superclass

superclass--nya

nya

E

pti

E

pti adalah

adalah p la

p la da i

da i

Exception

Exception adalah

adalah superclass

superclass dari

dari

ArithmeticException

ArithmeticException dan

dan

A

I d O tOfB

d E

t

A

I d O tOfB

d E

t

hh

ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException sehingga

sehingga

harus

(18)

DemoEksepsi4.java

DemoEksepsi4.java

l D Ek 4{ l D Ek 4{ class DemoEksepsi4{ class DemoEksepsi4{

public static void main(String[]

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

try tryyy{{

int

int x = x = args.lengthargs.length; ; intint y = 100/x;y = 100/x; int

int[] [] arrarr = {0,1,2,3};= {0,1,2,3}; y =

y = arrarr[x][x] y =

y = arrarr[x];[x];

System.out.println

System.out.println("("JumlahJumlah argument: " + y);argument: " + y); System.out.println

System.out.println("("TidakTidak terjaditerjadi eksepsieksepsi");"); }}catch(catch(ArithmeticExceptionArithmeticException e)e){{

System.out.println

System.out.println("("TerjadiTerjadi eksepsieksepsi karenakarena pembagianpembagian dengandengan nolnol“ +“ + e.getMessage

e.getMessage());()); e.getMessage e.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(ThTh blbl )){{

}}catch(catch(ThrowableThrowable e)e){{ System.out.println

System.out.println("("TerjadiTerjadi eksepsieksepsi ygyg tidaktidak diketahuidiketahui");"); }}

System.out.println

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

(19)

DemoEksepsi5.java

DemoEksepsi5.java

l k

{

l k

{

class DemoEksepsi5{

class DemoEksepsi5{

public static void main(String[]

public static void main(String[] args

args){

){

double BILANGAN = 100 0;

double BILANGAN = 100 0;

double BILANGAN 100.0;

double BILANGAN 100.0;

System.out.println

System.out.println("

("Sebelum

Sebelum pembagian

pembagian");

");

for(

for(int

int ii=5;

=5; ii>=0;

>=0; ii--

--){

){

try

try

{{

S t

t

tl

S t

t

tl (BILANGAN "/"

(BILANGAN "/" " ")

" ")

System.out.println

System.out.println(BILANGAN + "/" +

(BILANGAN + "/" + ii + " = ");

+ " = ");

System.out.println

System.out.println(BILANGAN/

(BILANGAN/ii);

);

}}

finally

finally

{{

System.out.println

System.out.println("

("Bagian

Bagian finally

finally dijalankan

dijalankan");

");

}}

}}

S t

t i tl

S t

t i tl ("P

("P

l i

l i")

")

System.out.println

System.out.println("Program

("Program selesai

selesai");

");

}}

(20)

Melontarkan

Melontarkan Eksepsi

Eksepsi (throw)

(throw)

Keyword throw

Keyword throw digunakan

y

y

d

d

digunakan untuk

d g a a

d g a a

untuk

melontarkan

melontarkan eksepsi

eksepsi

B t k

B t k

Bentuk

Bentuk::

throw

throw variabelObjek

variabelObjek;;

throw

(21)

DemoThrow.java

DemoThrow.java

ll

hh

class

class DemoThrow

DemoThrow{{

public static void main(String[]

public static void main(String[] args

args){

){

p

g

p

g

gg

RuntimeException

RuntimeException r = new

r = new

RuntimeException

RuntimeException("

("Eksepsi

Eksepsi RuntimeException

RuntimeException");

");

RuntimeException

RuntimeException(( Eksepsi

Eksepsi RuntimeException

RuntimeException );

);

S t

t pri tl

S t

t pri tl ("

("S b l

S b l

Thr ")

Thr ")

System.out.println

System.out.println("

("Sebelum

Sebelum Throw");

Throw");

throw(r);

throw(r);

}}

(22)

throws

throws untuk

untuk Eksepsi

Eksepsi Method

Method

hh

kk

kk

Keyword throws

Keyword throws digunakan

digunakan untuk

untuk

memberitahu

memberitahu bahwa

bahwa

suatu

suatu method

method ada

ada

kemungkinan

kemungkinan menghasilkan

menghasilkan suatu

suatu eksep

eksep

sisi

Bentuk

Bentuk

Bentuk

Bentuk::

public

public tipe

tipe namaMethod

namaMethod() throws

() throws JenisEksepsi

JenisEksepsi{{

...

...

}}

atau

atau

public

public tipe

tipe namaMethod

namaMethod() throws JenisEksepsi1,

() throws JenisEksepsi1,

JenisEksepsi2, JenisEksepsi3...{

JenisEksepsi2, JenisEksepsi3...{

...

...

}}

(23)

DemoThrows.java

DemoThrows.java

import java.io.*;

import java.io.*;

class

class DemoThrows

DemoThrows{{

public static void main(String[]

public static void main(String[] args

args){

){

class

class SuatuKelas

SuatuKelas{{

public static void main(String[]

public static void main(String[] args

args){

){

SuatuKelas

SuatuKelas objobj = new = new SuatuKelasSuatuKelas();();

obj.metodeA

obj.metodeA();

();

// Method

// Method tanpa

tanpa throws

throws

public void

public void metodeA

metodeA(){

(){

S t

t

tl

S t

t

tl (“

(“M t d A

M t d A”)

”)

obj.metodeB

obj.metodeB();

();

}}

}}

System.out.println

System.out.println(“

(“MetodeA

MetodeA”);

”);

}}

}}

// Method

// Method dengan

dengan throws

throws

public void

public void metodeB

metodeB() throws

() throws

IOException

IOException{{

System.out.println

System.out.println(“

(“MetodeB

MetodeB”);

”);

}}}}

(24)

DemoThrows2.java

DemoThrows2.java

import java.io.*;

import java.io.*;

class

class SuatuKelas

SuatuKelas{{

public class

public class DemoThrows

DemoThrows{{

public static void main(String[]

public static void main(String[] args

args){

){

class

class SuatuKelas

SuatuKelas{{

public void

public void metodeA

metodeA(){

(){

System.out.println

System.out.println("

("MetodeA

MetodeA");

");

public static void main(String[]

public static void main(String[] args

args){

){

SuatuKelas

SuatuKelas obj

obj = new

= new SuatuKelas

SuatuKelas();

();

obj.metodeA

obj.metodeA();

();

}}

bl d

bl d t d B

t d B() th

() th

obj.metodeB

obj.metodeB();

();

}}

}}

public void

public void metodeB

metodeB() throws

() throws

IOException

IOException{{

System.out.println

System.out.println("

("MetodeB

MetodeB");

");

}}

y

p

y

p

dd

;;

}}

}}

(25)

Th

d

Th

d d

d

Thread

Thread dan

dan

Multithreading

Multithreading

(26)

Konsep

Konsep Thread

Thread

Thread

Thread

: : sekumpulan

sekumpulan instruksi

instruksi ((proses

proses) yang

) yang

dieksekusi

dieksekusi secara

secara independen

independen

die se si

die se si se a a

se a a independen

independen

Multithreading

Multithreading

: : suatu

suatu kemampuan

kemampuan yang

yang

memungkinkan

memungkinkan beberapa

beberapa kumpulan

kumpulan instruksi

instruksi

memungkinkan

memungkinkan beberapa

beberapa kumpulan

kumpulan instruksi

instruksi

(proses) dijalankan secara bersamaan (time slicing)

(proses) dijalankan secara bersamaan (time slicing)

dalam

dalam sebuah

sebuah program

program

dalam

dalam sebuah

sebuah program

program

Multithreading

Multithreading bermanfaat

bermanfaat untuk

untuk membuat

membuat

proses

proses

yang interaktif

yang interaktif

misalnya pada program permainan

misalnya pada program permainan

yang interaktif

yang interaktif

, misalnya pada program permainan

, misalnya pada program permainan

(game). Program tetap dapat menggerakkan

(game). Program tetap dapat menggerakkan

beberapa

beberapa objek

objek sambil

sambil memberi

memberi kesempatan

kesempatan

beberapa

beberapa objek

objek sambil

sambil memberi

memberi kesempatan

kesempatan

pengguna

pengguna melakukan

melakukan respon

respon melalui

melalui mouse

mouse atau

atau

keyboard

keyboard

keyboard

keyboard

(27)

Penggunaan

Penggunaan Thread

Thread

1.1.

Membuat

Membuat class yang

class yang mengimplementasi

mengimplementasi

interface

interface Runnable

Runnable dan

dan method run()

method run()

interface

interface Runnable

Runnable dan

dan method run()

method run()

class

class NamaClass

NamaClass implements

implements Runnable

Runnable{{

public void run(){

public void run(){

public void run(){

public void run(){

... }

... }

}}}}

2.

2.

Membuat

Membuat class yang

class yang merupakan

merupakan turunan

turunan class

class

Thread

Thread dan

dan meng

meng--override method run()

override method run()

class

class NamaClass

NamaClass extends Thread {

extends Thread {

public void run(){

public void run(){

... }

... }

}}

(28)

Kiat

Kiat Memilih

Memilih Penggunaan

Penggunaan Thread

Thread

Jika

Jika perlu

perlu meng

meng--override

override beberapa

beberapa method

method

milik

milik class Thread

class Thread

gunakan

gunakan turunan

turunan class

class

milik

milik class Thread

class Thread

gunakan

gunakan turunan

turunan class

class

Thread

Thread

ll

ff

bl

bl

Teknik

Teknik mengimplementasi

mengimplementasi interface

interface Runnable

Runnable

harus

harus digunakan

digunakan, , jika

gg

,, jj

jika kita

kita

membuat

membuat class yang

class yang

y g

y g

merupakan turunan dari class lain

merupakan turunan dari class lain

. Karena

. Karena

java

java

tidak

tidak mengenal

mengenal multiple inheritance

multiple inheritance

teknik

teknik

tidak

tidak mengenal

mengenal multiple inheritance

multiple inheritance

, , teknik

teknik

membuat

membuat turunan

turunan class Thread

class Thread tidak

tidak bisa

bisa

digunakan

digunakan

digunakan

digunakan

(29)

ThreadBeraksi1.java

ThreadBeraksi1.java

class Mobil implements

class Mobil implements aa pp nn RunnableRunnablennanna {{{{ String

String namanama;;

public Mobil(String id){ public Mobil(String id){

nama

nama = id;= id; nama

nama = 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.currentThread

Thread.currentThread().sleep(1000);().sleep(1000); }catch(

}catch(InterruptedExceptionInterruptedException ieie){){ System.out.println

System.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("M

Thread m1 = new Thread(new Mobil("M--1"));1")); Th d 2 Th d( M bil("M

Th d 2 Th d( M bil("M 2"))2")) Thread m2 = new Thread(new Mobil("M

Thread m2 = new Thread(new Mobil("M--2"));2")); m1.start(); m2.start();

m1.start(); m2.start(); }}

(30)

ThreadBeraksi2.java

ThreadBeraksi2.java

class Mobil extends Thread{ class Mobil extends Thread{aa ndnd ad{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("M

Mobil m1 = new Mobil("M--1");1"); M bil 2 M bil("M

M bil 2 M bil("M 2")2") Mobil m2 = new Mobil("M

Mobil m2 = new Mobil("M--2");2"); m1.start(); m2.start();

m1.start(); m2.start(); }}

(31)

Method Class Thread

Method Class Thread

Method

Method DeskripsiDeskripsi

static Thread

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

String getNamegetName()() int

int getPrioritygetPriority()() Boolean

Boolean isAliveisAlive()() void join()

void join() id j i (l

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

(32)

Method

Method isAlive

isAlive()

()

Method

Method isAlive

isAlive()

() digunakan

digunakan untuk

gg

untuk

mengetahui

mengetahui apakah

apakah suatu

suatu thread

thread

ih

ih hid

hid

tt

d h

d h

titi

masih

masih hidup

hidup atau

atau sudah

sudah mati

mati

Method

Method isAlive

isAlive()

() memberikan

memberikan nilai

nilai

Method

Method isAlive

isAlive()

() memberikan

memberikan nilai

nilai

balik

balik

true

true apabila

apabila thread

pp

thread masih

masih

hidup

hidup

dan

dan

false

false apabila

apabila sudah

sudah mati

mati

( t

l

( t

l b l

b l

))

(return value =

(33)

ThreadBeraksi3.java

ThreadBeraksi3.java

Tambahkan

Tambahkan code

code di

di bawah

bawah pada

pada method main

method main pada

pada class

class

ThreadBeraksi2,

ThreadBeraksi2, ubah

ubah class

class menjadi

menjadi ThreadBeraksi3

ThreadBeraksi3

boolean

boolean m1Berakhir = false;

m1Berakhir = false;

boolean

boolean m2Berakhir = false

m2Berakhir = false

boolean

boolean 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.println

System.out.println(“Thread m1

(“Thread m1 berakhir

berakhir”);

”);

System.out.println

System.out.println( Thread m1

( Thread m1 berakhir

berakhir );

);

}}

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

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

m2Berakhir = true;

m2Berakhir = true;

System.out.println

System.out.println(“Thread m2

(“Thread m2 berakhir

berakhir”);

”);

}}

} while (!m1Berakhir || !m2Berakhir);

} while (!m1Berakhir || !m2Berakhir);

(34)

Sinkronisasi

Sinkronisasi

Pada

Pada berapa

berapa kondisi

kondisi, ,

proses

proses secara

secara bersamaan

bersamaan

terkadang

terkadang tidak

tidak memungkinkan

memungkinkan

terkadang

terkadang tidak

tidak memungkinkan

memungkinkan

Contoh

Contoh: : proses

proses I/O stream

I/O stream khususnya

khususnya pada proses

pada proses

membaca dan menulis suatu data atau

membaca dan menulis suatu data atau file

file

membaca dan menulis suatu data atau

membaca dan menulis suatu data atau file

file

Proses

Proses thread

thread pembacaan

pembacaan atau

atau penulisan

penulisan data

data

dd t d k

t d k bb

kk

hh

d t

d t dd f l

f l

menjadi

menjadi tidak

tidak benar

benar karena

karena seharusnya

seharusnya data

data dan

dan file

file

tersebut

tersebut berubah

berubah--ubah

ubah ((

sedang

sedang dibuka

dibuka dan

dan ditulis

ditulis

l h

l h th d l

th d l

))

oleh

oleh thread lain

thread lain

))

Untuk kondisi diatas perlu dilakukan

Untuk kondisi diatas perlu dilakukan

proses

proses

sinkronisasi

sinkronisasi

dengan

dengan menggunakan

menggunakan

keyword

keyword

synchronized

(35)

Cara

Cara Penggunaan

Penggunaan Synchronized

Synchronized

1.1.

Sinkronisasi

Sinkronisasi pada

pada method

method

: : mendeklarasikan

mendeklarasikan

hh

suatu

suatu method

method dengan

dengan menggunakan

menggunakan

keyword synchronized

keyword synchronized

y

y

d y

d y

d

d

S k

d b k

S k

d b k

b hk

b hk

bl k

bl k

2.

2.

Sinkronisasi pada objek

Sinkronisasi pada objek

: menambahkan blok

: menambahkan blok

di

di bawah

bawah pada

pada pemanggilan

pp

pemanggilan objek

p

p

gg

gg

objek

jj

synchronized (

synchronized (objek

objek){

){

...

...

}}

(36)

Sinkronisasi

Sinkronisasi pada

pada M

Method

ethod (ThreadBeraksi4.java)

(ThreadBeraksi4.java)

1.1.

Pada

Pada ThreadBeraksi2.java,

ThreadBeraksi2.java, ubah

ubah run()

run() pada

pada

class 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");}yy p n np n n nn p );}p );} System.out.println("Thread" + nama + ": Posisi " +i);

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

(37)

Sinkronisasi

Sinkronisasi pada

pada method (ThreadBeraksi5.java)

method (ThreadBeraksi5.java)

h

k

h

k

b h

b h

hh

Pada

Pada ThreadBeraksi4.java,

ThreadBeraksi4.java, ubah

ubah method

method

run()

run() pada

pada class Mobil:

class Mobil:

public void run(){

public void run(){

pp

synchronized(this){

synchronized(this){

String

String nama

nama =

= getName

getName();

();

String

String nama

nama getName

getName();

();

SinkronisasiKeluaran.info(

SinkronisasiKeluaran.info(nama

nama);

);

}}}}

(38)

Prioritas

Prioritas Thread

Thread

Method

Method

setPriority

setPriority((int

int level)

level)

dapat

dapat dipanggil

dipanggil

hh

untuk

untuk menentukan

menentukan prioritas

prioritas dari

dari thread

thread

Nilai

Nilai level

level bisa

bisa berupa

berupa bilangan

bilangan bulat

bulat dari

dari

11--10

10

Nilai

Nilai level

level bisa

bisa berupa

berupa bilangan

bilangan bulat

bulat dari

dari

11 10

10

Prioritas

Prioritas

normal

normal

memiliki

memiliki nilai

nilai level

level

55

Perlu

Perlu dicatat

dicatat bahwa

bahwa

tidak

tidak semua

semua sistem

sistem operasi

operasi

mendukung

mendukung operasi

operasi ini

ini

, , sehingga

sehingga kadang

kadang

mend

ng

mend

ng pe asi

pe asi ini

ini

, , sehingga

sehingga adang

adang

pemanggilan

pemanggilan method

method ini

ini tidak

tidak memberikan

memberikan

efek

efek apa

apa apa

apa

efek

(39)

ThreadBeraksi6.java

ThreadBeraksi6.java

class 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 namagg nama = = getNamegetName();gg (); for(

for(intint ii=0; =0; ii<5; <5; ii++){++){

System.out.println

System.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(“M

Mobil m1 = new Mobil(new Mobil(“M--1”));1”)); Mobil m2 = new Mobil(new Mobil(“M

Mobil m2 = new Mobil(new Mobil(“M--2”));2”)); M bi m n w M bi (n w M bi ( M M 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(); }} }}

(40)

I/O Stream

I/O Stream

I/O Stream

I/O Stream

(41)

Apa

Apa Itu

Itu I/O Stream

I/O Stream

Stream adalah

Stream adalah

proses membaca data dari

proses membaca data dari

tt

tt

bb (i

(i

t)

t) tt

suatu

suatu suatu

suatu sumber

sumber (input)

(input) atau

atau

mengirimkan

mengirimkan data

data ke

ke suatu

suatu tujuan

tujuan (output)

(output)

System.out.println

System.out.println()

() adalah

adalah contoh

contoh stream,

stream,

yang

yang berfungsi

berfungsi menampilkan

menampilkan data

data

yang

yang berfungsi

berfungsi menampilkan

menampilkan data

data

((informasi

informasi)

) ke

ke layar

layar

b l

b l

Variabel

Variabel standard stream:

standard stream:

System.in

System.in (default: keyboard)

y

y

n

n d a

(default: keyboard)

d a

y a d)

y a d)

System.out

System.out (default:

(default: layar

layar))

System err (default console)

System err (default console)

(42)

Konsep

(43)

Konsep

(44)

Jenis

Jenis I/O Stream

I/O Stream

1.1.

Byte Stream

Byte Stream

k

l

b

b

k

l

b

b

Untuk menulis atau membaca data biner

Untuk menulis atau membaca data biner

InputStream

InputStream dan

pp

dan OutputStream

OutputStream adalah

pp

adalah dua

dua class

class

abstrak

abstrak tertinggi

tertinggi dari

dari Byte Stream

Byte Stream

2.

2.

Character Stream

Character Stream

Untuk

Untuk menulis

menulis dan

dan membaca

membaca data

data karakter

karakter

((unicode

unicode)

)

Reader

Reader dan

dan Writer

Writer adalah

adalah dua

dua class

class abstrak

abstrak

tertinggi

(45)

1. Byte Stream

1. Byte Stream

(46)

Class

Class Turunan

Turunan Byte Stream

Byte Stream

Class

Class

Deskripsi

Deskripsi

BufferedInputStream

BufferedInputStream

p

p

BufferedOuputStream

BufferedOuputStream

ByteArrayInputStream

ByteArrayInputStream

ByteArrayOuputStream

ByteArrayOuputStream

DataInputStream

DataInputStream

DataOutputStream

DataOutputStream

FileInputStream

FileInputStream

Fil O

S

Fil O

S

FileOutputStream

FileOutputStream

PrintStream

PrintStream

(47)

Method Class

Method Class InputStream

InputStream

Method

Method

Deskripsi

Deskripsi

int

int available()

available()

()

()

void close()

void close()

void mark(

void mark(int

int readLimit

readLimit))

booleanmarkSupported

booleanmarkSupported()

()

int

int read()

read()

int

int read(byte[] b)

read(byte[] b)

int

int read(byte[] b,

read(byte[] b, int

int off,

off, int

int

len

len))

len

len))

void reset()

void reset()

long skip(long n)

long skip(long n)

g

g

p(

p(

g )

g )

(48)

Membaca

Membaca Input

Input dari

dari Console

Console

import java io *;

import java io *;

import java.io. ;

import java.io. ;

class

class InputStreamBeraksi

InputStreamBeraksi{{

class

class InputStreamBeraksi

InputStreamBeraksi{{

public static void main(String[]

public static void main(String[] args

args) throws

) throws IOException

IOException{{

byte[ ] data = new byte[10]

byte[ ] data = new byte[10]

byte[ ] data = new byte[10];

byte[ ] data = new byte[10];

System.out.println

System.out.println("

("Ketik

Ketik 10

10 buah

buah karakter

karakter:");

:");

System in read

System in read(data)

(data)

System.in.read

System.in.read(data);

(data);

S t

t p i tl

S t

t p i tl ("

("K kt

K kt

dd k tik

k tik d l h

d l h ")

")

System.out.println

System.out.println("

("Karakter

Karakter yang

yang anda

anda ketik

ketik adalah

adalah:");

:");

for(

for(int

int ii=0;

=0; ii<<data.length

data.length; ; ii++){

++){

S t

t i t

S t

t i t(( h ) d t [

(( h ) d t [ii])

])

System.out.print

System.out.print((char) data[

((char) data[ii]);

]);

}}

}}}}

}}

(49)

Membaca

Membaca Input

Input dari

dari File

File

import java.io.*; import java.io.*;pp jj ;; 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;

FileInputStream

FileInputStream 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.print

System.out.print((char)data);((char)data); }while(data!=

}while(data!=--1);1); }catch(

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

}catch(FileNotFoundExceptionFileNotFoundException e){e){ System.out.println

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

}catch(IOExceptionIOException e){e){ System out println

System out println("("EkspresiEkspresi tidaktidak diketahuidiketahui " + e) " + e) System.out.println

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

(50)

Method Class

Method Class OutputStream

OutputStream

Method

Method 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(

(51)

Menulis

Menulis Output

Output ke

ke Console

Console

imp rt ja a i *

imp rt ja a i *

import java.io.*;

import java.io.*;

l

l O t tSt

O t tSt

B k i

B k i{{

class

class OutputStreamBeraksi

OutputStreamBeraksi{{

public static void main(String[]

public static void main(String[] args

args) throws

) throws IOException

IOException{{

byte[] data = {'

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

a','b','c','d','e','f','g'};

'};

System.out.write

System.out.write(data,3,4);

(data,3,4);

System.out.write

System.out.write('

('\\n');

n');

System.out.write

System.out.write(data);

(data);

}}

}}

(52)

Menulis

Menulis Output

Output ke

ke File

File

import java.io.*; import java.io.*;pp jj class

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

OutputStream foutfout=null;=null; try{

try{ fout

fout = new = new FileOutputStreamFileOutputStream((argsargs[0]);[0]); System.out.println

System.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.write fout.write(data);(data); data = (byte)

data = (byte)System.in.readSystem.in.read();(); }}}}

}catch(

}catch(FileNotFoundExceptionFileNotFoundException e) {e) { System.out.println

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

}catch(IOExceptionIOException e) {e) { }catch(

}catch(IOExceptionIOException e) {e) { System.out.println

System.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(

(53)

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 y

public static void main(String[]

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

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

int c;c;

while ((c =

while ((c = in.readin.read()) != ()) != --1) {1) { while ((c

while ((c in.readin.read()) ! ()) ! 1) {1) { out.write out.write(c); }(c); } } finally { } finally { f ( ! ll) { f ( ! ll) { if (in != null) { if (in != null) { in.close in.close(); }(); } if (out != null) { if (out != null) { out.close out.close(); }(); } }}} }}}

(54)

Proses

(55)

2. Character Stream

2. Character Stream

(56)

Class

Class Turunan

Turunan Character Stream

Character Stream

Class

Class

BufferedReader

BufferedReader

BufferedWrite

BufferedWrite

CharArrayReader

CharArrayReader

CharArrayWriter

CharArrayWriter

InputStreamReader

InputStreamReader

p

p

OutputStreamWriter

OutputStreamWriter

FileReader

FileReader

eReade

eReade

FileWriter

FileWriter

PrintWriter

PrintWriter

PrintWriter

PrintWriter

StringReader

StringReader

StringWriter

StringWriter

StringWriter

StringWriter

(57)

Method Class Reader

Method Class Reader

Method

Method

Deskripsi

Deskripsi

abstract void close()

abstract void close()

void mark(

void mark(int

int readAheadlimit

readAheadlimit

boolean

boolean markSupported

markSupported()

()

int

int read()

read()

int

int read(char[]

read(char[] cbuf

(

(

[]

[]

cbuf))

))

abstract

abstract int

int read(char[]

read(char[] cbuf

cbuf,,

int

int off,

off, int

int len

len))

void reset()

void reset()

long skip(long n)

long skip(long n)

g

g

p(

p(

g )

g )

(58)

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 = ;= ; BufferedReader

BufferedReader brbr = new = new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));)); System.out.println

System.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 ){ str str += data;+= data; data = (char)

data = (char) br.readbr.read();(); }}}}

System.out.println

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

(59)

Membaca Input dari Console (Baris)

Membaca Input dari Console (Baris) --1

1--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 strstr String String strstr;;

BufferedReader

BufferedReader brbr = new = new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));)); System.out.println

System.out.println("("KetikKetik sejumlahsejumlah string string dandan akhiriakhiri dengandengan KELUAR");KELUAR"); str

str = = br.readLinebr.readLine();(); while(!

while(!str.equalsstr.equals("KELUAR")){("KELUAR")){ while(!

while(!str.equalsstr.equals( KELUAR )){( KELUAR )){ hasil hasil += += strstr + '+ '\\n';n'; str str = = br.readLinebr.readLine();(); }}}} System.out.println System.out.println();(); System.out.println

System.out.println("String yang yy pp ("String yang andag y gg y g anda ketikketik: " + : " + hasilhasil);); }}

(60)

Method Class Writer

Method Class Writer

Method

Method

Deskripsi

Deskripsi

abstract void close()

abstract void close()

abstract void flush()

abstract void flush()

void write(char[]

void write(char[] cbuf

(

(

[]

[]

cbuf, , int

int off,

off, int

int len

len))

))

void write(

void write(int

int c)

c)

void write(String

void write(String str

str))

void write(String

void write(String str

str))

void write(String

(61)

Menulis

Menulis Output

Output ke

ke Console

Console

import java.io.*;

import java.io.*;

ll

class

class WriterBeraksi

WriterBeraksi{{

public static void main(String[]

public static void main(String[] args

args) throws

) throws IOException

IOException{{

PrintWriter

PrintWriter pw = new

pw = new PrintWriter

PrintWriter((System.out,true

System.out,true);

);

pw.println

pw.println("

("Menulis

Menulis ke

ke console

console dengan

dengan karakter

karakter stream");

stream");

}}

(62)

Menulis

Menulis Output

Output ke

ke File

File

t * t * import java.io.*; import java.io.*; class

class FileWriterBeraksiFileWriterBeraksi{{

public static void main (String[]

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

ff ll hh ll ll f lf l if (

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

BufferedReader brbr=new =new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));)); try{

try{ fout

fout = new = new FileWriterFileWriter((argsargs[0]);[0]); System.out.println

System.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.write

fout.write (data + "(data + "\\rr\\n");n"); data =

data = br.readLinebr.readLine();}();} }catch(

}catch(FileNotFoundExceptionFileNotFoundException e) {e) { System.out.println

System.out.println("File : " + yy pp ("File : " + argsargs[0] + " gg [0] + " tidaktidak dapatdapat dibukapp dibuka atauatau dibuatdibuat.");."); }catch(

}catch(IOExceptionIOException e) {e) {

System.out.println

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

}finally {yy if(

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

}catch(IOExceptionIOException err) {err) { System.out.println

Referensi

Dokumen terkait

Seperti permainan harga jual ikan dengan selisih harga jual ikan yang di jual ke tengkulak dan pemodal dengan harga pasar, perbedaan nya tinggi hampir atau bahkan

1) Penyampaian pelajaran menjadi lebih baku, setiap siswa yang melihat atau mendengar penyajian melalui media menerima pesan yang sama. Meskipun guru menafsirkan

Upaya Dinas Pemberdayaan Perempuan, Perlindungan Anak dan Pengendalian Penduduk Daerah Istimewa Yogyakarta; dalam mengembangkan aspek pemasaran meskipun belum maksimal

Jika domain dari pelabelan adalah gabungan himpunan simpul dan busur, maka pelabelannya disebut pelabelan total Jumlah dari semua label yang terkait dengan suatu elemen graf

Metode dengan perluasan data menjadi sejumlah copy-copy data asli yang diatur dengan satu copy data asli dengan kasus kontrol yang dibalik untuk mendapatkan penghitungan yang

Pada MCNP diasumsikan estimator keff tidak bias, bila varian dari estimasi berkurang 1/n , dimana n jumlah siklus maka kombinasi tiga estimator akan efisien, dimana mempunyai

Di bawah ini merupakan halaman pembayaran yang digunakan karyawan untuk melakukan penginputan pembayaran dari penjualan motor dan memasukan data angsuran pembeli ke dalam

Baik tidaknya pembelajaran, berhasil tidaknya pembelajaran dapat diketahui dari penilaian yang dilakukan oleh guru.Dalam pelaksanaan pembelajaran, penilaian tidak