1. visual java

advertisement
Java Programming
rev 1.0.5
1
Achmad Imam Kistijantoro
Jurusan Teknik Informatika ITB
June, 2000
Bandung
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Content
¬
¬
¬
¬
¬
¬
2
¬
¬
Dasar-dasar Programming
Dasar-dasar Java
Sintaks
Java & Object Oriented Programming
Java API
Java Swing
JDBC
Java Networking
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Referensi
¬
¬
¬
3
¬
¬
Java Language Specification 1.1: by James Gosling , Bill
Joy, Guy Steele, Addison-Wesley, 1996. ISBN: 0-201-634511. http://java.sun•com/docs/books/jls/index.html
Thinking in Java: by Bruce Eckel Prentice Hall, ISBN: 0-13659723-8 http://www.bruceeckel.com/javabook.html
The Java Virtual Machine Specification, by Tim Lindholm,
Frank Yellin, Bill Joy, Kathy Walrath, Addison-Wesley 1996
ISBN: 0-201-63452-X,
The Java Tutorial, Sun Microsystem Inc, 2000
http://web2.java.sun.com/docs/books/tutorial/
JDK 1.2.2 Documentation, Sun Microsystem Inc.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Programming
4
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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.
5
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;
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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't
understand it.
¬
6
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 fewer
opportunities for reward.
- The most fun you can have with your clothes on
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Abstraksi Mesin von Neumann
¬
¬
stored programming concept
Logical components of a computer
Memory
7
CU
Input
ALU
Output
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Proses pembuatan program
¬
¬
¬
¬
¬
editing
compiling
linking
executing
debugging
8
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Software Quality
¬
¬
¬
¬
¬
¬
9
¬
¬
¬
Correctness
Robustness
Extendibility
Reusability
Compatibility
Efficiency
Portability
Ease of use
Functionality
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Konsep pemrograman
¬
¬
¬
¬
procedural
data hiding/modular
data abstraction
object oriented programming
10
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Pengantar konsep pemrograman
¬
Procedural Programming:
- pendefinisian langkah-langkah yang harus dieksekusi secara
-
11
sekuensial, contoh: resep masakan
tentukan prosedur-prosedur yang diperlukan, gunakan algoritma
terbaik untuk mengimplementasikan masing-masing prosedur
tersebut
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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. Sedikit
perubahan struktur data dapat mengakibatkan perubahan di
banyak tempat
tentukan modul-modul yang diperlukan. partisi program sehingga
data tersembunyi dibalik modul-modul tersebut
12
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
13
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Dasar dasar Java: Object Oriented Programming
¬
Object Oriented Programming
- diharapkan dapat: mempercepat pengembangan, meningkatkan
-
14
-
kualitas software, mempermudah pemeliharaan software,
memudahkan perubahan
mendefinisikan kelas-kelas yang merepresentasikan
permasalahan 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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Java
15
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Java
¬
¬
16
¬
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 bagianbagian 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
17
¬
Robust and Safe
- dirancang agar aman dieksekusi via network
- strong typing, no direct access to memory, good exception handling
mechanism
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java design goal (2)
¬
¬
¬
¬
18
¬
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java design goal (3)
¬
Platform independent
- Catatan: Java disebut sebagai platform independent, karena Java
-
19
¬
sendiri adalah sebuah platform yang berjalan di atas platform
lainnya
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Dasar-dasar Java
¬ Program Java sederhana:
main: titik awal program
class HelloWorld {
static public void main(String args[]) {
System.out.println("Hello world!");
}
}
¬
20
¬
Kelas HelloWorld dengan sebuah method bernama main
Method main :
- memiliki sebuah parameter bertipe String array
- memiliki public modifier
- static modifier
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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, automatic
coersion
- menyediakan fasilitas interface
¬
21
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Arsitektur Java
Java program
Program Java
Java API
Compiler
Java byte-code
Java Virtual Machine
Sistem Komputer
22
Interpreter
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java & Internet
¬
¬
23
Aplikasi Java dapat dijalankan secara stand-alone, atau
sebagai applet (dieksekusi melalui web browser)
Applet: program yang dapat dijalankan oleh browser
Java source
HTML
import java.applet.Applet;
import java.awt.Graphics;
<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>
public class HelloWorld
extends Applet {
public void paint(Graphics g) {
g.drawString("Hello world!",
50, 25);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Applet vs. Stand-alone
¬
¬
Program’s entry:
- stand-alone: main
- applet: init & start
Akses terbatas:
- library
- resources
24
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java flavor
¬
¬
¬
¬
¬
25
¬
¬
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Sintaks Java
26
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Struktur dasar pemrograman prosedural
¬
¬
27
¬
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
statement & expression
¬
statement: satuan kalimat program, diakhiri dengan
;
- contoh:
¬
x = x + 5;
expression: ekspresi, menghasilkan nilai dengan
tipe tertentu
- contoh: x
28
¬
+ 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 digantikan
dengan teks yang sesuai
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Komentar
¬ Komentar:
tidak dieksekusi, digunakan
untuk penjelasan
¬ sintaks:
// komentar baris
/* komentar block */
29
¬ 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);
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 dilakukan
terhadap variabel tersebut.
Type pada Java : primitif & reference
primitif:
- numerik: byte (8 bit), short (16 bit), integer (32 bit), long (64 bit), float 32 bit
30
floating point/real number), double (64 bit floating point)
- char
- boolean
¬
reference:
- string, user-defined class
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Pendefinisian data: tipe & variabel
¬
¬
¬
¬
variabel harus dideklarasikan dan dialokasikan dahulu
sebelum digunakan
deklarasi: menyatakan tipe variabel tersebut.
alokasi: pengadaan area memori untuk menampung nilai
variabel
contoh (Java):
int X; // variabel dengan nama X, bertipe integer
char myvarChar; // variabel dengan nama myvarChar
String str; // variabel dengan nama str
31
¬
variabel bertipe non primitif harus alokasi eksplisit:
String str;
str = new String(“my string”);
str = “str 2”; // khusus tipe string, operasi = otomatis alokasi
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
-
¬
32
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Perbedaan tipe primitif & reference
33
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);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Struktur
¬
Membentuk tipe data baru yang terdiri atas beberapa
tipe lainnya
class Mahasiswa {
String nama;
int umur;
String alamat;
}
34
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
if-else statement
¬ eksekusi
jika kondisi tertentu terpenuhi
¬ sintaks:
if ( condition-expression )
statement-block
[else]
statement-block
35
¬ 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”);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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;]
}
36
¬
catatan:
- variabel harus bertipe char, byte, short, atau int
- default: eksekusi yang harus dijalankan jika tidak ada value yg
dipenuhi variabel tersebut
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
switch statement - contoh
37
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?
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Pengulangan for-loop
¬ sintaks:
for ( init-stmt ; cond-exp ; inc-stmt )
statement-block
¬ Contoh:
38
class Count {
public static void main (String args[]) {
int i;
for (i = 0; i < 50; i=i+1) {
System.out.println(i);
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
while statement
39
class Count {
public static void main (String args[]) {
int i = 0;
while(i < 50) {
System.out.println(i);
i=i+1;
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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);
}
}
40
¬
Apakah perbedaannya dengan versi sebelumnya?
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Struktur program: prosedur & fungsi
¬
¬
sekumpulan instruksi yang dapat dipanggil dengan satu
perintah
contoh pemanggilan prosedur/fungsi:
System.out.println(“x”);
// prosedur untuk menampilkan teks x ke layar
¬
Sintaks:
tipe nama-fungsi ( parameter-list ) {
statement;
...
statement;
}
41
¬
tipe: tipe nilai yang dikembalikan suatu fungsi
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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]);
}
}
}
42
¬
Array: kumpulan variabel dengan tipe sama
- contoh: String args[]
- args adalah array of String, diakses dengan cara:
- args[0], args[1], args[2] dst.,
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Operator pada Java
43
+,-,/,*
+=
-=
*=
/=
|
|=
^
^=
&
&=
%
%=
>
>=
<
<=
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Keyword pada Java
44
abstract declares that a class or
method is abstract
boolean declares a boolean variable or
return type
break prematurely exits a loop
byte declares a byte variable or return
type
case one case in a switch statement
catch handle an exception
char declares a character variable or
return type
class signals the beginning of a class
definition
continue prematurely return to the
beginning of a loop
default default action for a switch
statement
do begins a do while loop
double declares a double variable or
return type
else signals the code to be executed if
an if statement is not true
extends specifies the class which this
class is a subclass of
final declares that a class may not be
subclassed or that a field or method
may not be overridden
finally declares a block of code
guaranteed to be executed
float declares a floating point variable
or return type
for begins a for loop
if execute statements if the condition is
true
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Keyword pada Java (2)
45
implements declares that this class
implements the given interface
import permit access to a class or
group of classes in a package
instanceof tests whether an object is
an instanceof a class
int declares an integer variable or
return type
interface signals the beginning of an
interface definition
long declares a long integer variable or
return type
native declares that a method is
implemented in native code
new allocates a new object
package defines the package in which
this source code file belongs
private declares a method or member
variable to be private
protected declares a class, method or
member variable to be protected
public declares a class, method or
member variable to be public
return returns a value from a method
short declares a short integer variable
or return type
static declares that a field or a method
belongs to a class rather than an
object
super a reference to the parent of the
current object
switch tests for the truth of various
possible cases
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Keyword pada Java (3)
46
synchronized Indicates that a section
of code is not thread-safe
this a reference to the current object
throw throw an exception
throws declares the exceptions thrown
by a method
transient This field should not be
serialized
try attempt an operation that may throw
an exception
void declare that a method does not
return a value
volatile Warns the compiler that a
variable changes asynchronously
while begins a while loop
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Arithmetics operation
¬
¬
¬
47
¬
¬
operators: +, -, *, /, %, +=, -=, *=, /=
precedence:
- *, /, %
- +, -=
special results:
- NaN (not a number)
- negative Infinity, positive Infinity
1.0e+308*10==Infinity
0.0/0.0 = NaN
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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”);
48
String
String
String
String
ival
lval
dval
fval
=
=
=
=
Integer.toString (2);
Long.toString(2L);
Double.toString(2.0);
Float.toString(2.0f);
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Data type
¬
¬
49
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)
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
String
50
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
operator ? :
operator <expression>?<expr1>:<expr2> mengembalikan nilai
expr1 jika expression true dan expr2 jika false.
¬ contoh:
max = (a>b)?a:b
¬
51
sama dengan:
if(a>b)
max = a;
else
max = b;
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
break & continue
¬
¬
break: keluar dari current block
continue: lompat ke awal current block (dalam loop)
52
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Array
¬ array:
kumpulan variabel dengan tipe
sejenis
¬ contoh:
int[] x;
int x[];
int[] x[];
53
¬ inisialisasi
x = new int[5];
int[] x = { 1, 2, 3 };
int[][] x = { {1, 2}, {2, 3}, {3, 4}};
¬ copy
data array
System.arraycopy(Object src_arr, int src_pos,
Object dst_arr, int dst_pos, int len)
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java & Object Oriented Programming
54
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Object Programming pada Java
¬
¬
¬
¬
¬
¬
Object
Kelas
Exception
Interface
Inheritance
Package
55
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 mahasiswa
class Mahasiswa {
String nama;
String alamat;
String nim;
String jurusan;
}
56
class: definisi tipe baru
¬ variabel (instans) untuk tipe ini disebut object
¬
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh kasus
¬ mendefinisikan
object:
Mahasiswa mhs1;
mhs1 = new Mahasiswa();
¬ Deklarasi
57
object (variabel) tipe reference
tidak membuat object. Object dibuat
dengan 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);
Achmad Imam Kistijantoro- Diktat Java Programming
}
Teknik - Informatika ITB, Juli - Agustus 2000
}
Class method
¬ class
method: operasi yang disediakan
oleh suatu class
¬ contoh:
58
class Mahasiswa {
String nama;
String alamat;
String nim;
String jurusan;
String getNama() {
return nama;
}
void setNama(String nm) {
nama = nm;
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 ?
59
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Method parameter
deskripsi suatu method dengan parameter dan
return 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
60
¬
Result type
- void: no result
- typename (primitive or class name)
¬
Parameter list:
- typename param1-name, typename param2-name ...
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Method parameter
class Mahasiswa {
String nama;
String alamat;
String nim;
String jurusan;
public String getNama() {
return nama;
}
61
public void setNama(String nm) {
nama = nm;
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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)
62
deklarasi variabel
Method
(behaviour)
instansiasi
kelas C
instansiasi
kelas C
instansiasi
kelas C
deklarasi method
definisi method
objek oC
objek oB
objek oA
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Kelas (class)
¬
¬
¬
63
definisi internal data, internal method, atribut & behaviour dari
object
Enkapsulasi: membungkus data internal dengan menyediakan
interface untuk akses data internal
sintaks pendefinisian kelas:
public class myClass {
public myClass() { // konstruktor
}
// definisi method & atribut
private int myVariable;
public void methodA() {
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Konstruktor
¬ method
khusus yg digunakan untuk
membuat object
¬ memiliki nama sama dengan nama class
¬ contoh:
64
class Mahasiswa {
String nama;
String alamat;
String nim;
String jurusan;
public Mahasiswa() {
}
public Mahasiswa(String nm) {
nama = nm;
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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());
}
}
65
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Mekanisme Enkapsulasi
¬
Java menyediakan mekanisme pendefinisian
scope member variable/method dari sebuah class
dengan mekanisme:
- private
- protected
- public
66
¬
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
method & attribute access modifier
¬
67
access modifier: menentukan apakah method/atribut
tersebut 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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh public
// contoh public variable
// file name: Point.java
class Point {
public int x, y;
}
---------------------------------------------//file name: Test.java
68
public class Test {
public static void main(String[] args) {
Point p = new Point();
System.out.println(p.x + " " + p.y);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh private:
// file name: Point.java
public class Point {
private int x, y;
public int getX() { return x; }
public int getY() { return y; }
}
----------------------------------------------
69
// file name: Test.java
class Test {
public static void main(String[] args) {
Point p = new Point();
System.out.println(p.x + " " + p.y); // error !, karena
protected
System.out.println(p.getX()+ “ “+ p.getY() );
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
reference this
¬ Pada
Java, this adalah reference yg
mengacu ke object itu sendiri. Contoh:
// file name: Point.java
public class Point {
private int x, y;
public int getX() { return this.x; }
public int getY() { return this.y; }
}
70
¬ sama
dengan:
// file name: Point.java
public class Point {
private int x, y;
public int getX() { return this.x; }
public int getY() { return this.y; }
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
static dan alokasi memori
¬
atribut dan method hanya dapat diakses jika object telah
dibuat
- contoh:
Mahasiswa mhs;
System.out.println(mhs.getNama()); // error
mhs = new Mahasiswa(“Amir”);
System.out.println(mhs.getNama());
71
¬
¬
atribut & method static dapat diakses tanpa melalui
object
static: alokasi statis, hanya ada satu instans dalam
seluruh program
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh:
72
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;
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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());
}
}
73
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Interaksi antar object
¬
¬
¬
74
¬
¬
Program pada OO: membuat object-object dan
mengatur 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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance
¬
¬
¬
75
Inheritance: menyatakan pewarisan dari satu kelas ke kelas
lainnya.
Inheritance dituliskan dengan menggunakan keyword extends
Java hanya mendukung single inheritance
Point
ColoredPoint
int x
int y
Color color
Move()
setColor()
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance
public class Point {
int x = 1, y = 1;
void move(int dx, int dy) {
x += dx;
y += dy;
}
}
76
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance
¬
Contoh:
- Buat buku alamat yang dapat menyimpan data alamat
77
mahasiswa, dosen dan lembaga. Untuk data mahasiswa, buku
tersebut menyimpan informasi nama, nim, alamat, jurusan,
angkatan, sedangkan untuk dosen buku tersebut menyimpan
informasi nama, nip, alamat, jurusan, ruang
Buat buku informasi kendaraan, yang menyimpan data motor dan
mobil. Motor memiliki atribut: merek, model, tahun, cc, dan mobil
memiliki atribut merek, model, tahun, cc, jumlah pintu dst.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance - kelakuan konstruktor
¬
78
Pada Java, konstruktor base class selalu dipanggil
pada 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();
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance - Kelakuan konstruktor
¬
79
Konstruktor dengan parameter tidak otomatis memanggil
konstruktor 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);
}
Achmad Imam Kistijantoro- Diktat Java Programming
}
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance - mekanisme protected
¬
¬
80
protected: modifier untuk mendefinisikan scope pada kelas
dan turunannya
atribut & method yang dinyatakan sebagai protected hanya
dapat diakses oleh objek yang berasal dari satu kelas atau
subclass dari kelas tersebut
class Bapak {
protected int a, b;
}
class Anak extends Bapak {
void ubahProtected() {
a = 15; // boleh, karena Anak diturunkan dari Bapak
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh protected
public class Point {
protected int x, y;
}
81
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);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Exception
¬ Penanganan
kesalahan pada java
menggunakan mekanisme exception
82
try {
statement
} catch (tipe exception name){
statement
} catch (tipeexception name) {
statement
}
.
.
} finally {
statement
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh:
83
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!”);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance - final class
¬ class
dapat memiliki modifier final, yang
berarti class tersebut tidak dapat
diturunkan lagi menjadi class baru
84
final class finalClass {
finalClass() {
}
void methodA() {
}
}
class classBaru extends finalClass { // error
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Inheritance - final method
¬ final
pada sebuah method: menyatakan
method tersebut tidak dapat di redefine
pada class anak
85
class Bapak {
Bapak() {
}
final void finalMethod() {
}
}
class classBaru extends Bapak {
void finalMethod() { // error
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Package
¬
¬
package adalah mekanisme untuk pengelompokan kelaskelas ke dalam sebuah modul pada Java
package didefinisikan dengan menambahkan baris:
- package <nama package>
¬
86
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 diakses
langsung dengan menggunakan nama kelas dengan cara
menggunakan import.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Package - contoh
87
// file Point.java
package points;
public class Point {
protected int x, y;
}
--------------------------------------// file: Test.java
class 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.java
import points;
class Test2 {
public static void main(String[] args) {
Point p = new Point();
p.x = 4; p.y = 3; p.z = 2; Achmad Imam Kistijantoro- Diktat Java Programming
p.move(1,2,3);
Teknik - Informatika ITB, Juli - Agustus 2000
}
Package & enkapsulasi
¬
Package juga merupakan mekanisme untuk membatasi
scope sebuah variabel/method/class
- variabel/method/class yang tidak memiliki access modifier
-
88
(public/private/protected) memiliki scope package, yaitu hanya
dapat diakses oleh class lain yang berada dalam satu package
variabel/method dengan access modifier protected dapat diakses
oleh class lain yang berada dalam satu package
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh package access modifier
// file Point.java
package 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); }
}
89
//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);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh protected dalam package
90
// file Point.java
package 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.java
package 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
dari Diktat
Point
Achmad turunan
Imam KistijantoroJava Programming
}
Teknik - Informatika ITB, Juli - Agustus 2000
}
Interface
¬
¬
¬
91
Definisi method yang harus diimplementasikan dan
konstanta (final member variabel)
Mendefinisikan type
Interface tidak dapat diinstansiasi
public interface interfaceA {
int integerConst = 5;
public void method1(/* parameter */);
public void method2( /* parameter */);
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 interface
tersebut
class MyClass implements interfaceA {
public void methodA() {
}
public void methodB() {
92
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
93
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
¬
¬
¬
Interface dapat diturunkan dari interface lainnya
Kelas implementasi harus mendefinisikan seluruh
method yang didefinisikan oleh interface beserta parentnya.
Interface dapat diturunkan secara multiple inheritance
94
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
SecondClass bertype: FirstInterface, SecondInterface,
FirstClass & SecondClass
interface FirstInterface {
Object method1();
}
95
interface SecondInterface extends FirstInterface {
int method2();
}
public class FirstClass implements FirstInterface {
public FirstClass(){ }
...
}
public class SecondClass extends FirstClass implements
SecondInterface {
...
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
¬
¬
96
Inheritance pada interface hanya menurunkan sintaks methodmethod yang didefinisikan pada bapak
Multiple interface inheritance dengan nama method yang
sama tidak mengakibatkan konflik.
public interface A {
methodA();
}
public interface B {
methodA();
}
public interface AB extends A, B {
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Interface & Inheritance
97
// file BaseColors.java
interface 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.java
public class Main {
public static void main(String args[])
{
System.out.println(LotsOfColors.YELLOW); // error
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Interface & Multiple Inheritance
¬ Interface
dapat digunakan untuk
menggantikan kapabilitas yang disediakan
melalui multiple inheritance
98
interface CanFight {
void fight();
}
interface CanSwim {
void swim();
}
interface CanFly {
void fly();
}
class ActionCharacter {
public void fight() {}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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(); }
99
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
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 yang
sama bisa jadi sama sekali tidak berkaitan
100
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java API
101
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java API
¬
¬
¬
¬
¬
¬
102
¬
java.applet
java.io
java.util
java.awt
javax.swing
java.lang
java.math
¬
¬
¬
¬
¬
java.sql
java.text
java.net
java.rmi
java.security
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
103
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Applet
¬ HTML:
- template
- link
- <applet> tag
<HTML>
<HEAD>
<TITLE> Hello World </TITLE>
</HEAD>
104
<BODY>
Applet Hello World: <P>
<applet code="HelloWorldApplet.class"
CODEBASE=“classes” width="150" height="50">
</applet>
</BODY>
</HTML>
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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);
}
105
}
¬
Tidak ada main(String args[]) !
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Applet & Event driven program
¬
¬
Event driven: program merespon event yang dikirimkan
kepadanya
contoh event: keyboard event, mouse event, focus
event, action event
106
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Applet
¬
107
Method yang disediakan java.applet.Applet
- init()
- start()
- paint()
- destroy()
- processMouseEvent(MouseEvent ev)
- processKeyEvent(KeyEvent ev)
- processFocusEvent(FocusEvent ev)
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Applet: contoh
¬ Applet
yang menggambar garis di antara 2
titik
108
import 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;
Achmad Imam Kistijantoro- Diktat Java Programming
}
Teknik - Informatika ITB, Juli - Agustus 2000
}
Java IO
¬
¬
¬
¬
¬
¬
109
¬
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Jenis-jenis Stream
¬
¬
¬
110
Stream yang menerima masukan disebut sebagai input
stream
- contoh: FileInputStream: untuk membaca file
Stream mengeluarkan data disebut sebagai
outputstream
- contoh: FileOutputStream
Masukan untuk suatu stream dapat berasal dari stream
lainnya. Stream jenis ini disebut sebagai processing
stream
- contoh: BufferedOutputStream: digunakan untuk menampung
stream dalam buffer, sebelum digunakan
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 dengan
menggunakan akhiran Stream
- contoh: InputStream, OutputStream
¬
111
characters stream: satuan data yang membentuk stream
adalah character (16 bit), umumnya stream jenis ini memiliki
nama dengan menggunakan akhiran Writer atau Reader
- contoh: InputStreamReader, InputStreamWriter
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
InputStream
¬
112
Semua byte oriented input stream diturunkan dari kelas
ini.
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 );
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java IO
BufferedReader
LineNumberReader
CharArrayReader
InputStreamReader
FileReader
FilterReader
PushbackReader
Reader
PipedReader
StringReader
BufferedWriter
113
CharArrayWriter
OutputStreamWriter
FileWriter
Writer
FilterWriter
PipedWriter
StringWriter
PrintWriter
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java IO
FileInputStream
LineNumberInputSream
PipedInputStream
DataInputStream
FilterInputStream
BufferedInputSream
InputStream
ByteArrayInputStream
PushbackInputStream
SequenceInputStream
StringBufferInputStream
ObjectInputStream
114
FileOutputStream
PipedOutputStream
DataOutputStream
FilterOutputStream
BufferedOutputStream
ByteArrayOutputStream
PrintStream
OutputStream
ObjectOutputStream
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Membaca file
115
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();
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Menulis file
116
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();
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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);
}
117
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Input (Text mode)
import java.io.*;
118
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();
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Input File
119
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Output File
120
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java util
¬
Java Collection Framework
- kumpulan kelas untuk menangani koleksi objek (struktur data
seperti array, list, set etc.)
¬
¬
¬
121
¬
Date, Calendar, TimeZone, Locale
Properties: file konfigurasi untuk aplikasi java
Random
StringTokenizer: parser untuk string
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Hashtable
¬
122
koleksi objek dengan key unik. Objek dapat
diletakkan ke dalam hashtable dengan identifikasi
key 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
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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);
}
123
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Vector
¬
124
Koleksi objek dengan urutan tertentu (serupa
array)
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
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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);
}
125
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java Swing
126
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
127
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh aplikasi dengan Swing
128
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();
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh aplikasi swing
129
import javax.swing.*; // baris ini diperlukan karena
// swing berasal dari package javax.swing
public 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();
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
JComponent
¬
¬
130
Widget: elemen sebuah graphical user interface untuk
melakukan fungsi tertentu
Atomic component
- Button: JButton, JCheckBox, JRadioButton, JMenuItem,
-
JCheckBoxMenuItem, JRadioButtonMenuItem, JToggleButton
JComboBox
JList
Menu: JMenu, JMenuItem
JLabel
JTextField
JTable
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java GUI
Frame
Button
Label
Panel
131
¬
¬
¬
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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);
132
¬
Kode di atas membuat sebuah panel, 2 buah
button dan 3 buah label, kemudian
menambahkan button dan label ke dalam
panel tersebut.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
JFrame
¬
¬
Frame: Top level container (Window utama) dari suatu
aplikasi Java
Sebuah frame memiliki:
- Title, pada bagian atas frame
- MenuBar, tempat untuk meletakkan menu
- standard panel yang disebut sebagai ContentPane
133
gambar diambil dari Java Tutorial, Sun
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Menambahkan Button ke Frame
134
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();
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Mengganti ContentPanel dari sebuah Frame
¬
¬
Standar content panel dari sebuah frame dapat diganti
dengan perintah setContentPane.
contoh:
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setContentPane(frame);
135
¬
Tugas: Gabungkanlah kode pada contoh panel dengan
program contoh Aplikasi Swing sehingga program anda
dapat menampilkan window berisi 2 button dan 3 label
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh
import javax.swing.*;
public static void main(String s[])
public class CobaPanel {
{
JFrame frame;
CobaPanel app = new
public CobaPanel(String title) {
CobaPanel(”Aplikasi Swing");
frame = new JFrame(title);
app.run();
}
}
public void run() {
}
JPanel panel = new JPanel();
JButton b1 = new JButton(“B1”);
JButton b2 = new JButton(“B2”);
JLabel label1 = new JLabel(“L1”);
136
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
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Mengganti LayoutManager dari sebuah Panel
¬
¬
¬
137
¬
Sebuah panel dapat memiliki layout manager untuk
mengatur tata letak komponen
Standar layout manager untuk JPanel adalah
FlowLayout
Standar layout manager untuk Content pane dari Jframe
adalah BorderLayout
Jenis-jenis layout manager sederhana pada JDK 1.2/1.3
- FlowLayout
- BorderLayout
- BoxLayout
- GridLayout
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
FlowLayout
¬
Mengatur posisi komponen-komponen dari kiri ke kanan
dan meletakkan komponen selanjutnya pada baris baru
jika ukuran lebar panel tidak mencukupi
138
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
BorderLayout
¬
139
BorderLayout mengatur komponen dalam posisi
tertentu, sesuai arah mata angin: NORTH,
EAST, SOUTH, WEST dan CENTER.
Penambahan komponen dengan BorderLayout
memiliki parameter posisi. Contoh:
JPanel panel =
panel.add( new
panel.add( new
panel.add( new
panel.add( new
panel.add( new
new JPanel();
JButton(“South”), BorderLayout.SOUTH );
JButton(“East”), BorderLayout.EAST );
JButton(“West”), BorderLayout.WEST );
JButton(“North”), BorderLayout.NORTH );
JButton(“Center”), BorderLayout.CENTER );
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
BoxLayout
¬
BoxLayout mengatur komponen secara horizontal atau
vertikal. 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”) );
140
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
GridLayout
¬
141
GridLayout mengatur komponen dalam posisi grid, yaitu
serupa 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”));
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
GridBagLayout
GridBag mengatur komponen serupa dengan
grid, namun untuk setiap komponen dapat
ditentukan konstrain tertentu, sehingga GridBag
akan mengatur tata letak berdasarkan konstrain
untuk setiap komponen
¬ Konstrain yg dapat diatur:
¬
142
- 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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
¬
143
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Mengatur letak komponen dengan panel
¬
Sebuah panel dapat ditambahkan ke panel lainnya. Hal
ini digunakan untuk membantu mengatur tata letak
komponen. Contoh:
144
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Menangani event pada Swing
¬
145
Jenis event:
- mouse event
- focus event
- keyboard event
- component event
- container event
- window event
- action event
- adjustment event
- item event
- text event
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
event listener
¬
¬
146
objek yang bertugas untuk mendengarkan event dan
memberikan respon terhadap event tertentu.
mengimplementasikan salah satu dari listener interface:
-
ComponentListener
ContainerListener
FocusListener
KeyListener
MouseListener
MouseMotionListener
WindowListener
ActionListener
AdjustmentListener
ItemListener
TextListener
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
interface
deskripsi method-method yang harus
disediakan oleh suatu kelas
¬ kelas yang mengimplementasikan sebuah
interface harus mendefinisikan semua method
pada interface tersebut
¬ contoh:
¬
147
interface ActionListener {
void actionPerformed( ActionEvent ev);
}
class MyActionHandler implements ActionListener {
void actionPerformed( ActionEvent ev ) {
System.out.println(“menerima event”);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Mendefinisikan handler untuk event tertentu
¬
contoh:
MyActionHandler hd = new MyActionHandler();
JButton b1 = new JButton();
b1.addActionListener( hd );
¬
148
baris di atas menyatakan bahwa objek hd adalah
handler untuk event jenis action (button clicked) untuk
objek b1.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Mouse Event
¬
149
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. Point
memiliki atribut x & y
- int getClickCount();
• mengembalikan jumlah click
yangImam
dilakukan
padaDiktat
saat Java
terjadi
event
Achmad
KistijantoroProgramming
Teknik - Informatika ITB, Juli - Agustus 2000
MouseListener interface
¬
150
Interface ini diimplementasikan oleh kelas yang menjadi
listener event mouse
public
void
void
void
void
void
}
interface MouseListener {
mouseClicked(MouseEvent ev);
mousePressed(MouseEvent ev);
mouseReleased(MouseEvent ev);
mouseEntered(MouseEvent ev);
mouseExited(MouseEvent ev);
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Mouse Motion Listener
¬
Interface untuk menangani event gerakan mouse
public interface MouseMotionListener {
void mouseDragged( MouseEvent ev );
void mouseMoved( MouseEvent ev );
}
151
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Component event
Event yg berkaitan dengan perubahan pada
komponen, seperti komponen moved, resized,
hidden & shown
¬ java.awt.event.ComponentEvent
¬
152
- ComponentEvent.COMPONENT_MOVED
- ComponentEvent.COMPONENT_RESIZED
- ComponentEvent.COMPONENT_HIDDEN
- ComponentEvent.COMPONENT_SHOWN
- int getID();
- Component getComponent();
• memberikan komponen yang menghasilkan event
- String paramString();
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Component listener
¬
interface untuk menangani event component
public interface ComponentListener {
public void componentHidden(ComponentEvent ev);
public void componentShown(ComponentEvent ev);
public void componentResized(ComponentEvent ev);
public void componentMoved(ComponentEvent ev);
}
153
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Action Event
¬
java.awt.event.ActionEvent
- int getID();
- Object getSource();
- String getActionCommand();
¬
ActionListener
public interface ActionListener {
void actionPerformed( ActionEvent ev );
}
154
¬
Pada component asal, action command di set
dengan perintah: setActionCommand()
JButton b = new JButton(“button”);
b.setActionCommand(“b”);
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
155
- int getKeyCode();
• mengembalikan kode key yang ditekan pada keyboard
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Key Listener
156
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 );
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Window Event
¬
java.awt.event.WindowEvent
- Window getWindow();
- String paramString();
157
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
WindowListener
158
public
void
void
void
void
void
void
void
}
interface WindowListener {
windowActivated( WindowEvent ev );
windowClosed( WindowEvent ev );
windowClosing( WindowEvent ev );
windowDeactivated( WindowEvent ev );
windowDeiconified( WindowEvent ev );
windowIconified( WindowEvent ev );
windowOpened( WindowEvent ev );
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Focus Event
159
¬
java.awt.event.FocusEvent
- Component getComponent();
¬
FocusListener
public interface FocusListener {
void focusGained( FocusEvent ev );
void focusLost( FocusEvent ev );
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Menggunakan adapter untuk event listener
interface: semua method harus didefinisikan
ulang pada kelas yang mengimplementasikannya
¬ sebuah event listener dapat diturunkan dari kelas
Adapter, dan mendefinisikan ulang method yang
diperlukan saja.
¬
160
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 );
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
JDBC
161
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 dari
162
kelas Connection) ke database
- Connection: instance dari kelas ini merepresentasikan koneksi ke
database tertentu
- Statement: instance dari kelas ini merepresentasikan sebuah query yang
akan dieksekusi ke database
• PreparedStatement
• CallableStatement
- ResultSet: instance dari kelas ini merepresentasikan hasil eksekusi query
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Struktur JDBC
163
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
JDBC Driver
¬
¬
JDBC menggunakan driver yang spesifik untuk masingmasing jenis database.
Pendefinisian driver yg digunakan dilakukan dengan
cara me-load class driver yg diinginkan
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Class.forName(“org.gjt.mm.mysql.Driver”);
164
¬
¬
Driver untuk ODBC: sun.jdbc.odbc.JdbcOdbcDriver,
sudah disediakan oleh Sun
Driver untuk mySQL (org.gjt.mm.mysql.Driver) tersedia
secara freeware
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Menggunakan ODBC Driver
¬
¬
Buatlah definisi Datasource yang akan digunakan pada
ODBC melalui setting ODBC datasource dari control
panel (misalkan dibuat datasource bernama mahasiswa)
pada program java, load kelas Driver untuk Odbc,
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
¬
165
¬
Buka koneksi ke ODBC dengan mendefinisikan URL
untuk datasource tersebut, dengan format:
- jdbc:odbc:mahasiswa
dimana odbc adalah nama driver yang digunakan, dan
mahasiswa adalah nama data source dari ODBC
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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”);
¬
166
Connection digunakan untuk membuat statement (query
yang akan dikirimkan ke database) dan mendapatkan
informasi tentang database
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Query SQL
¬
167
query dikirimkan ke database dalam bentuk SQL Query.
Beberapa perintah yang umum digunakan adalah
sebagai 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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
CREATE TABLE
168
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
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
SELECT
SELECT
<NAMA KOLOM>,
<NAMA KOLOM>,
...
FROM <NAMA TABEL>
WHERE <KONDISI>
169
¬
Select digunakan untuk mengambil record yang
memenuhi kriteria tertentu, yang diletakkan pada where.
Contoh:
- Select NAMA, ALAMAT from MAHASISWA where
NIM=“13592033”
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
INSERT
170
INSERT INTO <NAMA TABEL>
(<NAMA KOLOM>,
<NAMA KOLOM>,
...
)
VALUES
(<NILAI KOLOM>, <NILAI KOLOM>,
...)
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
UPDATE
171
UPDATE <NAMA TABEL>
SET
(<NAMA KOLOM>=<NILAI KOLOM>,
<NAMA KOLOM>=<NILAI KOLOM>,
...
)
WHERE <KONDISI>
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
DELETE
DELETE FROM <NAMA TABEL>
WHERE <KONDISI>
¬
DROP
DROP <NAMA TABLE>
172
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Statement
¬
¬
Query yang akan dieksekusi oleh database
Contoh query:
- CREATE TABLE MAHASISWA (NAMA VARCHAR(20), ALAMAT
VARCHAR(60), JURUSAN VARCHAR(20))
- SELECT NAMA FROM MAHASISWA WHERE
JURUSAN=“INFORMATIKA”
¬
Statement dibuat dengan memanggil createStatement dari
object Connection
173
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Statement
¬
¬
174
Statement yang tidak menghasilkan data dieksekusi
dengan memanggil method executeUpdate(), sedangkan
statement yang menghasilkan data dieksekusi dengan
memanggil method executeQuery(), yang akan
menghasilkan object bertipe ResultSet
Contoh:
stmt = con.createStatement();
stmt.executeUpdate(“CREATE TABLE MAHASISWA ”+
“(NAMA VARCHAR(30), ALAMAT VARCHAR(30))”);
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
PreparedStatement
¬
PreparedStatement: query yang memiliki parameter yang
dapat di set. Contoh:
- SELECT NAMA FROM MAHASISWA WHERE JURUSAN=?
¬
¬
175
¬
Simbol ? merepresentasikan sebuah parameter yang dapat di
set.
PreparedStatement dibuat dengan memanggil method
prepareStatement dari object Connection
contoh:
PreparedStatement stmt = con.prepareStatement(“SELECT *
FROM MAHASISWA WHERE NAMA=?”);
stmt.setString(1, “Amir”);
ResultSet rset = stmt.executeQuery();
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
ResultSet
¬
¬
¬
176
¬
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”);
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh membuat table
177
//File : CreateMahasiswa.java
//Desc : implementasi pembentukan tabel Mahasiswa
import 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());
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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());
}
178
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh insert ke database
179
//File : InsertMahasiswa.java
//Desc : implementasi insert data ke table Mahasiswa
import 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());
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
180
try {
con = DriverManager.getConnection(url);
stmt = con.createStatement();
stmt.executeUpdate(query);
stmt.close();
con.close();
} catch(SQLException ex) {
System.err.println("SQLException: " +
ex.getMessage());
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh insert dengan PreparedStatement
181
//File : InsertMahasiswa2.java
//Desc : implementasi insert data ke table Mahasiswa
import 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());
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
182
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());
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh query database
183
//File : SelectMahasiswa.java
//Desc : implementasi pembentukan tabel Mahasiswa
import 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());
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
184
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());
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh query dengan parameter
185
//File : SelectMahasiswa2.java
//Desc : implementasi pembentukan tabel Mahasiswa
import 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());
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
186
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());
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
}
Teknik - Informatika ITB, Juli - Agustus 2000
Java Networking
187
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
-
188
-
client
ServerSocket: untuk berkomunikasi dengan komputer lain pada
sisi server
URL: merepresentasikan URL (contohnya:
http://www.informatika.org)
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh program untuk query hostname
189
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 );
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 hostname
atau IP address
¬
String getHostName()
- mengembalikan nama host dari object InetAddress
190
¬
byte[] getAddress()
- mengembalikan raw IP address (dalam bentuk byte array)
¬
String getHostAddress()
- mengembalikan IP address dalam bentuk String
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh program dengan menggunakan URL
191
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 );
}
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
URL
¬
¬
¬
¬
¬
192
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.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh program dengan socket
import java.io.*;
import java.net.*;
193
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()));
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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();
}
}
194
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh program socket
import java.io.*;
import java.net.*;
195
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()));
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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();
}
196
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Socket
¬
¬
Socket adalah representasi komunikasi data antara 2 buah
komputer/program (dapat dari komputer yang sama)
Socket dibuat dengan memberikan hostname dan portname
dari komputer yang dituju
- Socket s = new Socket(“www.informatika.org”, 80);
¬
197
Method yang disediakan:
-
InputStream getInputStream()
OutputStream getOutputStream()
int getReceiveBufferSize()
setReceiveBufferSize(int s)
int getSendBufferSize()
setSendBufferSize(int s)
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
ServerSocket
¬
¬
198
Socket yang digunakan pada sisi server
ServerSocket akan menunggu koneksi dari client pada
port tertentu. Jika terdapat client yang menghubungi
server, ServerSocket akan membuat socket baru yang
merepresentasikan koneksi dengan client tersebut
- Socket accept()
• menunggu koneksi dari client, setelah ada, menghasilkan
object socket
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Thread
¬
¬
¬
199
satuan titik eksekusi program
multithreading: aplikasi yang berjalan dengan lebih dari satu
thread, sehingga seakan-akan ada 2 program paralel
dijalankan 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();
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 sebagai
parameter, memanggil method start dari object thread. contoh:
200
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() harus
diimplementasikan
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Membuat server multithreading
¬
¬
server harus melayani lebih dari satu client pada saat
bersamaan, sehingga harus diimplementasikan sebagai
multithreaded server
cara: setiap ada client baru, dibuat sebuah thread untuk
melayaninya.
while(true) {
clientSocket = serverSocket.accept();
MyThread t1 = new MyThread(clientSocket);
t1.start();
}
201
¬
Di mana MyThread adalah sebuah kelas yang diturunkan dari
Thread
class MyThread extends Thread {
Socket socket;
public MyThread(Socket s) {
socket = s;
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh: Buat server file
¬
¬
¬
Client menghubungi server dengan mengirimkan nama
file yang akan diambil
server membaca file yang diminta dan mengirimkannya
ke server
jawaban server terdiri atas satu baris status hasil dan
baris berikutnya berupa file yang diminta
202
Client
Server
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
203
while( masih ada data dari file)
// kirim data dari file ke client
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
thread-safe & synchronize
¬
204
¬
¬
thread-safe: beberapa thread dapat mengakses object
yang sama pada waktu bersamaan. Variable sebuah
object dapat menjadi tidak konsisten karena diubah oleh
dua thread pada saat bersamaan. Thread-safe adalah
kondisi dimana sebuah object dapat tetap konsisten
walaupun diakses oleh banyak thread pada saat
bersamaan
synchronize adalah parameter yang dapat diterapkan
kepada method agar object tersebut thread-safe
dengan synchronize, sebuah method pada setiap saat
pasti hanya dieksekusi oleh sebuah thread saja.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh:
public class Counter {
int count = 1;
public int getValue () {
count++;
return count;
}
}
205
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();
}
Achmad Imam Kistijantoro- Diktat Java Programming
}
Teknik - Informatika ITB, Juli - Agustus 2000
Java Servlet
206
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Java Servlet
¬
Servlet: aplikasi java yang dieksekusi pada Web server
207
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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 mesin
tidak mencukupi untuk mengembangkan software sesuai dengan
kebutuhan masa kini.
- Level abstraksi: Mesin – Assembly language – Programming Language –
208
Implementation Design – High Level Design – Software Requirement.
- Object Oriented adalah paradigma pengembangan software yang
membuat metodologi pemecahan masalah lebih dekat kepada domain
permasalahan dibandingkan domain mesin.
- permasalahan di bidang software engineering: software crisis, rapid
software development, software complexity, software maintenance,
evolutionary techniques.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Interface & Callback
¬
Interface dapat digunakan untuk mendefinisikan antar
muka sebuah callback
MouseHandler
interface
Tampilan
onMousePressed
209
MouseHandler
implementation 2
MouseHandler
implementation 1
onMousePressed
onMousePressed
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Permainan kartu
¬
210
terdapat setumpuk kartu, terdiri atas 52 kartu dengan 4
suit. Tumpukan kartu tersebut dapat dikocok dan
dibagikan ke sejumlah pemain. Sisa yang tidak
dibagikan diletakkan ditengah meja, dan disebut sebagai
draw pile. Kartu-kartu dimainkan oleh pemain dengan
cara meletakkan pada meja, dan diletakkan pada
tumpukan kartu yang telah dimainkan yang dinamakan
discard pile.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh kasus:
¬
211
vending machine
- sebuah vending machine menampilkan daftar produk yg dapat
dibeli, antara lain permen, kue, coklat dan chips. Harga masingmasing produk adalah sbb:
• permen : Rp. 500,• kue
: Rp. 600,• coklat
: Rp. 1200,• chips
: Rp. 1000,pembeli dapat memasukkan sejumlah uang, dan memilih produk
yang diinginkannya. Machine akan memberikan produk tersebut,
dan memberikan kembaliannya.
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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
212
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Solusi
213
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);
}
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Solusi OO
Produk
214
Chips
Chips
Coklat
Permen
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Contoh kasus
¬
¬
¬
215
buat program untuk menggambar bentuk (square,
rectange, circle, etc) di layar.
informasi yang harus disimpan: jenis bentuk, posisi,
ukuran.
solusi:
class Rectangle {
int
}
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - 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;
}
}
216
Achmad Imam Kistijantoro- Diktat Java Programming
Teknik - Informatika ITB, Juli - Agustus 2000
Download