java - ftsi.files. · PDF fileclient-server membuat instans ... ‹Architecture...
Transcript of java - ftsi.files. · PDF fileclient-server membuat instans ... ‹Architecture...
1
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java Programming
Achmad Imam Kistijantoro
June, 2000Bandung
Jurusan Teknik Informatika ITB
rev 1.0.5
2
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Content
¬ Dasar-dasar Programming¬ Dasar-dasar Java¬ Sintaks¬ Java & Object Oriented Programming¬ Java API¬ Java Swing¬ JDBC¬ Java Networking
3
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Referensi
¬ Java Language Specification 1.1: by James Gosling , BillJoy, Guy Steele, Addison-Wesley, 1996. ISBN: 0-201-63451-1. http://java.sun•com/docs/books/jls/index.html
¬ Thinking in Java: by Bruce Eckel Prentice Hall, ISBN: 0-136-59723-8 http://www.bruceeckel.com/javabook.html
¬ The Java Virtual Machine Specification, by Tim Lindholm,Frank Yellin, Bill Joy, Kathy Walrath, Addison-Wesley 1996ISBN: 0-201-63452-X,
¬ The Java Tutorial, Sun Microsystem Inc, 2000http://web2.java.sun.com/docs/books/tutorial/
¬ JDK 1.2.2 Documentation, Sun Microsystem Inc.
4
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Programming
5
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Programming
¬ Program: The instructions executed by a computer
¬ Algorithm: A detailed sequence of actions to perform to accomplish some task.
Named after an Iranian mathematician, Al-Khawarizmi. Sifat:
• must reach a result after a finite number of steps contoh: euclid algorithm
GCD(m,n : integer){ m>=n }1. If m==n then GCD is m else r=m%n.2. if r==0 then GCD is n else m=n; n=r; go to step 1;
6
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Definition from the Jargon file :-)
¬ Program A magic spell cast over a computer allowing it to turn one's input into error
messages. An exercise in experimental epistemology. A form of art, ostensibly intended for the instruction of computers, which is
nevertheless almost inevitably a failure if other programmers can'tunderstand it.
¬ programming The art of debugging a blank sheet of paper (or, in these days of on-line
editing, the art of debugging an empty file). "Bloody instructions which,being taught, return to plague their inventor” ("Macbeth", Act 1, Scene 7)
A pastime similar to banging one's head against a wall, but with feweropportunities for reward.
The most fun you can have with your clothes on
7
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Abstraksi Mesin von Neumann
¬ stored programming concept¬ Logical components of a computer
CU
Input Output
Memory
ALU
8
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Proses pembuatan program
¬ editing¬ compiling¬ linking¬ executing¬ debugging
9
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Software Quality
¬ Correctness¬ Robustness¬ Extendibility¬ Reusability¬ Compatibility¬ Efficiency¬ Portability¬ Ease of use¬ Functionality
10
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Konsep pemrograman
¬ procedural¬ data hiding/modular¬ data abstraction¬ object oriented programming
11
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Pengantar konsep pemrograman
¬ Procedural Programming: pendefinisian langkah-langkah yang harus dieksekusi secara
sekuensial, contoh: resep masakan tentukan prosedur-prosedur yang diperlukan, gunakan algoritma
terbaik untuk mengimplementasikan masing-masing prosedurtersebut
contoh: program copy file• baca nama file yang akan di-copy (source)• buka file dengan nama tersebut• baca nama file tujuan (dest)• buka file dengan nama tujuan• baca isi file source• tulis isi ke file dest• tutup file source & dest
12
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Pengantar konsep pemrograman
¬ Konsep data hiding - modular programming pada pemrograman skala besar, sebuah data yang diakses oleh
banyak kode dapat menyulitkan perubahan program. Sedikitperubahan struktur data dapat mengakibatkan perubahan dibanyak tempat
tentukan modul-modul yang diperlukan. partisi program sehinggadata tersembunyi dibalik modul-modul tersebut
13
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Pengantar konsep pemrograman
¬ Konsep data abstraction pendefinisian tipe dan operasi yang dapat dilakukan terhadap tipe
tersebut. reusability safe-type programming
14
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Dasar dasar Java: Object Oriented Programming
¬ Object Oriented Programming diharapkan dapat: mempercepat pengembangan, meningkatkan
kualitas software, mempermudah pemeliharaan software,memudahkan perubahan
mendefinisikan kelas-kelas yang merepresentasikanpermasalahan pada dunia nyata
mendefinisikan operasi yang disediakan untuk setiap kelas mengelompokkan kesamaan dengan hubungan inheritance atau
client-server membuat instans dari kelas (objek) dan mengatur interaksi antar
objek-objek
15
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Java
16
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Java
¬ Java: Java Language (current version: Java Language Spec. 2) Java Platform (J2SE, J2EE, J2ME)
¬ Java Language streamlined C++ object oriented interpreted/bytecode
¬ Platform Java Virtual Machine Java API
17
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Java: Design goal
¬ Simple and Familiar Java dirancang untuk menghasilkan bug-free code Menggunakan sintaks serupa C/C++, dengan menghilangkan bagian-
bagian yang membingungkan: #define, pointer, typedef, struct, union,enum, multiple inheritance, goto, operator overloading, automatic coersion
¬ Object Oriented menyediakan fasilitas untuk data abstraction, behaviour sharing, evolution
& correctness pendefinisian kelas, instansiasi objek, inheritance, exception handling
¬ Robust and Safe dirancang agar aman dieksekusi via network strong typing, no direct access to memory, good exception handling
mechanism
18
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java design goal (2)
¬ Architecture Neutral and Portable¬ High Performance
Just In-Time compiler
¬ Interpreted Java bytecode
¬ Multi-threaded support multi-threaded application
¬ Dynamic tidak ada proses linking code secara eksplisit definisi kelas baru dapat ditambahkan pada saat run-time kelas di-load pada saat dibutuhkan
19
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java design goal (3)
¬ Platform independent Catatan: Java disebut sebagai platform independent, karena Java
sendiri adalah sebuah platform yang berjalan di atas platformlainnya
platform:• a specific computer hardware• a specific combination of hardware and operating system
and/or compiler• a support software for a particular activity.
¬ Automatic garbage collection Programmer tidak perlu melakukan dealokasi memory secara
eksplisit
20
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Java
¬ Program Java sederhana:class HelloWorld {
static public void main(String args[]) { System.out.println("Hello world!");
}
}
¬ Kelas HelloWorld dengan sebuah method bernama main¬ Method main :
memiliki sebuah parameter bertipe String array memiliki public modifier static modifier
main: titik awal program
21
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Perbandingan Java & C++
¬ Java design goal: automatic garbage collection streamlined C++, dengan menghilangkan feature: #define, typedef, struct,
union, enum, multiple inheritance, goto, operator overloading, automaticcoersion
menyediakan fasilitas interface
¬ C++ design goal: explicit garbage collection macro definition menggunakan #define pendefinisian tipe baru: typedef, struct, union, enum mendukung multiple inheritance fasilitas kontrol eksekusi: goto mekanisme operator overloading fasilitas automatic coersion
22
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Arsitektur Java
Compiler
Java program
Java byte-code
Interpreter
Sistem Komputer
Java Virtual Machine
Java API
Program Java
23
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java & Internet
¬ Aplikasi Java dapat dijalankan secara stand-alone, atausebagai applet (dieksekusi melalui web browser)
¬ Applet: program yang dapat dijalankan oleh browser
Java sourceimport java.applet.Applet;import java.awt.Graphics;
public class HelloWorldextends Applet { public void paint(Graphics g) { g.drawString("Hello world!",
50, 25); }}
HTML<HTML> <HEAD> <TITLE> A Simple Program </TITLE> </HEAD><BODY>Here is the output of my program: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET></BODY></HTML>
24
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Applet vs. Stand-alone
¬ Program’s entry: stand-alone: main applet: init & start
¬ Akses terbatas: library resources
25
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java flavor
¬ Java Development Kit (JDK)¬ Java Runtime Environment
(JRE)¬ Java Standard Edition¬ Java Enterprise Edition¬ Java Micro Edition¬ Java Servlet¬ Java Server Pages
¬ Java Beans¬ Enterprise Java Beans¬ Java OS¬ Javascript¬ JavaCard
26
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Sintaks Java
27
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Struktur dasar pemrograman prosedural
¬ Pendefinisian data: primitif, terstruktur¬ alur kontrol:
analisa kasus/kondisi• if-else• switch
iterasi/pengulangan• for-loop• while-loop• do-while-loop
¬ struktur program prosedur fungsi
28
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
statement & expression
¬ statement: satuan kalimat program, diakhiri dengan;
contoh: x = x + 5;
¬ expression: ekspresi, menghasilkan nilai dengantipe tertentu
contoh: x + 5, a > b
¬ block-statement: beberapa statement dapat digabung menjadi sebuah block, dengan diawali
oleh { dan diakhiri oleh } contoh:
{ tmp = a; a = b; b = tmp; }
¬ standar penulisan sintaks: [ text ]: bagian yang berada dalam [ ] bersifat optional italicized_text: bagian yang berhuruf italic dapat digantikandengan teks yang sesuai
29
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Komentar
¬Komentar: tidak dieksekusi, digunakanuntuk penjelasan
¬ sintaks:// komentar baris/* komentar block */
¬ contoh:class Count { public static void main (String args[]) { /* bagian ini komentar */ int i; // ini juga komentar for (i = 0; i < 50; i=i+1) { System.out.println(i); } }}
30
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Pendefinisian data: type & variable
¬ program: algoritma + struktur data¬ pendefinisian data: tipe dan variable¬ tipe: mendefinisikan jenis suatu variabel: kumpulan nilai yang
valid untuk suatu variabel dan operasi yang dapat dilakukanterhadap variabel tersebut.
¬ Type pada Java : primitif & reference¬ primitif:
numerik: byte (8 bit), short (16 bit), integer (32 bit), long (64 bit), float 32 bitfloating point/real number), double (64 bit floating point)
char boolean
¬ reference: string, user-defined class
31
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Pendefinisian data: tipe & variabel
¬ variabel harus dideklarasikan dan dialokasikan dahulusebelum digunakan
¬ deklarasi: menyatakan tipe variabel tersebut.¬ alokasi: pengadaan area memori untuk menampung nilai
variabel¬ contoh (Java):
int X; // variabel dengan nama X, bertipe integerchar myvarChar; // variabel dengan nama myvarCharString str; // variabel dengan nama str
¬ variabel bertipe non primitif harus alokasi eksplisit:String str;str = new String(“my string”);str = “str 2”; // khusus tipe string, operasi = otomatis alokasi
32
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Tipe primitif & reference
¬ Primitif: tipe dasar seperti char, int, long, byte, float, double memori untuk variabel tipe primitif dialokasikan pada saat variabel
tersebut dideklarasikan operasi assignment pada variabel primitif menghasilkan
pengkopian nilai
¬ Reference: mempunyai semantik serupa dengan pointer pada C/C++ memori untuk variabel tipe reference tidak dialokasikan pada saat
deklarasi, alokasi dilakukan eksplisit dengan operator new operasi assignment pada variabel reference menghasilkan
pengkopian reference (tetap mengacu pada object yang sama
33
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Perbedaan tipe primitif & reference
class Value { int val; }class Test { public static void main(String[] args) { int i1 = 3; int i2 = i1; // i1 & i2 variabel berbeda dengan nilai sama i2 = 4; System.out.print("i1==" + i1); System.out.println(" but i2==" + i2); Value v1 = new Value(); v1.val = 5; Value v2 = v1; // v1 & v2 mengacu ke variabel yg sama v2.val = 6; System.out.print("v1.val==" + v1.val); System.out.println(" and v2.val==" + v2.val); }}
34
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Struktur
¬ Membentuk tipe data baru yang terdiri atas beberapatipe lainnyaclass Mahasiswa { String nama;
int umur; String alamat;
}
35
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
if-else statement
¬eksekusi jika kondisi tertentu terpenuhi¬ sintaks:
if ( condition-expression ) statement-block[else] statement-block
¬Contoh:class Hello { public static void main (String args[]) { int x = 10; if ( x > 0 ) { System.out.println(”x is a positive number"); } else System.out.println(“x is a negative number”); }}
36
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
switch statement
¬ analisa kasus lebih dari 1 kondisi¬ sintaks:
switch ( variabel ) { case val1 : Statement-block; break; case val2 : Statement-block; break; ... [default : Statement-block;]}
¬ catatan: variabel harus bertipe char, byte, short, atau int default: eksekusi yang harus dijalankan jika tidak ada value yg
dipenuhi variabel tersebut
37
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
switch statement - contoh
class SwitchTest { public static void main(String[] args) {
int k = 1; switch (k) {
case 1: System.out.print(”1"); break; case 2: System.out.print(”2"); break;
case 3: System.out.println(”3"); break; }
}}
¬ Apakah yang terjadi jika break dihilangkan?
38
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Pengulangan for-loop
¬ sintaks:for ( init-stmt ; cond-exp ; inc-stmt )statement-block
¬Contoh:class Count { public static void main (String args[]) { int i; for (i = 0; i < 50; i=i+1) { System.out.println(i); } }}
39
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
while statement
class Count { public static void main (String args[]) {
int i = 0; while(i < 50) {
System.out.println(i); i=i+1;
} }
}
40
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
do-while
class Count { public static void main (String args[]) {
int i = 0; do {
System.out.println(i); i=i+1;
} while(i<50); }
}
¬ Apakah perbedaannya dengan versi sebelumnya?
41
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Struktur program: prosedur & fungsi
¬ sekumpulan instruksi yang dapat dipanggil dengan satuperintah
¬ contoh pemanggilan prosedur/fungsi:System.out.println(“x”);// prosedur untuk menampilkan teks x ke layar
¬ Sintaks:tipe nama-fungsi ( parameter-list ) { statement; ... statement;}
¬ tipe: tipe nilai yang dikembalikan suatu fungsi
42
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Command line argument & array
class printArgs { public static void main (String args[]) {
for (int i = 0; i < args.length; i++) { System.out.println(“arg[“+i+”]”+args[i]); } }
}
¬ Array: kumpulan variabel dengan tipe samacontoh: String args[] args adalah array of String, diakses dengan cara: args[0], args[1], args[2] dst.,
43
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Operator pada Java
+,-,/,* arithmetics operators += add and assign numbers-= subtract and assign*= multiply and assign/= divide and assign | bitwise OR |= bitwise OR and assign ^ bitwise XOR ^= bitwise XOR and assign & bitwise AND &= bitwise AND and assign% take remainder %= take remainder and assign > greater than >= greater than or equal to< less than <= less than or equal to
! boolean NOT != not equal to ++ increment by one -- decrement by one >> shift bits right >>= shift bits right and assign << shift bits left <<= shift bits left and assign >>> unsigned bit shift right >>>= unsigned bit shift right and
assign && boolean AND || boolean OR == boolean equals = assignment ~ bitwise NOT ? : conditional
44
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Keyword pada Java
abstract declares that a class ormethod is abstract
boolean declares a boolean variable orreturn type
break prematurely exits a loopbyte declares a byte variable or return
typecase one case in a switch statementcatch handle an exceptionchar declares a character variable or
return typeclass signals the beginning of a class
definitioncontinue prematurely return to the
beginning of a loopdefault default action for a switch
statement
do begins a do while loopdouble declares a double variable or
return typeelse signals the code to be executed if
an if statement is not trueextends specifies the class which this
class is a subclass offinal declares that a class may not be
subclassed or that a field or methodmay not be overridden
finally declares a block of codeguaranteed to be executed
float declares a floating point variableor return type
for begins a for loopif execute statements if the condition is
true
45
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Keyword pada Java (2)
implements declares that this classimplements the given interface
import permit access to a class orgroup of classes in a package
instanceof tests whether an object isan instanceof a class
int declares an integer variable orreturn type
interface signals the beginning of aninterface definition
long declares a long integer variable orreturn type
native declares that a method isimplemented in native code
new allocates a new objectpackage defines the package in which
this source code file belongs
private declares a method or membervariable to be private
protected declares a class, method ormember variable to be protected
public declares a class, method ormember variable to be public
return returns a value from a methodshort declares a short integer variable
or return typestatic declares that a field or a method
belongs to a class rather than anobject
super a reference to the parent of thecurrent object
switch tests for the truth of variouspossible cases
46
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Keyword pada Java (3)
synchronized Indicates that a sectionof code is not thread-safe
this a reference to the current objectthrow throw an exceptionthrows declares the exceptions thrown
by a methodtransient This field should not be
serializedtry attempt an operation that may throw
an exceptionvoid declare that a method does not
return a valuevolatile Warns the compiler that a
variable changes asynchronouslywhile begins a while loop
47
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Arithmetics operation
¬ operators: +, -, *, /, %, +=, -=, *=, /=¬ precedence:
*, /, % +, - =
¬ special results: NaN (not a number) negative Infinity, positive Infinity
¬ 1.0e+308*10==Infinity¬ 0.0/0.0 = NaN
48
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Konversi String ke bilangan
int x = Integer.parseInt(“2”);long l = Long.parseLong(“2L”);double d = Double.parseDouble(“2.0”);float f = Float.parseFloat(“2.0f”);
String ival = Integer.toString (2);
String lval = Long.toString(2L);String dval = Double.toString(2.0);String fval = Float.toString(2.0f);
49
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Data type
¬ char: ‘a’, ‘b’, ‘A’, ‘B’, dst.¬ special char:
‘\b’ backspace ‘\t’ tab ‘\n’ linefeed ‘\f’ formfeed ‘\r’ carriage return ‘\”’ double quote, " ‘\’’ single quote, ' ‘\\’ backslash, \ \uxxxx Unicode character (xxxx: bilangan hexadesimal)
50
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
String
51
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
operator ? :
¬ operator <expression>?<expr1>:<expr2> mengembalikan nilaiexpr1 jika expression true dan expr2 jika false.
¬ contoh:max = (a>b)?a:b
sama dengan:if(a>b) max = a;else max = b;
52
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
break & continue
¬ break: keluar dari current block¬ continue: lompat ke awal current block (dalam loop)
53
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Array
¬array: kumpulan variabel dengan tipesejenis
¬ contoh:int[] x;int x[];int[] x[];
¬ inisialisasix = new int[5];int[] x = { 1, 2, 3 };int[][] x = { {1, 2}, {2, 3}, {3, 4}};
¬ copy data arraySystem.arraycopy(Object src_arr, int src_pos,
Object dst_arr, int dst_pos, int len)
54
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java & Object Oriented Programming
55
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Object Programming pada Java
¬ Object¬ Kelas¬ Exception¬ Interface¬ Inheritance¬ Package
56
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh Kasus
¬ Program pengolahan data akademik menyimpan data mahasiswa, dosen, karyawan, nilai, matakuliah dsb. perlu struktur data/tipe data untuk representasi mahasiswa, dosen,
karyawan, jurusan, dsb.
¬ contoh: tipe mahasiswaclass Mahasiswa { String nama; String alamat; String nim; String jurusan;}
¬ class: definisi tipe baru¬ variabel (instans) untuk tipe ini disebut object
57
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh kasus
¬mendefinisikan object:Mahasiswa mhs1;mhs1 = new Mahasiswa();
¬Deklarasi object (variabel) tipe referencetidak membuat object. Object dibuatdengan perintah new ClassName()
¬ contoh:public class MahasiswaTest { public static void main(String args[]) { Mahasiswa mhs = new Mahasiswa(); mhs.nama = “Amir”; mhs.alamat = “Dago”; mhs.jurusan = “Informatika”; System.out.println(“nama: ”+mhs.nama); System.out.println(“alamat: ”+mhs.alamat); }}
58
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Class method
¬ class method: operasi yang disediakanoleh suatu class
¬ contoh:class Mahasiswa { String nama; String alamat; String nim; String jurusan;
String getNama() { return nama; }
void setNama(String nm) { nama = nm; }}
59
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Class method
public class MahasiswaTest { public static void main(String args[]) {
Mahasiswa mhs = new Mahasiswa(); mhs.setNama(“Amir”);
System.out.println(“nama: ”+mhs.getNama()); }
}
¬ Dibandingkan cara sebelumnya, manakah yg lebih baik ?
60
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Method parameter
¬ deskripsi suatu method dengan parameter danreturn value disebut sebagai method signature
¬ sintaks:[modifier] result-type method-name ( parameterList )[throws-decl]method-body
¬ modifier: public, protected, private abstract, static, final, synchronized, native
¬ Result type void: no result typename (primitive or class name)
¬ Parameter list: typename param1-name, typename param2-name ...
61
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Method parameter
class Mahasiswa { String nama; String alamat; String nim; String jurusan;
public String getNama() { return nama; }
public void setNama(String nm) { nama = nm; }}
62
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
OO Programming
¬ Objek: satuan unit, memiliki state & behavior¬ Kelas: definisi statik dari objek, menyatakan type objek¬ Objek adalah instance dari suatu Kelas
Class C
Variable(state)
deklarasi variabel
Method(behaviour)
deklarasi methoddefinisi method
objek oA
objek oB
objek oC
instansiasikelas C
instansiasikelas C
instansiasikelas C
63
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Kelas (class)
¬ definisi internal data, internal method, atribut & behaviour dariobject
¬ Enkapsulasi: membungkus data internal dengan menyediakaninterface untuk akses data internal
¬ sintaks pendefinisian kelas:
public class myClass { public myClass() { // konstruktor } // definisi method & atribut private int myVariable; public void methodA() { }}
64
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Konstruktor
¬method khusus yg digunakan untukmembuat object
¬memiliki nama sama dengan nama class¬ contoh:
class Mahasiswa { String nama; String alamat; String nim; String jurusan; public Mahasiswa() { } public Mahasiswa(String nm) { nama = nm; }}
65
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Konstruktor
public class MahasiswaTest { public static void main(String args[]) {
Mahasiswa mhs = new Mahasiswa(“Amir”); System.out.println(“nama: ”+mhs.getNama());
}}
66
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mekanisme Enkapsulasi
¬ Java menyediakan mekanisme pendefinisianscope member variable/method dari sebuah classdengan mekanisme:
private protected public
¬ private: variable/method hanya dapat diakses oleh kelas itu sendiri
¬ protected: variable/method dapat diakses oleh semua kelas turunan variabel tidak dapat diakses dalam pola use, bukan sebagai inheritance
(lihat contoh Point pada bagian package (slide no. 23)
¬ public: variable/method dapat diakses oleh semua kelas
67
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
method & attribute access modifier
¬ access modifier: menentukan apakah method/atributtersebut dapat dipanggil oleh kelas lain
private: hanya dapat diakses dari object itu sendiri protected: hanya dapat diakses object lain yang diturunkan dari
kelas object tersebut (akan diterangkan kemudian) public: dapat diakses oleh object lain default: hanya dapat diakses oleh object yang berada dalam satu
kelas
68
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh public
// contoh public variable// file name: Point.java
class Point { public int x, y;}----------------------------------------------//file name: Test.java
public class Test { public static void main(String[] args) { Point p = new Point(); System.out.println(p.x + " " + p.y); }}
69
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh private:
// file name: Point.javapublic class Point { private int x, y; public int getX() { return x; } public int getY() { return y; }}----------------------------------------------
// file name: Test.javaclass Test { public static void main(String[] args) { Point p = new Point(); System.out.println(p.x + " " + p.y); // error !, karenaprotected
System.out.println(p.getX()+ “ “+ p.getY() ); }}
70
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
reference this
¬Pada Java, this adalah reference ygmengacu ke object itu sendiri. Contoh:// file name: Point.javapublic class Point { private int x, y; public int getX() { return this.x; } public int getY() { return this.y; }}
¬ sama dengan:// file name: Point.javapublic class Point { private int x, y; public int getX() { return this.x; } public int getY() { return this.y; }}
71
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
static dan alokasi memori
¬ atribut dan method hanya dapat diakses jika object telahdibuat
contoh:Mahasiswa mhs;System.out.println(mhs.getNama()); // errormhs = new Mahasiswa(“Amir”);System.out.println(mhs.getNama());
¬ atribut & method static dapat diakses tanpa melaluiobject
¬ static: alokasi statis, hanya ada satu instans dalamseluruh program
72
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh:
class Mahasiswa { static int jumlah; String nama; String alamat; String nim; String jurusan; public Mahasiswa() { } public Mahasiswa(String nm) { nama = nm; jumlah = jumlah+1; }
public static int getJumlah() { return jumlah; }}
73
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh static:
public class StaticTest { public static void main(String args[]) {
Mahasiswa mhs1 = new Mahasiswa(); System.out.println(“Jumlah:”+Mahasiswa.getJumlah());
Mahasiswa mhs2 = new Mahasiswa(); System.out.println(“Jumlah:”+Mahasiswa.getJumlah());
}}
74
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interaksi antar object
¬ Program pada OO: membuat object-object danmengatur interaksi antar object
¬ Relasi antar object: has-a is-a reference
¬ Has-a: suatu object dicakup oleh object lainnya¬ Is-a: suatu object adalah instans dari kelas yg diturunkan
dari kelas object lainnya¬ Reference: 2 buah object atau lebih saling menyimpan
reference lainnya
75
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance
¬ Inheritance: menyatakan pewarisan dari satu kelas ke kelaslainnya.
¬ Inheritance dituliskan dengan menggunakan keyword extends¬ Java hanya mendukung single inheritance
ColoredPointColor color
setColor()
Pointint xint y
Move()
76
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance
public class Point { int x = 1, y = 1; void move(int dx, int dy) { x += dx; y += dy; }}
public class ColoredPoint extends Point { private int color; void setColor(int clr) { color = clr }; int getColor();}
¬Class Point disebut sebagai parent,superclass
¬Class ColoredPoint disebut sebagai child,subclass
77
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance
¬ Contoh: Buat buku alamat yang dapat menyimpan data alamat
mahasiswa, dosen dan lembaga. Untuk data mahasiswa, bukutersebut menyimpan informasi nama, nim, alamat, jurusan,angkatan, sedangkan untuk dosen buku tersebut menyimpaninformasi nama, nip, alamat, jurusan, ruang
Buat buku informasi kendaraan, yang menyimpan data motor danmobil. Motor memiliki atribut: merek, model, tahun, cc, dan mobilmemiliki atribut merek, model, tahun, cc, jumlah pintu dst.
78
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance - kelakuan konstruktor
¬ Pada Java, konstruktor base class selalu dipanggilpada saat pemanggilan konstruktor anak.
class Bapak { Bapak() { System.out.println("Konstruktor Bapak"); }}class Anak extends Bapak { Anak() { System.out.println("Konstruktor Anak"); }}public class TestKonstruktor extends Anak { TestKonstruktor() { System.out.println("Konstruktor TestKonstruktor"); } public static void main(String[] args) { TestKonstruktor x = new TestKonstruktor(); }}
79
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance - Kelakuan konstruktor
¬ Konstruktor dengan parameter tidak otomatis memanggilkonstruktor base class dengan parameter yang sama
class Bapak { Bapak() { System.out.println("Konstruktor Bapak"); } Bapak(int x) { System.out.println(“Konstruktor Bapak dengan parameter”); }}class Anak extends Bapak { Anak() { System.out.println("Konstruktor Anak"); } Anak(int x) { System.out.println(“Konstruktor Anak dengan parameter”)}; } public static void main(String[] args) { Anak x = new Anak(5); }}
80
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance - mekanisme protected
¬ protected: modifier untuk mendefinisikan scope pada kelasdan turunannya
¬ atribut & method yang dinyatakan sebagai protected hanyadapat diakses oleh objek yang berasal dari satu kelas atausubclass dari kelas tersebut
class Bapak { protected int a, b;}
class Anak extends Bapak { void ubahProtected() { a = 15; // boleh, karena Anak diturunkan dari Bapak }}
81
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh protected
public class Point { protected int x, y;}
public class Point3D { protected int z; public void move(int dx, int dy, int dz) { x = x+dx; y = y+dy; z = z+dz; // ok, karena diakses oleh
kelas turunan }}
class Test { public static void main(String[] args) { Point3D p = new Point3D(); p.x = 4; p.y = 3; p.z = 2; // error !, karena protected p.move(1,2,3); }}
82
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Exception
¬Penanganan kesalahan pada javamenggunakan mekanisme exceptiontry { statement} catch (tipe exception name){ statement} catch (tipeexception name) { statement} . .} finally { statement}
83
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh:
public class ExceptionTest { public static void main(String args[]) { ExceptionTest test = new ExceptionTest(); try { test.getError();
System.out.println(“Tidak ada error”); } catch (Exception e) { System.out.println( e ); } }
public void getError() throws Exception { throw new Exception(“Error!”); }}
84
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance - final class
¬ class dapat memiliki modifier final, yangberarti class tersebut tidak dapatditurunkan lagi menjadi class baru
final class finalClass { finalClass() { } void methodA() { }}
class classBaru extends finalClass { // error
}
85
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Inheritance - final method
¬ final pada sebuah method: menyatakanmethod tersebut tidak dapat di redefinepada class anak
class Bapak { Bapak() { } final void finalMethod() { }}
class classBaru extends Bapak { void finalMethod() { // error }}
86
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Package
¬ package adalah mekanisme untuk pengelompokan kelas-kelas ke dalam sebuah modul pada Java
¬ package didefinisikan dengan menambahkan baris: package <nama package>
pada awal file¬ Kelas yang berasal dari suatu package diakses dengan
menggunakan nama package dan nama kelas. contoh: points.Point (kelas Point yang terdapat pada package points)
¬ Kelas yang berasal dari suatu package dapat diakseslangsung dengan menggunakan nama kelas dengan caramenggunakan import.
87
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Package - contoh
// file Point.javapackage points;public class Point { protected int x, y;}---------------------------------------// file: Test.javaclass Test { public static void main(String[] args) { points.Point p = new points.Point(); p.x = 4; p.y = 3; p.z = 2; p.move(1,2,3); }}--------------------------------------// file: Test2.javaimport points;class Test2 { public static void main(String[] args) { Point p = new Point(); p.x = 4; p.y = 3; p.z = 2; p.move(1,2,3); }
88
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Package & enkapsulasi
¬ Package juga merupakan mekanisme untuk membatasiscope sebuah variabel/method/class
variabel/method/class yang tidak memiliki access modifier(public/private/protected) memiliki scope package, yaitu hanyadapat diakses oleh class lain yang berada dalam satu package
variabel/method dengan access modifier protected dapat diaksesoleh class lain yang berada dalam satu package
89
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh package access modifier
// file Point.javapackage points;
public class Point { public int x, y; void move(int dx, int dy) { x += dx; y += dy; } public void moveAlso(int dx, int dy) { move(dx, dy); }}
//file PlusPoint.java
package morepoints;
public class PlusPoint extends points.Point { public void move(int dx, int dy) { super.move(dx, dy); // compile-time error, karena tidak 1
package moveAlso(dx, dy); }}
90
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh protected dalam package
// file Point.javapackage points;public class Point { protected int x, y; void warp(threePoint.Point3d a) { if (a.z > 0) // compile-time error: cannot access a.z
// karena bukan satu package a.delta(this); }}// file Point3d.javapackage threePoint;import points.Point;public class Point3d extends Point { protected int z; public void delta(Point p) { p.x += this.x; // compile-time error: cannot access p.x &
p.y p.y += this.y; // karena bukan satu package. this.x dapat
diakses // karena Point3d turunan dari Point
}}
91
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface
¬ Definisi method yang harus diimplementasikan dankonstanta (final member variabel)
¬ Mendefinisikan type¬ Interface tidak dapat diinstansiasi
public interface interfaceA { int integerConst = 5; public void method1(/* parameter */); public void method2( /* parameter */); }
92
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Implementasi Interface
¬ Interface dapat diimplementasikan oleh sebuah kelas¬ Kelas yang mengimplementasi sebuah interface harus
menyediakan semua method yang disebutkan dalam interfacetersebut
class MyClass implements interfaceA { public void methodA() {
} public void methodB() {
} }
93
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Abstract class
¬ interface & abstract classes: serupa tapi tak sama¬ interface sama sekali tidak mengandung implementasi¬ interface tidak memiliki state (member variable selain
constant
94
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
¬ Interface dapat diturunkan dari interface lainnya¬ Kelas implementasi harus mendefinisikan seluruh
method yang didefinisikan oleh interface beserta parent-nya.
¬ Interface dapat diturunkan secara multiple inheritance
95
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
interface FirstInterface { Object method1();}
interface SecondInterface extends FirstInterface { int method2();}
public class FirstClass implements FirstInterface { public FirstClass(){ }...}public class SecondClass extends FirstClass implements
SecondInterface {...}
SecondClass bertype: FirstInterface, SecondInterface,FirstClass & SecondClass
96
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
¬ Inheritance pada interface hanya menurunkan sintaks method-method yang didefinisikan pada bapak
¬ Multiple interface inheritance dengan nama method yangsama tidak mengakibatkan konflik.
public interface A { methodA();}public interface B { methodA();}public interface AB extends A, B {}
97
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
// file BaseColors.javainterface BaseColors { int RED = 1, GREEN = 2, BLUE = 4;}interface RainbowColors extends BaseColors { int YELLOW = 3, ORANGE = 5, INDIGO = 6, VIOLET = 7;}interface PrintColors extends BaseColors { int YELLOW = 8, CYAN = 16, MAGENTA = 32;}interface LotsOfColors extends RainbowColors, PrintColors { int FUCHSIA = 17, VERMILION = 43, CHARTREUSE = RED+90;}// file: Main.javapublic class Main { public static void main(String args[]) { System.out.println(LotsOfColors.YELLOW); // error }}
98
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Multiple Inheritance
¬ Interface dapat digunakan untukmenggantikan kapabilitas yang disediakanmelalui multiple inheritance
interface CanFight { void fight(); } interface CanSwim { void swim(); } interface CanFly { void fly(); } class ActionCharacter { public void fight() {} }
99
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Multiple Inheritance
class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { public void swim() {} public void fly() {}}public class Adventure { static void t(CanFight x) { x.fight(); } static void u(CanSwim x) { x.swim(); } static void v(CanFly x) { x.fly(); }
public static void main(String[] args) { Hero i = new Hero(); t(i); // Treat it as a CanFight u(i); // Treat it as a CanSwim v(i); // Treat it as a CanFly }}
100
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Multiple Inheritance
¬ Class hanya mewarisi konstanta dari interface¬ Class tidak mewarisi implementasi dari interface¬ hierarki interface independen terhadap hierarki class,
beberapa class yang mengimplementasi interface yangsama bisa jadi sama sekali tidak berkaitan
101
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java API
102
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java API
¬ java.applet¬ java.io¬ java.util¬ java.awt¬ javax.swing¬ java.lang¬ java.math
¬ java.sql¬ java.text¬ java.net¬ java.rmi¬ java.security
103
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Applet
¬ program kecil yang dijalankan dari sebuah browser¬ kode program (.class file) dapat didownload dari server¬ subclass dari java.applet.Applet
104
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Applet
¬HTML: template link <applet> tag
<HTML><HEAD><TITLE> Hello World </TITLE></HEAD>
<BODY>Applet Hello World: <P><applet code="HelloWorldApplet.class" CODEBASE=“classes” width="150" height="50"></applet></BODY></HTML>
105
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Applet
import java.applet.Applet;import java.awt.Graphics;
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) { g.drawString("Hello world!", 50, 25);
}
}
¬ Tidak ada main(String args[]) !
106
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Applet & Event driven program
¬ Event driven: program merespon event yang dikirimkankepadanya
¬ contoh event: keyboard event, mouse event, focusevent, action event
107
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Applet
¬ Method yang disediakan java.applet.Applet init() start() paint() destroy() processMouseEvent(MouseEvent ev) processKeyEvent(KeyEvent ev) processFocusEvent(FocusEvent ev)
108
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Applet: contoh
¬Applet yang menggambar garis di antara 2titikimport java.applet.*;import java.awt.* ;public class Garis extends Applet { int a; int b; int c; int d; int e; public void init(){ resize(300, 500); } public void paint(Graphics g){ g.drawLine(a, b, d, e); } public void processMouseEvent(Event evt, int x, int y) { if (c==0) { a=x; b=y; c=1; } else { d=x; e=y; c=0; repaint(); } return true; } }
109
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java IO
¬ disediakan pada package java.io.*;¬ stream: aliran data¬ semua fasilitas IO direpresentasikan sebagai stream¬ InputStream: kelas general untuk menangani aliran input¬ OutputStream: kelas general untuk menangani output¬ Contoh IO Stream: file, network, pipe, string.¬ note: string dapat dibuat sebagai stream, yaitu dengan
cara membaca dan menulis secara sekuensial
110
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Jenis-jenis Stream
¬ Stream yang menerima masukan disebut sebagai inputstream
contoh: FileInputStream: untuk membaca file
¬ Stream mengeluarkan data disebut sebagaioutputstream
contoh: FileOutputStream
¬ Masukan untuk suatu stream dapat berasal dari streamlainnya. Stream jenis ini disebut sebagai processingstream
contoh: BufferedOutputStream: digunakan untuk menampungstream dalam buffer, sebelum digunakan
111
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Bytes stream & Character stream
¬ Pada java tersedia 2 jenis stream berdasarkan elemennya¬ byte stream: satuan data yang membentuk stream adalah byte
(8 bit), umumnya stream jenis ini memiliki nama denganmenggunakan akhiran Stream
contoh: InputStream, OutputStream
¬ characters stream: satuan data yang membentuk streamadalah character (16 bit), umumnya stream jenis ini memilikinama dengan menggunakan akhiran Writer atau Reader
contoh: InputStreamReader, InputStreamWriter
112
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
InputStream
¬ Semua byte oriented input stream diturunkan dari kelasini.abstract class InputStream { int available();
void close(); int mark( int n );
int reset(); int read();
int read( byte[] b ); int read( byte[] b, int off, int len );
long skip( long n );}
113
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java IO
Reader
BufferedReader
CharArrayReader
InputStreamReader
FilterReader
PipedReader
StringReader
LineNumberReader
FileReader
PushbackReader
Writer
BufferedWriter
CharArrayWriter
OutputStreamWriter
FilterWriter
PipedWriter
StringWriter
FileWriter
PrintWriter
114
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java IO
InputStream
FileInputStream
PipedInputStream
FilterInputStream
ByteArrayInputStream
SequenceInputStream
StringBufferInputStream
LineNumberInputSream
OutputStream
ObjectOutputStream
FileOutputStream
PipedOutputStream
FilterOutputStream
ByteArrayOutputStream
ObjectInputStream
DataInputStream
BufferedInputSream
PushbackInputStream
DataOutputStream
BufferedOutputStream
PrintStream
115
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Membaca file
import java.io.*;public class BacaFile {
public static void main(String[] args) throws IOException {
FileInputStream in; int c;
in = new FileInputStream( args[0] ); while ((c = in.read()) != -1)
System.out.write(c); in.close();
}}
116
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Menulis file
import java.io.*;public class TulisFile { public static void main(String[] args) throws IOException { FileInputStream in; FileOutputStream out; int c; in = new FileInputStream( args[0] ); out = new FileOutputStream( args[1] ); while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); }}
117
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Input Dialog
import javax.swing.*;
public class InputDialog {
public static void main(String args[]) { String inputValue = JOptionPane.showInputDialog("Please
input a value"); System.out.println(inputValue); inputValue = JOptionPane.showInputDialog("Please input a
value 2"); System.out.println(inputValue); System.exit(0); }}
118
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Input (Text mode)
import java.io.*;
public class InputString { public static void main(String args[]) { try { BufferedReader in = new BufferedReader( new
InputStreamReader(System.in)); String s = in.readLine(); System.out.println( s ); } catch(Exception e) { e.printStackTrace(); } }}
119
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Input File
120
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Output File
121
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java util
¬ Java Collection Framework kumpulan kelas untuk menangani koleksi objek (struktur data
seperti array, list, set etc.)
¬ Date, Calendar, TimeZone, Locale¬ Properties: file konfigurasi untuk aplikasi java¬ Random¬ StringTokenizer: parser untuk string
122
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Hashtable
¬ koleksi objek dengan key unik. Objek dapatdiletakkan ke dalam hashtable dengan identifikasikey unik tertentu.public class Hashtable extends Dictionary implements Map, Cloneable, Serializable { // ... public Object put( Object key, Object val ); public Object get( Object key ); public Object remove( Object key ); public void clear(); public int size(); // ... method lainnya}
123
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Hashtable
¬ Contoh penggunaan:Hashtable table = new Hashtable();
table.put(“key1”, new Integer(1) );table.put(“key2”, new Integer(2) );
Integer intval = (Integer) table.get(“key1”);if( intval != null ) {
System.out.println(“key: key1, value: “+intval);}
124
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Vector
¬ Koleksi objek dengan urutan tertentu (serupaarray)public class Vector extends AbstractList implements List, Cloneable, Serializable { // ... public boolean add( Object val ); public boolean add( int index, Object val ); public Object get( int index ); public Object remove( Object val ); public void clear(); public int size(); // ... method lainnya}
125
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Vector
¬ contoh:Vector v = new Vector();
v.add( new Integer(1) );v.add( new Integer(2) );
Integer intval = (Integer) v.get(0);if( intval != null ) {
System.out.println(“index 0, value: “+intval);}
126
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java Swing
127
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Swing
¬ Koleksi kelas untuk tampilan (GUI) pada Java¬ AWT: Abstract Window Toolkit, koleksi kelas untuk
tampilan pada Java versi JDK 1.1 dan versi sebelumnya¬ AWT mengandung native code, sehingga terdapat
perbedaan antara platform satu dengan lainnya
128
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh aplikasi dengan Swing
import javax.swing.*; // baris ini diperlukan karena // swing berasal dari package javax.swing
public class Aplikasi extends JFrame { public Aplikasi(String title) {
super(title); }
public static void main(String s[]) { Aplikasi frame = new Aplikasi(”Aplikasi Swing");
frame.setSize(50,100); frame.show();
}}
129
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh aplikasi swing
import javax.swing.*; // baris ini diperlukan karena // swing berasal dari package javax.swingpublic class Aplikasi { JFrame frame; public Aplikasi(String title) { frame = new JFrame(title); } public void run() { frame.setSize(50, 100); frame.show(); } public static void main(String s[]) { Aplikasi app = new Aplikasi(”Aplikasi Swing"); app.run(); }}
130
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
JComponent
¬ Widget: elemen sebuah graphical user interface untukmelakukan fungsi tertentu
¬ Atomic component Button: JButton, JCheckBox, JRadioButton, JMenuItem,
JCheckBoxMenuItem, JRadioButtonMenuItem, JToggleButton JComboBox JList Menu: JMenu, JMenuItem JLabel JTextField JTable
131
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java GUI
Button
Label
Panel
Frame
¬ Panel (JPanel): Container untuk meletakkan komponen GUI¬ Panel memiliki LayoutManager yang berfungsi mengatur tata
letak komponen yang dimilikinya¬ Komponen diletakkan ke dalam panel dengan memanggil
method add dari panel
132
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh Panel
JPanel panel = new JPanel();JButton b1 = new JButton(“Button 1”);JButton b2 = new JButton(“Button 2”);JLabel label1 = new JLabel(“Label 1”);JLabel label2 = new JLabel(“Label 2”);JLabel label3 = new JLabel(“Label 3”);panel.add(b1);panel.add(b2);panel.add(label1);panel.add(label2);panel.add(label3);
¬ Kode di atas membuat sebuah panel, 2 buahbutton dan 3 buah label, kemudianmenambahkan button dan label ke dalampanel tersebut.
133
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
JFrame
¬ Frame: Top level container (Window utama) dari suatuaplikasi Java
¬ Sebuah frame memiliki: Title, pada bagian atas frame MenuBar, tempat untuk meletakkan menu standard panel yang disebut sebagai ContentPane
gambar diambil dari Java Tutorial, Sun
134
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Menambahkan Button ke Frame
import javax.swing.*;public class CobaButton { JFrame frame; JButton button; public CobaButton(String title) { frame = new JFrame(title); } public void run() { button = new JButton(); frame.getContentPane().add(button); frame.pack(); frame.show(); } public static void main(String s[]) { CobaButton app = new CobaButton(”Aplikasi Swing"); app.run(); }}
135
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mengganti ContentPanel dari sebuah Frame
¬ Standar content panel dari sebuah frame dapat digantidengan perintah setContentPane.
¬ contoh:JFrame frame = new JFrame();
JPanel panel = new JPanel();frame.setContentPane(frame);
¬ Tugas: Gabungkanlah kode pada contoh panel denganprogram contoh Aplikasi Swing sehingga program andadapat menampilkan window berisi 2 button dan 3 label
136
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh
import javax.swing.*;public class CobaPanel { JFrame frame; public CobaPanel(String title) { frame = new JFrame(title); } public void run() { JPanel panel = new JPanel(); JButton b1 = new JButton(“B1”); JButton b2 = new JButton(“B2”); JLabel label1 = new JLabel(“L1”); JLabel label2 = new JLabel(“L2”); JLabel label3 = new JLabel(“L3”); panel.add(b1); panel.add(b2); panel.add(label1); panel.add(label2);
panel.add(label3);// tambahkan kode di sini untuk
mengganti content panel dari frame}
public static void main(String s[]) { CobaPanel app = new CobaPanel(”Aplikasi Swing"); app.run(); }}
137
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mengganti LayoutManager dari sebuah Panel
¬ Sebuah panel dapat memiliki layout manager untukmengatur tata letak komponen
¬ Standar layout manager untuk JPanel adalahFlowLayout
¬ Standar layout manager untuk Content pane dari Jframeadalah BorderLayout
¬ Jenis-jenis layout manager sederhana pada JDK 1.2/1.3 FlowLayout BorderLayout BoxLayout GridLayout
138
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
FlowLayout
¬ Mengatur posisi komponen-komponen dari kiri ke kanandan meletakkan komponen selanjutnya pada baris barujika ukuran lebar panel tidak mencukupi
139
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
BorderLayout
¬ BorderLayout mengatur komponen dalam posisitertentu, sesuai arah mata angin: NORTH,EAST, SOUTH, WEST dan CENTER.Penambahan komponen dengan BorderLayoutmemiliki parameter posisi. Contoh:JPanel panel = new JPanel();panel.add( new JButton(“South”), BorderLayout.SOUTH );panel.add( new JButton(“East”), BorderLayout.EAST );panel.add( new JButton(“West”), BorderLayout.WEST );panel.add( new JButton(“North”), BorderLayout.NORTH );panel.add( new JButton(“Center”), BorderLayout.CENTER );
140
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
BoxLayout
¬ BoxLayout mengatur komponen secara horizontal atauvertikal. Contoh:JPanel panel = new JPanel();panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
panel.add( new JButton(“b1”) );panel.add( new JButton(“b2”) );
panel.add( new JButton(“b3”) );
141
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
GridLayout
¬ GridLayout mengatur komponen dalam posisi grid, yaituserupa matriks. Contoh:JPanel panel = new JPanel();panel.setLayout( new GridLayout( 2, 3 ) );
panel.add( new JButton(“b11”));panel.add( new JButton(“b12”));
panel.add( new JButton(“b13”));panel.add( new JButton(“b21”));
panel.add( new JButton(“b22”));panel.add( new JButton(“b23”));
142
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
GridBagLayout
¬ GridBag mengatur komponen serupa dengangrid, namun untuk setiap komponen dapatditentukan konstrain tertentu, sehingga GridBagakan mengatur tata letak berdasarkan konstrainuntuk setiap komponen
¬ Konstrain yg dapat diatur: gridx, gridy: koordinat komponen dalam grid layout gridwidth, gridheight: jumlah sel yg digunakan sebuah komponen.
Komponen dapat menduduki lebih dari 1 sel horisontal dan vertikal fill: kelakukan komponen jika ukuran sel lebih besar dari komponen.
Komponen dapat membesar horizontal/vertikal sesuai ukuran sel,berdasarkan parameter konstrain fill.
weightx, weighty: bobot ukuran sel dibandingkan sel lainnya insets: jarak antara komponen dengan sel anchor: posisi komponen di dalam sel
143
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
GridBagLayout
¬ fill: GridBagConstraint.NONE: komponen tidak membesar GridBagConstraint.HORIZONTAL: komponen membesar secara
horizontal GridBagConstraint.VERTICAL: komponen membesar vertikal GridBagConstraint.BOTH: komponen membesar ke kedua arah
¬ anchor: GridBagConstraint.SOUTH: komponen diletakkan di bagian bawah GridBagConstraint.NORTH: komponen diletakkan di bagian atas GridBagConstraint.CENTER: komponen diletakkan di bagian tengah GridBagConstraint.WEST: komponen diletakkan di bagian kiri GridBagConstraint.EAST: komponen diletakkan di bagian kanan
144
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mengatur letak komponen dengan panel
¬ Sebuah panel dapat ditambahkan ke panel lainnya. Halini digunakan untuk membantu mengatur tata letakkomponen. Contoh:
145
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Menangani event pada Swing
¬ Jenis event: mouse event focus event keyboard event component event container event window event action event adjustment event item event text event
146
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
event listener
¬ objek yang bertugas untuk mendengarkan event danmemberikan respon terhadap event tertentu.
¬ mengimplementasikan salah satu dari listener interface: ComponentListener ContainerListener FocusListener KeyListener MouseListener MouseMotionListener WindowListener ActionListener AdjustmentListener ItemListener TextListener
147
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
interface
¬ deskripsi method-method yang harusdisediakan oleh suatu kelas
¬ kelas yang mengimplementasikan sebuahinterface harus mendefinisikan semua methodpada interface tersebut
¬ contoh:interface ActionListener { void actionPerformed( ActionEvent ev);}
class MyActionHandler implements ActionListener { void actionPerformed( ActionEvent ev ) { System.out.println(“menerima event”); }}
148
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mendefinisikan handler untuk event tertentu
¬ contoh:MyActionHandler hd = new MyActionHandler();
JButton b1 = new JButton();b1.addActionListener( hd );
¬ baris di atas menyatakan bahwa objek hd adalahhandler untuk event jenis action (button clicked) untukobjek b1.
149
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mouse Event
¬ java.awt.event.MouseEvent MouseEvent.MOUSE_CLICKED MouseEvent.MOUSE_DRAGGED MouseEvent.MOUSE_ENTERER MouseEvent.MOUSE_EXITED MouseEvent.MOUSE_MOVED MouseEvent.MOUSE_PRESSED MouseEvent.MOUSE_RELEASED int getID();
• mengambil ID event, seperti MOUSE_CLICKED, MOUSE_MOVED String paramString(); // memberikan deskripsi event int MouseEvent.getX(); int MouseEvent.getY();
• getX() & getY() mengambil koordinat mouse pada saat terjadi event Point MouseEvent.getPoint();
• getPoint() mengambil koordinat mouse dalam bentuk Point. Pointmemiliki atribut x & y
int getClickCount();• mengembalikan jumlah click yang dilakukan pada saat terjadi event
150
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
MouseListener interface
¬ Interface ini diimplementasikan oleh kelas yang menjadilistener event mousepublic interface MouseListener { void mouseClicked(MouseEvent ev);
void mousePressed(MouseEvent ev); void mouseReleased(MouseEvent ev);
void mouseEntered(MouseEvent ev); void mouseExited(MouseEvent ev);
}
151
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mouse Motion Listener
¬ Interface untuk menangani event gerakan mousepublic interface MouseMotionListener {
void mouseDragged( MouseEvent ev ); void mouseMoved( MouseEvent ev );
}
152
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Component event
¬ Event yg berkaitan dengan perubahan padakomponen, seperti komponen moved, resized,hidden & shown
¬ java.awt.event.ComponentEvent ComponentEvent.COMPONENT_MOVED ComponentEvent.COMPONENT_RESIZED ComponentEvent.COMPONENT_HIDDEN ComponentEvent.COMPONENT_SHOWN int getID(); Component getComponent();
• memberikan komponen yang menghasilkan event String paramString();
153
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Component listener
¬ interface untuk menangani event componentpublic interface ComponentListener {
public void componentHidden(ComponentEvent ev); public void componentShown(ComponentEvent ev);
public void componentResized(ComponentEvent ev); public void componentMoved(ComponentEvent ev);
}
154
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Action Event
¬ java.awt.event.ActionEvent int getID(); Object getSource(); String getActionCommand();
¬ ActionListenerpublic interface ActionListener { void actionPerformed( ActionEvent ev );}
¬ Pada component asal, action command di setdengan perintah: setActionCommand()JButton b = new JButton(“button”);b.setActionCommand(“b”);
155
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Key Event
¬ event yang berkaitan dengan aktivitas keyboard¬ java.awt.event.KeyEvent
KeyEvent.VK_A, KeyEvent.VK_B, KeyEvent.VK_F1,
KeyEvent.VK_PAGE_UP, etc. char getKeyChar();
• mengembalikan representasi char yang ditekan pada keyboard int getKeyCode();
• mengembalikan kode key yang ditekan pada keyboard
156
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Key Listener
public interface KeyListener { void keyTyped( KeyEvent ev );
// high level event, dibangkitkan ketika sebuah // karakter dihasilkan keyboard
void keyPressed( keyEvent ev ); // low level, dibangkitkan setiap sebuah tombol pada
// keyboard ditekan void keyReleased( keyEvent ev );
}
157
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Window Event
¬ java.awt.event.WindowEvent Window getWindow(); String paramString();
158
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
WindowListener
public interface WindowListener { void windowActivated( WindowEvent ev );
void windowClosed( WindowEvent ev ); void windowClosing( WindowEvent ev );
void windowDeactivated( WindowEvent ev ); void windowDeiconified( WindowEvent ev );
void windowIconified( WindowEvent ev ); void windowOpened( WindowEvent ev );
}
159
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Focus Event
¬ java.awt.event.FocusEvent Component getComponent();
¬ FocusListenerpublic interface FocusListener {
void focusGained( FocusEvent ev ); void focusLost( FocusEvent ev );
}
160
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Menggunakan adapter untuk event listener
¬ interface: semua method harus didefinisikanulang pada kelas yang mengimplementasikannya
¬ sebuah event listener dapat diturunkan dari kelasAdapter, dan mendefinisikan ulang method yangdiperlukan saja.class MyAdapter extends MouseAdapter { public void mouseClicked( MouseEvent ev ) { System.out.println("mouse clicked"); }}public void init() { JButton b = new JButton(); MyAdapter evHandler = new MyAdapter(); b.addMouseListener( evHandler );}
161
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
JDBC
162
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
JDBC
¬ API yang menyediakan interface universal ke basis data¬ package java.sql¬ SQL: Standard Query Language¬ JDBC menyediakan kelas-kelas:
DriverManager: kelas ini digunakan untuk membuat koneksi (instance darikelas Connection) ke database
Connection: instance dari kelas ini merepresentasikan koneksi kedatabase tertentu
Statement: instance dari kelas ini merepresentasikan sebuah query yangakan dieksekusi ke database
• PreparedStatement• CallableStatement
ResultSet: instance dari kelas ini merepresentasikan hasil eksekusi query
163
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Struktur JDBC
164
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
JDBC Driver
¬ JDBC menggunakan driver yang spesifik untuk masing-masing jenis database.
¬ Pendefinisian driver yg digunakan dilakukan dengancara me-load class driver yg diinginkanClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");Class.forName(“org.gjt.mm.mysql.Driver”);
¬ Driver untuk ODBC: sun.jdbc.odbc.JdbcOdbcDriver,sudah disediakan oleh Sun
¬ Driver untuk mySQL (org.gjt.mm.mysql.Driver) tersediasecara freeware
165
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Menggunakan ODBC Driver
¬ Buatlah definisi Datasource yang akan digunakan padaODBC melalui setting ODBC datasource dari controlpanel (misalkan dibuat datasource bernama mahasiswa)
¬ pada program java, load kelas Driver untuk Odbc,Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
¬ Buka koneksi ke ODBC dengan mendefinisikan URLuntuk datasource tersebut, dengan format:
jdbc:odbc:mahasiswa
¬ dimana odbc adalah nama driver yang digunakan, danmahasiswa adalah nama data source dari ODBC
166
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Connection
¬ Connection adalah representasi hubungan ke database¬ Connection dibuat dengan mendefinisikan url string yang
sesuai Connection con =
DriverManager.getConnection(“jdbc.odbc.mahasiswa”);
¬ Connection digunakan untuk membuat statement (queryyang akan dikirimkan ke database) dan mendapatkaninformasi tentang database
167
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Query SQL
¬ query dikirimkan ke database dalam bentuk SQL Query.Beberapa perintah yang umum digunakan adalahsebagai berikut:
CREATE: untuk membuat table baru SELECT: untuk mengambil record dari database yang memenuhi
kriteria tertentu INSERT: untuk menambah record ke dalam suatu table UPDATE: untuk merubah isi record tertentu pada suatu table DELETE: untuk menghapus record pada suatu table DROP: untuk menghapus sebuah table
168
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
CREATE TABLE
CREATE TABLE <NAMA TABLE> (<NAMA KOLOM> <TIPE>, <NAMA KOLOM> <TIPE>, ... PRIMARY KEY (<NAMA KOLOM>), FOREIGN KEY (<NAMA KOLOM>)
REFERENCES <NAMA_TABEL> (<NAMA KOLOM>))
¬ Tipe dari sebuah kolom dapat berupa: char(x), dimana x adalah ukuran/jumlah character, varchar(x), serupa dengan char, namun alokasinya dilakukan
secara variabel int(x), x adalah jumlah digit yang disediakan date, untuk tipe tanggal jenis tipe lain yang spesifik untuk setiap database
169
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
SELECT
SELECT <NAMA KOLOM>, <NAMA KOLOM>, ...FROM <NAMA TABEL>WHERE <KONDISI>
¬ Select digunakan untuk mengambil record yangmemenuhi kriteria tertentu, yang diletakkan pada where.Contoh:
Select NAMA, ALAMAT from MAHASISWA whereNIM=“13592033”
170
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
INSERT
INSERT INTO <NAMA TABEL> (<NAMA KOLOM>, <NAMA KOLOM>, ... )VALUES (<NILAI KOLOM>, <NILAI KOLOM>, ...)
171
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
UPDATE
UPDATE <NAMA TABEL>SET (<NAMA KOLOM>=<NILAI KOLOM>, <NAMA KOLOM>=<NILAI KOLOM>, ...)WHERE <KONDISI>
172
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
DELETE
DELETE FROM <NAMA TABEL>WHERE <KONDISI>
¬ DROPDROP <NAMA TABLE>
173
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Statement
¬ Query yang akan dieksekusi oleh database¬ Contoh query:
CREATE TABLE MAHASISWA (NAMA VARCHAR(20), ALAMATVARCHAR(60), JURUSAN VARCHAR(20))
SELECT NAMA FROM MAHASISWA WHEREJURUSAN=“INFORMATIKA”
¬ Statement dibuat dengan memanggil createStatement dariobject Connection
174
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Statement
¬ Statement yang tidak menghasilkan data dieksekusidengan memanggil method executeUpdate(), sedangkanstatement yang menghasilkan data dieksekusi denganmemanggil method executeQuery(), yang akanmenghasilkan object bertipe ResultSet
¬ Contoh: stmt = con.createStatement(); stmt.executeUpdate(“CREATE TABLE MAHASISWA ”+ “(NAMA VARCHAR(30), ALAMAT VARCHAR(30))”);
175
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
PreparedStatement
¬ PreparedStatement: query yang memiliki parameter yangdapat di set. Contoh:
SELECT NAMA FROM MAHASISWA WHERE JURUSAN=?
¬ Simbol ? merepresentasikan sebuah parameter yang dapat diset.
¬ PreparedStatement dibuat dengan memanggil methodprepareStatement dari object Connection
¬ contoh: PreparedStatement stmt = con.prepareStatement(“SELECT *FROM MAHASISWA WHERE NAMA=?”);
stmt.setString(1, “Amir”); ResultSet rset = stmt.executeQuery();
176
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
ResultSet
¬ ResultSet adalah table hasil query database¬ ResultSet diakses secara per baris table, dimana untuk
maju ke baris berikutnya digunakan method next()
dari object ResultSet¬ Untuk mengambil field tertentu dari current row (baris
saat ini) digunakan perintah: getString(String fieldname): jika tipe data field berupa string getInt(String fieldname) : jika tipe data field berupa integer, dst.
¬ Contoh: stmt = con.createStatement(); ResultSet rset = stmt.executeQuery(“SELECT * “ + ”FROM MAHASISWA”); String nama = rset.getString(“NAMA”);
177
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh membuat table
//File : CreateMahasiswa.java//Desc : implementasi pembentukan tabel Mahasiswaimport java.sql.*;public class CreateMahasiswa { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = "create table MAHASISWA " + "(NIM CHAR(8),NAMA VARCHAR(32)," + "ALAMAT VARCHAR(100), " + ”JURUSAN VARCHAR(40))"; Statement stmt; Connection con; try { Class.forName(” sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }
178
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
try { con = DriverManager.getConnection(url); stmt = con.createStatement(); stmt.executeUpdate(query); stmt.close(); con.close(); } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}
179
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh insert ke database
//File : InsertMahasiswa.java//Desc : implementasi insert data ke table Mahasiswaimport java.sql.*;public class InsertMahasiswa { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”insert into MAHASISWA " + ”values (‘13592033’,‘Amir’,‘Dago’,”+ “‘Informatika’)”; Statement stmt; Connection con; try { Class.forName(” sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }
180
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
try { con = DriverManager.getConnection(url); stmt = con.createStatement(); stmt.executeUpdate(query); stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}
181
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh insert dengan PreparedStatement
//File : InsertMahasiswa2.java//Desc : implementasi insert data ke table Mahasiswaimport java.sql.*;public class InsertMahasiswa2 { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”insert into MAHASISWA " + ”values ( ?, ?, ?, ?)”; PreparedStatement stmt; Connection con; try { Class.forName(” sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }
182
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
try { con = DriverManager.getConnection(url); stmt = con.prepareStatement(query); stmt.setString(1, “13592033”); stmt.setString(2, “Amir”); stmt.setString(3, “Dago”); stmt.setString(4, “Informatika”); stmt.executeUpdate(); stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}
183
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh query database
//File : SelectMahasiswa.java//Desc : implementasi pembentukan tabel Mahasiswaimport java.sql.*;public class SelectMahasiswa { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”SELECT * FROM MAHASISWA”; Statement stmt; Connection con; try { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }
184
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
try { con = DriverManager.getConnection(url); stmt = con.createStatement(); ResultSet rset = stmt.executeQuery(query); while(rset.next()) { System.out.println(“Nama: “+rset.getString(“NAMA”)); System.out.println(“Alamat: ”+ rset.getString(“ALAMAT”)); System.out.println(“Jurusan: ”+ rset.getString(“JURUSAN”)); } stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}
185
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh query dengan parameter
//File : SelectMahasiswa2.java//Desc : implementasi pembentukan tabel Mahasiswaimport java.sql.*;public class SelectMahasiswa2 { public static void main(String args[]) { String url = "jdbc:odbc:mahasiswa"; String query = ”SELECT * FROM MAHASISWA “+ “where NAMA=?”; PreparedStatement stmt; Connection con; try { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }
186
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
try { con = DriverManager.getConnection(url); stmt = con.prepareStatement(query); stmt.setString(1, “Amir”); ResultSet rset = stmt.executeQuery(); while(rset.next()) { System.out.println(“Nama: “+rset.getString(“NAMA”)); System.out.println(“Alamat: ”+ rset.getString(“ALAMAT”)); System.out.println(“Jurusan: ”+ rset.getString(“JURUSAN”)); } stmt.close(); con.close();} catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }}
187
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java Networking
188
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
java.net
¬ package java untuk jaringan¬ kelas yg umum digunakan dari java.net
InetAddress: merepresentasikan alamat host (IP atau nama) Socket: untuk berkomunikasi dengan komputer lain pada sisi
client ServerSocket: untuk berkomunikasi dengan komputer lain pada
sisi server URL: merepresentasikan URL (contohnya:
http://www.informatika.org)
189
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh program untuk query hostname
import java.net.*;public class IPName {
public static void main(String args[]) {
try { InetAddress h1 =
InetAddress.getByName( args[0] ); System.out.println(h1.getHostAddress());
} catch (Exception e) { System.out.println( e );
} }
}
190
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
InetAddress
¬ Merepresentasikan sebuah alamat pada internet¬ Satu object InetAddress merepresentasikan satu alamat¬ InetAddress getByName(String hostname)
method untuk membuat object InetAddress dari sebuah hostnameatau IP address
¬ String getHostName() mengembalikan nama host dari object InetAddress
¬ byte[] getAddress() mengembalikan raw IP address (dalam bentuk byte array)
¬ String getHostAddress() mengembalikan IP address dalam bentuk String
191
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh program dengan menggunakan URL
import java.net.*; import java.io.*;public class BacaURL { public static void main(String args[]) { try { URL url = new URL( args[0] ); BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream())); String s; while ((s = in.readLine()) != null) System.out.println(s); in.close(); } catch (Exception e) { System.out.println( e ); } }}
192
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
URL
¬ Merepresentasikan URL¬ URL: Uniform Resource Locator, sebuah identifier ke suatu
resource (file, direktori) pada Internet¬ URL terdiri atas 3 bagian, protocol, host name dan pathname¬ Contoh: http://www.informatika.org/java/index.html¬ Fungsi yang disediakan:
String getProtocol()• mengambil protocol dari URL
String getHost()• mengambil hostname dari URL
String getFile()• mengambil filename dari URL
String getPath()• mengambil pathname dari URL
InputStream openStream()• membuka input stream dari URL, untuk membaca
dokumen dari URL tersebut.
193
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh program dengan socket
import java.io.*;import java.net.*;
public class EchoServer { public static void main(String[] args) { ServerSocket serverSocket = null; Socket clientSocket = null; PrintWriter out = null; BufferedReader in = null; try { serverSocket = new ServerSocket(4444); System.out.println("server siap ..."); while(true) { clientSocket = serverSocket.accept(); out = new PrintWriter(clientSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader( clientSocket.getInputStream()));
194
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
String s = in.readLine(); System.out.println("menerima: "+ s);
out.println( "jawaban server: "+ s ); System.out.println("mengirim: "+ "jawaban server:"+ s)
} } catch (Exception e) {
System.out.println( e ); clientSocket.close();
serverSocket.close(); }
}}
195
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh program socket
import java.io.*;import java.net.*;
public class D3EchoClient {
public static void main(String[] args){ Socket socket = null;
PrintWriter out = null; BufferedReader in = null;
try { socket = new Socket("localhost", 4444 );
out = new PrintWriter(socket.getOutputStream(),true); in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
196
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
String s; out.println( args[0] );
System.out.println("kirim teks: "+ args[0] ); s = in.readLine();
System.out.println("terima teks: "+ s ); in.close();
out.close(); socket.close();
} catch (Exception e) { e.printStackTrace();
} }
}
197
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Socket
¬ Socket adalah representasi komunikasi data antara 2 buahkomputer/program (dapat dari komputer yang sama)
¬ Socket dibuat dengan memberikan hostname dan portnamedari komputer yang dituju
Socket s = new Socket(“www.informatika.org”, 80);
¬ Method yang disediakan: InputStream getInputStream() OutputStream getOutputStream() int getReceiveBufferSize() setReceiveBufferSize(int s) int getSendBufferSize() setSendBufferSize(int s)
198
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
ServerSocket
¬ Socket yang digunakan pada sisi server¬ ServerSocket akan menunggu koneksi dari client pada
port tertentu. Jika terdapat client yang menghubungiserver, ServerSocket akan membuat socket baru yangmerepresentasikan koneksi dengan client tersebutSocket accept()
• menunggu koneksi dari client, setelah ada, menghasilkanobject socket
199
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Thread
¬ satuan titik eksekusi program¬ multithreading: aplikasi yang berjalan dengan lebih dari satu
thread, sehingga seakan-akan ada 2 program paraleldijalankan bersamaan
¬ contoh:class Thread1 extends Thread { int x=1; public Thread1() { } public void run() { try { while(true) { System.out.println("Thread 1: loop ke "+x); x++; } } catch(Exception e) { e.printStackTrace(); } } public static void main(String a[]) { Thread1 t1 = new Thread1(); Thread1 t2 = new Thread1(); t1.start(); t2.start(); }}
200
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Membuat thread
¬ Thread baru dibuat dengan: membuat object yang diturunkan dari kelas Thread (lihat contoh
sebelumnya), dan memanggil method start dari object tsb. membuat object dari kelas yang mengimplementasikan interface
Runnable, membuat object Thread dengan object Runnable tadi sebagaiparameter, memanggil method start dari object thread. contoh:class MyRunnable implements Runnable { public void run() { while(true) System.out.println(“my runnable object”); } public static void main(String a[]) { MyRunnable myrun = new MyRunnable(); Thread t1 = new Thread(myrun); t1.start(); }}
Note: interface Runnable mensyaratkan method run() harusdiimplementasikan
201
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Membuat server multithreading
¬ server harus melayani lebih dari satu client pada saatbersamaan, sehingga harus diimplementasikan sebagaimultithreaded server
¬ cara: setiap ada client baru, dibuat sebuah thread untukmelayaninya.
while(true) { clientSocket = serverSocket.accept();
MyThread t1 = new MyThread(clientSocket); t1.start(); }
¬ Di mana MyThread adalah sebuah kelas yang diturunkan dariThread
class MyThread extends Thread { Socket socket; public MyThread(Socket s) { socket = s; }
202
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh: Buat server file
¬ Client menghubungi server dengan mengirimkan namafile yang akan diambil
¬ server membaca file yang diminta dan mengirimkannyake server
¬ jawaban server terdiri atas satu baris status hasil danbaris berikutnya berupa file yang diminta
Client Server
203
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh: server file
public class FileThread extends Thread{ Socket socket; public FileThread(Socket s) { socket = s; }
public void run() { InputStream in = s.getInputStream(); OutputStream out = s.getOutputStream(); BufferedReader bin = new BufferedReader( new InputStreamReader( in )); // baca filename dari client String fileName = bin.readLine(); // buka file dengan nama tersebut FileInputStream fin = new FileInputStream(fileName); // tulis status pembukaan file ke client
while( masih ada data dari file) // kirim data dari file ke client }}
204
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
thread-safe & synchronize
¬ thread-safe: beberapa thread dapat mengakses objectyang sama pada waktu bersamaan. Variable sebuahobject dapat menjadi tidak konsisten karena diubah olehdua thread pada saat bersamaan. Thread-safe adalahkondisi dimana sebuah object dapat tetap konsistenwalaupun diakses oleh banyak thread pada saatbersamaan
¬ synchronize adalah parameter yang dapat diterapkankepada method agar object tersebut thread-safe
¬ dengan synchronize, sebuah method pada setiap saatpasti hanya dieksekusi oleh sebuah thread saja.
205
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh:
public class Counter { int count = 1; public int getValue () { count++; return count; }}
public class CounterThread extends Thread { public CounterThread() {} public void run() { Counter c = new Counter(); while(true) { System.out.println(“counter: “+c.getValue()); } }
public static void main(String a[]) { CounterThread t1 = new CounterThread(); CounterThread t2 = new CounterThread(); t1.start(); t2.start(); }}
206
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java Servlet
207
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Java Servlet
¬ Servlet: aplikasi java yang dieksekusi pada Web server
208
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Mengapa Object Oriented
¬ Why Object Oriented: Software development pada awalnya cenderung fokus kepada cara
berpikir mesin: prosedural. Data+Algoritma = program.
Masalah yang harus dipecahkan semakin kompleks, paradigma mesintidak mencukupi untuk mengembangkan software sesuai dengankebutuhan masa kini.
Level abstraksi: Mesin – Assembly language – Programming Language –Implementation Design – High Level Design – Software Requirement.
Object Oriented adalah paradigma pengembangan software yangmembuat metodologi pemecahan masalah lebih dekat kepada domainpermasalahan dibandingkan domain mesin.
permasalahan di bidang software engineering: software crisis, rapidsoftware development, software complexity, software maintenance,evolutionary techniques.
209
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Interface & Callback
¬ Interface dapat digunakan untuk mendefinisikan antarmuka sebuah callback
Tampilan
MouseHandlerinterface
onMousePressed
MouseHandlerimplementation 1
onMousePressed
MouseHandlerimplementation 2
onMousePressed
210
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Permainan kartu
¬ terdapat setumpuk kartu, terdiri atas 52 kartu dengan 4suit. Tumpukan kartu tersebut dapat dikocok dandibagikan ke sejumlah pemain. Sisa yang tidakdibagikan diletakkan ditengah meja, dan disebut sebagaidraw pile. Kartu-kartu dimainkan oleh pemain dengancara meletakkan pada meja, dan diletakkan padatumpukan kartu yang telah dimainkan yang dinamakandiscard pile.
211
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh kasus:
¬ vending machine sebuah vending machine menampilkan daftar produk yg dapat
dibeli, antara lain permen, kue, coklat dan chips. Harga masing-masing produk adalah sbb:
• permen : Rp. 500,-• kue : Rp. 600,-• coklat : Rp. 1200,-• chips : Rp. 1000,-
pembeli dapat memasukkan sejumlah uang, dan memilih produkyang diinginkannya. Machine akan memberikan produk tersebut,dan memberikan kembaliannya.
212
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh kasus:
¬ algoritma solusi umum: loop
• tampilkan pilihan produk• input uang dari pembeli• input pilihan dari pembeli• hitung kembalian• output produk & kembalian
213
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Solusi
for( ; ; ) { uang = InputMoney(); PrintMenu(); pil = InputPil(); switch (pil) { case 0: kembali = uang; break; // batal case 1: kembali = uang - 500; break;// permen case 2: kembali = uang - 600; break; // kue case 3: kembali = uang - 1200; break; // coklat case 4: kembali = uang - 1000; // chips } if ((kembali >= 0) && (pil != 0)) { OutputProduk(pil); OutputMoney(kembali); } else { System.out.println(“uang tidak cukup/batal”); OutputMoney(uang); }}
214
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Solusi OO
Produk
Chips Coklat PermenChips
215
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Contoh kasus
¬ buat program untuk menggambar bentuk (square,rectange, circle, etc) di layar.
¬ informasi yang harus disimpan: jenis bentuk, posisi,ukuran.
¬ solusi:class Rectangle {
int}
216
Achmad Imam Kistijantoro- Diktat Java ProgrammingTeknik - Informatika ITB, Juli - Agustus 2000
Solusi
void draw(Bentuk b) { switch(b.Jenis) {
case 1: drawSquare(b); break; case 2: drawRectangle(b); break;
case 3: drawCircle(b); break; }
}