java - ftsi.files. · pdf fileclient-server ­ membuat instans ... ‹architecture...

Post on 01-Feb-2018

237 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java Programming

Achmad Imam Kistijantoro

June, 2000Bandung

Jurusan Teknik Informatika ITB

rev 1.0.5

2

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Content

¬ Dasar-dasar Programming¬ Dasar-dasar Java¬ Sintaks¬ Java & Object Oriented Programming¬ Java API¬ Java Swing¬ JDBC¬ Java Networking

3

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Referensi

¬ Java Language Specification 1.1: by James Gosling , BillJoy, Guy Steele, Addison-Wesley, 1996. ISBN: 0-201-63451-1. http://java.sun•com/docs/books/jls/index.html

¬ Thinking in Java: by Bruce Eckel Prentice Hall, ISBN: 0-136-59723-8 http://www.bruceeckel.com/javabook.html

¬ The Java Virtual Machine Specification, by Tim Lindholm,Frank Yellin, Bill Joy, Kathy Walrath, Addison-Wesley 1996ISBN: 0-201-63452-X,

¬ The Java Tutorial, Sun Microsystem Inc, 2000http://web2.java.sun.com/docs/books/tutorial/

¬ JDK 1.2.2 Documentation, Sun Microsystem Inc.

4

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Dasar-dasar Programming

5

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Programming

¬ Program:­ The instructions executed by a computer

¬ Algorithm:­ A detailed sequence of actions to perform to accomplish some task.

Named after an Iranian mathematician, Al-Khawarizmi.­ Sifat:

• must reach a result after a finite number of steps­ contoh: euclid algorithm

GCD(m,n : integer){ m>=n }1. If m==n then GCD is m else r=m%n.2. if r==0 then GCD is n else m=n; n=r; go to step 1;

6

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Definition from the Jargon file :-)

¬ Program­ A magic spell cast over a computer allowing it to turn one's input into error

messages.­ An exercise in experimental epistemology.­ A form of art, ostensibly intended for the instruction of computers, which is

nevertheless almost inevitably a failure if other programmers can'tunderstand it.

¬ programming­ The art of debugging a blank sheet of paper (or, in these days of on-line

editing, the art of debugging an empty file). "Bloody instructions which,being taught, return to plague their inventor” ("Macbeth", Act 1, Scene 7)

­ A pastime similar to banging one's head against a wall, but with feweropportunities for reward.

­ The most fun you can have with your clothes on

7

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Abstraksi Mesin von Neumann

¬ stored programming concept¬ Logical components of a computer

CU

Input Output

Memory

ALU

8

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Proses pembuatan program

¬ editing¬ compiling¬ linking¬ executing¬ debugging

9

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Software Quality

¬ Correctness¬ Robustness¬ Extendibility¬ Reusability¬ Compatibility¬ Efficiency¬ Portability¬ Ease of use¬ Functionality

10

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Konsep pemrograman

¬ procedural¬ data hiding/modular¬ data abstraction¬ object oriented programming

11

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Pengantar konsep pemrograman

¬ Procedural Programming:­ pendefinisian langkah-langkah yang harus dieksekusi secara

sekuensial, contoh: resep masakan­ tentukan prosedur-prosedur yang diperlukan, gunakan algoritma

terbaik untuk mengimplementasikan masing-masing prosedurtersebut

­ contoh: program copy file• baca nama file yang akan di-copy (source)• buka file dengan nama tersebut• baca nama file tujuan (dest)• buka file dengan nama tujuan• baca isi file source• tulis isi ke file dest• tutup file source & dest

12

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Pengantar konsep pemrograman

¬ Konsep data hiding - modular programming­ pada pemrograman skala besar, sebuah data yang diakses oleh

banyak kode dapat menyulitkan perubahan program. Sedikitperubahan struktur data dapat mengakibatkan perubahan dibanyak tempat

­ tentukan modul-modul yang diperlukan. partisi program sehinggadata tersembunyi dibalik modul-modul tersebut

13

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Pengantar konsep pemrograman

¬ Konsep data abstraction­ pendefinisian tipe dan operasi yang dapat dilakukan terhadap tipe

tersebut.­ reusability­ safe-type programming

14

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Dasar dasar Java: Object Oriented Programming

¬ Object Oriented Programming­ diharapkan dapat: mempercepat pengembangan, meningkatkan

kualitas software, mempermudah pemeliharaan software,memudahkan perubahan

­ mendefinisikan kelas-kelas yang merepresentasikanpermasalahan pada dunia nyata

­ mendefinisikan operasi yang disediakan untuk setiap kelas­ mengelompokkan kesamaan dengan hubungan inheritance atau

client-server­ membuat instans dari kelas (objek) dan mengatur interaksi antar

objek-objek

15

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Dasar-dasar Java

16

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Dasar-dasar Java

¬ Java:­ Java Language (current version: Java Language Spec. 2)­ Java Platform (J2SE, J2EE, J2ME)

¬ Java Language­ streamlined C++­ object oriented­ interpreted/bytecode

¬ Platform­ Java Virtual Machine­ Java API

17

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Dasar-dasar Java: Design goal

¬ Simple and Familiar­ Java dirancang untuk menghasilkan bug-free code­ Menggunakan sintaks serupa C/C++, dengan menghilangkan bagian-

bagian yang membingungkan: #define, pointer, typedef, struct, union,enum, multiple inheritance, goto, operator overloading, automatic coersion

¬ Object Oriented­ menyediakan fasilitas untuk data abstraction, behaviour sharing, evolution

& correctness­ pendefinisian kelas, instansiasi objek, inheritance, exception handling

¬ Robust and Safe­ dirancang agar aman dieksekusi via network­ strong typing, no direct access to memory, good exception handling

mechanism

18

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java design goal (2)

¬ Architecture Neutral and Portable¬ High Performance

­ Just In-Time compiler

¬ Interpreted­ Java bytecode

¬ Multi-threaded­ support multi-threaded application

¬ Dynamic­ tidak ada proses linking code secara eksplisit­ definisi kelas baru dapat ditambahkan pada saat run-time­ kelas di-load pada saat dibutuhkan

19

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java design goal (3)

¬ Platform independent­ Catatan: Java disebut sebagai platform independent, karena Java

sendiri adalah sebuah platform yang berjalan di atas platformlainnya

­ platform:• a specific computer hardware• a specific combination of hardware and operating system

and/or compiler• a support software for a particular activity.

¬ Automatic garbage collection­ Programmer tidak perlu melakukan dealokasi memory secara

eksplisit

20

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Dasar-dasar Java

¬ Program Java sederhana:class HelloWorld {

static public void main(String args[]) { System.out.println("Hello world!");

}

}

¬ Kelas HelloWorld dengan sebuah method bernama main¬ Method main :

­ memiliki sebuah parameter bertipe String array­ memiliki public modifier­ static modifier

main: titik awal program

21

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Perbandingan Java & C++

¬ Java­ design goal:­ automatic garbage collection­ streamlined C++, dengan menghilangkan feature: #define, typedef, struct,

union, enum, multiple inheritance, goto, operator overloading, automaticcoersion

­ menyediakan fasilitas interface

¬ C++­ design goal:­ explicit garbage collection­ macro definition menggunakan #define­ pendefinisian tipe baru: typedef, struct, union, enum­ mendukung multiple inheritance­ fasilitas kontrol eksekusi: goto­ mekanisme operator overloading­ fasilitas automatic coersion

22

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Arsitektur Java

Compiler

Java program

Java byte-code

Interpreter

Sistem Komputer

Java Virtual Machine

Java API

Program Java

23

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java & Internet

¬ Aplikasi Java dapat dijalankan secara stand-alone, atausebagai applet (dieksekusi melalui web browser)

¬ Applet: program yang dapat dijalankan oleh browser

Java sourceimport java.applet.Applet;import java.awt.Graphics;

public class HelloWorldextends Applet { public void paint(Graphics g) { g.drawString("Hello world!",

50, 25); }}

HTML<HTML> <HEAD> <TITLE> A Simple Program </TITLE> </HEAD><BODY>Here is the output of my program: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET></BODY></HTML>

24

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Applet vs. Stand-alone

¬ Program’s entry:­ stand-alone: main­ applet: init & start

¬ Akses terbatas:­ library­ resources

25

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java flavor

¬ Java Development Kit (JDK)¬ Java Runtime Environment

(JRE)¬ Java Standard Edition¬ Java Enterprise Edition¬ Java Micro Edition¬ Java Servlet¬ Java Server Pages

¬ Java Beans¬ Enterprise Java Beans¬ Java OS¬ Javascript¬ JavaCard

26

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Sintaks Java

27

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Struktur dasar pemrograman prosedural

¬ Pendefinisian data: primitif, terstruktur¬ alur kontrol:

­ analisa kasus/kondisi• if-else• switch

­ iterasi/pengulangan• for-loop• while-loop• do-while-loop

¬ struktur program­ prosedur­ fungsi

28

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

statement & expression

¬ statement: satuan kalimat program, diakhiri dengan;

­ contoh: x = x + 5;

¬ expression: ekspresi, menghasilkan nilai dengantipe tertentu

­ contoh: x + 5, a > b

¬ block-statement:­ beberapa statement dapat digabung menjadi sebuah block, dengan diawali

oleh { dan diakhiri oleh }­ contoh:

{ tmp = a; a = b; b = tmp; }

¬ standar penulisan sintaks:­ [ text ]: bagian yang berada dalam [ ] bersifat optional­ italicized_text: bagian yang berhuruf italic dapat digantikandengan teks yang sesuai

29

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Komentar

¬Komentar: tidak dieksekusi, digunakanuntuk penjelasan

¬ sintaks:// komentar baris/* komentar block */

¬ contoh:class Count { public static void main (String args[]) { /* bagian ini komentar */ int i; // ini juga komentar for (i = 0; i < 50; i=i+1) { System.out.println(i); } }}

30

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Pendefinisian data: type & variable

¬ program: algoritma + struktur data¬ pendefinisian data: tipe dan variable¬ tipe: mendefinisikan jenis suatu variabel: kumpulan nilai yang

valid untuk suatu variabel dan operasi yang dapat dilakukanterhadap variabel tersebut.

¬ Type pada Java : primitif & reference¬ primitif:

­ numerik: byte (8 bit), short (16 bit), integer (32 bit), long (64 bit), float 32 bitfloating point/real number), double (64 bit floating point)

­ char­ boolean

¬ reference:­ string, user-defined class

31

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Pendefinisian data: tipe & variabel

¬ variabel harus dideklarasikan dan dialokasikan dahulusebelum digunakan

¬ deklarasi: menyatakan tipe variabel tersebut.¬ alokasi: pengadaan area memori untuk menampung nilai

variabel¬ contoh (Java):

int X; // variabel dengan nama X, bertipe integerchar myvarChar; // variabel dengan nama myvarCharString str; // variabel dengan nama str

¬ variabel bertipe non primitif harus alokasi eksplisit:String str;str = new String(“my string”);str = “str 2”; // khusus tipe string, operasi = otomatis alokasi

32

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Tipe primitif & reference

¬ Primitif:­ tipe dasar seperti char, int, long, byte, float, double­ memori untuk variabel tipe primitif dialokasikan pada saat variabel

tersebut dideklarasikan­ operasi assignment pada variabel primitif menghasilkan

pengkopian nilai

¬ Reference:­ mempunyai semantik serupa dengan pointer pada C/C++­ memori untuk variabel tipe reference tidak dialokasikan pada saat

deklarasi, alokasi dilakukan eksplisit dengan operator new­ operasi assignment pada variabel reference menghasilkan

pengkopian reference (tetap mengacu pada object yang sama

33

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Perbedaan tipe primitif & reference

class Value { int val; }class Test { public static void main(String[] args) { int i1 = 3; int i2 = i1; // i1 & i2 variabel berbeda dengan nilai sama i2 = 4; System.out.print("i1==" + i1); System.out.println(" but i2==" + i2); Value v1 = new Value(); v1.val = 5; Value v2 = v1; // v1 & v2 mengacu ke variabel yg sama v2.val = 6; System.out.print("v1.val==" + v1.val); System.out.println(" and v2.val==" + v2.val); }}

34

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Struktur

¬ Membentuk tipe data baru yang terdiri atas beberapatipe lainnyaclass Mahasiswa { String nama;

int umur; String alamat;

}

35

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

if-else statement

¬eksekusi jika kondisi tertentu terpenuhi¬ sintaks:

if ( condition-expression ) statement-block[else] statement-block

¬Contoh:class Hello { public static void main (String args[]) { int x = 10; if ( x > 0 ) { System.out.println(”x is a positive number"); } else System.out.println(“x is a negative number”); }}

36

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

switch statement

¬ analisa kasus lebih dari 1 kondisi¬ sintaks:

switch ( variabel ) { case val1 : Statement-block; break; case val2 : Statement-block; break; ... [default : Statement-block;]}

¬ catatan:­ variabel harus bertipe char, byte, short, atau int­ default: eksekusi yang harus dijalankan jika tidak ada value yg

dipenuhi variabel tersebut

37

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

switch statement - contoh

class SwitchTest { public static void main(String[] args) {

int k = 1; switch (k) {

case 1: System.out.print(”1"); break; case 2: System.out.print(”2"); break;

case 3: System.out.println(”3"); break; }

}}

¬ Apakah yang terjadi jika break dihilangkan?

38

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Pengulangan for-loop

¬ sintaks:for ( init-stmt ; cond-exp ; inc-stmt )statement-block

¬Contoh:class Count { public static void main (String args[]) { int i; for (i = 0; i < 50; i=i+1) { System.out.println(i); } }}

39

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

while statement

class Count { public static void main (String args[]) {

int i = 0; while(i < 50) {

System.out.println(i); i=i+1;

} }

}

40

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

do-while

class Count { public static void main (String args[]) {

int i = 0; do {

System.out.println(i); i=i+1;

} while(i<50); }

}

¬ Apakah perbedaannya dengan versi sebelumnya?

41

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Struktur program: prosedur & fungsi

¬ sekumpulan instruksi yang dapat dipanggil dengan satuperintah

¬ contoh pemanggilan prosedur/fungsi:System.out.println(“x”);// prosedur untuk menampilkan teks x ke layar

¬ Sintaks:tipe nama-fungsi ( parameter-list ) { statement; ... statement;}

¬ tipe: tipe nilai yang dikembalikan suatu fungsi

42

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Command line argument & array

class printArgs { public static void main (String args[]) {

for (int i = 0; i < args.length; i++) { System.out.println(“arg[“+i+”]”+args[i]); } }

}

¬ Array: kumpulan variabel dengan tipe sama­contoh: String args[]­ args adalah array of String, diakses dengan cara:­ args[0], args[1], args[2] dst.,

43

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Operator pada Java

+,-,/,* arithmetics operators += add and assign numbers-= subtract and assign*= multiply and assign/= divide and assign | bitwise OR |= bitwise OR and assign ^ bitwise XOR ^= bitwise XOR and assign & bitwise AND &= bitwise AND and assign% take remainder %= take remainder and assign > greater than >= greater than or equal to< less than <= less than or equal to

! boolean NOT != not equal to ++ increment by one -- decrement by one >> shift bits right >>= shift bits right and assign << shift bits left <<= shift bits left and assign >>> unsigned bit shift right >>>= unsigned bit shift right and

assign && boolean AND || boolean OR == boolean equals = assignment ~ bitwise NOT ? : conditional

44

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Keyword pada Java

abstract declares that a class ormethod is abstract

boolean declares a boolean variable orreturn type

break prematurely exits a loopbyte declares a byte variable or return

typecase one case in a switch statementcatch handle an exceptionchar declares a character variable or

return typeclass signals the beginning of a class

definitioncontinue prematurely return to the

beginning of a loopdefault default action for a switch

statement

do begins a do while loopdouble declares a double variable or

return typeelse signals the code to be executed if

an if statement is not trueextends specifies the class which this

class is a subclass offinal declares that a class may not be

subclassed or that a field or methodmay not be overridden

finally declares a block of codeguaranteed to be executed

float declares a floating point variableor return type

for begins a for loopif execute statements if the condition is

true

45

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Keyword pada Java (2)

implements declares that this classimplements the given interface

import permit access to a class orgroup of classes in a package

instanceof tests whether an object isan instanceof a class

int declares an integer variable orreturn type

interface signals the beginning of aninterface definition

long declares a long integer variable orreturn type

native declares that a method isimplemented in native code

new allocates a new objectpackage defines the package in which

this source code file belongs

private declares a method or membervariable to be private

protected declares a class, method ormember variable to be protected

public declares a class, method ormember variable to be public

return returns a value from a methodshort declares a short integer variable

or return typestatic declares that a field or a method

belongs to a class rather than anobject

super a reference to the parent of thecurrent object

switch tests for the truth of variouspossible cases

46

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Keyword pada Java (3)

synchronized Indicates that a sectionof code is not thread-safe

this a reference to the current objectthrow throw an exceptionthrows declares the exceptions thrown

by a methodtransient This field should not be

serializedtry attempt an operation that may throw

an exceptionvoid declare that a method does not

return a valuevolatile Warns the compiler that a

variable changes asynchronouslywhile begins a while loop

47

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Arithmetics operation

¬ operators: +, -, *, /, %, +=, -=, *=, /=¬ precedence:

­ *, /, %­ +, -­ =

¬ special results:­ NaN (not a number)­ negative Infinity, positive Infinity

¬ 1.0e+308*10==Infinity¬ 0.0/0.0 = NaN

48

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Konversi String ke bilangan

int x = Integer.parseInt(“2”);long l = Long.parseLong(“2L”);double d = Double.parseDouble(“2.0”);float f = Float.parseFloat(“2.0f”);

String ival = Integer.toString (2);

String lval = Long.toString(2L);String dval = Double.toString(2.0);String fval = Float.toString(2.0f);

49

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Data type

¬ char: ‘a’, ‘b’, ‘A’, ‘B’, dst.¬ special char:

­ ‘\b’ backspace­ ‘\t’ tab­ ‘\n’ linefeed­ ‘\f’ formfeed­ ‘\r’ carriage return­ ‘\”’ double quote, "­ ‘\’’ single quote, '­ ‘\\’ backslash, \­ \uxxxx Unicode character (xxxx: bilangan hexadesimal)

50

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

String

51

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

operator ? :

¬ operator <expression>?<expr1>:<expr2> mengembalikan nilaiexpr1 jika expression true dan expr2 jika false.

¬ contoh:max = (a>b)?a:b

sama dengan:if(a>b) max = a;else max = b;

52

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

break & continue

¬ break: keluar dari current block¬ continue: lompat ke awal current block (dalam loop)

53

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Array

¬array: kumpulan variabel dengan tipesejenis

¬ contoh:int[] x;int x[];int[] x[];

¬ inisialisasix = new int[5];int[] x = { 1, 2, 3 };int[][] x = { {1, 2}, {2, 3}, {3, 4}};

¬ copy data arraySystem.arraycopy(Object src_arr, int src_pos,

Object dst_arr, int dst_pos, int len)

54

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java & Object Oriented Programming

55

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Object Programming pada Java

¬ Object¬ Kelas¬ Exception¬ Interface¬ Inheritance¬ Package

56

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh Kasus

¬ Program pengolahan data akademik­ menyimpan data mahasiswa, dosen, karyawan, nilai, matakuliah dsb.­ perlu struktur data/tipe data untuk representasi mahasiswa, dosen,

karyawan, jurusan, dsb.

¬ contoh: tipe mahasiswaclass Mahasiswa { String nama; String alamat; String nim; String jurusan;}

¬ class: definisi tipe baru¬ variabel (instans) untuk tipe ini disebut object

57

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh kasus

¬mendefinisikan object:Mahasiswa mhs1;mhs1 = new Mahasiswa();

¬Deklarasi object (variabel) tipe referencetidak membuat object. Object dibuatdengan perintah new ClassName()

¬ contoh:public class MahasiswaTest { public static void main(String args[]) { Mahasiswa mhs = new Mahasiswa(); mhs.nama = “Amir”; mhs.alamat = “Dago”; mhs.jurusan = “Informatika”; System.out.println(“nama: ”+mhs.nama); System.out.println(“alamat: ”+mhs.alamat); }}

58

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Class method

¬ class method: operasi yang disediakanoleh suatu class

¬ contoh:class Mahasiswa { String nama; String alamat; String nim; String jurusan;

String getNama() { return nama; }

void setNama(String nm) { nama = nm; }}

59

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Class method

public class MahasiswaTest { public static void main(String args[]) {

Mahasiswa mhs = new Mahasiswa(); mhs.setNama(“Amir”);

System.out.println(“nama: ”+mhs.getNama()); }

}

¬ Dibandingkan cara sebelumnya, manakah yg lebih baik ?

60

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Method parameter

¬ deskripsi suatu method dengan parameter danreturn value disebut sebagai method signature

¬ sintaks:[modifier] result-type method-name ( parameterList )[throws-decl]method-body

¬ modifier:­ public, protected, private­ abstract, static, final, synchronized, native

¬ Result type­ void: no result­ typename (primitive or class name)

¬ Parameter list:­ typename param1-name, typename param2-name ...

61

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Method parameter

class Mahasiswa { String nama; String alamat; String nim; String jurusan;

public String getNama() { return nama; }

public void setNama(String nm) { nama = nm; }}

62

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

OO Programming

¬ Objek: satuan unit, memiliki state & behavior¬ Kelas: definisi statik dari objek, menyatakan type objek¬ Objek adalah instance dari suatu Kelas

Class C

Variable(state)

deklarasi variabel

Method(behaviour)

deklarasi methoddefinisi method

objek oA

objek oB

objek oC

instansiasikelas C

instansiasikelas C

instansiasikelas C

63

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Kelas (class)

¬ definisi internal data, internal method, atribut & behaviour dariobject

¬ Enkapsulasi: membungkus data internal dengan menyediakaninterface untuk akses data internal

¬ sintaks pendefinisian kelas:

public class myClass { public myClass() { // konstruktor } // definisi method & atribut private int myVariable; public void methodA() { }}

64

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Konstruktor

¬method khusus yg digunakan untukmembuat object

¬memiliki nama sama dengan nama class¬ contoh:

class Mahasiswa { String nama; String alamat; String nim; String jurusan; public Mahasiswa() { } public Mahasiswa(String nm) { nama = nm; }}

65

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Konstruktor

public class MahasiswaTest { public static void main(String args[]) {

Mahasiswa mhs = new Mahasiswa(“Amir”); System.out.println(“nama: ”+mhs.getNama());

}}

66

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mekanisme Enkapsulasi

¬ Java menyediakan mekanisme pendefinisianscope member variable/method dari sebuah classdengan mekanisme:

­ private­ protected­ public

¬ private:­ variable/method hanya dapat diakses oleh kelas itu sendiri

¬ protected:­ variable/method dapat diakses oleh semua kelas turunan­ variabel tidak dapat diakses dalam pola use, bukan sebagai inheritance

(lihat contoh Point pada bagian package (slide no. 23)

¬ public:­ variable/method dapat diakses oleh semua kelas

67

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

method & attribute access modifier

¬ access modifier: menentukan apakah method/atributtersebut dapat dipanggil oleh kelas lain

­ private: hanya dapat diakses dari object itu sendiri­ protected: hanya dapat diakses object lain yang diturunkan dari

kelas object tersebut (akan diterangkan kemudian)­ public: dapat diakses oleh object lain­ default: hanya dapat diakses oleh object yang berada dalam satu

kelas

68

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh public

// contoh public variable// file name: Point.java

class Point { public int x, y;}----------------------------------------------//file name: Test.java

public class Test { public static void main(String[] args) { Point p = new Point(); System.out.println(p.x + " " + p.y); }}

69

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh private:

// file name: Point.javapublic class Point { private int x, y; public int getX() { return x; } public int getY() { return y; }}----------------------------------------------

// file name: Test.javaclass Test { public static void main(String[] args) { Point p = new Point(); System.out.println(p.x + " " + p.y); // error !, karenaprotected

System.out.println(p.getX()+ “ “+ p.getY() ); }}

70

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

reference this

¬Pada Java, this adalah reference ygmengacu ke object itu sendiri. Contoh:// file name: Point.javapublic class Point { private int x, y; public int getX() { return this.x; } public int getY() { return this.y; }}

¬ sama dengan:// file name: Point.javapublic class Point { private int x, y; public int getX() { return this.x; } public int getY() { return this.y; }}

71

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

static dan alokasi memori

¬ atribut dan method hanya dapat diakses jika object telahdibuat

­ contoh:Mahasiswa mhs;System.out.println(mhs.getNama()); // errormhs = new Mahasiswa(“Amir”);System.out.println(mhs.getNama());

¬ atribut & method static dapat diakses tanpa melaluiobject

¬ static: alokasi statis, hanya ada satu instans dalamseluruh program

72

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh:

class Mahasiswa { static int jumlah; String nama; String alamat; String nim; String jurusan; public Mahasiswa() { } public Mahasiswa(String nm) { nama = nm; jumlah = jumlah+1; }

public static int getJumlah() { return jumlah; }}

73

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh static:

public class StaticTest { public static void main(String args[]) {

Mahasiswa mhs1 = new Mahasiswa(); System.out.println(“Jumlah:”+Mahasiswa.getJumlah());

Mahasiswa mhs2 = new Mahasiswa(); System.out.println(“Jumlah:”+Mahasiswa.getJumlah());

}}

74

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interaksi antar object

¬ Program pada OO: membuat object-object danmengatur interaksi antar object

¬ Relasi antar object:­ has-a­ is-a­ reference

¬ Has-a: suatu object dicakup oleh object lainnya¬ Is-a: suatu object adalah instans dari kelas yg diturunkan

dari kelas object lainnya¬ Reference: 2 buah object atau lebih saling menyimpan

reference lainnya

75

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance

¬ Inheritance: menyatakan pewarisan dari satu kelas ke kelaslainnya.

¬ Inheritance dituliskan dengan menggunakan keyword extends¬ Java hanya mendukung single inheritance

ColoredPointColor color

setColor()

Pointint xint y

Move()

76

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance

public class Point { int x = 1, y = 1; void move(int dx, int dy) { x += dx; y += dy; }}

public class ColoredPoint extends Point { private int color; void setColor(int clr) { color = clr }; int getColor();}

¬Class Point disebut sebagai parent,superclass

¬Class ColoredPoint disebut sebagai child,subclass

77

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance

¬ Contoh:­ Buat buku alamat yang dapat menyimpan data alamat

mahasiswa, dosen dan lembaga. Untuk data mahasiswa, bukutersebut menyimpan informasi nama, nim, alamat, jurusan,angkatan, sedangkan untuk dosen buku tersebut menyimpaninformasi nama, nip, alamat, jurusan, ruang

­ Buat buku informasi kendaraan, yang menyimpan data motor danmobil. Motor memiliki atribut: merek, model, tahun, cc, dan mobilmemiliki atribut merek, model, tahun, cc, jumlah pintu dst.

78

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance - kelakuan konstruktor

¬ Pada Java, konstruktor base class selalu dipanggilpada saat pemanggilan konstruktor anak.

class Bapak { Bapak() { System.out.println("Konstruktor Bapak"); }}class Anak extends Bapak { Anak() { System.out.println("Konstruktor Anak"); }}public class TestKonstruktor extends Anak { TestKonstruktor() { System.out.println("Konstruktor TestKonstruktor"); } public static void main(String[] args) { TestKonstruktor x = new TestKonstruktor(); }}

79

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance - Kelakuan konstruktor

¬ Konstruktor dengan parameter tidak otomatis memanggilkonstruktor base class dengan parameter yang sama

class Bapak { Bapak() { System.out.println("Konstruktor Bapak"); } Bapak(int x) { System.out.println(“Konstruktor Bapak dengan parameter”); }}class Anak extends Bapak { Anak() { System.out.println("Konstruktor Anak"); } Anak(int x) { System.out.println(“Konstruktor Anak dengan parameter”)}; } public static void main(String[] args) { Anak x = new Anak(5); }}

80

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance - mekanisme protected

¬ protected: modifier untuk mendefinisikan scope pada kelasdan turunannya

¬ atribut & method yang dinyatakan sebagai protected hanyadapat diakses oleh objek yang berasal dari satu kelas atausubclass dari kelas tersebut

class Bapak { protected int a, b;}

class Anak extends Bapak { void ubahProtected() { a = 15; // boleh, karena Anak diturunkan dari Bapak }}

81

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh protected

public class Point { protected int x, y;}

public class Point3D { protected int z; public void move(int dx, int dy, int dz) { x = x+dx; y = y+dy; z = z+dz; // ok, karena diakses oleh

kelas turunan }}

class Test { public static void main(String[] args) { Point3D p = new Point3D(); p.x = 4; p.y = 3; p.z = 2; // error !, karena protected p.move(1,2,3); }}

82

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Exception

¬Penanganan kesalahan pada javamenggunakan mekanisme exceptiontry { statement} catch (tipe exception name){ statement} catch (tipeexception name) { statement} . .} finally { statement}

83

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh:

public class ExceptionTest { public static void main(String args[]) { ExceptionTest test = new ExceptionTest(); try { test.getError();

System.out.println(“Tidak ada error”); } catch (Exception e) { System.out.println( e ); } }

public void getError() throws Exception { throw new Exception(“Error!”); }}

84

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance - final class

¬ class dapat memiliki modifier final, yangberarti class tersebut tidak dapatditurunkan lagi menjadi class baru

final class finalClass { finalClass() { } void methodA() { }}

class classBaru extends finalClass { // error

}

85

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Inheritance - final method

¬ final pada sebuah method: menyatakanmethod tersebut tidak dapat di redefinepada class anak

class Bapak { Bapak() { } final void finalMethod() { }}

class classBaru extends Bapak { void finalMethod() { // error }}

86

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Package

¬ package adalah mekanisme untuk pengelompokan kelas-kelas ke dalam sebuah modul pada Java

¬ package didefinisikan dengan menambahkan baris:­ package <nama package>

pada awal file¬ Kelas yang berasal dari suatu package diakses dengan

menggunakan nama package dan nama kelas.­ contoh: points.Point (kelas Point yang terdapat pada package points)

¬ Kelas yang berasal dari suatu package dapat diakseslangsung dengan menggunakan nama kelas dengan caramenggunakan import.

87

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Package - contoh

// file Point.javapackage points;public class Point { protected int x, y;}---------------------------------------// file: Test.javaclass Test { public static void main(String[] args) { points.Point p = new points.Point(); p.x = 4; p.y = 3; p.z = 2; p.move(1,2,3); }}--------------------------------------// file: Test2.javaimport points;class Test2 { public static void main(String[] args) { Point p = new Point(); p.x = 4; p.y = 3; p.z = 2; p.move(1,2,3); }

88

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Package & enkapsulasi

¬ Package juga merupakan mekanisme untuk membatasiscope sebuah variabel/method/class

­ variabel/method/class yang tidak memiliki access modifier(public/private/protected) memiliki scope package, yaitu hanyadapat diakses oleh class lain yang berada dalam satu package

­ variabel/method dengan access modifier protected dapat diaksesoleh class lain yang berada dalam satu package

89

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh package access modifier

// file Point.javapackage points;

public class Point { public int x, y; void move(int dx, int dy) { x += dx; y += dy; } public void moveAlso(int dx, int dy) { move(dx, dy); }}

//file PlusPoint.java

package morepoints;

public class PlusPoint extends points.Point { public void move(int dx, int dy) { super.move(dx, dy); // compile-time error, karena tidak 1

package moveAlso(dx, dy); }}

90

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh protected dalam package

// file Point.javapackage points;public class Point { protected int x, y; void warp(threePoint.Point3d a) { if (a.z > 0) // compile-time error: cannot access a.z

// karena bukan satu package a.delta(this); }}// file Point3d.javapackage threePoint;import points.Point;public class Point3d extends Point { protected int z; public void delta(Point p) { p.x += this.x; // compile-time error: cannot access p.x &

p.y p.y += this.y; // karena bukan satu package. this.x dapat

diakses // karena Point3d turunan dari Point

}}

91

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface

¬ Definisi method yang harus diimplementasikan dankonstanta (final member variabel)

¬ Mendefinisikan type¬ Interface tidak dapat diinstansiasi

public interface interfaceA { int integerConst = 5; public void method1(/* parameter */); public void method2( /* parameter */); }

92

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Implementasi Interface

¬ Interface dapat diimplementasikan oleh sebuah kelas¬ Kelas yang mengimplementasi sebuah interface harus

menyediakan semua method yang disebutkan dalam interfacetersebut

class MyClass implements interfaceA { public void methodA() {

} public void methodB() {

} }

93

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Abstract class

¬ interface & abstract classes: serupa tapi tak sama¬ interface sama sekali tidak mengandung implementasi¬ interface tidak memiliki state (member variable selain

constant

94

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Inheritance

¬ Interface dapat diturunkan dari interface lainnya¬ Kelas implementasi harus mendefinisikan seluruh

method yang didefinisikan oleh interface beserta parent-nya.

¬ Interface dapat diturunkan secara multiple inheritance

95

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Inheritance

interface FirstInterface { Object method1();}

interface SecondInterface extends FirstInterface { int method2();}

public class FirstClass implements FirstInterface { public FirstClass(){ }...}public class SecondClass extends FirstClass implements

SecondInterface {...}

SecondClass bertype: FirstInterface, SecondInterface,FirstClass & SecondClass

96

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Inheritance

¬ Inheritance pada interface hanya menurunkan sintaks method-method yang didefinisikan pada bapak

¬ Multiple interface inheritance dengan nama method yangsama tidak mengakibatkan konflik.

public interface A { methodA();}public interface B { methodA();}public interface AB extends A, B {}

97

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Inheritance

// file BaseColors.javainterface BaseColors { int RED = 1, GREEN = 2, BLUE = 4;}interface RainbowColors extends BaseColors { int YELLOW = 3, ORANGE = 5, INDIGO = 6, VIOLET = 7;}interface PrintColors extends BaseColors { int YELLOW = 8, CYAN = 16, MAGENTA = 32;}interface LotsOfColors extends RainbowColors, PrintColors { int FUCHSIA = 17, VERMILION = 43, CHARTREUSE = RED+90;}// file: Main.javapublic class Main { public static void main(String args[]) { System.out.println(LotsOfColors.YELLOW); // error }}

98

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Multiple Inheritance

¬ Interface dapat digunakan untukmenggantikan kapabilitas yang disediakanmelalui multiple inheritance

interface CanFight { void fight(); } interface CanSwim { void swim(); } interface CanFly { void fly(); } class ActionCharacter { public void fight() {} }

99

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Multiple Inheritance

class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { public void swim() {} public void fly() {}}public class Adventure { static void t(CanFight x) { x.fight(); } static void u(CanSwim x) { x.swim(); } static void v(CanFly x) { x.fly(); }

public static void main(String[] args) { Hero i = new Hero(); t(i); // Treat it as a CanFight u(i); // Treat it as a CanSwim v(i); // Treat it as a CanFly }}

100

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Multiple Inheritance

¬ Class hanya mewarisi konstanta dari interface¬ Class tidak mewarisi implementasi dari interface¬ hierarki interface independen terhadap hierarki class,

beberapa class yang mengimplementasi interface yangsama bisa jadi sama sekali tidak berkaitan

101

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java API

102

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java API

¬ java.applet¬ java.io¬ java.util¬ java.awt¬ javax.swing¬ java.lang¬ java.math

¬ java.sql¬ java.text¬ java.net¬ java.rmi¬ java.security

103

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Applet

¬ program kecil yang dijalankan dari sebuah browser¬ kode program (.class file) dapat didownload dari server¬ subclass dari java.applet.Applet

104

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Applet

¬HTML:­ template­ link­ <applet> tag

<HTML><HEAD><TITLE> Hello World </TITLE></HEAD>

<BODY>Applet Hello World: <P><applet code="HelloWorldApplet.class" CODEBASE=“classes” width="150" height="50"></applet></BODY></HTML>

105

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Applet

import java.applet.Applet;import java.awt.Graphics;

public class HelloWorldApplet extends Applet {

public void paint(Graphics g) { g.drawString("Hello world!", 50, 25);

}

}

¬ Tidak ada main(String args[]) !

106

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Applet & Event driven program

¬ Event driven: program merespon event yang dikirimkankepadanya

¬ contoh event: keyboard event, mouse event, focusevent, action event

107

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Applet

¬ Method yang disediakan java.applet.Applet­ init()­ start()­ paint()­ destroy()­ processMouseEvent(MouseEvent ev)­ processKeyEvent(KeyEvent ev)­ processFocusEvent(FocusEvent ev)

108

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Applet: contoh

¬Applet yang menggambar garis di antara 2titikimport java.applet.*;import java.awt.* ;public class Garis extends Applet { int a; int b; int c; int d; int e; public void init(){ resize(300, 500); } public void paint(Graphics g){ g.drawLine(a, b, d, e); } public void processMouseEvent(Event evt, int x, int y) { if (c==0) { a=x; b=y; c=1; } else { d=x; e=y; c=0; repaint(); } return true; } }

109

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java IO

¬ disediakan pada package java.io.*;¬ stream: aliran data¬ semua fasilitas IO direpresentasikan sebagai stream¬ InputStream: kelas general untuk menangani aliran input¬ OutputStream: kelas general untuk menangani output¬ Contoh IO Stream: file, network, pipe, string.¬ note: string dapat dibuat sebagai stream, yaitu dengan

cara membaca dan menulis secara sekuensial

110

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Jenis-jenis Stream

¬ Stream yang menerima masukan disebut sebagai inputstream

­ contoh: FileInputStream: untuk membaca file

¬ Stream mengeluarkan data disebut sebagaioutputstream

­ contoh: FileOutputStream

¬ Masukan untuk suatu stream dapat berasal dari streamlainnya. Stream jenis ini disebut sebagai processingstream

­ contoh: BufferedOutputStream: digunakan untuk menampungstream dalam buffer, sebelum digunakan

111

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Bytes stream & Character stream

¬ Pada java tersedia 2 jenis stream berdasarkan elemennya¬ byte stream: satuan data yang membentuk stream adalah byte

(8 bit), umumnya stream jenis ini memiliki nama denganmenggunakan akhiran Stream

­ contoh: InputStream, OutputStream

¬ characters stream: satuan data yang membentuk streamadalah character (16 bit), umumnya stream jenis ini memilikinama dengan menggunakan akhiran Writer atau Reader

­ contoh: InputStreamReader, InputStreamWriter

112

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

InputStream

¬ Semua byte oriented input stream diturunkan dari kelasini.abstract class InputStream { int available();

void close(); int mark( int n );

int reset(); int read();

int read( byte[] b ); int read( byte[] b, int off, int len );

long skip( long n );}

113

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java IO

Reader

BufferedReader

CharArrayReader

InputStreamReader

FilterReader

PipedReader

StringReader

LineNumberReader

FileReader

PushbackReader

Writer

BufferedWriter

CharArrayWriter

OutputStreamWriter

FilterWriter

PipedWriter

StringWriter

FileWriter

PrintWriter

114

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java IO

InputStream

FileInputStream

PipedInputStream

FilterInputStream

ByteArrayInputStream

SequenceInputStream

StringBufferInputStream

LineNumberInputSream

OutputStream

ObjectOutputStream

FileOutputStream

PipedOutputStream

FilterOutputStream

ByteArrayOutputStream

ObjectInputStream

DataInputStream

BufferedInputSream

PushbackInputStream

DataOutputStream

BufferedOutputStream

PrintStream

115

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Membaca file

import java.io.*;public class BacaFile {

public static void main(String[] args) throws IOException {

FileInputStream in; int c;

in = new FileInputStream( args[0] ); while ((c = in.read()) != -1)

System.out.write(c); in.close();

}}

116

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Menulis file

import java.io.*;public class TulisFile { public static void main(String[] args) throws IOException { FileInputStream in; FileOutputStream out; int c; in = new FileInputStream( args[0] ); out = new FileOutputStream( args[1] ); while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); }}

117

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Input Dialog

import javax.swing.*;

public class InputDialog {

public static void main(String args[]) { String inputValue = JOptionPane.showInputDialog("Please

input a value"); System.out.println(inputValue); inputValue = JOptionPane.showInputDialog("Please input a

value 2"); System.out.println(inputValue); System.exit(0); }}

118

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Input (Text mode)

import java.io.*;

public class InputString { public static void main(String args[]) { try { BufferedReader in = new BufferedReader( new

InputStreamReader(System.in)); String s = in.readLine(); System.out.println( s ); } catch(Exception e) { e.printStackTrace(); } }}

119

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Input File

120

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Output File

121

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java util

¬ Java Collection Framework­ kumpulan kelas untuk menangani koleksi objek (struktur data

seperti array, list, set etc.)

¬ Date, Calendar, TimeZone, Locale¬ Properties: file konfigurasi untuk aplikasi java¬ Random¬ StringTokenizer: parser untuk string

122

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Hashtable

¬ koleksi objek dengan key unik. Objek dapatdiletakkan ke dalam hashtable dengan identifikasikey unik tertentu.public class Hashtable extends Dictionary implements Map, Cloneable, Serializable { // ... public Object put( Object key, Object val ); public Object get( Object key ); public Object remove( Object key ); public void clear(); public int size(); // ... method lainnya}

123

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Hashtable

¬ Contoh penggunaan:Hashtable table = new Hashtable();

table.put(“key1”, new Integer(1) );table.put(“key2”, new Integer(2) );

Integer intval = (Integer) table.get(“key1”);if( intval != null ) {

System.out.println(“key: key1, value: “+intval);}

124

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Vector

¬ Koleksi objek dengan urutan tertentu (serupaarray)public class Vector extends AbstractList implements List, Cloneable, Serializable { // ... public boolean add( Object val ); public boolean add( int index, Object val ); public Object get( int index ); public Object remove( Object val ); public void clear(); public int size(); // ... method lainnya}

125

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Vector

¬ contoh:Vector v = new Vector();

v.add( new Integer(1) );v.add( new Integer(2) );

Integer intval = (Integer) v.get(0);if( intval != null ) {

System.out.println(“index 0, value: “+intval);}

126

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java Swing

127

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Swing

¬ Koleksi kelas untuk tampilan (GUI) pada Java¬ AWT: Abstract Window Toolkit, koleksi kelas untuk

tampilan pada Java versi JDK 1.1 dan versi sebelumnya¬ AWT mengandung native code, sehingga terdapat

perbedaan antara platform satu dengan lainnya

128

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh aplikasi dengan Swing

import javax.swing.*; // baris ini diperlukan karena // swing berasal dari package javax.swing

public class Aplikasi extends JFrame { public Aplikasi(String title) {

super(title); }

public static void main(String s[]) { Aplikasi frame = new Aplikasi(”Aplikasi Swing");

frame.setSize(50,100); frame.show();

}}

129

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh aplikasi swing

import javax.swing.*; // baris ini diperlukan karena // swing berasal dari package javax.swingpublic class Aplikasi { JFrame frame; public Aplikasi(String title) { frame = new JFrame(title); } public void run() { frame.setSize(50, 100); frame.show(); } public static void main(String s[]) { Aplikasi app = new Aplikasi(”Aplikasi Swing"); app.run(); }}

130

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

JComponent

¬ Widget: elemen sebuah graphical user interface untukmelakukan fungsi tertentu

¬ Atomic component­ Button: JButton, JCheckBox, JRadioButton, JMenuItem,

JCheckBoxMenuItem, JRadioButtonMenuItem, JToggleButton­ JComboBox­ JList­ Menu: JMenu, JMenuItem­ JLabel­ JTextField­ JTable

131

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java GUI

Button

Label

Panel

Frame

¬ Panel (JPanel): Container untuk meletakkan komponen GUI¬ Panel memiliki LayoutManager yang berfungsi mengatur tata

letak komponen yang dimilikinya¬ Komponen diletakkan ke dalam panel dengan memanggil

method add dari panel

132

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh Panel

JPanel panel = new JPanel();JButton b1 = new JButton(“Button 1”);JButton b2 = new JButton(“Button 2”);JLabel label1 = new JLabel(“Label 1”);JLabel label2 = new JLabel(“Label 2”);JLabel label3 = new JLabel(“Label 3”);panel.add(b1);panel.add(b2);panel.add(label1);panel.add(label2);panel.add(label3);

¬ Kode di atas membuat sebuah panel, 2 buahbutton dan 3 buah label, kemudianmenambahkan button dan label ke dalampanel tersebut.

133

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

JFrame

¬ Frame: Top level container (Window utama) dari suatuaplikasi Java

¬ Sebuah frame memiliki:­ Title, pada bagian atas frame­ MenuBar, tempat untuk meletakkan menu­ standard panel yang disebut sebagai ContentPane

gambar diambil dari Java Tutorial, Sun

134

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Menambahkan Button ke Frame

import javax.swing.*;public class CobaButton { JFrame frame; JButton button; public CobaButton(String title) { frame = new JFrame(title); } public void run() { button = new JButton(); frame.getContentPane().add(button); frame.pack(); frame.show(); } public static void main(String s[]) { CobaButton app = new CobaButton(”Aplikasi Swing"); app.run(); }}

135

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mengganti ContentPanel dari sebuah Frame

¬ Standar content panel dari sebuah frame dapat digantidengan perintah setContentPane.

¬ contoh:JFrame frame = new JFrame();

JPanel panel = new JPanel();frame.setContentPane(frame);

¬ Tugas: Gabungkanlah kode pada contoh panel denganprogram contoh Aplikasi Swing sehingga program andadapat menampilkan window berisi 2 button dan 3 label

136

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh

import javax.swing.*;public class CobaPanel { JFrame frame; public CobaPanel(String title) { frame = new JFrame(title); } public void run() { JPanel panel = new JPanel(); JButton b1 = new JButton(“B1”); JButton b2 = new JButton(“B2”); JLabel label1 = new JLabel(“L1”); JLabel label2 = new JLabel(“L2”); JLabel label3 = new JLabel(“L3”); panel.add(b1); panel.add(b2); panel.add(label1); panel.add(label2);

panel.add(label3);// tambahkan kode di sini untuk

mengganti content panel dari frame}

public static void main(String s[]) { CobaPanel app = new CobaPanel(”Aplikasi Swing"); app.run(); }}

137

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mengganti LayoutManager dari sebuah Panel

¬ Sebuah panel dapat memiliki layout manager untukmengatur tata letak komponen

¬ Standar layout manager untuk JPanel adalahFlowLayout

¬ Standar layout manager untuk Content pane dari Jframeadalah BorderLayout

¬ Jenis-jenis layout manager sederhana pada JDK 1.2/1.3­ FlowLayout­ BorderLayout­ BoxLayout­ GridLayout

138

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

FlowLayout

¬ Mengatur posisi komponen-komponen dari kiri ke kanandan meletakkan komponen selanjutnya pada baris barujika ukuran lebar panel tidak mencukupi

139

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

BorderLayout

¬ BorderLayout mengatur komponen dalam posisitertentu, sesuai arah mata angin: NORTH,EAST, SOUTH, WEST dan CENTER.Penambahan komponen dengan BorderLayoutmemiliki parameter posisi. Contoh:JPanel panel = new JPanel();panel.add( new JButton(“South”), BorderLayout.SOUTH );panel.add( new JButton(“East”), BorderLayout.EAST );panel.add( new JButton(“West”), BorderLayout.WEST );panel.add( new JButton(“North”), BorderLayout.NORTH );panel.add( new JButton(“Center”), BorderLayout.CENTER );

140

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

BoxLayout

¬ BoxLayout mengatur komponen secara horizontal atauvertikal. Contoh:JPanel panel = new JPanel();panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));

panel.add( new JButton(“b1”) );panel.add( new JButton(“b2”) );

panel.add( new JButton(“b3”) );

141

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

GridLayout

¬ GridLayout mengatur komponen dalam posisi grid, yaituserupa matriks. Contoh:JPanel panel = new JPanel();panel.setLayout( new GridLayout( 2, 3 ) );

panel.add( new JButton(“b11”));panel.add( new JButton(“b12”));

panel.add( new JButton(“b13”));panel.add( new JButton(“b21”));

panel.add( new JButton(“b22”));panel.add( new JButton(“b23”));

142

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

GridBagLayout

¬ GridBag mengatur komponen serupa dengangrid, namun untuk setiap komponen dapatditentukan konstrain tertentu, sehingga GridBagakan mengatur tata letak berdasarkan konstrainuntuk setiap komponen

¬ Konstrain yg dapat diatur:­ gridx, gridy: koordinat komponen dalam grid layout­ gridwidth, gridheight: jumlah sel yg digunakan sebuah komponen.

Komponen dapat menduduki lebih dari 1 sel horisontal dan vertikal­ fill: kelakukan komponen jika ukuran sel lebih besar dari komponen.

Komponen dapat membesar horizontal/vertikal sesuai ukuran sel,berdasarkan parameter konstrain fill.

­ weightx, weighty: bobot ukuran sel dibandingkan sel lainnya­ insets: jarak antara komponen dengan sel­ anchor: posisi komponen di dalam sel

143

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

GridBagLayout

¬ fill:­ GridBagConstraint.NONE: komponen tidak membesar­ GridBagConstraint.HORIZONTAL: komponen membesar secara

horizontal­ GridBagConstraint.VERTICAL: komponen membesar vertikal­ GridBagConstraint.BOTH: komponen membesar ke kedua arah

¬ anchor:­ GridBagConstraint.SOUTH: komponen diletakkan di bagian bawah­ GridBagConstraint.NORTH: komponen diletakkan di bagian atas­ GridBagConstraint.CENTER: komponen diletakkan di bagian tengah­ GridBagConstraint.WEST: komponen diletakkan di bagian kiri­ GridBagConstraint.EAST: komponen diletakkan di bagian kanan

144

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mengatur letak komponen dengan panel

¬ Sebuah panel dapat ditambahkan ke panel lainnya. Halini digunakan untuk membantu mengatur tata letakkomponen. Contoh:

145

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Menangani event pada Swing

¬ Jenis event:­ mouse event­ focus event­ keyboard event­ component event­ container event­ window event­ action event­ adjustment event­ item event­ text event

146

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

event listener

¬ objek yang bertugas untuk mendengarkan event danmemberikan respon terhadap event tertentu.

¬ mengimplementasikan salah satu dari listener interface:­ ComponentListener­ ContainerListener­ FocusListener­ KeyListener­ MouseListener­ MouseMotionListener­ WindowListener­ ActionListener­ AdjustmentListener­ ItemListener­ TextListener

147

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

interface

¬ deskripsi method-method yang harusdisediakan oleh suatu kelas

¬ kelas yang mengimplementasikan sebuahinterface harus mendefinisikan semua methodpada interface tersebut

¬ contoh:interface ActionListener { void actionPerformed( ActionEvent ev);}

class MyActionHandler implements ActionListener { void actionPerformed( ActionEvent ev ) { System.out.println(“menerima event”); }}

148

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mendefinisikan handler untuk event tertentu

¬ contoh:MyActionHandler hd = new MyActionHandler();

JButton b1 = new JButton();b1.addActionListener( hd );

¬ baris di atas menyatakan bahwa objek hd adalahhandler untuk event jenis action (button clicked) untukobjek b1.

149

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mouse Event

¬ java.awt.event.MouseEvent­ MouseEvent.MOUSE_CLICKED­ MouseEvent.MOUSE_DRAGGED­ MouseEvent.MOUSE_ENTERER­ MouseEvent.MOUSE_EXITED­ MouseEvent.MOUSE_MOVED­ MouseEvent.MOUSE_PRESSED­ MouseEvent.MOUSE_RELEASED­ int getID();

• mengambil ID event, seperti MOUSE_CLICKED, MOUSE_MOVED­ String paramString(); // memberikan deskripsi event­ int MouseEvent.getX();­ int MouseEvent.getY();

• getX() & getY() mengambil koordinat mouse pada saat terjadi event­ Point MouseEvent.getPoint();

• getPoint() mengambil koordinat mouse dalam bentuk Point. Pointmemiliki atribut x & y

­ int getClickCount();• mengembalikan jumlah click yang dilakukan pada saat terjadi event

150

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

MouseListener interface

¬ Interface ini diimplementasikan oleh kelas yang menjadilistener event mousepublic interface MouseListener { void mouseClicked(MouseEvent ev);

void mousePressed(MouseEvent ev); void mouseReleased(MouseEvent ev);

void mouseEntered(MouseEvent ev); void mouseExited(MouseEvent ev);

}

151

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mouse Motion Listener

¬ Interface untuk menangani event gerakan mousepublic interface MouseMotionListener {

void mouseDragged( MouseEvent ev ); void mouseMoved( MouseEvent ev );

}

152

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Component event

¬ Event yg berkaitan dengan perubahan padakomponen, seperti komponen moved, resized,hidden & shown

¬ java.awt.event.ComponentEvent­ ComponentEvent.COMPONENT_MOVED­ ComponentEvent.COMPONENT_RESIZED­ ComponentEvent.COMPONENT_HIDDEN­ ComponentEvent.COMPONENT_SHOWN­ int getID();­ Component getComponent();

• memberikan komponen yang menghasilkan event­ String paramString();

153

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Component listener

¬ interface untuk menangani event componentpublic interface ComponentListener {

public void componentHidden(ComponentEvent ev); public void componentShown(ComponentEvent ev);

public void componentResized(ComponentEvent ev); public void componentMoved(ComponentEvent ev);

}

154

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Action Event

¬ java.awt.event.ActionEvent­ int getID();­ Object getSource();­ String getActionCommand();

¬ ActionListenerpublic interface ActionListener { void actionPerformed( ActionEvent ev );}

¬ Pada component asal, action command di setdengan perintah: setActionCommand()JButton b = new JButton(“button”);b.setActionCommand(“b”);

155

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Key Event

¬ event yang berkaitan dengan aktivitas keyboard¬ java.awt.event.KeyEvent

­ KeyEvent.VK_A, KeyEvent.VK_B, KeyEvent.VK_F1,

KeyEvent.VK_PAGE_UP, etc.­ char getKeyChar();

• mengembalikan representasi char yang ditekan pada keyboard­ int getKeyCode();

• mengembalikan kode key yang ditekan pada keyboard

156

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Key Listener

public interface KeyListener { void keyTyped( KeyEvent ev );

// high level event, dibangkitkan ketika sebuah // karakter dihasilkan keyboard

void keyPressed( keyEvent ev ); // low level, dibangkitkan setiap sebuah tombol pada

// keyboard ditekan void keyReleased( keyEvent ev );

}

157

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Window Event

¬ java.awt.event.WindowEvent­ Window getWindow();­ String paramString();

158

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

WindowListener

public interface WindowListener { void windowActivated( WindowEvent ev );

void windowClosed( WindowEvent ev ); void windowClosing( WindowEvent ev );

void windowDeactivated( WindowEvent ev ); void windowDeiconified( WindowEvent ev );

void windowIconified( WindowEvent ev ); void windowOpened( WindowEvent ev );

}

159

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Focus Event

¬ java.awt.event.FocusEvent­ Component getComponent();

¬ FocusListenerpublic interface FocusListener {

void focusGained( FocusEvent ev ); void focusLost( FocusEvent ev );

}

160

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Menggunakan adapter untuk event listener

¬ interface: semua method harus didefinisikanulang pada kelas yang mengimplementasikannya

¬ sebuah event listener dapat diturunkan dari kelasAdapter, dan mendefinisikan ulang method yangdiperlukan saja.class MyAdapter extends MouseAdapter { public void mouseClicked( MouseEvent ev ) { System.out.println("mouse clicked"); }}public void init() { JButton b = new JButton(); MyAdapter evHandler = new MyAdapter(); b.addMouseListener( evHandler );}

161

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

JDBC

162

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

JDBC

¬ API yang menyediakan interface universal ke basis data¬ package java.sql¬ SQL: Standard Query Language¬ JDBC menyediakan kelas-kelas:

­ DriverManager: kelas ini digunakan untuk membuat koneksi (instance darikelas Connection) ke database

­ Connection: instance dari kelas ini merepresentasikan koneksi kedatabase tertentu

­ Statement: instance dari kelas ini merepresentasikan sebuah query yangakan dieksekusi ke database

• PreparedStatement• CallableStatement

­ ResultSet: instance dari kelas ini merepresentasikan hasil eksekusi query

163

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Struktur JDBC

164

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

JDBC Driver

¬ JDBC menggunakan driver yang spesifik untuk masing-masing jenis database.

¬ Pendefinisian driver yg digunakan dilakukan dengancara me-load class driver yg diinginkanClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");Class.forName(“org.gjt.mm.mysql.Driver”);

¬ Driver untuk ODBC: sun.jdbc.odbc.JdbcOdbcDriver,sudah disediakan oleh Sun

¬ Driver untuk mySQL (org.gjt.mm.mysql.Driver) tersediasecara freeware

165

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Menggunakan ODBC Driver

¬ Buatlah definisi Datasource yang akan digunakan padaODBC melalui setting ODBC datasource dari controlpanel (misalkan dibuat datasource bernama mahasiswa)

¬ pada program java, load kelas Driver untuk Odbc,Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

¬ Buka koneksi ke ODBC dengan mendefinisikan URLuntuk datasource tersebut, dengan format:

­ jdbc:odbc:mahasiswa

¬ dimana odbc adalah nama driver yang digunakan, danmahasiswa adalah nama data source dari ODBC

166

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Connection

¬ Connection adalah representasi hubungan ke database¬ Connection dibuat dengan mendefinisikan url string yang

sesuai­ Connection con =

DriverManager.getConnection(“jdbc.odbc.mahasiswa”);

¬ Connection digunakan untuk membuat statement (queryyang akan dikirimkan ke database) dan mendapatkaninformasi tentang database

167

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Query SQL

¬ query dikirimkan ke database dalam bentuk SQL Query.Beberapa perintah yang umum digunakan adalahsebagai berikut:

­ CREATE: untuk membuat table baru­ SELECT: untuk mengambil record dari database yang memenuhi

kriteria tertentu­ INSERT: untuk menambah record ke dalam suatu table­ UPDATE: untuk merubah isi record tertentu pada suatu table­ DELETE: untuk menghapus record pada suatu table­ DROP: untuk menghapus sebuah table

168

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

CREATE TABLE

CREATE TABLE <NAMA TABLE> (<NAMA KOLOM> <TIPE>, <NAMA KOLOM> <TIPE>, ... PRIMARY KEY (<NAMA KOLOM>), FOREIGN KEY (<NAMA KOLOM>)

REFERENCES <NAMA_TABEL> (<NAMA KOLOM>))

¬ Tipe dari sebuah kolom dapat berupa:­ char(x), dimana x adalah ukuran/jumlah character,­ varchar(x), serupa dengan char, namun alokasinya dilakukan

secara variabel­ int(x), x adalah jumlah digit yang disediakan­ date, untuk tipe tanggal­ jenis tipe lain yang spesifik untuk setiap database

169

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

SELECT

SELECT <NAMA KOLOM>, <NAMA KOLOM>, ...FROM <NAMA TABEL>WHERE <KONDISI>

¬ Select digunakan untuk mengambil record yangmemenuhi kriteria tertentu, yang diletakkan pada where.Contoh:

­ Select NAMA, ALAMAT from MAHASISWA whereNIM=“13592033”

170

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

INSERT

INSERT INTO <NAMA TABEL> (<NAMA KOLOM>, <NAMA KOLOM>, ... )VALUES (<NILAI KOLOM>, <NILAI KOLOM>, ...)

171

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

UPDATE

UPDATE <NAMA TABEL>SET (<NAMA KOLOM>=<NILAI KOLOM>, <NAMA KOLOM>=<NILAI KOLOM>, ...)WHERE <KONDISI>

172

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

DELETE

DELETE FROM <NAMA TABEL>WHERE <KONDISI>

¬ DROPDROP <NAMA TABLE>

173

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Statement

¬ Query yang akan dieksekusi oleh database¬ Contoh query:

­ CREATE TABLE MAHASISWA (NAMA VARCHAR(20), ALAMATVARCHAR(60), JURUSAN VARCHAR(20))

­ SELECT NAMA FROM MAHASISWA WHEREJURUSAN=“INFORMATIKA”

¬ Statement dibuat dengan memanggil createStatement dariobject Connection

174

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Statement

¬ Statement yang tidak menghasilkan data dieksekusidengan memanggil method executeUpdate(), sedangkanstatement yang menghasilkan data dieksekusi denganmemanggil method executeQuery(), yang akanmenghasilkan object bertipe ResultSet

¬ Contoh: stmt = con.createStatement(); stmt.executeUpdate(“CREATE TABLE MAHASISWA ”+ “(NAMA VARCHAR(30), ALAMAT VARCHAR(30))”);

175

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

PreparedStatement

¬ PreparedStatement: query yang memiliki parameter yangdapat di set. Contoh:

­ SELECT NAMA FROM MAHASISWA WHERE JURUSAN=?

¬ Simbol ? merepresentasikan sebuah parameter yang dapat diset.

¬ PreparedStatement dibuat dengan memanggil methodprepareStatement dari object Connection

¬ contoh: PreparedStatement stmt = con.prepareStatement(“SELECT *FROM MAHASISWA WHERE NAMA=?”);

stmt.setString(1, “Amir”); ResultSet rset = stmt.executeQuery();

176

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

ResultSet

¬ ResultSet adalah table hasil query database¬ ResultSet diakses secara per baris table, dimana untuk

maju ke baris berikutnya digunakan method next()

dari object ResultSet¬ Untuk mengambil field tertentu dari current row (baris

saat ini) digunakan perintah:­ getString(String fieldname): jika tipe data field berupa string­ getInt(String fieldname) : jika tipe data field berupa integer, dst.

¬ Contoh: stmt = con.createStatement(); ResultSet rset = stmt.executeQuery(“SELECT * “ + ”FROM MAHASISWA”); String nama = rset.getString(“NAMA”);

177

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh membuat table

//File : CreateMahasiswa.java//Desc : implementasi pembentukan tabel Mahasiswaimport java.sql.*;public class CreateMahasiswa { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = "create table MAHASISWA " + "(NIM CHAR(8),NAMA VARCHAR(32)," + "ALAMAT VARCHAR(100), " + ”JURUSAN VARCHAR(40))"; Statement stmt; Connection con; try { Class.forName(” sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }

178

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

try { con = DriverManager.getConnection(url); stmt = con.createStatement(); stmt.executeUpdate(query); stmt.close(); con.close(); } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}

179

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh insert ke database

//File : InsertMahasiswa.java//Desc : implementasi insert data ke table Mahasiswaimport java.sql.*;public class InsertMahasiswa { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”insert into MAHASISWA " + ”values (‘13592033’,‘Amir’,‘Dago’,”+ “‘Informatika’)”; Statement stmt; Connection con; try { Class.forName(” sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }

180

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

try { con = DriverManager.getConnection(url); stmt = con.createStatement(); stmt.executeUpdate(query); stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}

181

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh insert dengan PreparedStatement

//File : InsertMahasiswa2.java//Desc : implementasi insert data ke table Mahasiswaimport java.sql.*;public class InsertMahasiswa2 { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”insert into MAHASISWA " + ”values ( ?, ?, ?, ?)”; PreparedStatement stmt; Connection con; try { Class.forName(” sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }

182

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

try { con = DriverManager.getConnection(url); stmt = con.prepareStatement(query); stmt.setString(1, “13592033”); stmt.setString(2, “Amir”); stmt.setString(3, “Dago”); stmt.setString(4, “Informatika”); stmt.executeUpdate(); stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}

183

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh query database

//File : SelectMahasiswa.java//Desc : implementasi pembentukan tabel Mahasiswaimport java.sql.*;public class SelectMahasiswa { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”SELECT * FROM MAHASISWA”; Statement stmt; Connection con; try { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }

184

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

try { con = DriverManager.getConnection(url); stmt = con.createStatement(); ResultSet rset = stmt.executeQuery(query); while(rset.next()) { System.out.println(“Nama: “+rset.getString(“NAMA”)); System.out.println(“Alamat: ”+ rset.getString(“ALAMAT”)); System.out.println(“Jurusan: ”+ rset.getString(“JURUSAN”)); } stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}

185

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh query dengan parameter

//File : SelectMahasiswa2.java//Desc : implementasi pembentukan tabel Mahasiswaimport java.sql.*;public class SelectMahasiswa2 { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”SELECT * FROM MAHASISWA “+ “where NAMA=?”; PreparedStatement stmt; Connection con; try { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }

186

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

try { con = DriverManager.getConnection(url); stmt = con.prepareStatement(query); stmt.setString(1, “Amir”); ResultSet rset = stmt.executeQuery(); while(rset.next()) { System.out.println(“Nama: “+rset.getString(“NAMA”)); System.out.println(“Alamat: ”+ rset.getString(“ALAMAT”)); System.out.println(“Jurusan: ”+ rset.getString(“JURUSAN”)); } stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}

187

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java Networking

188

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

java.net

¬ package java untuk jaringan¬ kelas yg umum digunakan dari java.net

­ InetAddress: merepresentasikan alamat host (IP atau nama)­ Socket: untuk berkomunikasi dengan komputer lain pada sisi

client­ ServerSocket: untuk berkomunikasi dengan komputer lain pada

sisi server­ URL: merepresentasikan URL (contohnya:

http://www.informatika.org)

189

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh program untuk query hostname

import java.net.*;public class IPName {

public static void main(String args[]) {

try { InetAddress h1 =

InetAddress.getByName( args[0] ); System.out.println(h1.getHostAddress());

} catch (Exception e) { System.out.println( e );

} }

}

190

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

InetAddress

¬ Merepresentasikan sebuah alamat pada internet¬ Satu object InetAddress merepresentasikan satu alamat¬ InetAddress getByName(String hostname)

­ method untuk membuat object InetAddress dari sebuah hostnameatau IP address

¬ String getHostName()­ mengembalikan nama host dari object InetAddress

¬ byte[] getAddress()­ mengembalikan raw IP address (dalam bentuk byte array)

¬ String getHostAddress()­ mengembalikan IP address dalam bentuk String

191

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh program dengan menggunakan URL

import java.net.*; import java.io.*;public class BacaURL { public static void main(String args[]) { try { URL url = new URL( args[0] ); BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream())); String s; while ((s = in.readLine()) != null) System.out.println(s); in.close(); } catch (Exception e) { System.out.println( e ); } }}

192

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

URL

¬ Merepresentasikan URL¬ URL: Uniform Resource Locator, sebuah identifier ke suatu

resource (file, direktori) pada Internet¬ URL terdiri atas 3 bagian, protocol, host name dan pathname¬ Contoh: http://www.informatika.org/java/index.html¬ Fungsi yang disediakan:

­ String getProtocol()• mengambil protocol dari URL

­ String getHost()• mengambil hostname dari URL

­ String getFile()• mengambil filename dari URL

­ String getPath()• mengambil pathname dari URL

­ InputStream openStream()• membuka input stream dari URL, untuk membaca

dokumen dari URL tersebut.

193

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh program dengan socket

import java.io.*;import java.net.*;

public class EchoServer { public static void main(String[] args) { ServerSocket serverSocket = null; Socket clientSocket = null; PrintWriter out = null; BufferedReader in = null; try { serverSocket = new ServerSocket(4444); System.out.println("server siap ..."); while(true) { clientSocket = serverSocket.accept(); out = new PrintWriter(clientSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader( clientSocket.getInputStream()));

194

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

String s = in.readLine(); System.out.println("menerima: "+ s);

out.println( "jawaban server: "+ s ); System.out.println("mengirim: "+ "jawaban server:"+ s)

} } catch (Exception e) {

System.out.println( e ); clientSocket.close();

serverSocket.close(); }

}}

195

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh program socket

import java.io.*;import java.net.*;

public class D3EchoClient {

public static void main(String[] args){ Socket socket = null;

PrintWriter out = null; BufferedReader in = null;

try { socket = new Socket("localhost", 4444 );

out = new PrintWriter(socket.getOutputStream(),true); in = new BufferedReader(new

InputStreamReader(socket.getInputStream()));

196

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

String s; out.println( args[0] );

System.out.println("kirim teks: "+ args[0] ); s = in.readLine();

System.out.println("terima teks: "+ s ); in.close();

out.close(); socket.close();

} catch (Exception e) { e.printStackTrace();

} }

}

197

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Socket

¬ Socket adalah representasi komunikasi data antara 2 buahkomputer/program (dapat dari komputer yang sama)

¬ Socket dibuat dengan memberikan hostname dan portnamedari komputer yang dituju

­ Socket s = new Socket(“www.informatika.org”, 80);

¬ Method yang disediakan:­ InputStream getInputStream()­ OutputStream getOutputStream()­ int getReceiveBufferSize()­ setReceiveBufferSize(int s)­ int getSendBufferSize()­ setSendBufferSize(int s)

198

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

ServerSocket

¬ Socket yang digunakan pada sisi server¬ ServerSocket akan menunggu koneksi dari client pada

port tertentu. Jika terdapat client yang menghubungiserver, ServerSocket akan membuat socket baru yangmerepresentasikan koneksi dengan client tersebut­Socket accept()

• menunggu koneksi dari client, setelah ada, menghasilkanobject socket

199

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Thread

¬ satuan titik eksekusi program¬ multithreading: aplikasi yang berjalan dengan lebih dari satu

thread, sehingga seakan-akan ada 2 program paraleldijalankan bersamaan

¬ contoh:class Thread1 extends Thread { int x=1; public Thread1() { } public void run() { try { while(true) { System.out.println("Thread 1: loop ke "+x); x++; } } catch(Exception e) { e.printStackTrace(); } } public static void main(String a[]) { Thread1 t1 = new Thread1(); Thread1 t2 = new Thread1(); t1.start(); t2.start(); }}

200

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Membuat thread

¬ Thread baru dibuat dengan:­ membuat object yang diturunkan dari kelas Thread (lihat contoh

sebelumnya), dan memanggil method start dari object tsb.­ membuat object dari kelas yang mengimplementasikan interface

Runnable, membuat object Thread dengan object Runnable tadi sebagaiparameter, memanggil method start dari object thread. contoh:class MyRunnable implements Runnable { public void run() { while(true) System.out.println(“my runnable object”); } public static void main(String a[]) { MyRunnable myrun = new MyRunnable(); Thread t1 = new Thread(myrun); t1.start(); }}

­ Note: interface Runnable mensyaratkan method run() harusdiimplementasikan

201

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Membuat server multithreading

¬ server harus melayani lebih dari satu client pada saatbersamaan, sehingga harus diimplementasikan sebagaimultithreaded server

¬ cara: setiap ada client baru, dibuat sebuah thread untukmelayaninya.

while(true) { clientSocket = serverSocket.accept();

MyThread t1 = new MyThread(clientSocket); t1.start(); }

¬ Di mana MyThread adalah sebuah kelas yang diturunkan dariThread

class MyThread extends Thread { Socket socket; public MyThread(Socket s) { socket = s; }

202

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh: Buat server file

¬ Client menghubungi server dengan mengirimkan namafile yang akan diambil

¬ server membaca file yang diminta dan mengirimkannyake server

¬ jawaban server terdiri atas satu baris status hasil danbaris berikutnya berupa file yang diminta

Client Server

203

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh: server file

public class FileThread extends Thread{ Socket socket; public FileThread(Socket s) { socket = s; }

public void run() { InputStream in = s.getInputStream(); OutputStream out = s.getOutputStream(); BufferedReader bin = new BufferedReader( new InputStreamReader( in )); // baca filename dari client String fileName = bin.readLine(); // buka file dengan nama tersebut FileInputStream fin = new FileInputStream(fileName); // tulis status pembukaan file ke client

while( masih ada data dari file) // kirim data dari file ke client }}

204

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

thread-safe & synchronize

¬ thread-safe: beberapa thread dapat mengakses objectyang sama pada waktu bersamaan. Variable sebuahobject dapat menjadi tidak konsisten karena diubah olehdua thread pada saat bersamaan. Thread-safe adalahkondisi dimana sebuah object dapat tetap konsistenwalaupun diakses oleh banyak thread pada saatbersamaan

¬ synchronize adalah parameter yang dapat diterapkankepada method agar object tersebut thread-safe

¬ dengan synchronize, sebuah method pada setiap saatpasti hanya dieksekusi oleh sebuah thread saja.

205

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh:

public class Counter { int count = 1; public int getValue () { count++; return count; }}

public class CounterThread extends Thread { public CounterThread() {} public void run() { Counter c = new Counter(); while(true) { System.out.println(“counter: “+c.getValue()); } }

public static void main(String a[]) { CounterThread t1 = new CounterThread(); CounterThread t2 = new CounterThread(); t1.start(); t2.start(); }}

206

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java Servlet

207

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Java Servlet

¬ Servlet: aplikasi java yang dieksekusi pada Web server

208

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Mengapa Object Oriented

¬ Why Object Oriented:­ Software development pada awalnya cenderung fokus kepada cara

berpikir mesin: prosedural. Data+Algoritma = program.

­ Masalah yang harus dipecahkan semakin kompleks, paradigma mesintidak mencukupi untuk mengembangkan software sesuai dengankebutuhan masa kini.

­ Level abstraksi: Mesin – Assembly language – Programming Language –Implementation Design – High Level Design – Software Requirement.

­ Object Oriented adalah paradigma pengembangan software yangmembuat metodologi pemecahan masalah lebih dekat kepada domainpermasalahan dibandingkan domain mesin.

­ permasalahan di bidang software engineering: software crisis, rapidsoftware development, software complexity, software maintenance,evolutionary techniques.

209

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Interface & Callback

¬ Interface dapat digunakan untuk mendefinisikan antarmuka sebuah callback

Tampilan

MouseHandlerinterface

onMousePressed

MouseHandlerimplementation 1

onMousePressed

MouseHandlerimplementation 2

onMousePressed

210

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Permainan kartu

¬ terdapat setumpuk kartu, terdiri atas 52 kartu dengan 4suit. Tumpukan kartu tersebut dapat dikocok dandibagikan ke sejumlah pemain. Sisa yang tidakdibagikan diletakkan ditengah meja, dan disebut sebagaidraw pile. Kartu-kartu dimainkan oleh pemain dengancara meletakkan pada meja, dan diletakkan padatumpukan kartu yang telah dimainkan yang dinamakandiscard pile.

211

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh kasus:

¬ vending machine­ sebuah vending machine menampilkan daftar produk yg dapat

dibeli, antara lain permen, kue, coklat dan chips. Harga masing-masing produk adalah sbb:

• permen : Rp. 500,-• kue : Rp. 600,-• coklat : Rp. 1200,-• chips : Rp. 1000,-

pembeli dapat memasukkan sejumlah uang, dan memilih produkyang diinginkannya. Machine akan memberikan produk tersebut,dan memberikan kembaliannya.

212

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh kasus:

¬ algoritma solusi umum:­ loop

• tampilkan pilihan produk• input uang dari pembeli• input pilihan dari pembeli• hitung kembalian• output produk & kembalian

213

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Solusi

for( ; ; ) { uang = InputMoney(); PrintMenu(); pil = InputPil(); switch (pil) { case 0: kembali = uang; break; // batal case 1: kembali = uang - 500; break;// permen case 2: kembali = uang - 600; break; // kue case 3: kembali = uang - 1200; break; // coklat case 4: kembali = uang - 1000; // chips } if ((kembali >= 0) && (pil != 0)) { OutputProduk(pil); OutputMoney(kembali); } else { System.out.println(“uang tidak cukup/batal”); OutputMoney(uang); }}

214

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Solusi OO

Produk

Chips Coklat PermenChips

215

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Contoh kasus

¬ buat program untuk menggambar bentuk (square,rectange, circle, etc) di layar.

¬ informasi yang harus disimpan: jenis bentuk, posisi,ukuran.

¬ solusi:class Rectangle {

int}

216

Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000

Solusi

void draw(Bentuk b) { switch(b.Jenis) {

case 1: drawSquare(b); break; case 2: drawRectangle(b); break;

case 3: drawCircle(b); break; }

}

top related