Java Programming - Module
Java Programming - Module
Training Module
October 2010
For the latest information, please see bluejack.binus.ac.id
Information in this document, including URL and other Internet Web site references, is
subject to change without notice. This document supports a preliminary release of software
that may be changed substantially prior to final commercial release, and is the proprietary
information of Binus University.
This document is for informational purposes only. BINUS UNIVERSITY MAKES NO
WARRANTIES, EITHER EXPRESS OR IMPLIED, AS TO THE INFORMATION IN THIS
DOCUMENT.
The entire risk of the use or the results from the use of this document remains with the
user. Complying with all applicable copyright laws is the responsibility of the user. Without
limiting the rights under copyright, no part of this document may be reproduced, stored in
or introduced into a retrieval system, or transmitted in any form or by any means
(electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without
the express written permission of Binus University.
Binus University may have patents, patent applications, trademarks, copyrights, or other
intellectual property rights covering subject matter in this document. Except as expressly
provided in any written license agreement from Binus University, the furnishing of this
document does not give you any license to these patents, trademarks, copyrights, or other
intellectual property.
Unless otherwise noted, the example companies, organizations, products, domain names, email addresses, logos, people, places and events depicted herein are fictitious, and no
association with any real company, organization, product, domain name, email address,
logo, person, place or event is intended or should be inferred.
2010 Binus University. All rights reserved.
The names of actual companies and products mentioned herein may be the trademarks of
their respective owners.
TABLE OF CONTENT
Contents
TABLE OF CONTENT ................................................................................................... 3
OVERVIEW ................................................................................................................ 5
OBJECTIVE ................................................................................................................ 8
SYSTEM REQUIREMENT ............................................................................................... 9
Java Console ........................................................................................................... 14
Module 01 - Java Introduction ................................................................................. 14
Java Console ........................................................................................................... 34
Module 02 - Tipe Data & Input Output Operation ....................................................... 34
Java Console ........................................................................................................... 42
Module 03 Arithmetic Operation............................................................................ 42
Java Console ........................................................................................................... 45
Module 04 - Selection Controlling Structure .............................................................. 45
Java Console ........................................................................................................... 50
Module 05 - Loop Controlling Structure and Jump Operation ....................................... 50
Java Console ........................................................................................................... 59
Module 06 - Array.................................................................................................. 59
Java Console ........................................................................................................... 65
Module 07 - Method ............................................................................................... 65
Java Console ........................................................................................................... 68
Module 08 - Sorting ............................................................................................... 68
Java Console ........................................................................................................... 71
Module 09 Java Utilization.................................................................................... 71
Java Console ........................................................................................................... 76
Module 10 Class and Object ................................................................................. 76
Java Console ........................................................................................................... 84
Module 11 - String ................................................................................................. 84
Java Console ........................................................................................................... 89
Module 12 - Wrapper & Math Class .......................................................................... 89
Java Console ........................................................................................................... 93
Module 13 Inheritance ......................................................................................... 93
Java Console ........................................................................................................... 97
Module 14 - Polymorphism ..................................................................................... 97
Java Console ........................................................................................................... 99
Module 15 Abstract and Interface ......................................................................... 99
OVERVIEW
Modul ini membahas tentang bahasa Java, dimulai dari dasar sampai dengan materi
Threading. Materi yang diajarkan meliputi :
1.
Java Introduction
Mengenal IDE Eclipse
Mengenal IDE NetBeans
Mengenal Java
Memperbaiki kesalahan sintaks dasar pada source code
Meng-compile, run, dan debug program
2.
3.
Aritmethic Operation
Operator penambahan
Operator pengurangan
Operator perkalian
Operator pembagian
Operator sisa hasil bagi
Shorthand operator
4.
5.
6.
Array
Definisi dan karakteristik array
Inisialisasi array
Array dua dimensi
7.
Method
Definisi fungsi
Prototipe fungsi
Jangkauan identifier
Pengiriman parameter berupa tipe data primitif dan abstract (Array dan String)
Return value tipe data primitif dan abstract (Array dan String)
Overloading terhadap Fungsi
8.
Sorting
Bubble sort
Selection sort
Insertion sort
9.
Java Utilization
Pembangkit Bilangan Acak
Menunda dan menghentikan program
Calendar
Input/Output Dialog
Locale dan Formatter
Exception Handling
File Separator
File Method ( exist, getName, getPath, getParent, isFile, lastModified, length,
renameTo )
OBJECTIVE
Diharapkan trainee dapat mengerti tentang dasar-dasar dalam java dan dapat
mengimplementasikannya dalam suatu program sederhana.
Diharapkan trainee dapat mengerti tentang penggunaan tipe data & input output pada
Java.
Diharapkan trainee dapat mengerti tentang penggunaan operasi matematika pada
Java.
Trainee dapat menerapkan penggunaan seleksi dalam bahasa pemrograman Java
Trainee dapat menggunakan perulangan dalam bahasa pemrograman java.
Diharapkan trainee dapat mengerti tentang penggunaan dan cara pemakaian array dan
dapat mengimplementasikannya dalam suatu program sederhana.
Diharapkan trainee dapat mengimplementasikan cara penggunaan method di bahasa
pemrograman java.
Diharapkan trainee dapat mengerti tentang sorting dalam Java.
Diharapkan trainee dapat mengerti dan dapat menggunakan class class Utilisasi
dalam package java.util.
Diharapkan trainee dapat mengimplementasikan cara penggunaan class dan object di
bahasa pemrograman java.
Trainee dapat membuktikan kegunaan kelas String di Java
Diharapkan trainee dapat mengerti dan dapat menggunakan Wrapper dan Math Class
dalam Java.
Diharapkan trainee dapat mengerti dan dapat menggunakan konsep Inheritance pada
Java.
Diharapkan trainee dapat mengerti dan dapat menggunakan konsep Polymorphism
pada Java.
Trainee dapat menemukan kegunaan dari kelas abstrak dan interface dalam bahasa
pemograman
Trainee dapat menerapkan konsep penggunaan ArrayList dan Vector dalam bahasa
pemograman
Diharapkan trainee dapat mengerti tentang cara akses ke file melalui Java.
Diharapkan trainee dapat mengerti dan memanipulasi data dalam file menggunakan
Java.
Diharapkan trainee dapat mengimplementasikan cara penggunaan package di bahasa
pemrograman java.
Diharapkan trainee dapat mengerti dan menggunakan Threading dalam Java.
SYSTEM REQUIREMENT
Software yang digunakan untuk editor, compiler, run, debug :
jdk-6u20-windows-i586.exe / jre-6u20-windows-i586-s.exe
Textpad
Notepad++
Eclipse
Netbeans
Platform
Diskspace
SPARC 64bit
Solaris
10
64mb
Solaris
9
64mb
Solaris
8
64mb
Solaris
10
64mb
Solaris
9
64mb
Solaris
8
64mb
Mozilla
1.4+, 1.7+
32-bit Install
65 MB
64-bit Install
29 MB
Mozilla
1.4+, 1.7+
Solaris x86
64-bit
Solaris
10
64mb
Solaris
9
64mb
Solaris
8
64mb
Solaris
10
64mb
Mozilla
1.4+, 1.7+
32-bit Install
53 MB
Mozilla
1.4+, 1.7+
Platform
Version
Memory
Browsers
Diskspace
Windows (32-bit)
Windows
x86
Windows 7
Windows Vista
Windows Server
2008
128mb
IE 7 or IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
128mb
IE 7 or IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
Windows XP
64mb
IE 6 SP1, IE 7 or IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
Windows 2000
64mb
IE 5.5 or IE 6
Mozilla 1.4, Mozilla 1.7, Firefox 2
128mb
IE 7 or IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
128mb
IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
128mb
IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
Windows Vista
128mb
IE 7 or IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
Windows XP
128mb
IE 6 SP1, IE 7 or IE 8
Windows Server
2003
Windows
x64
32-bit
mode
128mb
IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
Windows 7
Windows Server
2008
98 MB
98 MB
128mb
IE 7 or IE 8
Firefox 2, Firefox 3.0.x, Firefox
3.5.x,
or Firefox 3.6
Windows 64-bit
Windows
x64
64-bit
mode
Windows 7
128mb
Windows Server
2008
128mb
Windows Vista
128mb
Windows XP
128mb
Windows 2003
128mb
Platform
Version
Memory
Browsers
Diskspace
LINUX 32-bit
Intel IA32 Red Hat 9.0
64mb
Mozilla 1.4+
58 MB
and Japanese
Locale. No
english.)
LINUX 64-bit
Linux 64- Suse Enterprise
Linux Server 8,
bit
Suse Enterprise
Linux Server 9,
64mb
Suse Enterprise
Linux Server 10,
Suse Enterprise
Linux Desktop
Red Hat
Enterprise Linux
3.0, 4.0
64bit OS,
32bit JRE:
Mozilla 1.4.x
or 1.7+,
Firefox 1.06+
64bit OS,
64bit JRE:
N/A
56 MB
Java Console
Module 01 - Java Introduction
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang pengenalan IDE Eclipse dan Netbeans,
pengenalan java, sintaks dasar pada source code, dan meng-compile, run, serta debug
program.
2. Learning Outcomes
Diharapkan trainee dapat mengerti tentang dasar-dasar dalam java dan dapat
mengimplementasikannya dalam suatu program sederhana.
3. Material
a. IDE Eclipse
Eclipse dibuat oleh sebuah komunitas open source dan digunakan sebagai IDE untuk
java atau android sebagai sebuah platform untuk mengembangkan aplikasi Eclipse
RCP, dll.
Installation and start Eclipse
Untuk memulai Eclipse, double click pada file eclipse.exe. Sistem akan
mengingatkan untuk tempat workspace. Workspace adalah tempat penyimpanan
project Java yang dibuat.
Create Project
File New JPA Project. Masukkan nama untuk project yang ingin dibuat.
Create Package
Dari folder src, klik kanan lalu pilih New Package.
b. IDE Netbeans
Netbeans IDE adalah sebuah open source yang terintegrasi dengan pengembangan
environment. Netbeans IDE mendukung pengembangan semua tipe aplikasi Java
(Java SE, JavaFX, Java ME, web, EJB, dan aplikasi mobile). Semua fungsi IDE
disediakan oleh modul.
Sebuah modul adalah suatu arsip Java (Java archive) yang memuat kelas-kelas Java
untuk
berinteraksi
dengan
NetBeans
Open
API
dan
file
manifestasi
yang
c. Pengenalan Java
Sejarah singkat java
Java mulanya diciptakan sebagai programming tool untuk GreenProject oleh Patrick
Naughton, Mike Sheridan, dan
Project terdiri dari 13 orang yang merupakan tim dari sun untuk mengantisipasi dan
merencanakan next wave dalam dunia komputer. Fokusnya adalah pada digitally
controlled consumer devices dan komputer.
Setelah 18 bulan bekerja, pada tahun 1992, mereka mengeluarkan suatu Set-Top TV
interaktif dengan touchscreen yang disebut *7 (star seven). Pada *7 ini juga
pertama kali dikenalan duke (maskot java).
*7 memiliki cangkupan platform dan device lebih luas dibandingkan product serupa
dikarenakan *7 dikerjakan menggunakan suatu processor-independent language
yang diciptakan oleh James Gosling. Gosling menamakan bahasa ini dengan Oak,
yang berasal dari pohon Oak yang berada di luar jendela kantornya. Karena nama
Oak telah digunakan sebagai nama product lain, maka Oak pun berganti nama
menjadi Java.
Nama java sendiri tidak terlalu jelas berasal darimana. Beberapa
sumber mengatakan Java berasal dari kopi jawa tetapi versi cerita
yang berkaitan juga beragam. Ada yang mengatakan kopi tumbuk jawa adalah kopi
kesukaan James Gosling. Ada jg mengatakan nama Java didapat pada saat mereka
sedang ngopi di suatu cafe. Versi hancurnya, diceritakan para pengembangan Java
bertualang di pulau Jawa dan di akhir petualangannya mereka minum kopi (beneran
nih??).
Sumber lain mengatakan nama Java didapat dari daftar nama-nama random, dan
nama Java dipilih karena kedengaran keren.
Spekulasi lain mengatakan bahwa nama java didapat dari inisial beberapa individu
yang berperan dalam project yaitu
bechtolsheim.
Pada perkembangan selanjutnya GreenProject berubah menjadi FirstPerson dan
personilnya pun bertambah menjadi 70 orang. FirstPerson mulai memasarkan
produk sejenis dengan *7 tetapi mereka mengalami kegagalan.
Pada saat itu internet mulai berkembang, melihat adanya kecocokan dengan visi
java, kemudian mereka melanjutkan project dengan membuat browser berdasarkan
browser mosaic (web browser pertama) yang mereka namakan WebRunner.
WebRunner sendiri merupakan web browser pertama yang dapat menampilkan
animasi (applet). Kemudian WebRunner berubah nama menjadi HotJava
Setelah
kesuksesan
HotJava
TM
pada
pertengahan
tahun
TM
1995,
.
Netscape
bytecode
dieksekusi
diatas
suatu
arsitektur
OPERATING SYSTEM
HARDWARE
Simple Program
Nama file source code yang dibuat harus memiliki nama yang smaa dengan
nama kelas di source code it. Bila dalam satu source code terdapat banyak
class maka, yang diutamakan adalah class yang memiliki access public, dan
di tiap source code hanya bisa terdapat satu buah public class. Jadi dalam
kasus ini, simpan file dengan nama Simple.java sesuai dengan nama public
class-nya. (Karena java case-sensitive jadi kita harus memperhatikan huruf
kapital pada penamaan file).
2.
Sama seperti pada C/C++, eksekusi program pertama kali dimulai di fungsi
main(), tetapi fungsi main() di java harus ditambah modifier public, modifier
static dan mempunyai passing parameter berupa array of String. Akan
dijelaskan lebih lanjut.
3.
Bila kita menggunakan textpad sebagai editor, kita dapat mengatur konfigurasi
textpad sehingga kita dapat mengompile dan running java melalui textpad.
Caranya, dari menu Configure, pilih Preferences. Lalu di kolom sebelah kiri, pilih
menu Tools. Setelah itu, bila JDK telah terinstall dengan baik di komputer anda
maka anda dapat menambahkan menu Java SDK Commands di komputer anda.
Selanjutnya kita cukup menggunakan Ctrl + 1 untuk compile dan Ctrl + 2 untuk
running.
CLASSPATH
Classpath adalah path dimana JRE (Java runtime environment) akan mencari class
dan file lainnya.
Berikut adalah beberapa cara untuk menambahkan classpath:
1.
2.
JDK Tool
Berikut ini adalah daftar beberapa daftar JDK tool yang sering dipakai:
Tool
Deskripsi
javac
Java Compiler
Java
Java Launcher
javadoc
appletviewer
javap
Jar
Comment di java
Yang dimasksud dengan comment di sini adalah
2.
3.
Documentation comment
Diawali dengan /** dan diakhir oleh */
Comment ini digunakan untuk membuat API dengan menggunakan
javadoc.
Variable
Sama seperti C/C++, java adalah
Berikut adalah tipe data primitif yang bisa kita digunakan di Java:
Data
bi
type
Value
boolean
by default
true / false
false
-128 to +127
byte
short
16
-32,769 to 32,767
int
32
-2,147,483,648 to +2,147,483,647
long
64
char
16
float
32
0.0f
double
64
0.0d
-9,223,372,036,854,775,808 to
+9,223,372,036,854,770,000
'\u0000' to '\uFFFF'
keterangan
0L
'\u0000'
ISO Unicode
Character Set
continue
for
New
Switch
assert
default
goto
Package
Synchronized
boolean
do
if
private
This
break
double
implements
protected
Throw
byte
else
import
public
Throws
case
enum
instanceof
return
Transient
catch
extends
int
short
Try
char
final
interface
static
Void
class
finally
long
strictfp
Volatile
const
float
native
super
While
6. Aturan di bawah ini tidak akan menyebabkan error atau warning, tetapi lebih
merupakan kebiasaan yang banyak dipakai:
Jika mengandung 2 kata, maka huruf pertama dari kata kedua dan berikutnya
huruf kapital.
Cth: jumlahDicut, jumlahAsistenDiterima, dll.
Contoh:
int decVal = 26;
Untuk tipe data float dan double dapat menggunakan E atau e (untuk
scientific notation), F atau f (untuk float) dan D atau d (untuk double).
Contoh:
double d1 = 123.4;
double d2 = 1.234e2; /* same value as d1, but in
scientific notation */
float f1 = 123.4f;
Gunakan 'single quotes' untuk char dan "double quotes" untuk String.
Berikutnya, ada beberapa karakter di java yang dalam penggunaannya di
dalam String harus menggunakan tambahan karakter escape sequence
(\)
Escape sequence di java:
\b
backspace
\t
tab
\n
line feed
\f
form feed
\r
carriage return
\"
double quote
\'
single quote
\\
backslash
Java Console
Module 02 - Tipe Data & Input Output
Operation
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang Tipe data & input output operation pada
Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti tentang penggunaan tipe data & input output pada
Java.
3. Material
a. Tipe data primitif: boolean, byte, char, int, long, float, dan double
Variabel adalah suatu nama yang digunakan untuk menyimpan suatu nilai dari tipe
data tertentu. Nilai dari suatu variabel disebut literal. Sebelum digunakan variabel
harus dideklarasikan. Deklarasi disesuaikan dengan tipe data yang ingin
direpresentasikan.
Deklarasi variabel dan konstanta membutuhkan tipe data tertentu. Java memiliki
delapan tipe data primitif, sedangkan untuk tipe data kelas jumlahnya tak terhingga
(karena bisa kita definisikan sendiri). Delapan tipe data primitif ini sangat
fundamental karena ia sebagai dasar untuk membangun tipe data kelas.
Kedelapan tipe data primitif tersebut bisa digolongkan kedalam tipe data numerik
(untuk mengolah nilai-nilai yang berupa angka), tipe data boolean (berisi nilai benar
dan salah 0 dan 1), dan tipe data karakter huruf.
Tipe data numerik dibagi menjadi dua, yakni tipe data untuk menyimpan bilangan
bulat dan tipe data untuk menyimpan bilangan pecahan.
Berikut tipe data primitif (dasar) dalam java :
bit
boolean
Value
by default
true / false
false
-128 to +127
-32,769 to 32,767
byte
short
16
int
32
long
64
char
16
float
32
0.0f
double
64
0.0d
-2,147,483,648 to
keterangan
+2,147,483,647
-9,223,372,036,854,775,808 to
+9,223,372,036,854,770,000
'\u0000' to '\uFFFF'
0L
'\u0000'
ISO Unicode
Character Set
mengkonversi
string
menjadi
angka
dapat
menggunakan
String a = "13";
int angka = Integer.parseInt(a);
continue
for
New
Switch
assert
default
goto
Package
Synchronized
boolean
do
if
private
This
break
double
implements
protected
Throw
byte
else
import
public
Throws
case
enum
instanceof
return
Transient
catch
extends
int
short
Try
char
final
interface
static
Void
class
finally
long
strictfp
Volatile
const
float
native
super
While
12. Aturan di bawah ini tidak akan menyebabkan error atau warning, tetapi lebih
merupakan kebiasaan yang banyak dipakai:
-
Jika mengandung 2 kata, maka huruf pertama dari kata kedua dan berikutnya
huruf kapital.
Cth: jumlahDicut, jumlahAsistenDiterima, dll.
d. Literal
Literal adalah bagian dari code yang merepresentasikan suatu nilai (fixed value).
Literal yang digunakan pada Java kurang lebih hampir sama pada C++.
Cth:
boolean result = true;
char capitalC = 'C';
byte b = 100;
short s = 10000;
int i = 100000;
Untuk tipe data byte, short, int, dan long dapat berupa decimal, octal dan
hexadecimal:
Contoh:
int decVal = 26;
Untuk tipe data float dan double dapat menggunakan E atau e (untuk scientific
notation), F atau f (untuk float) dan D atau d (untuk double).
Contoh:
double d1 = 123.4;
double d2 = 1.234e2; /* same value as d1, but in
scientific notation */
float f1
= 123.4f;
Gunakan 'single quotes' untuk char dan "double quotes" untuk String.
backspace
\t
tab
\n
line feed
\f
form feed
\r
carriage return
\"
double quote
\'
single quote
\\
backslash
Untuk references data type, dapat menggunakan null biasanya untuk menandakan bahwa
object belum digunakan.
e. Standart I/O Java
Untuk program yang berjalan di command line, input output dapat dilakukan dengan
2 cara yaitu dengan menggunakan Standard Stream yang sudah ada atau dengan
menggunakan Console.
Standart Stream
Standard stream sudah didefinisi secara otomatis dan tidak perlu dibuka.
Ada 3 standard I/O di java:
1. System.out
Secara umum ini adalah output stream untuk menampilkan error atau
informasi lain.
System.out dan System.err merupakan objek dari PrintStream.
System.out.print("text");
System.out.println("text");
Untuk hasil output yang lebih komplek, kita bisa menggunakan printf atau
format.
System.out.format("integer %d float %f string %s",
varInt,varFloat,varString);
Karakter khusus seperti
boolean
'B'
's',
string
'S'
'c',
unicode character
'C'
'd'
decimal
'o'
octal
'x',
hexadecimal
'X'
'e',
scientific notation
'E'
'f'
floating-point
'%'
'n'
new line
menampilkan
rata kiri
.3
10.3
Contoh:
long n = 461012;
System.out.format("%d%n", n);
// --> "461012"
System.out.format("%08d%n", n); // --> "00461012"
System.out.format("%+8d%n", n); // --> " +461012"
System.out.format("%,8d%n", n); // --> " 461,012"
System.out.format("%+,8d%n%n", n); // --> "+461,012"
double pi = Math.PI;
System.out.format("%f%n", pi); //
--> "3.141593"
System.out.format("%.3f%n", pi); // --> "3.142"
System.out.format("%10.3f%n", pi); // --> "
3.142"
System.out.format("%-10.3f%n", pi); // --> "3.142"
Untuk help bisa dilihat java API doc di java.util.Formatter.
Karena
keterbatasan
method
dari
InputStreamReader, kita
menggunakan
Jangan
lupa
untuk
mengimport
java.io.InputStreamReader,
Console
Selain menggunakan standard stream, kita dapat menggunakan console untuk
output input.
Console console = System.console();
Kelas console berada di package java.io.
console menyediakan fungsi format dan printf untuk output sama seperti pada
System.out.
Console console = System.console();
f.
Type Casting
Guna dari type casting adalah dimana kita ingin mengubah suatu tipe data menjadi
tipe data lainnya.
public class Test{
public static void main(String args[])
{
float number1 = 3.33f;
int number2 = (int)number1;
System.out.println(number1);
System.out.println(number2);
}
}
Dari code diatas disimpulkan tipe data float number1 ditype cast menjadi tipe data
primitif int.
Type cast tidak hanya berlaku untuk tipe data primitif. Kita juga bisa melakukan type
cast pada object.
Java Console
Module 03 Arithmetic Operation
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang Operasi matematika dalam Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti tentang penggunaan operasi matematika pada Java.
3. Material
a. Arithmetic Operation
Arithmetic Operation digunakan untuk melakukan operasi matematika, seperti
penambahan, pengurangan, pembagian, dan modulus (atau sisa pembagian),
namun bisa juga digunakan untuk menggabungkan string . Contoh penggunaan:
Simbol
+
*
/
%
+
Nama Operator
Penjumlahan
Pengurangan
Perkalian
Pembagian
Modulus
Penggabungan String
Contoh
a = b + c
a = b - c
a = b * c
a = b / c
a = b % c
a = Hello + World
Contoh program :
import java.util.*;
public class Test{
public static void main(String args[])
{
int a,b;
Scanner scan = new Scanner(System.in);
System.out.print("Input Nilai a ");
a = scan.nextInt();
b. Shorthand operator
Shorthand operator penulisan operator matematika yang disingkat. Digunakan untuk
melakukan increment atau decrement.
Simbol
--
++
Fungsi
Mengurangi Nilai
operator yang tersimpan
pada memori yang akan
berubah pada eksekusi
berikutnya
Mengurangi nilai
operator secara langsung
tanpa harus menunggu
eksekusi berikutnya
Menambah Nilai operator
yang tersimpan pada
memori yang akan berubah
pada eksekusi berikutnya
Menambah nilai operator
secara langsung tanpa
harus menunggu eksekusi
Contoh
i--
--i
i++
++i
berikutnya
Java Console
Module 04 - Selection Controlling
Structure
Revision <<Number>>
1. Module Description
Pada pembahasan topik ini, akan dibahas tentang definisi dari seleksi dan cara
penggunaan seleksi untuk bahasa pemrograman java.
2. Learning Outcomes
Trainee dapat menerapkan penggunaan seleksi dalam bahasa pemrograman Java
3. Material
a. Definisi
Seleksi digunakan dalam suatu bahasa pemrograman untuk mengecek suatu kondisi
logika yang diinginkan. Di dalam bahasa java terdapat 3 jenis seleksi yaitu
menggunakan if-else, switch-case, dan menggunakan ternary.
b. if-else statement:
class IfElseDemo{
public static void main(String[] args){
//memberikan nilai awal untuk variable testscore
int testscore = 76;
char grade;
//jika testscore lebih besar atau sama dengan 75
//maka grade menjadi A
if (testscore >=85){
grade = 'A';
}
//jika kondisi diatas tidak benar, akan dijalankan
//seleksi berikutnya, dengan prinsip yang sama
else if (testscore >=75){
grade = 'B';
}
//begitu pula dengan yang lainnya
else if (testscore >=65){
grade = 'C';
}
else if (testscore >=55){
grade = 'D';
}
else {
grade = 'E';
}
//print hasil sesuai dengan grade yang diperoleh
System.out.println("Grade = " + grade);
}
}
Baris coding di atas ingin mengecek apakah grade yang didapatkan jika score yang
dimasukkan adalah 76, dengan melakukan pengecekan logika di setiap barisnya.
Outputnya adalah sebagai berikut.
c. switch statement:
Hanya bisa digunakan untuk byte, short, char, dan int dan enum (enum akan
dijelaskan lebih lanjut).
class SwitchDemo{
public static void main(String[] args){
int angka = 1;
//memasukkan variable ke dalam switch, nantinya
variable
//ini yang akan dicek di baris berikutnya
switch(angka){
//mengecek variable yang sudah dimasukkan
//jika variable tadi (angka) = 0, maka
dijalankan
//seleksi ini
case 0: System.out.println ("nol"); break;
//jika 1
case 1: System.out.println ("satu"); break;
//begitu juga seterusnya
d. Ternary statement:
Walaupun terlihat membingungkan saat pertama kali melihatnya, operator ternary
memberikan kita keuntungan dalam membuat suatu perintah seleksi dengan lebih
sedikit baris coding.
Contoh seleksi if else sebelumnya yang dirubah menjadi ternary.
class TernaryDemo{
public static void main(String[] args){
int score = 76;
char grade;
//cara penulisannya
//(logika) ? (kondisi jika true) : (kondisi jika
false)
grade = score >= 85 ? 'A' :
(score >=75 ? 'B' :
(score >=65 ? 'C' :
(score >=55 ? 'D' : 'E')));
e. String comparison
Tipe data String dapat dibandingkan dengan berbagai cara contohnya dengan
menggunakan if-else statement di antara lain adalah sebagai berikut.
String kata = "Hello";
//untuk membandingkan isi text huruf besar dan
//kecil diperhatikan (case sensitive)
//mengembalikan true/false
if (kata.equals("hello")){
System.out.println("Kata adalah hello");
}
else{
System.out.println("Kata bukan hello");
}
//untuk membandingkan isi text huruf besar dan
//kecil tidak diperhatikan (incase sensitive)
if (kata.equalsIgnoreCase("hello")){
System.out.println("Kata adalah hello");
}
else{
System.out.println("Kata bukan hello");
}
//bisa juga dengan menggunakan compareTo
//tetapi yang dikembalikan nilainya adalah berupa
Java Console
Module 05 - Loop Controlling Structure
and Jump Operation
Revision 0
1. Module Description
Pada pembahasan topik ini, akan dibahas tentang definisi dari perulangan, cara
penggunaan, dan fungsi dari perulangan di bahasa pemrograman java.
2. Learning Outcomes
Trainee dapat menggunakan perulangan dalam bahasa pemrograman java.
3. Material
a. Maksud dan tujuan
Loop atau perulangan adalah suatu bentuk kegiatan mengulang suatu statement
sampai batas yang diinginkan. Dalam pemograman Loop atau perulangan sangat
berguna sekali. Kegunaan sederhana dalam perulangan terlukis seperti ini: Jika kita
ingin menuliskan kata saya ganteng sebanyak seribu kali maka kita harus
membuat seribu baris kata saya ganteng dalam kode pemrogaman kita. Tapi
dengan adanya perulangan maka kita hanya cukup menuliskan 5 sampai 7 baris
kode saja. Dalam dunia nyata perulangan sangat sering dipakai dan membantu
sekali.
Ada beberapa hal yang bisa kita simpulkan dan kita catat tentang looping.
1. Dalam perulangan harus ada variable kontrol, dimana variable tersebut yang
bertugas mengontrol perulangan hingga batas apa atau berapa perulangan bisa
dilakukan.
2. Variable kontrol harus bersifat incremental atau juga bersifat dapat
dimodifikasi sehingga perulangan dapat berjalan dengan semestinya.
3. Incremental atau modifikasi variabel kontrol berada dalam lingkup
perulangan.
b. Loop Controlling Structure
Dalam perulangan terdapat tiga tipe umum, yaitu sebagai berikut.
1. while statement:
class WhileDemo{
public static void main(String[] args){
int count = 1;
//kondisi jika benar, akan dijalankan looping
ini
while (count<11){
//statement di dalam perulangan ini
System.out.println("Count is "+count);
//menambahkan
nilai
count,
di
akhir
statement
--NB: T=Tidak/False, Y=Ya/True-Outputnya dari baris code di atas adalah sebagai berikut.
Untuk infinite loop kita dapat menggunakan while seperti di bawah ini:
while (true){
//your code goes here
}
2. do-while statement:
class DoWhileDemo{
public static void main(String[] args){
int count = 1;
//menjalankan dulu suatu perintah
do
{
//statement di dalam perulangan ini
System.out.println("Count is "+count);
//menambahkan
nilai
count,
di
akhir
statement
//agar tidak terjadi looping forever
count++;
}while (count<=11);//setelah itu baru di cek di
akhir
}
}
3. for statement:
mempunyai bentuk umum:
initialization : inisialisasi saat loop dimulai pertama kali dan hanya dilakukan
sekali.
termination : jika bernilai false, loop akan berhenti.
increment : dijalankan setiap kali perulangan/iterasi.
class ForDemo{
public static void main(String[] args){
for(int i=0;i<10;i++){
System.out.println("Count is " + i);
}
}
}
c. Branching Statement
1. break statement digunakan untuk keluar dari looping.
for(int i = 0; i < 13; i ++){
//jika i sudah mencapai 7, maka perulangan akan
berhenti
//hasil yang tercetak nantinya adalah 0, 1, 2, 3,
4, 5, 6
if(i == 7) break;
System.out.println(i);
}
Outputnya adalah sebagai berikut.
Kita juga dapat menambahkan label sebelum while, do-while atau for statement
block dan menambahkan label tersebut di belakang break atau continue, kita
menyebutnya break dengan label. Biasanya digunakan untuk keluar dari
nested loop.
loop1:
//label
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
// keluar dari looping yang ber-label loop1:
if(i == 5 && j==4) break loop1;
System.out.println(i+" "+j);
}
}
System.out.println("finish");
3. return statement
Digunakan untuk keluar dari suatu method. Kita dapat menambahkan nilai di
belakang return jika kita ingin mengembalikan suatu nilai sesuai dengan return
type dari method tersebut.
void method(){
return;
}
int method2(){
return 1;
}
d. Jump Operation
1. try-catch statement digunakan untuk melakukan exception handling.
Misalnya kita ingin membuat suatu perintah sederhana untuk melakukan inputan,
maka perintahnya adalah sebagai berikut
import java.util.Scanner;
public class TryCatchDemo {
public static void main(String[] args) {
int angka;
Scanner in = new Scanner(System.in);
System.out.println("Masukkan inputan : ");
angka = in.nextInt();
in.nextLine();
}
}
Namun masih terdapat masalah dari baris code di atas, dimana jika user
memasukkan inputan bukan berupa angka, akan terjadi error (exception), oleh
karena itu maka dibutuhkan suatu exception handling.
Code sebelumnya direvisi menjadi seperti ini
public class TryCatchDemo {
public static void main(String[] args) {
int angka;
try{
Scanner in = new Scanner(System.in);
System.out.println("Masukkan inputan : ");
angka = in.nextInt();
in.nextLine();
}
catch (Exception e){
//saat error maka akan masuk ke sini, kita
tangani
//misalnya kita beri pesan peringatan bahwa
inputan
//error
System.out.println("Inputan Salah");
}
}
}
Java Console
Module 06 - Array
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang definisi, penggunaan dan cara pemakaian
dari array dalam bahasa pemrograman java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti tentang penggunaan dan cara pemakaian array dan
dapat mengimplementasikannya dalam suatu program sederhana.
3. Material
a. Definisi Array
Array adalah struktur data yang terdiri dari item berurutan, dimana semua item-nya
bertipe datanya sama. Dalam java, item dalam array selalu dinomori dari nol hingga
nilai maksimum tertentu, yang nilainya ditentukan pada saat array tersebut dibuat.
Misalnya, suatu array berisi 100 bilangan bulat, yang dinomori dari nol(0) hingga 99.
b. Deklarasi Array
Deklarasi array dengan menambahkan [] setelah nama variable atau setelah tipe
data.
String members[], otherMembers;
String []persons, otherPersons;
byte map[][];
Dari contoh diatas otherPersons adalah array, sedangkan otherMembers bukan
array.
Supaya array dapat digunakan, kita harus mengalokasi berapa jumlah elemen dari
array dengan menggunakan new.
String members[] = new String[29];
// members dapat menampung 29 elemen
byte map[][] = new map[800][600];
// map mampu menampung 800 x 600 element
Atau kita dapat langsung dapat langsung menginisialisasi elemen dari array.
String color[] = {"blue", "red", "white", "black"};
int sekedarContoh[][] = {
{1,2,3,4,5,6,7,8,9,10,11,12,13},
{14,15,16,17,18,19,20,21,22,23,24,25,26}
};
Untuk mendapatkan panjang dari suatu array kita dapat menggunakan length.
int array[] = new array[666];
int size = array.length;
for(int i=0; i<size; i++){ }
Mulai jdk 1.5 ke atas, kita dapat menggunakan feature dari java yang cukup
berguna yaitu enhanced for statement. Formatnya adalah sebagai berikut:
Jadi setiap kali looping, parameter akan menampung nilai dari elemen arrayName
mulai dari elemen pertama sampai elemen terakhir (looping selesai).
int []array = {1,2,3,4,5,6};
int total = 0;
// menambahkan semua elemen dari array ke total
for(int temp : array)
total += temp;
void main selalu menerima parameter berupa array string. Array tersebut ditujukan
untuk menerima parameter pada command line.
Dalam pendeklarasian variabel, kita sering menggunakan sebuah tipe data beserta
nama variabel atau identifier yang unik. Apabila kita ingin menggunakan variabel
tersebut, kita akan
memanggil dengan nama identifier-nya.
Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki
identifier
berbeda untuk tiap variabel.
int number1;
int number2;
int number3;
number1 = 1;
number2 = 2;
number3 = 3;
Seperti yang dapat Anda perhatikan pada contoh diatas, kode tersebut akan sia-sia
karena harus menginisialisasi dan menggunakan setiap variabel padahal sebenarnya
variabel-variabel tersebut digunakan untuk tujuan yang sama. Pada bahasa
pemrograman Java maupun di bahasa pemrograman yang lain, terdapat sebuah
kemampuan untuk menggunakan satu variabel yang dapat menyimpan beberapa
data
dan memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut sebagai
array.
Contoh Integer dari array :
Setelah pendeklarasian array , kita harus membuat array dan menentukan berapa
panjangnya dengan sebuah konstruktor. Proses ini di Java disebut sebagai
d. Array Multidimensi
Array multidimensi diimplementasikan sebagai array yang terletak di dalam array.
Array multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung
setelah nama array. Sebagai contoh,
// Elemen 512 x 128 dari integer array
int[][] twoD = new int[512][128];
// karakter array 8 x 16 x 24
char[][][] threeD = new char[8][16][24];
// String array 4 baris x 2 kolom
String[][] dogs = {{ "terry", "brown" },
{ "Kristin", "white" },
{ "toby", "gray"},
{ "fido", "black"}
};
Untuk mengakses sebuah elemen didalam array multidimensi, sama saja
dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses elemen
pertama dari baris pertama didalam array dogs, kita akan menulis,
System.out.print( dogs[0][0] );
Kode diatas akan mencetak String terry di layar.
Java Console
Module 07 - Method
Revision 0
1. Module Description
Pada pembahasan topik ini, akan dibahas tentang defenisi dari method dan cara
penggunaan dari method di bahasa pemrograman java.
2. Learning Outcomes
Diharapkan trainee dapat mengimplementasikan cara penggunaan method di bahasa
pemrograman java.
3. Material
a. Definisi Method
Tujuan dari method atau fungsi adalah untuk mengelompokkan perintah-perintah
yang ditujukan untuk melakukan sebuah perintah yang lebih besar.
Hal utama yang dibutuhkan dalam pembuatan dan pendeklarasian suatu method
adalah :
1. Modifiersyaitu hak akses yang nantinya akan mengatur pengaksesan method
ini, akan di bahas di bawah.
2. Return valuetipe data yang akan dikembalikan oleh method ini, void bila tidak
ada nilai yang akan dikembalikan.
3. Nama methodnama method atau fungsi itu. Untuk aturan penamaannya sama
dengan aturan penamaan variable.
4. Parameteryaitu nilai dengan tipe data yang akan dikirimkan sebagai input
untuk method yang bersangkutan. Dikelilingin oleh tanda kurung (). Jika tidak
ada parameter maka akan digunakan kurung kosong ().
5. Isi dari methodyaitu perintah-perintah lain yang akan dijalankan dalam method
ini, dikelilingi oleh {}.
Salah satu contoh method yang akan sering digunakan adalah method main, yaitu
public static void main(String [] args){//isi}
Penjelasan singkat :
1. public static adalah modifiers
2. void adalah return value, dalam kasus ini tidak mengembalikan nilai
3. main adalah nama method utama
4. String [] args adalah parameter yang dikirim, dalam kasus ini adalah array of
String
5. {//isi} adalah tempat meletakkan perintah-perintah yang akan dijalankan.
b. Penggunaan Method
Ketika kita sudah men-develop program dalam skala besar maka kita perlu
menggunakan yang namanya method. Untuk lebih jelasnya perhatikan program
dibawah ini :
public class Main {
public static void main(String[] args) {
Print();
}
static void Print() {
System.out.println("Method Print Sukses Dipanggil!!!");
}
}
Bagian yang diblok warna abu abu tersebut merupakan method berguna untuk
mencetak string "Method Print Sukses Dipanggil!!!" tersebut. Dimana method
tersebut dipanggil pada bagian yang diblok warna kuning diatas. Keyword static
disini diperlukan karena method tersebut berada di main class yang juga bersifat
static sehingga method menyertainya juga harus bersifat static. Keyword void
merupakan salah satu indikasi bahwa method ini tidak me-return/mengembalikan
nilai apapun, untuk method yang me-return/mengembalikan suatu nilai tertentu
akan kita bahas nanti.
Method diatas adalah salah satu method yang tidak menerima passing variable
apapun dan juga tidak me-return variable apapun, untuk contoh method yang
menerima passing variable tertentu perhatikan contoh dibawah ini :
public class Main {
public static void main(String[] args) {
Maksimum(5, 7);
}
static void Maksimum(int a, int c) {
if(a>c) {
System.out.println("Nilai Maksimumnya Adalah :
"+a);
} else if( a < c)
{
System.out.println("Nilai Maksimumnya Adalah : "+c); }
else { System.out.println("Dua Bilangan Tersebut Sama
Besar");
}
}
}
Dari contoh diatas dapat kita ketahui bahwa method Maksimum membutuhkan dua
variable integer untuk dipassingkan, dan dari dua variable integer yang dipassingkan
tersebut akan dicetak variable mana yang lebih besar. Selain itu ada juga method
yang memiliki nilai kembalian, atau return value, sebagai contoh perhatikan program
untuk mencari nilai kuadrat bilangan integer dibawah ini dibawah ini :
public class Main {
public static void main(String[] args) { System.out.println(
Kuadrat(5) );
}
Untuk membuat method yang memiliki nilai kembalian/return value, maka kita harus
menghilangkan keyword void pada method yang kita buat dan menggantikannya
dengan jenis variable kembalian kita, dimana dalam contoh tersebut nilai kembalian
/ return value berupa integer. Pengenalan Teknik Rekursif Dalam suatu method kita
dapat memanggil method yang lainnya, atau bahkan memanggil method itu sendiri,
peristiwa pemanggilan method oleh dirinya sendiri inilah yang disebut rekursif.
Contoh sederhana dari rekursif adalah faktorial (!). Untuk lebih jelasnya perhatikan
contoh dibawah ini :
5! = 4! * 5 4! = 3! * 4 3! = 2! * 3 2! = 1! * 2 1! = 1
Dari contoh diatas dapat kita lihat bahwa sebenarnya faktorial dari bilangan n,
merupakan faktorial bilangan n-1 dikali dengan n, dan begitu seterusnya hingga
n=1. Ketika n=1 maka ada kasus spesial yaitu 1!=1. Untuk implementasinya pada
java, perhatikan program dibawah ini :
public class Main {
public static void main(String[] args) {
System.out.println(Faktorial(5));
}
static int Faktorial(int n) {
if (n == 1) { return 1; }
else { return n * Faktorial(n - 1); }
}
}
Seperti halnya perulangan biasa, jika tidak ada base case maka method rekursif ini
akan mengalami infinite loop yang akan menghabiskan memori.
Java Console
Module 08 - Sorting
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang sorting dalam Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti tentang sorting dalam Java.
3. Material
a. Sorting
Sorting adalah proses menyusun elemen elemen dengan tata urut tertentu dan
proses tersebut terimplementasi dalam bermacam aplikasi. Kita ambil contoh pada
aplikasi perbankan. Aplikasi tersebut mampu menampilkan daftar account yang aktif.
Hampir seluruh pengguna pada sistem akan memilih tampilan daftar berurutan
secara ascending demi kenyamanan dalam penelusuran data.
b. Bubble Sort
Algoritma penyortiran yang dimulai dan berakhir pada sebuah daftar dengan n
elemen dan memindahkan seluruhnya, menguji nilai setiap pasangan item yang
berdekatan dan menukarkannya jika mereka tidak berada dalam urutan yang tepat.
Contoh kode :
public static void bubbleSort1(int[] x) {
int n = x.length;
for (int pass=1; pass < n; pass++) { // count how many times
// This next loop becomes shorter and shorter
for (int i=0; i < n-pass; i++) {
if (x[i] > x[i+1]) {
// exchange elements
int temp = x[i]; x[i] = x[i+1]; x[i+1] = temp;
}
}
}
}
c. Selection Sort
Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling
rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai
dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
Contoh kode :
public void selectionSort(Object array[], int startIdx, int
endIdx) {
int min;
for (int i = startIdx; i < endIdx; i++) {
min = i;
for (int j = i + 1; j < endIdx; j++) {
if (((Comparable)array[min]).compareTo(array[j])>0) {
min = j;
}
}
swap(array[min], array[i]);
}
}
d. Insertion Sort
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi
dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja
kedua). Elemen pertama diambil dari bagian array yang belum diurutkan dan
kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah
diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang
tersisa pada bagian array yang belum diurutkan.
Contoh Kode :
public void insertionSort(Object array[], int startIdx, int endIdx)
{
for (int i = startIdx; i < endIdx; i++) {
int k = i;
for (int j = i + 1; j < endIdx; j++) {
if (((Comparable) array[k]).compareTo(array[j])>0) {
k = j;
}
}
swap(array[i],array[k]);
}
}
Java Console
Module 09 Java Utilization
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang class class Java didalam package
java.util.
2. Learning Outcomes
Diharapkan trainee dapat mengerti dan dapat menggunakan class class Utilisasi dalam
package java.util.
3. Material
a. Java Utilization
Java memiliki class yang sudah dibuat dan tinggal dipakai. Beberapa class tersebut
dipakai sebagai utilisasi, seperti Random, Calendar, dsb.
b. Pembangkit Bilangan Acak
Pada beberapa kasus dibutuhkan sebuah proses atau lebih yang menghasilkan
bilangan secara random. Java memiliki 2 metode yang memungkinkan seorang
programmer untuk melakukan random. Metode tersebut adalah :
//Random dari 1 - 5
System.out.println("Random dari 1-5 : " +
(rnd.nextInt(5)+1));
}
}
public static void main(String []args) {
new BljrRandom();
}
}
System.exit(int status)
Method static dari kelas System yang berfungsi untuk menghentikan program.
Parameter pertama merupakan kode status dari hasil terminate pada JVM. Kode
0 berarti normal exit selainnya adalah abnormal exit. Kode yang ditulis tidak
berpengaruh dengan jalannya program.
System.exit(0)
d. Calendar
Untuk menampilkan tanggal yang sesuai dengan kalendar pada sistem komputer
dapat dengan menggunakkan class java.util.Calendar dan method yang ada
didalamnya. Yang perlu diperhatikan adalah agar dapat menggunakan beberapa
method pada Calendar butuh untuk menampung objeknya terlebih dahulu. Karena
Calendar merupakan Singleton Class maka kita perlu memanggil method
getInstance() dimana method ini me-return objek Calendar.
Contoh :
Calendar obj = Calendar.getInstance();
obj.add(Calendar.MONTH, 1);
Berikut adalah method dan constanta yang sering digunakan :
Constanta
Nama Field
Calendar.DATE
Calendar.MONTH
Calendar.YEAR
Calendar.HOUR
Calendar.MINUTE
Calendar.SECOND
Berisi
Berisi
Berisi
Berisi
Berisi
Berisi
nilai
nilai
nilai
nilai
nilai
nilai
int
int
int
int
int
int
Fungsi
hari dari bulan.
bulan pada sistem komputer.
tahun pada sistem komputer.
jam pada sistem komputer.
menit pada sistem komputer.
detik pada sistem komputer.
Method
Nama Method
getInstance()
add(int field, int count)
after(Object val)
before(Object val)
getTime()
set(int field, int val)
get(int field)
Fungsi
Me-return objek Calendar.
Menambah atau mengurangi objek Calendar
berdasarkan nilai dari int field.
Me-return nilai boolean apakah objek Calendar
telah melewati waktu yang telah ditentukan.
Me-return nilai boolean apakah objek Calendar
belum melewati waktu yang telah ditentukan.
Me-return objek dari Date dengan nilai tanggal
sesuai dengan sistem komputer.
Merubah satuan tanggal menjadi nilai int val
sesuai dengan nilai dari int field.
Me-return nilai int yang dari tanggal objek
Calendar berdasarkan nilai int field
Contoh :
import java.util.Calendar; //import terlebih dahulu
public class CobaCalendar {
private Calendar cal; //deklarasi obj Calendar
public CobaCalendar() {
//cal = new Calendar(); --> SALAH !!
cal = Calendar.getInstance(); //Calendar hanya memiliki 1 objek saja
//Cetak tanggal sekarang
System.out.println(cal.getTime());
//Tambah tanggalnya sebanyak 1
cal.add(Calendar.DATE, 1);
System.out.println(cal.getTime());
//Kurang bulannya sebanyak 2
cal.add(Calendar.MONTH, -2);
System.out.println(cal.getTime());
}
public static void main(String args[]) {
new CobaCalendar();
}
}
e. Input/Output Dialog
Java juga menyediakan class yang berfungsi untuk menampilkan input / output
dialog. Class tersebut adalah JOptionPane dengan menggunakkan method static
show() yang memiliki lebih dari 1 overloading. Class ini akan dipelajari pada Java
GUI.
Java Console
Module 10 Class and Object
Revision 0
1. Module Description
Pada pembahasan topik ini, akan dibahas tentang defenisi dari method dan cara
penggunaan dari class dan object di bahasa pemrograman java.
2. Learning Outcomes
Diharapkan trainee dapat mengimplementasikan cara penggunaan class dan object di
bahasa pemrograman java.
3. Material
a. Pengenalan Class dan Object
(http://java.sun.com/docs/books/tutorial/java/javaOO/index.html)
Sama pada C++, suatu class di java mempunyai state/attribute
dan behavior,
hanya saja istilah yang sering digunakan adalah field untuk state dan method untuk
behavior. Saat suatu objek dibuat maka constructor dari suatu kelas dijalankan.
Berikut ini ilustrasi mengenai suatu objek:
no modifier maksudnya adalah access modifier default jika kita tidak menambah
access modifier.
Dapat dilihat di table bahwa protected di java berbeda dengan C++.
c. Field
Berbeda dengan C++, kita dapat langsung menginisialasi nilai dari field.
d. Object.
Seperti yang kita tahu, class adalah blueprint dari objek, jadi kita membuat objek
berdasarkan class.
Kita menggunakan keyword new untuk membuat objek diikuti dengan constructor
dari kelas tersebut.
Untuk menampung suatu object kita menggunakan reference type variable.
Sesuai dengan namanya, variable berguna menampung alamat (references) dari
suatu object bukan menampungnya secara langsung.
e. keyword this
Sama seperti C++, keyword this digunakan untuk menunjukan kelas itu sendiri.
Biasanya digunakan untuk membedakan antara variable local dengan field.
f.
keyword static
Field dengan static modifier disebut dengan static field atau class variable. Setiap
instance dari class tersebut berbagi class variable yang sama sehingga jika salah
satu instance merubah nilai dari class variable maka akan berdampak pada instance
lain.
Class variable juga dapat dimanipulasi tanpa menciptakan instance dari kelas.
Static modifier juga dapat digunakan pada saat pendeklarasian method dari suatu
kelas. Static method dapat dipanggil dengan nama kelas, tanpa membuat instance
dari kelas yang bersangkutan.
g. Constant
Untuk membuat konstanta, kita menggunakan static modifier dan final modifier.
final modifier mengindikasikan nilai dari field tidak dapat diubah.
h. Nested Class
Di java, kita dapat mendefinikan kelas di dalam kelas. Kita menyebutnya nested
class.
Nested class tanpa static modifier disebut Inner Class. Inner class dapat mengakses
anggota dari outer class.
Instance dari inner class hanya dapat berada di dalam outer class.
Untuk membuat instance dari inner class kita dapat menggunakan sintaks sbb:
i.
Enum
Enum adalah suatu set konstanta.
Karena enum di java merupakan suatu kelas (dikenal juga sebagai enum type) maka
enum dapat mempunyai field dan method.
j.
Garbage Collector
Setiap object yang tidak dibutuhkan lagi harus dibebaskan untuk mengembalikan
system resource untuk mencegah terjadinya memory leaks. Di java, ketika suatu
object tidak me-reference kemana pun maka JVM akan menandai object tersebut
sebagai garbage colletion. Garbage collector bertanggung jawab untuk meretrieve
Java Console
Module 11 - String
Revision 0
1. Module Description
String Class - Constructor
Method (length, charAt, concat, substring, toLowerCase, toUpperCase, trim, split)
2. Learning Outcomes
Trainee dapat membuktikan kegunaan kelas String di Java
3. Material
a. Definisi String
Dalam pemrograman Java string merupakan aspek penting, karena dapat
mempelajar mengenai class dan objek melalui penggunaan string. String
sebenarnya merupakan class yang terdapat dalam library Java. Class String
merupakan salah satu kelas dasar yang disediakan oleh Java untuk memanipulasi
karakter.
b. Membuat Objek String
Java mendefinisikan class String dalam package java.lang.String, sehingga tidak
perlu melakukan import secara eksplisit. Class String digunakan untuk
mendefinisikan string yang konstant. Untuk membuat string, dapat melakukannya
dengan beberapa cara, dan yang sering digunakan adalah contoh sebagai berikut.
private String varString = "kata";
Kode diatas adalah bentuk singkat dari :
char[] varString = {'k', 'a', 't', 'a'};
String varString = new String("kata");
Jadi dapat disimpulkan bahwa String terdiri dari data array yang bertipe char, dan
kita juga dapat membuat objek String dengan menggunakan keyword new yang
biasa digunakan untuk membuat objek dari class.
Contoh :
Manipulasi String
Berikut adalah beberapa method yang dapat digunakan untuk memanipulasi
string yang telah dibuat :
toLowerCase()
Merubah string yang bersangkutan menjadi huruf kecil.
toUpperCase()
Merubah string yang bersangkutan menjadi huruf kapital.
trim()
Menghapus spasi yang tidak perlu di depan dan di belakang string yang
bersangkutan.
concat(String append)
Selain menggunakkan '+' terdapat juga method concat() yang berfungsi
sebagai penggabungan 2 string.
replace(String old, String new)
Menggantikan karakter / string yang ditentukan menjadi nilai dari String
new.
System.out.println("KaTa".toLowerCase());
System.out.println("kata".toUpperCase());
System.out.println(" kata ".trim());
System.out.println("kcta".replace("ct","at"));
System.out.println("kata".concat(" siapa ?"));
Memotong String
Untuk memotong string dapat dilakukan dengan fungsi split(String delimeter)
dengan menentukan karakter sebagai delimeter-nya.
Fungsi ini akan me-return String[] dimana berisi nilai nilai hasil pemotongan
berdasarkan delimeter-nya.
Berikut adalah daftar method dalam bentuk tabel pada class String yang sering
dipakai :
Return
Method
Keterangan
Value
boolean
equals(Object anObject)
Membandingan string
dengan object
char
charAt(int index)
Mendapatkan huruf di
index tertentu
int
indexOf(int ch)
Mendapatkan index
dari huruf pada string
tersebut
String[]
split(String regex)
Memotong string
berdasarkan kriteria
String
substring(int beginIndex,
Mendapatkan string
int endIndex)
dari beginIndex
sampai endIndex.
String
toLowerCase()
Mengubah karakter
dalam string mejadi
huruf kecil
String
trim()
Membuang white
space di awal dan di
akhir dari string
Java Console
Module 12 - Wrapper & Math Class
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang Wrapper dan Math Class dalam Java
2. Learning Outcomes
Diharapkan trainee dapat mengerti dan dapat menggunakan Wrapper dan Math Class
dalam Java.
3. Material
a. Wrapper Class
Java memiliki class yang berfungsi sama seperti tipe data primitif yang disebut
Wrapper Class. Wrapper Class adalah class pembungkus yang membungkus atau
mengenkapsulasi
fungsionalitas
dari
class
ataupun
komponen
lain.
Kelebihannya adalah Wrapper Class memiliki attribute dan method yang sangat
berguna dalam memanipulasi tipe data primitif yang bersangkutan.
Berikut adalah contoh deklarasi Wrapper Class :
Byte wrapperByte = 1;
Integer wrapperInt2 = new Integer(10);
Long wrapperLong2 = new Long(100);
Short wrapperShort2 = new Short((short)5);
Byte wrapperByte2 = new Byte((byte)1);
//Numeric Class -> sebagai parent dari class diatas
Number numbParent = new Integer(50);
}
public static void main(String []args) {
new WrapperClass();
}
}
Double, Float
Double dan Float merupakan Wrapper Class yang dapat menampung nilai dari
tipe data primitif bernilai bilangan decimal.
public class WrapperClass {
public WrapperClass() {
Double wrapperDouble = 10.5;
Float wrapperFloat = 20.5f;
Double wrapperDouble2 = new Double(10.5);
Float wrapperFloat2 = new Float((float)20.5);
}
public static void main(String []args) {
new WrapperClass();
}
}
Character
Character merupakan Wrapper Class yang dapat menampung nilai dari tipe
data primitf bernilai sebuah character.
public class WrapperClass {
public WrapperClass() {
Character wrapperChar = 'a';
Character wrapperChar2 = new Character('a');
}
public static void main(String []args) {
new WrapperClass();
}
}
Nama Method
Integer.parseInt(String val)
Double.parseDouble(String val)
Short.parseShort(String val)
Long.parseLong(String val)
Float.parseFloat(String val)
Byte.parseByte(String val)
Parsing
Parsing
Parsing
Parsing
Parsing
Parsing
nilai
nilai
nilai
nilai
nilai
nilai
Kegunaan
String menjadi
String menjadi
String menjadi
String menjadi
String menjadi
String menjadi
int
double
short
long
float
byte
Contoh kode :
public class WrapperClass {
private Integer wrapperInt;
private String sParse = "123";
public WrapperClass() {
wrapperInt = Integer.parseInt(sParse);
}
public static void main(String []args) {
new WrapperClass();
}
}
b. Math Class
Math class berguna untuk melakukan operasi aritmatika yang umum dilakukan.
Pada Math class ini terdapat berbagai fungsi, contohnya:
Round: Untuk membulatkan angka ke atas atau ke bawah sesuai pecahan.
Ceil: Untuk membulatkan angka ke atas.
Floor: Untuk membulatkan angka ke bawah.
Min: Membandingkan dua angka dan mengembalikan nilai yang terkecil.
Max: Membandingkan dua angka dan mengembalikan nilai terbesar.
Abs: Membuat sebuah angka negative menjadi positif.
Exp: Mengembalikan hasil pemangkatan nilai 2.718281828459045 dengan angka
yang dimasukkan.
Pow: Mengembalikan hasil pemangkatan angka.
Sqrt: Mengembalikan hasil akar pangkat dua dari suatu nilai.
HASIL OUTPUT :
Math.round(3.6)
Math.ceil(3.6)
Math.floor(3.6)
Math.min(23, 89)
Math.max(23, 89)
Math.abs(-400.2)
Math.exp(3.6)
Math.pow(20, 3)
Math.sqrt(400.0)
=
=
=
=
=
=
=
=
=
4
4.0
3.0
23
89
400.2
36.59823444367799
8000.0
20.0
Java Console
Module 13 Inheritance
Revision 09/10/2010
1. Module Description
Pada pembahasan ini, akan dibahas tentang konsep Inheritance pada Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti dan dapat menggunakan konsep Inheritance pada
Java.
3. Material
a. Definisi
Inheritance
Inheritance adalah suatu cara untuk menggolongkan dan menggunakan kembali
kode dengan membuat kumpulan dari attribute dan behavior yang disebut objek
yang dapat didasarkan pada objek yang dibuat sebelumnya. Class baru disebut
subclass (kelas turunan) mewarisi attribute dan behavior dari class yang
sebelumnya, yang disebut superclass(kelas induk).
Keyword super
Super adalah suatu keyword yang digunakan untuk memanggil
constructor,attribute, atau behaviour yang dimiliki oleh superclass.
Final Class
Final Class adalah class yang tidak dapat diturunkan, artinya sebuah final class
tidak dapat menjadi superclass dan juga tidak dapat mempunyai subclass.
Tujuan penggunaan final class adalah untuk masalah keamanan dan efisiensi.
b. Deklarasi
Inheritance
Di dalam java, untuk mendeklarasikan suatu class sebagai subclass dilakukan
dengan cara menambahkan kata kunci extends setelah deklarasi nama subclass,
kemudian diikuti dengan nama superclass-nya. Kata kunci extends memberitahu
kompiler java bahwa kita ingin melakukan perluasan class.
Contoh :
class Mamalia
{
protected int kaki;
void jalan()
{
System.out.println(Jalan);
}
}
class Manusia extends Mamalia
{
private int tangan;
void makan()
{
System.out.println(Makan);
}
}
Ketika class manusia menurunkan atau memperluas(extends) class Mamalia,
maka ia akan mewarisi attribute dan behavior yang dimiliki oleh class Mamalia
seperti int kaki dan void jalan(). Jadi class Manusia memiliki attribute dan
behavior yang ada pada class Mamalia dan class Manusia.
Keyword super
Keyword super pada constructor digunakan untuk memanggil constructor yang
dimiliki oleh superclass.
Contoh :
class Mamalia
{
Mamalia()
{
System.out.println(Ini constructor induk);
}
}
class Manusia extends Mamalia
{
Manusia()
{
super();
System.out.println(Ini constructor anak);
}
}
Keyword super pada method digunakan untuk memanggil method yang dimiliki
oleh superclass.
Contoh :
class Mamalia
{
public void bicara()
{
System.out.println("Mamalia bicara");
}
}
class Manusia extends Mamalia
{
public Manusia()
{
super.bicara();
}
public void bicara()
{
System.out.println("Manusia bicara");
}
}
Keyword super pada variable digunakan untuk memanggil variable yang dimiliki
oleh super class.
Contoh :
class Mamalia
{
protected int kaki = 4;
}
public class Manusia extends Mamalia
{
private int kaki = 2;
public Manusia()
{
System.out.println("Kaki mamalia : "+super.kaki);
System.out.println("Kaki manusia : "+kaki);
}
}
Final Class
Contoh pendeklarasian final class :
public final class tes
{
public static void main(String[]args)
{
}
}
Inheritance
Beberapa aturan tentang pewarisan (inheritance) yang perlu diperhatikan :
1. Java hanya memperkenankan adanya single inheritance. Konsep single
inheritance hanya memperbolehkan suatu subclass mempunyai satu
superclass. Dengan konsep single inheritance ini, masalah pewarisan akan
dapat diamati dengan mudah.
2. Subclass juga merupakan class biasa, maka kita tetap dapat melakukan
pewarisan pada subclass ini. Misal : class B merupakan subclass dari class
A, kita dapat membuat class baru yang diturunkan dari class B sehingga
class baru tersebut akan memiliki apa yang dimiliki oleh class A dan class
B.
Keyword super
Beberapa aturan mengenai keyword super yang perlu diperhatikan :
1. Ketika menggunakan keyword super untuk memanggil constructor
superclass, maka keyword super harus diletakkan di line pertama dari
constructor subclass
2. Untuk behavior, keyword super biasa digunakan untuk memanggil suatu
behavior pada superclass yang memiliki nama, jumlah parameter, type
dan urutan parameter yang sama dengan behavior pada subclassnya.
3. Untuk attribute, keyword super biasa digunakan untuk memanggil suatu
attribute pada superclass yang memiliki nama yang sama dengan
attribute pada subclass.
Final Class
Final class tidak dapat dibuat subclassnya.
Java Console
Module 14 - Polymorphism
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang konsep Polymorphism pada Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti dan dapat menggunakan konsep Polymorphism pada
Java.
3. Material
a. Definisi
Polymorphism adalah suatu istilah yang menjelaskan sebuah situasi dimana satu
nama method dapat merujuk pada method yang berbeda. Di java ada dua type dari
polymorphism, yaitu overloading type dan overriding type.
Ketika kita meng-override suatu method, java akan menetapkan method method
yang sesuai untuk dipanggil ketika run time program, bukan ketika kita melakukan
compile.
Overriding terjadi ketika sebuah class memiliki method dengan nama, jumlah
parameter, dan urutan type data parameter yang sama dengan superclass nya.
Overloading terjadi ketika beberapa method pada suatu class memiliki nama yang
sama tetapi memiliki jumlah parameter atau urutan type data parameter yang
berbeda.
b. Penggunaan polymorphism
Penggunaan polymorph dibagi menjadi 2 sesuai dengan typenya, yaitu overriding
dan overloading.
Contoh overriding :
class Mamalia
{
void jalan()
{
System.out.println(Mamalia berjalan);
}
}
class Manusia extends Mamalia
{
void jalan()
{
System.out.println(Manusia berjalan);
}
}
Contoh overloading :
public class Manusia
{
void jalan()
{
System.out.println(Manusia berjalan);
}
void jalan(String alatBantu)
{
System.out.println(Manusia berjalan dengan
+alatBantu);
}
}
c. Keuntungan
1. Reuseable, artinya ketika class itu dibuat, class tersebut dapat dengan mudah
digunakan kembali tanpa perlu mengetahui apa yang ada di dalamnya.
2. Polymorphic variable membantu dalam efisiensi pengunaan memory.
Java Console
Module 15 Abstract and Interface
Revision 0
1. Module Description
Abstract Class and Method
Interface
2. Learning Outcomes
Trainee dapat menemukan kegunaan dari kelas abstrak dan interface dalam bahasa
pemograman
3. Material
a. Pengertian Abstract Class
Suatu class yang didefinisikan sebagai super class yang diturunkan ke sub-class
turunannya
Kita tidak bermaksud mendefinisikan objek dari super class tersebut.
Super class tersebut didefinisikan semata-mata hanya sebagai payung atau
induk dari class-class turunannya.
Dari class-class turunan inilah objek yang sebenarnya akan diciptakan. Suatu
super class yang didefinisikan seperti ini dinamakan sebagai class abstract.
c. Suatu abstract class tidak harus ada abstract method, tetapi abstract method
harus berada di dalam class abstract.
Contoh kasus MailBox
Class Mailbox
Pesan ke 1 : text
dari : AMIR
isi pesan : HABIS KULIAH LANGSUNG PULANG YA JANGAN MAIN2
Pesan ke 2: text
dari : BUDI
isi pesan : SUDAH LAPAR
Pesan ke 3 : voice
dari : JOHAN
isi pesan : suara music dalam file spacemusic.au
c. Interface
Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau
constant).
Interface
mendefinisikan
sebuah(signature)
dari
sebuah
kumpulan
method tanpa tubuh.Interface mendefinisikan sebuah cara standar dan umum dalam
menetapkan sifat-sifat dari class.
Mereka menyediakan class, tanpa memperhatikan lokasinya dalam hirarki class,
untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface
juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method
interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe
object yang melewati pemanggil method interface.
Kenapa Kita Memakai Interface?
Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan
interface sebagai
akhirnya, kita
perlu
b. Method hanya berupa method signature dan tidak mempunyai method body.
Method tersebut harus di-overriding di class yang meng-implements interface
dan access modifier-nya harus public.
c. Tidak dapat dibentuk instance dari interface.
d. Interface dapat meng-extends lebih dari 1 interface.
Java Console
Module 16 ArrayList dan Vector
Revision 0
1. Module Description
ArrayList Class and Method
Vector Class and Method
2. Learning Outcomes
Trainee dapat menerapkan konsep penggunaan ArrayList dan Vector dalam bahasa
pemograman
3. Material
a. Collection
Collection adalah suatu objek yang merepresentasikan suatu group dari objectobject. Perkembangan lebih lanjutnya akan disebut Java Collection Framework.
Collection itu sendiri meliputi 2 garis besar yaitu Arrays dan Vector. Namun,
sesungguhnya termaksud juga vectors, hash tables, maps, dan sets.
b. Vector dan ArrayList (Sejarahnya)
Pada bahasa pendahulunya (C++), terkenal dengan template yang namanya STL
(Standard Template Library). Kemudian library tersebut dikembangkan menjadi
library collection.
Library collection terdiri dari 2 bagian:
1. Collection (nantinya akan dibagi menjadi Lists dan Set).
2. Map (nantinya akan dikembangkan lagi menjadi hashtable).
c. ArrayList Class
ArrayList class adalah class pada java yang berguna untuk menampung kumpulan
data sejenis dengan jumlah yang banyak.
Hampir semua method di class Vector dapat digunakan di class ArrayList.
d. ArrayList Method
ArrayList method adalah fungsi yang berguna untuk memanipulasi, menambahkan,
mengubah ataupun mengurangi objek-objek yang ada pada class ArrayList.
e. Vector Class
Vector class adalah salah satu class pada java (java.util.Vector) yang berguna untuk
menangani data Vector.
f.
Vector Method
Vector
method
adalah
fungsi-fungsi
yang
berguna
untuk
memanipulasi,
menambahkan, mengubah ataupun mengurangi objek pada Vector yang ada pada
class Vector.
Method
boolean add(E e)
void clear()
get(int index)
Description
Untuk menambahkan objek baru ke
dalam vector itu
Untuk mengosongkan Vector
Untuk mengambil objek pada indeks
tertentu dari vector itu
boolean
remove(int index)
set(int index,
E element)
int size()
objek
pada
index
yang
ditentukan,
dapat
juga
menggunakan
ArrayList
(karena
dapat
diakses
dengan
mudah
langsung
pada
Java Console
Module 17 File Access
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang akses ke File menggunakan Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti tentang cara akses ke file melalui Java.
3. Material
a. Deklarasi dan Constructor Class File
File dan direktori diakses dan dimanipulasi dengan java.io.File class. Class File
sebenarnya tidak menyediakan input dan output ke file. Sederhananya, itu
menyediakan sebuah identifier dari file dan direktori.
Contoh pendeklarasian dari class File:
File f ;
atau dengan menggunakan constructornya:
File f = new File ("test.txt");
Di dalam Class File, terdapat beberapa jenis constructor :
b. File Separator
File separator adalah sebuah karakter yang digunakan untuk memisahkan nama
direktori yang membuat sebuah path ke lokasi tertentu. Pada Microsoft Windows,
file separator berupa karakter back-slash (\), cth: D:\myproject\myfile\test.txt. Pada
OS Mac dan unix, file separator berupa karakter forward slash (/), cth:
/myproject/myfile/test.txt.
c. File Method
exists
Mengecek apakah file atau direktori yang dituju oleh nama path yang abstrak itu
ada atau tidak.
createNewFile
secara otomatis membuat sebuah file yang baru dan kosong sesuai dengan nama
path abstrak jika dan hanya jika file dengan nama yang sama tidak ada.
getName
untuk mengembalikan nama file atau direktori yang ditunjukkan oleh nama path
yang abstrak.
getPath
untuk mengubah nama path yang abstrak ke dalam string nama path.
getParent
mengembalikan string nama path parent dari nama path yang abstrak, atau null
jika nama path ini bukan merupakan nama dari direktori parent.
isFile
Mengecek apakah file yang ditunjukkan oleh nama path yang abstrak adalah file
yang normal.
lastModified
mengembalikan waktu dimana suatu file terakhir kali dimodifikasi.
length
mengembalikan ukuran dari file yang ditunjukk oleh nama path yang abstrak.
renameTo
Mengganti nama file yang ditunjukkan oleh nama path yang abstrak.
Java Console
Module 18 Operating File
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang memanipulasi data dalam file menggunakan
Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti dan memanipulasi data dalam file menggunakan
Java.
3. Material
Java menyediakan package java.io untuk melakukan operasi file. Cara pengaksesan file
dibagi menjadi 2 :
1. Sequential Access Stream
2. Random Access File
Kebanyakan class mengimplementasi sequential access stream. I/O stream
merepresentasikan input source atau output destination.
Penting diingat untuk menutup stream yang telah dibuat untuk mengembalikan system
source.
File diakses secara sequential (berurutan)
Beberapa class yang digunakan :
- FileReader
- Scanner
- BufferedReader
- FileWriter
- PrintWriter
- BufferedWriter
a. Baca File
Cara membaca file dengan menggunakan Scanner:
Java Console
Module 19 - Package
Revision 0
1. Module Description
Pada pembahasan topik ini, akan dibahas tentang defenisi dari method dan cara
penggunaan dari package di bahasa pemrograman java.
2. Learning Outcomes
Diharapkan trainee dapat mengimplementasikan cara penggunaan package di bahasa
pemrograman java.
3. Material
a. Package
Package adalah sekumpulan types yang berhubungan yang menyediakan proteksi
dan name space management.
Types di sini maksudnya adalah class dan interface.
Kegunaan package antara lain:
-
Membuat package
Untuk membuat package kita perlu menambahkan package statement.
Beberapa hal yang perlu diperhatikan:
a.
b.
c.
Contoh:
package graphics;
public interface Draggable {
...
}
//in the Graphic.java file
package graphics;
public abstract class Graphic {
...
}
//in the Circle.java file
package graphics;
public class Circle extends Graphic implements Draggable {
...
}
//in the Rectangle.java file
package graphics;
public class Rectangle extends Graphic implements Draggable {
...
}
//in the Point.java file
package graphics;
public class Point extends Graphic implements Draggable {
...
}
//in the Line.java file
package graphics;
public class Line extends Graphic implements Draggable {
...
}
Jika kita tidak menambahkan package statement, maka types yang kita buat
termasuk ke dalam unnamed / no name package.
Untuk penamaan package sebaiknya menggunakan huruf kecil untuk mencegah
konflik dengan nama types.
Ada naming convention untuk penamaan package dengan tujuan menghindari dua
programmer menggunakan nama package yang sama.
Contoh:
Asteriks
Meng-import seluruh package dengan menggunakan asteriks (*) sebagai wildcard:
b. Asteriks (*) merujuk ke semua types yang ada dalam package tapi tidak
termasuk package yang ada di dalam package tersebut.
Contoh:
c. classpath.
import static
Import static digunakan untuk mengimport semua static member dari suatu kelas.
Contoh:
Java Console
Module 20 - Thread
Revision 0
1. Module Description
Pada pembahasan ini, akan dibahas tentang Threading dalam Java.
2. Learning Outcomes
Diharapkan trainee dapat mengerti dan menggunakan Threading dalam Java.
3. Material
a. Pengantar
Suatu proses dikontrol oleh paling sedikit satu thread. Namun, sebagian besar
proses yang ada sekarang biasanya dijalankan oleh beberapa buah thread.
Multithreading adalah sebuah mekanisme di mana dalam suatu proses, ada beberapa
thread yang mengerjakan tugasnya masing-masing pada waktu yang bersamaan.
Contohnya, sebuah web browser harus menampilkan sebuah halaman yang memuat
banyak gambar. Pada program yang single-threaded, hanya ada satu thread untuk
mengatur suatu gambar, lalu jika gambar itu telah ditampilkan, barulah gambar lain
bisa diproses. Dengan multithreading, proses bisa dilakukan lebih cepat jika ada
thread yang menampilkan gambar pertama, lalu thread lain untuk menampilkan
gambar kedua, dan seterusnya, di mana thread-thread tersebut berjalan secara
parallel (bersamaan).
Saat sebuah program Java dieksekusi, yaitu saat main() dijalankan, ada sebuah
thread utama yang bekerja. Java adalah bahasa pemrograman yang mendukung
adanya pembentukan thread tambahan selain thread utama tersebut. Thread dalam
Java diatur oleh Java Virtual Machine(JVM). Jadi Java memungkinkan kita untuk
dapat melakukan banyak tugas (multiple task) pada waktu yang bersamaan.
b. Class Thread
Thread Constructors
Constructor
Keterangan
Thread()
Membuat sebuah object Thread yang
baru.
Thread(String name)
Membuat sebuah object thread dengan
memberikan penamaan yang spesifik.
Thread(Runnable target)
Membuat sebuah object Thread yang
baru berdasar pada object Runnable.
Target
menyatakan sebuah object dimana
method run dipanggil.
Thread(Runnable target, String
Membuat sebuah object Thread yang
name)
baru dengan nama yang spesifik dan
berdasarkan pada object Runnable.
Thread Methods
Method
public
static
Thread
currentThread()
public final String getName()
public final void setName(String
name)
public
millis)
static
void
sleep(long
Keterangan
Mengembalikan
sebuah
reference
kepada thread yang sedang berjalan.
Mengembalikan nama dari thread.
Mengulang pemberian nama thread
sesuai dengan argument name. Hal ini
dapat
menyebabkan SecurityException.
Mengembalikan nilai prioritas yang
telah diberikan kepada thread tersebut.
Menunjukkan bahwa thread tersebut
sedang berjalan atau tidak.
Sebuah overloading method. Sebuah
thread yang sedang berjalan, harus
menunggu
sampai thread tersebut selesai (jika
tidak
ada
parameter-parameter
spesifik), atau
sampai waktu yang telah ditentukan
habis.
Menunda thread dalam jangka waktu
milis. Hal ini dapat menyebabkan
InterruptedException.
Eksekusi thread dimulai dari method
ini.
c. Membuat Thread
Ada dua cara untuk membuat thread di program Java, yaitu
Extends kelas Thread ( java.lang.Thread )
Berikut ini adalah contoh kelas yang menggunakan cara pertama untuk membuat
thread,yaitu dengan meng-extends kelas Thread
Program akan memberikan keluaran yang berbeda pada setiap eksekusi. Berikut
ini adalah contoh dari keluarannya:
keadaan tertentu di mana thread utama perlu menunggu sampai thread yang
dibuatnya itu menyelesaikan tugasnya. Misalnya saja, untuk bisa mengerjakan
instruksi selanjutnya, thread utama membutuhkan hasil penghitungan yang
dilakukan oleh thread anak. Pada keadaan seperti ini, thread utama bisa menunggu
selesainya pekerjaan thread anak dengan pemanggilan method join().
Contohnya, dalam suatu program, thread utama membuat sebuah thread tambahan
bernama t1.
Kode di atas menunjukkan bahwa thread utama akan menunggu sampai thread t1
menyelesaikan tugasnya, yaitu sampai method run() dari t1 terminate, baru
melanjutkan tugasnya sendiri. Pemanggilan method join() harus diletakkan dalam
suatu blok try- catch karena jika pemanggilan tersebut terjadi ketika thread utama
sedang
diinterupsi
oleh
thread
lain,
maka
join()
akan
melempar
InterruptedException. InterruptedException akan mengakibatkan terminasi
thread yang sedang berada dalam status blocked
f.
Pembatalan Thread
Pembatalan thread adalah menterminasi sebuah thread sebelum tugasnya selesai.
Thread yang akan dibatalkan, atau biasa disebut target thread, dapat dibatalkan
dengan dua cara, yaitu asynchronous cancellation dan deferred cancellation. Pada
asynchoronous cancellation, sebuah thread langsung menterminasi target thread.
Sedangkan pada deferred cancellation, target thread secara berkala memeriksa
apakah ia harus terminate sehingga dapat memilih saat yang aman untuk terminate.
Pada thread Java, asynchronous cancellation dilakukan dengan pemanggilan method
stop(). Akan tetapi, method ini sudah di-deprecated karena terbukti tidak aman
karena dapat mengakibatkan terjadinya exception ThreadDeath. ThreadDeath dapat
mematikan thread-thread secara diam-diam, sehingga user mungkin saja tidak
mendapat peringatan bahwa programnya tidak berjalan dengan benar. Cara yang
lebih aman untuk membatalkan thread Java adalah dengan deferred cancellation.
Pembatalan ini dapat dilakukan dengan pemanggilan method interrupt(), yang akan
menge-set status interupsi pada target thread. Sementara itu, target thread dapat
memeriksa status interupsi-nya dengan method isInterrupted().
Suatu thread dari kelas CobaThread3 dapat diinterupsi dengan kode berikut:
Thread targetThread = new Thread (new CobaThread3());
targetThread.start();
targetThread.interrupt(); //set status interupsi
Ketika thread targetThread berada padastart(), thread tersebut akan terus me-loop
pada method run() dan melakukan pengecekan status interupsi melalui method
isInterrupted(). Status interupsinya sendiri hanya akan di-set ketika pemanggilan
method interrupt(), yang ditunjukkan dengan statement targetThread.interrupt();.
Setelah status interupsi di-set, ketika pengecekan status interupsi selanjutnya pada
method run(), isInterrupted() akan mengembalikan nilai boolean true, sehingga
targetThread akan keluar dari method run()-nya melalui statement break dan
terminate.
Selain melalui isInterrupted(), pengecekan status interupsi dapat dilakukan dengan
method interrupted(). Perbedaan kedua method ini adalah isInterrupted() akan
mempertahankan status interupsi, sedangkan pada interrupted(), status interupsi
akan di-clear. Thread yang statusnya sedang blocked karena melakukan operasi M/K
menggunakan package java.io tidak dapat memeriksa status interupsinya sebelum
operasi M/K itu selesai. Namun, melalui Java 1.4 diperkenalkan package java.nio
yang mendukung interupsi thread yang sedang melakukan operasi M/K.
g. Management Thread
Java menyediakan beberapa fasilitas API untuk mengatur thread thread,
diantaranya adalah:
Method
Suspend()
Sleep()
Resume()
Stop()
Fungsi
untuk menunda eksekusi dari thread yang
sedang berjalan.
untuk menempatkan thread yang sedang
berjalan untuk tidur dalam beberapa
waktu.
hasil eksekusi dari thread yang sedang
ditunda.
menghentikan
eksekusi
dari
sebuah
thread; sekali thread telah dihentikan dia
tidak akan memulainya lagi.
Setiap method yang berbeda untuk mengontrol keadaan dari thread mungkin akan
berguna dalam situasi tertentu. Sebagai contoh: Applets adalah contoh alami untuk
multithreading karena mereka biasanya memiliki grafik, animasi, dan audio
semuanya sangat baik untuk mengatur berbagai thread yang terpisah. Bagaimana
pun, itu tidak akan mungkin bagi sebuah applet untuk berjalan ketika dia sedang
tidak ditampilkan, jika applet sedang menjalankan CPU secara intensif. Sebuah cara
untuk menangani situasi ini adalah dengan menjalankan applet sebagai thread
terpisah dari kontrol, menunda thread ketika applet sedang tidak ditampilkan dan
melaporkannya ketika applet ditampilkan kembali.
Anda dapat melakukannya dengan mencatat bahwa start() method dari sebuah
applet dipanggil ketika applet tersebut pertama kali ditampilkan. Apabila user
meninggalkan halaman web atau applet keluar dari tampilan, maka method stop()
pada applet dipanggil (ini merupakan suatu keuntungan karena start() dan stop()
keduanya terasosiasi dengan thread dan applet). Jika user kembali ke halaman web
applet, kemudian start() method dipanggil kembali. Destroy() method dari sebuah
applet dipanggil ketika applet tersebut dipindahkan dari cache-nya browser. Ini
memungkinkan untuk mencegah sebuah applet berjalan ketika applet tersebut
sedang tidak ditampilkan pada sebuah web browser dengan menggunakan stop()
method dari applet yang ditunda dan melaporkan eksekusi tersebut pada thread di
applet start() method.
h. Keadaan Thread
Sebuah thread java dapat menjadi satu dari 4 kemungkinan keadaan:
1. New
Sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat.
2. Runnable
Memanggil start() method untuk mengalokasikan memori bagi thread baru dalam
JVM dan memanggil run() method untuk membuat objek.
3. Block
Sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan.
Contohnya: sleep() atau suspend().
4. Dead
Sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau
ketika stop() method dipanggil.
i.
Sinkronisasi
Sampai sejauh ini, Anda telah melihat contoh-contoh dari thread yang berjalan
bersama-sama tetapi tidak bergantung satu dengan yang lainnya. Thread tersebut
adalah thread yang berjalan sendiri tanpa memperhatikan status dan aktifitas dari
thread lain yang sedang berjalan. Pada contoh tersebut, setiap thread tidak
membutuhkan resource atau method dari luar sehingga ia tidak membutuhkan
komunikasi dengan thread lain. Didalam situasi-situasi tertentu, bagaimanapun
sebuah thread yang berjalan bersama-sama kadang-kadang membutuhkan resource
atau method dari luar. Oleh karena itu, mereka butuh untuk berkomunikasi satu
dengan yang lain sehingga dapat mengetahui status dan aktifitas mereka.
Contohnya adalah pada permasalahan produsen-konsumen. Kasus ini membutuhkan
dua object utama, yaitu produsen dan konsumen. Kewajiban yang dimiliki oleh
produsen adalah untuk membangkitkan nilai atau stream data yang konsumen
inginkan.
Contoh :
Program ini diharapkan dapat mencetak dua argument object Runnable secara
berurutan. Permasalahannya adalah, pendeklarasian
method sleep akan
menyebabkan thread yang lain akan dieksekusi walaupun thread yang pertama
belum selesai dijalankan pada saat eksekusi method print dari class TwoStrings.
Berikut ini adalah contoh dari keluarannya.
Pada saat berjalan, ketiga thread telah mencetak argument string pertama mereka
sebelum argument kedua dicetak. Sehingga hasilnya adalah sebuah keluaran yang
tidak jelas. Sebenarnya, pada contoh diatas, tidak menunjukkan permasalahan
yang serius. Akan tetapi pada aplikasi yang lain hal ini dapat menimbulkan
exception atau permasalahan-permasalahan tertentu.
j.
Untuk mendapatkan penjelasan dari method ini, perhatikanlah skenario pelayanpelanggan. Pada skenario di sebuah restoran, seorang pelayan tidak akan
menanyakan ke setiap orang apakah mereka akan memesan atau membutuhkan
sesuatu, akan tetapi ia akan menunggu sampai pelanggan datang ke restoran
tersebut. Pada saat seseorang datang, hal ini mengindikasikan bahwa ia mempunyai
keinginan untuk memesan makanan dari restaurant tersebut. Atau juga bisa kita
juga bisa kita nyatakan bahwa pelanggan yang memasuki restaurant
mengindikasikan (notify) bahwa pelayan dibutuhkan untuk memberikan pelayanan.
Akan tetapi,dalam kondisi sepert ini, seorang pelanggan belum siap untuk memesan.
Akan sangat mengganggu apabila pelayan terus-menerus bertanya kepada
pelanggan apakah ia telah siap untuk memesan atau tidak. Oleh karena itu, pelayan
akan menunggu (wait) sampai pelanggan memberikan tanda (notifies) bahwa ia
telah siap untuk memesan. Sekali pelanggan sudah memesan, akan sangat
mengganggu apabila ia terus menerus bertanya kepada pelayan, apakah
pesanannya sudah tersedia atau tidak. Normalnya, pelanggan akan menunggu
sampai pelayan memberikan tanda (notifies) dan kemudian menyajikan makanan.
Perhatikan pada skenario berikut, setiap anggota yang menunggu, hanya akan
berjalan sampai anggota yang lain memberi tanda yang memerintahkan untuk
berjalan. Hal ini sama dengan yang terjadi pada thread.
k. Contoh Produsen-Konsumen
Contoh dibawah ini adalah salah satu implementasi dari permasalahan produsen
konsumen. Sebuah kelas yang menyediakan method untuk membangkitkan dan
mengurangi nilai dari integer yang dipisahkan dari class Produsen dan Konsumen
thread.
Hasil tersebut bukanlah hasil yang kita harapkan. Kita berharap bahwa setiap nilai
yang diproduksi oleh produser dan juga kita akan mengasumsikan bahwa konsumen
akan mendapatkan value tersebut. Dibawah ini adalah keluaran yang kita harapkan.
Untuk memperbaiki kode diatas, kita akan menggunakan method untuk komunikasi
interthread. Implementasi dibawah ini adalah implementasi dari permasalahan
produsen konsumen dengan menggunakan method untuk komunikasi inter-thread.