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

216
1 Achmad Imam Kistijantoro- Diktat Java Programming Teknik - Informatika ITB, Juli - Agustus 2000 Java Programming Achmad Imam Kistijantoro June, 2000 Bandung Jurusan Teknik Informatika ITB rev 1.0.5

Upload: phamdien

Post on 01-Feb-2018

237 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 2: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 3: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 4: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

4

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

Dasar-dasar Programming

Page 5: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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;

Page 6: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 7: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 8: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

8

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

Proses pembuatan program

¬ editing¬ compiling¬ linking¬ executing¬ debugging

Page 9: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 10: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

10

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

Konsep pemrograman

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

Page 11: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 12: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 13: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 14: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 15: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

15

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

Dasar-dasar Java

Page 16: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 17: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 18: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 19: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 20: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 21: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 22: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 23: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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>

Page 24: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 25: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 26: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

26

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

Sintaks Java

Page 27: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 28: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 29: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 30: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 31: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 32: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 33: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 34: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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;

}

Page 35: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 36: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 37: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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?

Page 38: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 39: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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;

} }

}

Page 40: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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?

Page 41: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 42: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.,

Page 43: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 44: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 45: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 46: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 47: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 48: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 49: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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)

Page 50: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

50

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

String

Page 51: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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;

Page 52: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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)

Page 53: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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)

Page 54: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

54

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

Java & Object Oriented Programming

Page 55: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

55

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

Object Programming pada Java

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

Page 56: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 57: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 58: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 59: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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 ?

Page 60: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 61: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 62: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 63: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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() { }}

Page 64: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 65: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}}

Page 66: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 67: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 68: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 69: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 70: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 71: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 72: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 73: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}}

Page 74: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 75: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 76: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 77: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 78: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 79: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 80: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 81: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 82: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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}

Page 83: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 84: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}

Page 85: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 86: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 87: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 88: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 89: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 90: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}}

Page 91: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 92: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

} }

Page 93: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 94: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 95: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 96: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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 {}

Page 97: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 98: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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() {} }

Page 99: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 100: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 101: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

101

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

Java API

Page 102: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 103: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 104: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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>

Page 105: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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[]) !

Page 106: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 107: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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)

Page 108: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 109: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 110: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 111: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 112: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 113: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 114: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 115: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}}

Page 116: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 117: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 118: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 119: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

119

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

Input File

Page 120: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

120

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

Output File

Page 121: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 122: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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}

Page 123: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 124: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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}

Page 125: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 126: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

126

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

Java Swing

Page 127: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 128: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}}

Page 129: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 130: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 131: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 132: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 133: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 134: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 135: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 136: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 137: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 138: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 139: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 140: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 141: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 142: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 143: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 144: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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:

Page 145: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 146: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 147: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 148: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 149: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 150: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}

Page 151: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}

Page 152: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 153: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}

Page 154: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 155: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 156: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}

Page 157: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

157

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

Window Event

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

Page 158: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}

Page 159: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}

Page 160: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 161: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

161

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

JDBC

Page 162: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 163: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

163

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

Struktur JDBC

Page 164: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 165: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 166: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 167: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 168: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 169: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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”

Page 170: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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>, ...)

Page 171: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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>

Page 172: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

172

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

DELETE

DELETE FROM <NAMA TABEL>WHERE <KONDISI>

¬ DROPDROP <NAMA TABLE>

Page 173: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 174: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 175: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 176: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 177: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 178: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 179: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 180: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 181: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 182: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 183: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 184: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 185: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 186: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 187: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

187

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

Java Networking

Page 188: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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)

Page 189: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

} }

}

Page 190: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 191: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 192: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 193: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 194: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}}

Page 195: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 196: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

} }

}

Page 197: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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)

Page 198: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 199: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 200: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 201: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 202: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 203: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 204: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 205: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 206: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

206

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

Java Servlet

Page 207: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

207

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

Java Servlet

¬ Servlet: aplikasi java yang dieksekusi pada Web server

Page 208: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 209: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 210: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 211: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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.

Page 212: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 213: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

Page 214: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

214

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

Solusi OO

Produk

Chips Coklat PermenChips

Page 215: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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}

Page 216: java - ftsi.files.  · PDF fileclient-server ­ membuat instans ... ‹Architecture Neutral and Portable ... ­ definisi kelas baru dapat ditambahkan pada saat run-time

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

}