SlideShare a Scribd company logo
1 of 47
Download to read offline
Tugas Pemrograman
Structur & Statement
Programing Java
Di Susun Oleh :
Nama : Roji Muhidin
NIM : 1202080
STIMIK MUHAMMADIYAH BANTEN
2014
Tugas Statemen Pemrograman Java
JAVA
Sejarah Singkat Perkembangan JAVA
Proyek Java dimulai pada tahun 1991, ketika sejumlah insinyur perusahaan Sun yang
dimotori oleh James Gosling mempunyai keinginan untuk mendesain sebuah bahasa komputer
kecil yang dapat dipergunakan untuk peralatan konsumen seperti kotak tombol saluran TV.
Proyek ini kemudian diberi nama sandi Green.
Keharusan untuk membuat bahasa yang kecil , dan kode yang ketat mendorong
mereka untuk menghidupkan kembali model yang pernah dicoba oleh bahasa UCSD Pascal,
yaitu mendesain sebuah bahasa yang portable yang menghasilkan kode intermediate. Kode
intermediate ini kemudian dapat digunakan pada banyak komputer yang interpreternya telah
disesuaikan.
Karena orang-orang Sun memiliki latar belakang sebagai pemakai unix sehingga
mereka lebih menggunakan C++ sebagai basis bahasa pemrograman mereka, maka mereka
secara khusus mengembangkan bahasa yang berorientasi objek bukan berorientasi prosedur.
Seperti yang dikatakan Gosling ”Secara keseluruhan, bahasa hanyalah sarana, bukan
merupakan tujuan akhir”. Dan Gosling memutuskan menyebut bahasanya dengan nama “Oak”
(diambil dari nama pohon yang tumbuh tepat diluar jendela kantornya di Sun), tetapi
kemudian nama Oak diubah menjadi java, karena nama Oak merupakan nama bahasa komputer
yang sudah ada sebelumnya.
Pada tahun 1994 sebagian besar orang menggunakan mosaic, browser web yang tidak
diperdagangkan yang berasal dari pusat Supercomputing Universitas Illinois pada tahun
1993.( Mosaic sebagian ditulis oleh Marc Andreessen dengan bayaran $6.85 per jam, sebagai
mahasiswa yang melakukan studi praktek. Di kemudian hari ia meraih ketenaran sebagai salah seorang
pendiri dan pemimpin teknologi di netscape)
Browser yang sesungguhnya dibangun oleh Patrick Naughton dan Jonathan Payne dan
berkembang ke dalam browser HotJava yang kita miliki saat ini. Browser HotJava ditulis dalam Java
untuk menunjukkan kemampuan Java. Tetapi para pembuat juga memiliki ide tentang suatu kekuatan
yang saat ini disebut dengan applet, sehingga mereka membuat browser yang mampu penerjemahkan
kode byte tingkat menengah. “Teknologi yang Terbukti” ini diperlihatkan pada SunWorld ‟95 pada
tanggal 23 mei 1995, yang mengilhami keranjingan terhadap Java terus berlanjut.
Kriteria “Kertas Putih” Java
Penulis Java telah menulis pengaruh “Kertas Putih” yang menjelaskan tujuan rancangan dan
keunggulannya. Kertas mereka disusun lewat 11 kriteria berikut :
Sederhana (Simple)
Syntax untuk Java seperti syntax pada C++ tetapi syntax Java tidak memerlukan header file,
pointer arithmatic (atau bahkan pointer syntax), struktur union, operator overloading, class virtual
base, dan yang lainnya. Jika anda mengenal C++ dengan baik, maka anda dapat berpindah ke syntax Java
dengan mudah tetapi jika tidak, anda pasti tidak berpendapat bahwa Java sederhana.
Berorientasi Objek (Object Oriented)
Rancangan berorientasi objek merupakan suatu teknik yang memusatkan rancangan pada data
(objek) dan interface. Fasilitas pemrograman berorientasi objek pada Java pada dasarnya adalah sama
Tugas Statemen Pemrograman Java
dengan C++. Feature pemrograman berorientasi objek pada Java benar-benar sebanding dengan C++,
perbedaan utama antara Java dengan C++ terletak pada penurunanberganda (multiple inheritance),
untuk ini Java memiliki cara penyelesaian yang lebih baik.
Terdistribusi (Distributed)
Java memiliki library rutin yang luas untuk dirangkai pada protokol TCP/IP sepetrti HTTP dan
FTP dengan mudah. Aplikasi Java dapat membuka dan mengakses objek untuk segala macam NET lewat
URL sama mudahnya seperti yang biasa dilakukan seorang programmer ketika mengakses file sistem
secara lokal.
Kuat (Robust)
Java dimaksudkan untuk membuat suatu program yang benar-benar dapat dipercaya dalam
berbagai hal. Java banyak menekankan pada pengecekan awal untuk kemungkinan terjadinya masalah,
pengecekan pada saat run0time dan mengurangi kemungkinan timbulnya kesalahan (error). Perbedaan
utama antara Java dan C++ adalah Java memiliki sebuah model pointer yang mengurangi kemungkinan
penimpaan (overwriting) pada memory dan kerusakan data (data corrupt).
Aman (Secure)
Java dimaksudkan untuk digunakan pada jaringan terdistribusi. Sebelum sampai pada bagian
tersebut, penekanan terutama ditujukan pada masalah keamanan. Java memungkinkan penyusunan
program yang bebas virus, sistem yang bebas dari kerusakan.
Netral Arsitektur (Architecture Neutral)
Kompiler membangkitkan sebuah format file dengan objek arsitektur syaraf, program yang di
kompile dapat dijalankan pada banyak prosesor, disini diberikan sistem run time dari Java. Kompiler
Java melakukannya dengan membangkitkan instruksi-instruksi kode byte yang tidak dapat dilakukan
oleh arsitektur komputer tertentu. Dan yang lebih baiik Java dirancang untuk mempermudah
penterjemahan pada banyak komputer dengan mudah dan diterjemahkan pada komputer asal pada saat
run-time.
Portabel (Portable)
Tidak seperti pada C dan C++, di Java terdapat ketergantungan pada saat implementasi
(implement dependent). ukuran dari tipe data primitif ditentukan, sebagaimana kelakuan aritmatik
padanya. Librari atau pustaka merupakan bagian dari sistem yang mendefinisikan interface yang
portabel.
Interpreter
Interpreter Java dapat meng-eksekusi kode byte Java secara langsung pada komputer-
komputer yang memiliki interpreter. Dan karena proses linking dalam Java merupakan proses yang
kenaikannya tahap demi tahapdan berbobot ringan, maka proses pengembangan dapat menjadi lebih
cepat dan masih dalam penelitian.
Kinerja Yang Tinggi (High Performance)
Meskipun kinerja kode byte yang di interpretasi biasanya lebih dari memadai, tetapi masih
terdapat situasi yang memerlukan kinerja yang lebih tinggi. Kode byte dapat diterjemahkan (pada saat
run-time) de dalam kode mesin untuk CPU tertentu dimana aplikasi sedang berjalan.
Multithreaded
Multithreading adalah kemampuan sebuah program untuk melakukan lebih dari satu pekerjaan
sekaligus. Keuntunga dari multithreading adalah sifat respons yang interaktif dan real-time.
Tugas Statemen Pemrograman Java
Dinamis
Dalam sejumlah hal, Java merupakan bahasa pemrograman yang lebih dinamis dibandingkan
dengan C atau C++. Java dirancang untuk beradaptasi dengan lingkungan yang terus berkembang. Librari
dapat dengan mudah menambah metode dan variabel contoh yang baru tanpa banyak mempengaruhi
klien. Informasi tipr run-time dalam Java adalah langsung (straigtforward).
Java Keywords
Abstract
Abstract merupakan keyword yang digunakan untuk menyatakan kelas atau metode untuk
menjadi abstract. Metode ini tidak memiliki implementasi, semua kelas yang berisi
metode abstract harus dari mereka abstrak, walaupun tidak semua kelas abstrak memiliki
metode abstrak. Objek dari kelas abstrak tidak dapat instantiated, tetapi dapat
diperpanjang oleh kelas lain. Semua subclass dari kelas abstrak harus menyediakan
implementasi untuk semua metode abstrak, atau juga harus abstrak.
Contoh penggunaan Abstract pada program :
abstract class Demo {
// An abstract class may include abstract methods, which have no implementation.
abstract public int sum(int x, int y);
// An abstract class may also include concrete methods.
public int product(int x, int y) { return x*y; }
}
interface DemoInterface {
// All methods in an interface are abstract.
int getLength();
}
Assert
Assert merupakan keyword digunakan untuk membuat pernyataan yang programmer
percaya selalu benar di titik dalam suatu program. Jikapernyataan akan diaktifkan ketika
program dijalankan dan ternyata bahwa pernyataan adalah palsu, keyword ini
dimasukkan untuk membantu dalam debugging.
Syntax :
assert expression1 [: expression2];
Contoh Penggunaan dalam program :
int total = countNumberOfUsers();
if (total % 2 == 0) {
// total is even
Tugas Statemen Pemrograman Java
} else {
// total is odd and non-negative
assert(total % 2 == 1);
}
Boolean
Boolean digunakan untuk menyatakan variable yang dapat menyimpan nilai boolean
yaitu benar atau salah.
Syntax dan contoh penggunaan :
boolean nama_variable;
boolean code = 1;
if(code = 1)
{
System.out.println(―Benar‖);
}else
{
System.out.println(―Salah‖);
}
Break
Break merupakan keyword yang digunakan untuk melanjutkan eksekusi program ke
statement selanjutnya segera setelah selesai mengeksekusi suatu statement.
Syntax dan contoh penggunaan :
class TestBreak{
public static void main(String[] args){
System.out.println(―Sebelum for‖);
for(int x=0;x<10;x++){
if(x==4)
break;
System.out.pritnln(―Nilai x : ‖+x);
}
System.out.println(―Setelah For‖);
}
}
Byte
Byte adalah keyword yang digunakan untuk menyatakan suatu variabel yang dapat
menyimpan data integer sebanyak 8-bit. Selain itu keyword ini juga digunakan untuk
Tugas Statemen Pemrograman Java
menyatakan bahwa suatu metode mengembalikan nilai tipe byte.
Contoh penggunaan :
byte x = 60;
Case
Case digunakan untuk membuat kasus-kasus individu dalam pernyataan switch.
Contoh penggunaan :
int i = 3;
switch(i) {
case 1:
System.out.println(―The number is 1.‖);
break;
case 2:
System.out.println(―The number is 2.‖);
break;
case 3:
System.out.println(―The number is 3.‖); // this line will print
break;
case 4:
System.out.println(―The number is 4.‖);
break;
case 5:
System.out.println(―The number is 5.‖);
break;
default:
System.out.println(―The number is not 1, 2, 3, 4, or 5.‖);
}
Catch
Keyword adalah sebuah blok satement yang dieksekusi jika pengecualian dijalankan pada
blok pendefinisian oleh keyword try sebelumnya.
Contoh penggunaan :
try {
//…
throw new MyException_1();
//…
} catch ( MyException_1 e ) {
// — Handle the Exception_1 here —
} catch ( MyException_2 e ) {
// — Handle the Exception_2 here —
}
Tugas Statemen Pemrograman Java
Char
Keyword char digunakan untuk menyatakan variable yang dapat menyimpan data
karakter sebanyak 16-bit.
Contoh penggunaannya :
char code=‘a';
Class
Keyword class digunakan untuk mendefinisikan dan mengimplementasikan berbagai
macam objek didalamnya.
Berikut contoh penggunaannya:
public class PersegiPanjang
{
float lebar;
float panjang;
…
Const
Keyword Const tidak digunakan dan tidak memiliki fungsi.
Continue
Keyword continue digunakan untuk melanjutkan eksekusi program pada akhir
pengulangan.
Berikut contoh penggunaannya :
int maxLoopIter = 7;
for (int i = 0; i < maxLoopIter; i++ ) {
if (i == 5) {
continue; // — 5 iteration is skipped —
}
System.println(―Iteration = ‖ + i);
}
Tugas Statemen Pemrograman Java
Default
Keyword default dapat digunakan dalam pernyataan switch untuk label blok pernyataan
yang akan dieksekusi jika case tidak sesuai dengan nilai tertentu.
Contoh Penggunaannya :
public class Test {
public static void main(String args[]){
//char grade = args[0].charAt(0);
char grade = ‗C';
switch(grade)
{
case ‗A‘ :
System.out.println(―Memuaskan!‖);
break;
case ‗B‘ :
case ‗C‘ :
System.out.println(―Bagus‖);
break;
case ‗D‘ :
System.out.println(―Cukup‖);
case ‗F‘ :
System.out.println(―Coba lagi‖);
break;
default :
System.out.println(―Invalid grade‖);
}
System.out.println(―Grade anda adalah ‖ + grade);
}
}
Do
Keyword do digunakan bersama dengan while untuk membuat do-while pengulangan,
yang mengeksekusi suatu blok statemen berkaitan dengan pengulangan dan kemudian tes
ekspresi boolean, jika pernyataan bernilai true, pemgulangan dijalankan lagi, ini terus
sampai ekspresi bernilai false.
Contoh penggunaannya :
public class Test {
Tugas Statemen Pemrograman Java
public static void main(String args[]){
int a = 5;
do{
System.out.print(―nilai a : ‖ + a );
a++;
System.out.print(―n‖);
}while( a < 10 );
}
}
Double
Keyword double digunakan untuk menyatakan variable dapat menampung 64-bit tipe
data float.
syntax:
duble nama_variabel= nilai_variabel;
Else
Keyword lain yang digunakan bersama dengan if untuk membuat pernyataan jika-lain,
yang menguji suatu ekspresi boolean, jika ekspresi bernilai true, blok pernyataan terkait
dengan jika dievaluasi, jika mengevaluasi ke false blok, dari laporan terkait dengan lain
dievaluasi .
Contoh penggunaan if dapat dilihat pada contoh dipembahasan keyword if
Enum
Enum merupakan keyword yang digunakan untuk mendeklarasikan tipe enumerasi.
Enumerations memperpanjang kelas dasar Enum.
Contoh penggunaan :
/** Grades of courses */
enum Grade { A, B, C, D, F };
// …
private Grade gradeA = Grade.A;
Extends
Keyword extends digunakan bila terjadi pewarisan, kelas yang mewariskan method dan
attributenya disebut kelas super, sedangkan yang diwariskan disebut subkelas.
Syntax dan contoh penggunaannya :
Tugas Statemen Pemrograman Java
Public class subclass extends superclass
{
}
Public class Siswa extends Sekolah
{
}
Final
Dengan keyword ini kelas tidak dapat menurunkan kelas lain, method tidak dapat
dioverride oleh method lain, membentuk suatu attribute menjadi konstanta.
Finally
Keyword finally digunakan untuk mendefinisikan suatu blok statemen untuk blok yang
ditetapkan sebelumnya dengan keyword try.
Float
Digunakan untuk menyatakan variable dapat menampung 32-bit tipe data decimal.
Contoh penggunaannya :
float phi = 3.14;
For
Keyword for digunakan untuk membuat untuk pengulangan, yang menetapkan inisialisasi
variabel, ekspresi boolean, dan suatu incrementation. Inisialisasi variabel dilakukan
terlebih dahulu, kemudian ekspresi boolean dievaluasi. Jika ekspresi bernilai true, blok
pernyataan yang berhubungan dengan pengulangan dijalankan, dan kemudian
incrementation yang dilakukan. Ekspresi boolean kemudian dievaluasi lagi, ini terus
sampai ekspresi bernilai false .
Berikut contoh penggunaannya :
for ( int i=0; i < 5; i++ ) {
System.println(―i ke-‖ +i);
}
Goto
Meskipun tercantum sebagai keyword di Java, goto tidak digunakan dan tidak memiliki
fungsi.
Tugas Statemen Pemrograman Java
If
Keyword if digunakan untuk menguji suatu ekspresi boolean, jika ekspresi bernilai true,
blok statement yang berhubungan akan dieksekusi. Keyword ini juga dapat digunakan
untuk membuat pernyataan if-else.
Berikut contoh penggunaany :
if(harga > 50000)
{
System.println(―Harganya Mahal‖);
}
else
{
System.println(―Harganya Murah‖);
}
Implements
Implements termasuk dalam sebuah deklarasi kelas untuk menentukan satu atau lebih
interface yang diimplementasikan oleh kelas saat ini. Kelas A mewarisi jenis dan metode
abstrak dinyatakan oleh interface.
Syntax :
public class MyClass implements MyInterface1, MyInterface2
{
…
}
Import
Keword Import digunakan pada awal sebuah file sumber untuk menentukan kelas atau
seluruh paket JAVA untuk disebut kemudian tanpa termasuk paket-paket mereka nama-
nama dalam referensi. Sejak J2SE 5.0, pernyataan impor dapat mengimpor anggota statis
dari sebuah kelas.
Syntax :
import package.JavaClass;
import package.*;
Instanceof
Instanceof merupakan sebuah operator biner yang menggunakan sebuah referensi obyek
sebagai operan pertama dan kelas atau antarmuka sebagai operan kedua dan
menghasilkan hasil boolean. Operator instanceof bernilai true jika dan hanya jika jenis
objek runtime adalah tugas kompatibel dengan kelas atau interface.
Tugas Statemen Pemrograman Java
Int
Int digunakan untuk menyatakan variable dapat menampung 32-bit tipe data bilangan
asli.
Contoh penggunaan :
int x = 54;
Interface
Merupakan kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa
detail implementasinya. Sedangkan detail dari method berada pada class yang
mengimplementasikan interface tersebut. Interface digunakan bila Anda ingin
mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses
inheritance. Tipe data yang boleh pada interface hanya tipe data konstan. Setelah
mengetahui apa itu interface.
Syntax :
public interface SampleInterface
{
public void method1();
//…
}
Long
Long igunakan untuk mendeklarasikan variabel yang dapat menampung 64-bit
ditandatangani melengkapi dua itu integer.
long x = 567575764563;
Native
Native digunakan dalam deklarasi metode untuk menentukan bahwa metode ini tidak
diimplementasikan dalam file sumber Java yang sama, melainkan dalam bahasa lain .
Syntax :
[public|protected|private] native method();
New
Tugas Statemen Pemrograman Java
Digunakan untuk membuat sebuah instance dari kelas atau array / obyek.
Syntax :
JavaType variabel = new javaobject();
Package
Packege merupakan sekelompok jenis. Paket dinyatakan dengan keyword package.
Contoh penggunaan :
package com.mycompany.code;
public class MyClass {
}
Private
Dengan keyword ini kelas/method/attribute tidak bisa diakses oleh kelas lain bahkan juga
tidak dapat diturunkan.
Syntax :
private void method();
Protected
Dengan keyword ini kelas/method/attribute dapat diakses oleh kelas lain yang satu
package atau kelas lain tersebut merupakan turunannya.
Contoh penggunaannya :
public class StudentRecord
{
//akses pada variabel
protected int name;
//akses dasar terhadap metode
protected String getName () {
return name;
}
Public
Public merupakan keyword dimana dengan keyword ini kelas/method/attribute dapat
diakses oleh kelas lain dimanapun.
Return
Tugas Statemen Pemrograman Java
Keyword ini digunakan untuk keluar dari suatu method. Baris – baris program setelah
keyword ini yang berada dalam blok method tersebut akan diabaikan. Kemudian eksekusi
dilanjutkan ke pernyataan setelah blok method tersebut.
Contoh penggunaan dalam program :
public int myIntMethod()
{
int y = 5;
return(y);
}
Short
Short digunakan untuk menyatakan variable dapat menampung 16-bit tipe data integer.
Contoh :
short a = 5;
Static
Dengan keyword ini method dan attribute milik kelas menjadi sifat bersama dari semua
objek dalam kelas tersebut (tidak memerlukan instansiasi dan tidak bisa dioverride).
Contoh penggunaannya:
public class Car {
static String color;
static void beep() {
//beep beep!
}
void brake() {
// stop
}
}
Strictfp
Keyword ini digunakan untuk membatasi presisi dan pembulatan perhitungan floating
point untuk memastikan portabilitas.
Super
Keyword super igunakan untuk mengakses anggota kelas diwariskan oleh kelas di mana
Tugas Statemen Pemrograman Java
ia muncul. Memungkinkan subclass untuk mengakses ditimpa metode dan anggota
tersembunyi dari superclassnya. Keyword super juga digunakan untuk meneruskan
panggilan dari konstruktor ke konstruktor di superclass.
Switch
Keyword switch digunakan dengan case dan default, yang akan memeriksa sebuah
variabel, dan mengeksekusi blok pernyataan yang sama dengan case tersebut.
Contoh switch dapat dilihat pada pembahasan case.
Synchronized
Synchronized digunakan dalam deklarasi metode atau blok kode untuk memperoleh
kunci mutex untuk objek while thread saat mengeksekusi kode . Untuk metode statis,
objek terkunci adalah Kelas kelas. Jaminan bahwa paling banyak satu thread pada waktu
operasi pada obyek yang sama mengeksekusi kode tersebut. Kunci mutex secara otomatis
dilepaskan ketika keluar eksekusi kode disinkronisasi. Fields, kelas dan interface tidak
dapat dinyatakan sebagai disinkronisasi.
This
This merupakan keyword yang digunakan untuk menyatakan objek sekarang dan tanpa
instansiasi.
Throw
Throw enyebabkan deklarasi pengecualian. Hal ini menyebabkan eksekusi untuk
melanjutkan dengan pengecualian penangan melampirkan pertama dinyatakan oleh
keyword catch untuk menangani tipe pengecualian tugas kompatibel. Jika tidak ada
handler pengecualian tersebut ditemukan dalam metode saat ini, maka kembali metode
dan proses ini diulang dalam metode panggilan. Jika tidak ada handler pengecualian
ditemukan dalam setiap pemanggilan metode di stack, maka pengecualian dilewatkan ke
handler pengecualian tidak tertangkap thread ini.
Throws
Keyword throws digunakan dalam deklarasi metode untuk menentukan pengecualian
tidak ditangani dalam metode melainkan diteruskan ke tingkat yang lebih tinggi
berikutnya program. Semua pengecualian tidak tertangkap dalam sebuah metode yang
tidak case RuntimeException harus dideklarasikan menggunakan keyword throws.
Transient
Transient menyatakan bahwa medan contoh bukan bagian dari default serial bentuk
Tugas Statemen Pemrograman Java
objek. Ketika suatu objek serial, hanya nilai-nilai non-fana bidang misalnya dimasukkan
dalam representasi serial default. Ketika suatu objek deserialized, while bidang
diinisialisasi hanya untuk nilai default mereka. Jika bentuk standar tidak digunakan,
misalnya ketika sebuah tabel serialPersistentFields ini dideklarasikan pada hirarki kelas,
semua keyword while diabaikan.
Try
Keyword try endefinisikan suatu blok statemen yang memiliki penanganan eksepsi. Jika
eksepsi dilemparkan di dalam blok try, sebuah blok catch opsional dapat menangani jenis
pengecualian dideklarasikan. Juga, sebuah blok akhirnya opsional dapat dideklarasikan
yang akan dijalankan ketika eksekusi keluar dari blok mencoba dan menangkap klausa,
terlepas dari apakah eksepsi dilemparkan atau tidak. Sebuah try blok harus memiliki
minimal satu klausa catch atau finally blok.
Void
Void merupakan keyword yang merupakan tipe jenis return value dimana method yang
menggunakan keyword ini tidak mengembalikan nilai apapaun setelah dipanggil atau
dieksekusi.
Contoh penggunaanya :
public void method()
{
//…
return; // — In this case the return is optional
}
Volatile
Keyword volatile digunakan dalam deklarasi lapangan untuk menentukan bahwa variabel
yang diubah asynchronously oleh bersamaan menjalankan thread. Metode, kelas dan
interface sehingga tidak dapat dideklarasikan volatile.
While
Keyword while digunakan untuk membuat pengulangan while, yang menguji suatu
ekspresi boolean dan mengeksekusi blok pernyataan yang berhubungan dengan
pengulangan jika ekspresi bernilai true, sampai ekspresi bernilai salah. Keyword ini juga
dapat digunakan untuk membuat pengulangan do-while.
Contoh penggunaan keyword while
while ( i < maxLoopIter )
{
Tugas Statemen Pemrograman Java
System.println(―Iter=‖ +i++);
}
Bagaimana Java Lebih Baik daripada C++ ?
Prinsip dasar pembuatan Java adalah karena C++ ternyata tidak memenuhi janji sebagai
pemrograman berorientasi objek. Jadi apa yang salah dari C++ sehingga Java harus dibuat ?
Jawabannya sederhana, yaitu Kompatibilitas ke belakang ( backward compability).
Kompabilitas kebelakang biasanya dikenal sebagai kemampuan yang menjamin keberhasilan
dengan membuat programmer belajar dengan cepat. Java menggunakan hampir semua konvensi yang
identik untuk deklarasi variabel, melewatkan parameter, operator dan pengaturan aliran. Sehingga
dengan kata lain Java menambahkan bagian-bagian yang baik dari C++ dan menghapus bagian-bagian
yang jelek dari C. Java jauh lebih baik dari C++ karena hal-hal yang tidak dimilikinya, seperti beberapa
contoh berikut:
Variabel Global
Para programmer menulis program dalam bahasa assembly, dan semua program yang disimpan
dalan punch card, penghubung alat pemrograman adalah variabel global, masalahnya, dengan
menggunakan variabel blobal suatu fungsi dapat memberikan efek samping yang buruk dengan mengubah
keadaan global. Variabel global pada C++ adalah tanda sebuah program yang tidak dirancang cukup baik
untuk enkapsulasi data dengan cara yang masuk akal.
Pada Java, ruang penamaan global hanya hirarki class. Tidak mungkin menciptakan variabel
global diluar semua class. Setidaknya penentuan keadaan global dibuat lebih jelas dengan enkapsulasi
dalam class. Contoh, system.out.println() sering digunakan dalam program Java. Ini adalah cara
mengakses output standar global untuk interpreter Java.
Goto
Beberapa kemampuan yang digunakan sebagai cara cepat untuk menyelesaikan program tanpa
membuat struktur yang jelas adalah pernyataan goto.Dalam C++ dikenal sebagai if-then-goto. Sebeleum
C++ memasukkan penanganan eksepsi, goto sering digunakan untuk membuat perulangan didalam keadaan
eksepsi.
Java tidak memiliki pernyataan goto. Java menyediakan kata goto hanya untuk menjaga agar
programmer tidak bingung menggunakannya. Java memiliki bagian break yang diberi label dan
pernyataan continue yang merupakan bagian dimana goto boleh dipergunakan. Penanganan eksepsi yang
ampuh dan terdefinisi dengan baik pada Java menghilangkan kebutuhan perintah goto.
Pointer
Pointer atau address pada memori adalah kemampuan C++ yang paling ampuh juga paling
berbahaya. Biasanya kesalahan terjadi karena “kurang satu tempat” atau rusaknya data yang disimpan
karena lokasi memori terakhir hancur.kesalahan ini merupakan salah satu kesalahan yangterburuk yang
susah untuk diperiksa dan ditelusuri.
Meskipun penanganan objek Java menggunakan pointer, bahasa Java tidak memiliki kemampuan
memanipulasi pointer secara langsung. Kita tidak dapat mengubah integer menjadi pointer, menunjuk
ulang sembarang address memori. Array merupakan objek yang didefinisikan, tidak berupa address
dimemori.Di Java kita tidak dapat menulis sebelum akhir lokasi yang disediakan untuk array.
Alokasi Memori
Kemampuan C++ yang sama berbahayanya dengan pengolahan matematis pointer adalah
manajemen memori. Manajemen memori di C dan C++ diwujudkan dengan keunggulan dan kelemahan
Tugas Statemen Pemrograman Java
fungsi library malloc() dan free(). Fungsi malloc, mengalokasikan jumlah tertentu memori (dalam byte),
dan mengeluarkan address blok tersebut. Fungsi free, mengirimkan blok yang telah dialokasikan kepada
sistem untuk penggunaan umum. Secara umum dapat menyebabkan kebocoran memori yang
mengakibatkan program berjalan semakin lama semakin lambat.
Java tidak memiliki fungsi malloc dan free, karena setiap struktur data yang rumit adalah
objek, maka mereka dialokasikan dengan operator new, yang mengalokasikan ruang untuk objek pada
„heap‟ memori. Memori yang disediakan disebut „heap‟ karena kita tidak perlu lagi memikirkannya
sebagai penambahan address yang berstruktur linier. Jadi hanya berupa kumpulan instan objek. Yang
didapat dari fungsi new bukanlah address memori, melainkan hanya „pegangan‟ untuk objek dalam heap.
Tipe Data Yang Rapuh
C++ mewarisi semua tipe data umum pada C. Tipe-tipe ini mewakili bilangan bulat dan pecahan
dengan berbagai rentang nilai dan ketelitian. Rentang nilai dan ketelitian tipe ini bervariasi bergantung
pada implementasi kompilernya.
Javamemecahkan masalah ini dengan mengambil ukuran yang sesuai untuk semua tipe numerik
dasar dan menyatukannya. Arsitektur tertentu akan mengalami kesulitan atau bekerja tidak optimal
untuk meng-implementasikan tipe data yang bergantung hardware secara ketat pada interpreter Java
yang diberikan, tetapi inilah satu-satunya cara untuk menjamin hasil yang dapat dibuat ulang pada
platform hardware yang berbeda.
Pemilihan Tipe (Type Casting) yang Tidak Aman
Type Casting adalah mekanisme yang ampuh dalam C/C++ yang memungkinkan kita untuk
mengubah tipe suatu pointer secara sembarang. Mungkin kita sering melihat bentuk seperti ini :
memset((void *)p, 0, sizeof (struct p))
Penggunaan ini, walaupun tidak baik, tetapi cukup aman. Tentu saja dengan menganggap blok memori
yang ditunjuk oleh p sekurang0kurangnya sepanjang sizeof (struct p).ini harus digunakan dengan sangat
hati-hati karena tidak ada syarat untuk memeriksa apakah kita telah memilih tipe dengan benar.
Penanganan objek Java mencakup informasi lengkap tentang class yang menjadi instans suatu
objek, sehingga dapat dilakukan pemeriksaan kompatibilitas tipe selama program berjalan, dan
menghasilkan eksepsi jika terjadi kegagalan.
Daftar Argumen Yang Tidak Aman
C++ banyak disukai karena kemampuannya melewatkan pointerdengan tipe sembarang dalam
daftar argumen panjang-variabel yang dikenal sebagai varargs. Varargs adalah tambahan sederhana
pada premis yang menyatakan bahwa sembarang address dapat dipetakan pada sembarang tipe, tugas
pemeriksaan tipe diserahkan kepada programmer.
Sangat menyenagkan jika Java memiliki cara yang aman terhadap tipe untuk mendeklarasikan
dan melewatkan daftar argumen panjang-variabel, tetapi sampai versi 1.0 belum ada ketentuan seperti
itu.
File Header yang Terpisah
Salah satu kemampuan yang patut dipertimbangkan adalah file header, dimana kita dpata
mendeklarasikan prototipe class kita dan mendistribusikannya dengan kode biner implementasi class
yang telah di-compile. Kemampuan ini membuat lingkungan compiler C++ hampir tidak dapat digunakan.
C++ memiliki format file yang bergantung mesin untuk kode yang telah di-compile, sehingga informasi
header dapat dibuat coresiden. Karena antarmuka programmer ke class yang di-compile dilakukan
melalui file header-nya, maka kode yang telah di-compile sangat bergantung pada apa yang ada pada file
header tersebut.
Tugas Statemen Pemrograman Java
Misalkan programmer yang senang berpetualang ingin meningkatkan akses pada beberapa
anggota data private pada class yang telah di-compile. Yang harus dilakukan oleh orang tersebut adalah
mengganti pengubah akses yang asalnya private menjadi public pada file header dan meng-compile suatu
sub class dari class yang telah di-compile. Pada Java ini tidak mungkin terjadi, karena di Java tidak
ada file header. Tipe dan visibilitas anggota class dicompile ke dalam file class Java. Interpreter Java
menjalankan pengaturan akses saat program berjalan, jadi sama sekali tidak ada cara untuk mengakses
variabel private dari luar suatu class.
Struktur yang Tidak Aman
C berusaha menyediakan enkapsulasi data melalui deklarasi struktur yang disebut struct, dan
polimorfisme dengan mekanisme union. Dua gagasan ini menghasilkan batas tipis antara penyesuaian
bergantung mesin yang kritis dan berbahaya dengan batasan ukuran. Java tidak memiliki konsep struct
dan union , sebaliknya Java menyatukan konsep ini dengan class.
Peng-hacker-an Preprocessor
Untuk mewujudkan keinginan memiliki model yang jelas untuk ditulis oleh programmer, compiler
C dan C++ menggunakan tool yang sama dengan yang digunakan pada masa-masa MACRO assembler. Ini
menghasilkan preprocessor C yang tugasnya mencari perintah khusus yang diawali tanda pagar
(#).Preprocessor C sering digunakan untuk membangun program yang sangat sulit dibaca.
Java mengatur agar kita dapat bekerja tanpa preprocessor, hanya bergantung pada kata kunci
final untuk mendeklarasikan konstanta yang sebelumnya dihasilkan dengan #define.
QED
Berasal dari bahasa latin Quod Erat Demonstrandum, yang berarti “Terbuktikan..!!!”.
Hal-hal Tata Bahasa
Progaram Java adalah kumpulan spasi, komentar, kata kunci, identifier, literal, operator, dan pemisah.
Spasi
Java adalah bahasa bebas bentuk. Tidak perlu mengatur tata letaknya agar dapat bekerja.
Asalkan ada sekurang-kurangnya satu spasi, tab, atau baris baru diantara setiap token sebelum disisipi
operator atau pemisah lain.
Komentar
Ada beberapa bentuk :
1. Komentar baris tunggal
Diawali dengan tanda // dan diletakkan diakhir baris yang diberi komentar.
2. Komentar baris banyak
Diawali dengan tanda /* dan ditutup dengan */ semua diantara kedua tanda tersebut dianggap
komentar dan akan diabaikan oleh compiler.
contoh penulisan :
/*
* komentar…….
* komentar……
*/
3. Komentar terdokumentasi
Menggunakan piranti Javadoc, yang mennggunakan komponen compiler Java untuk secara otomatis
menghasilkan dokumentasi antarmuka public suatu class. Aturan pembuatan komentar yang dapat
Tugas Statemen Pemrograman Java
diolah oleh Javadoc adalah : sebelum deklarasi class, method, dan variabel public harus digunakan
komentar bertanda /** untuk menyatakan komentar dokumentasi, diakhiri dengan tanda */.
Javadoc akan mengenali sejumlah variabel khusus yang didahului dengan tanda @ didalam bagian
komentar.
contoh penulisan :
/**
* komentar….
* komentar…..
*/
Kata Kunci Simpanan (Keywords)
Kata kunci simpanan adalah identifier khusus yang disimpan oleh bahasa Java untuk
mengendalikan bagaimana program didefinisikan. Kata kunci ini digunakan untuk mengenali tipe-tipe,
pengubah, dan mekanisme pengaturan aliran program. Kata kunci ini hanya dapat digunakan untuk fungsi
tertentu dan tidak dapat digunakan sebagai identifier nama suatu variabel, class dan method. Sampai
denga Versi 1.0 terdapat 59 kata kunci seperti terlihat dalam tabel :
abstract boolean break byte byvalue case
cast catch char class const continue
default do double else extends false
final finally float for future generic
goto if implement
s
import inner instanceof
int interface long native new null
operator outer package private protected public
rest return short static super switch
synchronize
d
this throw throws transient true
try var void volatile while
Identifier
Bdigunakan untuk nama class, method, dan variabel. Suatu variabel dapat berupa urutan
tertentu huruf (besar atau kecil), angka, garis bawah, dan tanda dolar. Tidak boleh diawali oleh angka
dan bersifat case sensitive.
Kelompok Java mengikuti aturan penamaan identifier untuk semua method public dan variabel
instans dengan huruf awal kecil dan menandai bagian kata selanjutnya dengan huruf besar, misalnya
nextItem, currentValue, getTimeOfDay.
Untuk variabel provate dan lokal identifier akan berupa huruf kecil semua dikombinasikan
dengan garis bawah, misalnya next_val, temp_val. Untuk variabel final yang mewakili suatu konstanta,
digunakan huruf besar semua, misalnya TOK_BRACE, DAY_FRIDAY.
Literal
Besaran konstanta pada Java dihasilkan dengan menggunakan literal yang mewakilinya. Setiap
literal merepresentasikan nilai suatu tipe, dimana tipe itu sendiri menjelaskan bagaimana sifat nilai
tersebut dan bagaimana penyimpanannya.
Separator (Pemisah)
Simbol Nama Fungsi
Tugas Statemen Pemrograman Java
() Kurung Digunakan untuk menghimpun parameter dalam definisi dan pemanggilan
method, juga digunakan untuk menyatakan tingkatan pernyataan,
menghimpun pernyataan untuk pengaturan alur program dan menyatakan
tipe cast.
{} kurung
kurawal
Digunakan untuk menghimpun nilai yang otomatis dimasukkan kedalam
array, juga digunakan untuk mendefinisikan blok program, untuk cakupan
class, method, dan lokal.
[] kurung siku Digunakan untuk menyatakan tipe array, juga digunakan untuk
membedakan nilai array.
; titik-koma pemisah pernyataan.
, koma Pemisah urutan identifier dalam deklarasi variabel, juga digunakan
untuk mengaitkan pernyataan didalam pernyataan for.
. titik Dugunakan untuk memisahkan nama paket dari sub-paket dan class, juga
digunakan untuk memisahkan variabel atau method dari variabel
referensi.
Variabel
variabel adalah satuan dasar penyimpanan dalam program Java. Suatu variabel didefinisikan
dengan kombinasi identifier, tipe, dan cakupan. Bergantung pada tempat kita mendeklarasikannya,
variabel dapat bersifat lokal atau sementara, misalnya didalam perulangan for, atau dapat juga berupa
variabel instans yang dapat diakses oleh semua method dalam class. Cakupan lokal dinyatakan dalam
kurung kurawal.
Tipe Data
Java merupakan contoh bahasa yang strongly typed language. Hal ini berarti bahwa setiap
variabel harus memiliki tipe yang sudah dideklarasikan. Terdapat 8 tipe primitif, 6 diantaranya adalah
tipe bilangan ( 4 tipe integer, 2 tipe floating point), 1 tipe karakter char, digunakan mengawa-sandi
(encode) Unicode, dan 1 tipe boolean.
Integer
Tipe Tempat yang
Diperlukan
Jangkauan (inclusive)
int 4 byte - 2.147.483.648 sampai 2.147.483.647 (hanya lebih dari 2 miliar)
short 2 byte - 32.768 sampai 32.767
long 8 byte - 9.223.372.036.854.775.808L sampai 9.223.372.036.854.775.807L
byte 1 byte - 128 sampai 127
Floating Point
Tipe Tempat Yang
Dibutuhkan
Jangkauan
float 4 byte secara kasar 3,40282347E+38F ( 7 digit desimal signifikan)
double 8 byte secara kasar  1,79769313486231570E+308 (15 digit desimal
siignifikan)
Char
Tugas Statemen Pemrograman Java
Tipe char menggunakan tanda kutip tunggal untuk menyatakan suatu char. Tipe char juga
menyatakan karakter dalam upaya mengawa-sandi unicode, yang merupakan kode 2-byte. Karakter
unicode paling sering dinyatakan dalam istilah skema pengkodean hexadesimal yang dimulai dari u0000
sampai uFFFF. Selain karakter bebas (escape „ u „ yang menyatakan karakter unicode di Java
terdapat juga
b backspace u0008
t tab u0009
n linefeed u000a
r carriage return u000d
” double quote u0022
‟ single quote u0027
 a backslash u005c
Boolean
Tipe boolean memiliki nilai true dan false. Tipe ini digunakan untul logical testing dengan
menggunakan operator relasional.
Konversi antar Nilai Numerik
Operasi biner apapun pada variabel numerik dengan tipe yang berbeda dapat diterima dan
diperlakukan dengan cara seperti dibawah ini :
1. Jika tipe operand adalah double, maka yang lain juga akan diperlakukan sebagai double pada
lingkup operasi tersebut.
2. Jika operand adalah float, maka yang lain juga akan diperlakukan sebagai float.
3. Jika operand adalaha long, maka yang lain juga akan diperlakukan sebagai long.
konversi yang diijinkan adalah sebagai berikut :
byte  short  int  long  float  double
Dimana kita dapat memberikan nilai variabel suatu tipe disebelah kiri ke tipe disebelah kanannya.
OPERATOR
Assignment Operator ( = )
Shorthand assignment operator
Operator Usage Meaning
+= X += Y X = X + Y
-= X -= Y X = X – Y
*= X *= Y X = X * Y
/= X /= Y X = X / Y
%= X %= Y X = X % Y
Arithmetic Operator
Operator Operation
Tugas Statemen Pemrograman Java
+ Addition
- Subtraction
* Multiplication
/ Division
% Modulo
Bitwise Operator
Operator Operation
& AND
| OR
^ XOR
>> Shift Kanan
<< Shift Kiri
>>> Shift Kanan isi dengan nol
Unary Operator
Operator Operation
~ Unary NOT
- Minus
++ Increment
-- Decrement
Relational Operator
Operator Operation
== Equal To
!= Not Equal To
> Greater Than
< Less Than
>= Greater or Equal To
<= Less or Equal To
Logical Operator
Operator Operation
! Short-circuit NOT
&& Short-circuit AND
|| Short-circuit OR
?: Operator ternary if-then-else
Tugas Statemen Pemrograman Java
Preseden Operator
Tertinggi
() [] .
++ -- ~ !
* / %
+ -
>> >>> <<
> >= < <=
== !=
&
^
|
&&
||
?:
= op=
Terendah
CONTROL FLOW
Percabangan
 if – else
Bentuk if-else menyebabkan eksekusi dijalankan melalui sekumpulan keadaan boolean sehingga
hanya bagian tertentu program yang dijalankan. Bentuk umum pernyataan if-else :
if (boolean expression) statement 1; [else statement 2; ]
Klausa else bersifat optional, setiap statement dapat berupa satu statement tunggal atau
dapat berupa satu blok statement yang ditandai dengan tanda {} (kurung kurawal). Boolean
expression dapat berupa sembarang pernyataan boolean yang menghasilkan besaran boolean.
 break
Java tidak memiliki pernyataan goto. Penggunaan goto adalah untuk membuat percabangan
secara sembarang yang membuat program sulit dimengerti dan mengurangi optimasi compiler
tertentu. Pernyataan break pada Java dirancang untuk mengatasi semua kasus tersebut. Istilah
break mengacu kepada proses memecahkan blok program. Proses tersebut memerintahkan runtime
untuk menjalankan program dibelakang blok tertentu. Untuk dapat ditunjuk blok diberi
nama/label. Break juga dapat digunakan tanpa label untuk keluar dari suatu loop dan pernyataan
switch. Penggunaan break menunjukkan bahwa kita akan keluar dari sutu blok program.
 switch
Pernyataan switch memberiikan suatu cara ubtuk mengirimkan bagian program berdasarkan
nilai suatu variabel atau pernyataan tunggal. Bentuk umum pernyataan switch :
switch (expression)
{ case value1 :
Tugas Statemen Pemrograman Java
Statement;
break;
case value2 :
Statement;
break;
case valueN :
Statement;
break;
default;
}
Expression dapat menghasilkan suatu tipe sederhana, dan setiap value yang disebutkan pada
pernyataan case harus berupa tipe yang cocok. Pernyataan switch bekerja dengan cara
membandingkan nilai expression dengan setiap nilai pada pernyataan case. Jika ada yang cocok
maka urutan program yang ada di pernyataan case tersebut akan dijalankan, jika tidak ada yang
cocok, program akan menjalankan default
 return
Java menggunakan bentuk sub-routine yang disebut method untuk mengimplementasikan
antarmuka prosedural ke class objek. Setiap saat dalam method dapat digunakan pernyataan
return yang menyebabkan eksekusi mencabang kembali ke pemanggil method.
Perulangan (Looping)
Looping artinya mengulangi eksekusi blok program tertentu sampai tercapai kondisi untuk
menghentikannya. Setiap perulangan memiliki 4 bagian :
a. Inisialisasi, adalah program yang mengyiapkan bagian awal perulangan
b. Badan program, adalah pernyataan yang ingin kita ulangi.
c. Iterasi, adalah program yang sering digunakan untu penambahan atau penguranagn pencacah
dan index.
d. Terminasi, adalah pernyataan boolean yang diperiksa setiap kali selama perulangan
dilaksanakan untuk melihat apakah perulangan sudah saatnya dihentikan.
 while
While adalah pernyataan perulangan yang paling mendasar pada Java. Penggunaan pernyataan
while akan menyebabkan rekursi pernyataan secara terus menerus selama pernyataan booleannya
bernilai true. Bentuk umum dari pernyataan while :
[initialization;]
while (termination)
{ body program ;
[iteration;]
}
 do-while
Penggunaan pernyataan do –while menyebabkan body program akan dieksekusi sekurang-
kurangnya 1 kali walaupun pernyataan booleannya menghasilkan nilai false. Pemeriksaan terminasi
dilaksanakan pada akhir program. Bentuk umum pernyataan do – while :
[initialization;]
Tugas Statemen Pemrograman Java
do
{ body program;
[iteration;]
}
while [termination];
 for
Pernyataan for adalah cara praktis untuk menyatakan suatu perulangan. Bentuk umum
pernyataan for :
for {initialization; termination; iteration ) body program;
Jika keadaan awal tidak menyebabkan termination bernilai true maka pernyataan body
program dan iteration tidak akan dijalankan.
 Pernyataan koma
Kadang-kadang ada keadaan dimana kita ingin memasukkan lebih dari satu pernyataan
inisialisasi atau terminasi, Java menyediakan cara lain untuk menyatakan beberapa pernyataan
sekaligus. Penggunaan koma untuk memisahkan pernyataan di batasi hanya untuk digunakan didalam
tanda kurung untuk pernyataan for.
 continue
Pernyataan continue akan menghentikan iterasi yang bersangkutan tetapi program akan
menjalankan sisa perulangan sampai dengan selesai.
Class dan Object
Beberapa orang pada awalnya, biasanya tidak memperhatikan perbedaan antara class dan
object, mereka mencampuradukkan kedua istilah tersebut. Mari kita simak kode berikut :
/*
Di sini kita mendefinisikan sebuah class bernama NiceGuy.
Simpan sebagai file NiceGuy.java dan compile file
Tersebut. Anda akan mendapatkan file bernama
NiceGuy.class
*/
public class NiceGuy {
private string name;
public NiceGuy(String name) {
system.out.println(“Instantion of NiceGuy named “ + name) ;
this.name=name;
}
public void sayHello() {
system.out.println(“Hello Object Oriented World…!!!“ ) ;
}
public sayHelloOutLoud() {
system.out.println(“HELLLOOOO OBJECT ORIENTED WORLD!!!”) ;
Tugas Statemen Pemrograman Java
}
Public String getName() {
Return name;
}
}
Gambar 1. Definisiclass NiceGuy
/*
Di sini, kita membuat sebuah java application yang
bernama OurFirstCode.
Simpan source ini dalam file bernama OurFirstCode.java,
di direktori yang sama dengan tempat anda menyimpan
NiceGuy.java. Kemudian compile file tersebut, Anda akan
Mendapatkan file OurFirstCode.class.
Lalu jalankan aplikasi ini dengan mengetikan java
OurFirstCode pada command line
*/
public class OurFirstCode {
public static void main(String[] args) {
NiceGuy ng= new NiceGuy (“ButtHead”);
ng.sayHello();
ng.sayHelloOutLoud();
//he‟s so cute…,who‟s he???
String NiceGuyName = ng.getName();
System.out.println(“OH…!!!! HE‟S “ +
NiceGuyName.toUpperCase());
}
}
Gambar 2. Aplikasi Java
Diatas merupakan contoh pendefinisian sebuah class bernama NiceGuy pada Gambar 1. Pada
Gambar 2 merupakan kode dari sebuah aplikasi java yang bernama OurFirstCode. Pada aplikasi
tersebut kita menggunakan class NiceGuy untuk membuet objek bertipe NiceGuy.
Pendefinisian Class
Sintaks dalam mendefinisikan class adalah sebagai berikut :
[modifier-modifier] class namaclass [extends parentclass]
[implements interface] {
[deklarasi field-field]
[definisi method-method]
}
Yang tertera didalam kurung siku bersifat optional. Dengan demikian, definisi minimal dari
sebuah class bisa jadi seperti berikut :
class Useless {
Tugas Statemen Pemrograman Java
//….mmm….
}
Tidak ada yang bisa kita harapkan dari objek diatas. Contoh yang lebih baik adalah Gambar 1.
Disana kita mendeklarasikan 1 field dan 3 method. Pada baris 8 kita mendeklarasikan field yang
bernama name yang bertipe string. Secara umum sintaks untuk mendeklarasikan field adalah :
type namafield;
Tipe dari field bisa primitif (seperti int, boolean, float, dan sebagainya), dan bisa juga Object
(seperti String, Vector, Hashtable, dan sebagainya).
Method-method yang dimiliki class NiceGuy adalah method sayHello() sepanjang baris 14-16
(method void), method sayHelloOutLoud() pada baris 17-19 (method void), dan method getName() pada
baris 20-22 (method non-void). Secara umum sintaks dalam pendefinisian sebuah method adalah
:
[modifier-modifier] return-type namamethod
( [parameter1, [parameter2],… , [parameter N] ) {
[statement-statement];
}
Tipe Return bisa void, tipe data primitif, atau tipe data object. Method dengan tipe return
non-void harus mencantumkan statement return <something> pada akhir deklarasi method itu (seperti
pada baris 21 class NiceGuy) kita juga dapat menggunakan kata return pada method void untuk keluar
dari method tersebut.
Bagian penting lain dari definisi class adalah constructor. Pendefinisian constructor
dicontohkan pada baris 10-12 class NiceGuy. Constructor digunakan pada saat penciptaan objek dari
sebuah class. Pendeklarasian constructor mirip dengan pendeklarasian method, dengan satu
pengecualian bahwa constructor tidak mencantumkan tipe return.
[modifier-modifier] namaconstructor ([parameter 1], [parameter 2], …
, [parameter N]) {
[statement-statement];
}
Hal lain yang perlu dicatat tentang constructor adalah, nama constructor harus sama dengan
classnya. Constructor tanpa parameter disebut default constructor. Kalau kita sama sekali tidak
mendeklarasikan constructor, compiler secara otomatis akan membuatkan sebuah default constructor.
Pada Gambar 2, aplikasi OurFirstCode memanfaatkan class NiceGuy untuk menciptakan sebuah
objek bertipe NiceGuy dimemori (perhatikan baris 13 gambar 2). Setelah itu, reference ng dapat
digunakan untuk memanggil method-method (mengirimkan pesan kepadanya) atau mengakses field-field
dari objek yang bersangkutan.
Reference adalah seperti alamat rumah sedangkan objek adalah rumahnya. dengan mengetahui
alamat, kita bisa mencapai rumah yang dimaksud.
Inheritance
Tugas Statemen Pemrograman Java
Salah satu topik penting dalam OOP adalah inheritance (pewarisan sifat). Dengan inheritance,
pengembangan software dapat bekerja lebih efisien dan lebih cepat. Berkat inheritance dapat
menggunakan definisi class yang pernah dibuat sebelumnya untuk membuat class-class lain yang
menyerupai class tersebut. Perhatikan contoh berikut :
public class KattWorld {
public static void main (String args[]) {
Katt k = new Katt();
k.speak();
Anggora a = new Anggora();
a.speak(); a.jump();
Siam s = new Siam();
s.speak();
}
}
class Katt {
public Katt() {
system.out.println(“Katt Constructor”);
}
public void speak() {
system.out.println(“Miaww…”);
}
}
class Anggora extends Katt {
public void jump() {
system.out.println(“Crash…Boom…”);
}
}
class Siam extends Katt {
public Siam() {
system.out.println(“Siam Constructor”);
}
public void speak() {
system.out.println(“Mmurrrr…mmurrrr…”);
}
}
Gambar 3. Kisah kucing
Hal pertama yang harus diperhatikan dari gambar 3 dalah cara melakukan inheritance. Coontoh
diatas mempunyai satu class bernama Katt (baris 12-19). Kemudian dibut class lainnya yang mempunyai
sifat seperti Katt, tetapi memiliki keunikan sendiri. Contohnya adalah class Anggora, kita dapat
membuat subclass dari Katt (baris 21-25).
Kini dapat dikatakan bahwa Katt menjadi parentclass (baseclass atau superclass) dari class
Anggora. Secara umum kita dapat mendefinisikan suatu class sebagai turunan dari baseclass dengan
cara :
class namaclass extends baseclass {
Tugas Statemen Pemrograman Java
[statement-statement];
}
Method overiding
Kita membuat varian baru lain dari Katt dengan cara mengeong Murr….Murr…Murr…. Kita
namai varian itu Siam. Kita definisikan Siam sebagai subclass dari Katt, tapi kini kita melakukan metode
overiding, kita mendefinisikan ulang method speak() didalam definisi class Siam. Jika dijalankan akan
menghasilkan output :
Katt constructor
Miaww…
Katt constructor
Miaww…
Crash…Boom…
Katt constructor
Siam constructor
Mmurrr…mmurrr…
Baris 6 dan 7 dimunculkan sewaktu berlangsung konstruksi/instantiasi objek bertipe Siam.
Default constructor Katt dijalankan terlebih dahulu. Ini menunjukkan bahwa default, kecuali kita minta
yang lain, dari baseclass secara otomatis dijalankan terlebih dahulu sebelum constructor dari class
yang bersangkutan.
This
This sebenarnya adalah sebuah variable read-only (tidak dapat diubah nilainya). Dengan
variable ini, kita mendapatkan reference/pointer menuju objek terkini. Bayangkan aplikasi anda sedang
berjalan, pada saat tertentu yang dijalankan oleh komputer anda adalah method aMethod() milik object
anObject. Dari method aMethod() anda membutuhkan reference ke objek terkini yaitu object
anObject itu sendiri. Untuk itulah kita menggunakan variabel this dalam method aMethod() milik object
anObject. Perhatikan contoh berikut :
public class BeavisAndButtheadStory {
public static void main (string[] args) {
DivineBeing beavis = new DivineBeing (“Beavis”);
DivineBeing butthead = new DivineBeing (“Butthead”);
//guess what‟s gonna happen next…
beavis.messWith (butthead);
butthead.makeRevenge();
}
}
class DivineBeing {
private String name;
private DivineBeing baddDivineBeing;
public DivineBeing (String name) {
this.name = name ;
}
public void messWith (DivineBeing anotherDivineBeing) {
anotherDivineBeing.kapow(this);
}
public void kapow (DivineBeing baddDivineBeing) {
Tugas Statemen Pemrograman Java
system.out.println(baddDivineBeing.getName()+”!!!!Damn You!!”);
//forgive but not forget…
this.baddDivineBeing = baddDivineBeing;
}
public void makeRevenge() {
of (baddDivineBeing != null) {
baddDivineBeing.kapow(this);
}
}
public String getName() {
return name;
}
}
Gambar 4.Contoh penggunaan kata kunci this
beavis memulai gara-gara dengan memukul butthead, beavis memberikan butthead referensi
atas dirinya sendiri. Hal ini dilakukan dengan memberikan argument this pada pemanggilan method
kapow(divineBeing baddDivineBeing). Dengan reference yang ia dapatkan itu , suatu saat butthead
dapak balik mengirim pesan makeRevenge() ke beavis.butthead ingat betul siapa yang memukulnya,
karena sewaktu ia dipukul, ia menyimpan reference ke objek beavis itu pada variabel baddDivineBeing
miliknya, yang dideklarasikan pada baris 13. Praktek diatas disebut Callback.
Penggunaan lain dari this dapat dilihat pada baris 15 dan 23. Pada baris 15, kita bermaksud
menetapkan variabel name yang di deklarasikan pada baris 12, tapi sekarang timbul konflik dalam
penamaan variabel. Didalam daftar argumen pada constructor kita juga mendefinisikan variabel lain
yang juga bernama name (baris 14). Jangkauan variabel name pada baris 12 mencakup semua ruang pada
class DivineBeing, sedangkan variabel name pada baris 14 mempunyai jangkauan terbatas didalam
constructor itu. Untuk mengatakan saya menginginkan name yang global bukan name yang lokal, kita
menerobos keluar dengan keyword this. Dapat dilihat pada gambar 5.
class DivineBeing {
private String name;
private DivineBeing baddDivineBeing;
public DivineBeing (String name ) {
this.name = name ;
}
Gambar 5.Out Of The Box Experience
Abstract
Abstract method adalah method yang belum mempunyai implementasi. Kita dapat menyatakan
suatu method abstract dengan membubuhkan keyword abstract pada deklarasi method tersebut.
Secara umum sintaks dari pendeklarasian method abstract :
Tugas Statemen Pemrograman Java
abstract return-type namamethod ([daftar-parameter]);
Contoh :
public class ExplainAbstract {
public static void main (String args[]) {
Penyanyi joshua = new Pnyanyi();
joshua.berkesenian();
Pemrogram raka = new Pemrogram();
raka.berkesenian();
}
}
abstract class Seniman {
public abstract void berkesenian();
public void tidur() {
system.out.println (“ZZZZ…”);
}
}
class Pemrogram extends Seniman {
public void berkesenian() {
system.out.println(“tap…tap…click-
click…tap…PLAK ! Click…DOR !!!”);
}
public void tidur() {
system.out.println(“Buzzz…ngingggg….”);
}
}
class Penyanyi extends Seniman {
public void berkesenian() {
system.out.println(“Tralala-Trilili…”);
}
}
Gambar 6. Contoh Pendeklarasian method abstract
Static method
Pada contoh-contoh sebelumnya kita harus menginstantiasi/membuat objek terlebih dahulu
sebelum dapat menggunakan method-method atau mengakses field-field pada class yang bersangkutan.
Tapi dengan mendefinisikan suatu field atau method sebagai static, kita dapat saja mengakses field
method tersebut tanpa harus melakukan instantiasi terlebih dahulu. Perhatikan contoh berikut :
public class MyGeomUtil {
int iAmNotPopular = 13; static int iAmCelebrity = 7;
public static double luasSegiempat (float length, float width) {
return length * width;
}
Tugas Statemen Pemrograman Java
public static double luasSegitiga (float alas, float tinggi) {
return 0.5 * alas * tinggi;
}
public static double luasSegitiga (float A, float B, float gamma) {
//fungsi sin (double angel) menerima masukan sudut
//dalam radian angle not angel, you prevert..!
return 0.5 * A * B * Math.sin(gamma / Math.PI);
}
}
Gambar 7. Definisi MyGeomUtil
Final
Dengan menambahkan modifier final pada deklarasi sebuah method, kita menetapkan bahwa
method pada class tersebut tiidak bisa ditimpa pada subclass yang kelak mungkin akan dibuat. Salah
satu alasan untuk membubuhkan final pada method di sebuah base class adalah karena method itu
begitu fundamental bagi kerja instance class tersebut, sehingga jika di implementasikan secara
berbeda oleh subclassnya ( yang bisa saja ditulis oleh programer yang salah ) berpotensi menyebabkan
kerja instance itu tidak benar. Bentuk umum final method :
[modifier-modifier] final namamethod() {
//…mmmm…..
}
Final juga bisa diberlakukan bagi class, kita tidak dapat membuat turunan dari class final.
Bentuk umum final class :
final class namaclass extends parentclass {
//…mmm…
}
Interface
Pada Interface juga kita dapat mendeklarasikan method-method, field-field (dengan beberapa
catatan tentunya), dan juga dapat membuat rantai inheritance seperti yang dilakukan pada class. Lihat
contoh program dibawah ini :
import java.awt.*;
import java.awt.event.*;
public class AustinPower extends Frame implements MouseListener {
Button behave;
public static void main (String args[]) {
AustinPower asyWhoShaggedMe = new AustinPower();
spyWhoShaggedMe.setSize(100,100);
spyWhoShaggedMe.setVisible(true);
}
public AustinPower() {
Tugas Statemen Pemrograman Java
behave = new Button (“I Am a Button”);
behave.addMouseListener(this);
add(behave);
}
public void mouseEntered(MouseEvent me) {
behave.setLabel (“Click me…!!!”);
}
public void mouseExited(MouseEvent me) {
behave.setLabel (“Come to me…!!!”);
}
public void mousePressed(MouseEvent me){}
public void mouseReleased(MouseEvent me){}
public void mouseClicked(MouseEvent me){}
}
Gambar 8. Penggunaan Interface
Sedangkan interface MouseListener seperti tertera dibawah ini :
package java.awt.event;
import java.util.EventListener;
/**
* The listener interface for receiving mouse event on a
* Component.
* @version 1.7 07/01/98
* @author Carl Quinn
*/
public interface MouseListener extends EventListener {
public void mouseClicked (MouseEvent e);
public void mousePressed (MouseEvent e);
public void mouseReleased (MouseEvent e);
public void mouseEntered (MouseEvent e);
public void mouseExited (MouseEvent e);
}
Gambar 9. Deklarasi interface MouseListener
Pada contoh diatas, kita mengatakan bahwa AustinPower mengimplementasikan MouseListener.
Secara umum interface dapat dideklarasikan sebagai berikut :
interface namainterface [extends parentinterface] {
[deklarasi field-field (konstanta)]
[deklarasi method-method]
Mendeklarasikan method dalam interface mirip dengan mendeklarasikan method abstract,
dimana deklarasi method tidak diakhiri pasangan kurung kurawal, melainkan tanda titik koma :
Tugas Statemen Pemrograman Java
return-type namamethod ([daftar parameter]);
Ada satu catatan, field-field yang didefinisikan pada interface secara otomatis bersifat static
dan final, yang berarti mereka hanya bertindak sebagai konstanta.
sedangkan secara umum, suatu class dibuat agar mengimplementasikan suatu interface dengan
cara sebagai berikut :
class namaclass [extends parentclass] [implements interface1,interface2,…]
{ [deklarasi field-field]
[deklarasi method-method milik class ini]
[deklarasi implementasi method-method yang terdefinisikan pada
interface-interface yang di implementasi oleh class tersebut]
}
Pada contoh diatas dengan mengimplementasikan MouseListener, class AustinPower dikatakan
menandatangai suatu kontrak yang menyatakan bahwa ia mampu menunjukkan kelakuan-kelakuan
seorang MouseListener (yaitu bereaksi terhadap event-event yang berhubungan dengan Mouse).
Semua method yang terdefinisi pada interface adalah betul-betul abstract, tidak ada
implementasinya. Salah satu konsekuensi dari totalitas abstraksi pada interface itu adalah semua
method yang tertera pada interface harus di implementasikan oleh implementor.
Polymorphism
Polymorphism didefinisikan sebagai kemampuan beberapa objek bertipe sama bereaksi secara
berbeda terhadap message yang sama. Lihat contoh dibawah ini :
public class KattParty {
public static void main (String args[]) {
Katt[] kandangKatt = new Katt[3];
kandangKatt[0] = new Anggora();
kandangKatt[1] = new Siam();
kandangKatt[2] = new Katt();
for (int I = 0 ; I < 3 ; I++) {
kandangKatt[I].speak();
}
}
}
Gambar 10. Pesta Kucing
Disetiap iterasi pada loop diatas, pada dasarnya kita mengirimakan pesan yang sama ke objek-
objek yang bertipe sama (yaitu Katt, sesuai dengan definisi array pada baris 3), speak(). Walaupun
begitu, ternyata masing-masing bereaksi dengan caranya sendiri-sendiri.
Contoh lain dari polymorphism yaitu, misalkan kita membuat aplikasi client/server, dimana
client mengirimkan objek-objek Katt (dan tentunya bisa juga apapun turunan Katt) ke server. Pada
kasus tersebut, server bersedia menerima Kat-Kat itu tanpa terlalu mempermasalahkan perbedaan
spesifikasinya. Untu itu kode diserver bisa jadi seperti berikut:
…
Katt k = null;
while (true) {
Tugas Statemen Pemrograman Java
k = receive();
}
…
Tentunya untuk kasus ini, tidaklah tepat jika, secara static kita mengasosiasikan k dengan
class Siam (misal dengan pendeklarasian Siam k = null). Pada kode diatas, pengasosiasian k dengan clas
spesifik (Anggora, Siam atau lainnya) dilakukan pada saat run-time, yaitu ketika return Value dari
pemanggilan receive() di-assign ke k. Itulah yang disebut dynamic/late binding.
Operator Instanceof
Bagaimana seandainya pihak server ingin mengetahui type spesifik dari objek Katt yang
diterimanya ? lihat contoh KattParty yang dimodifikasi berikut :
public class KattParty {
public static void main (String args[]) {
Katt[] kandangKatt = new Katt[3];
kandangKatt[0] = new Anggora();
kandangKatt[1] = new Siam();
kandangKatt[2] = new Katt();
for (int I = 0 ; I < 3 ; I++) {
kandangKatt[I].speak();
if (kandangKatt[I] instanceof Siam) {
System.out.println(“Wow, It‟s a Siam…”);
} else if (kandangKatt[I] instanceof Anggora) {
System.out.println(“Look, they sent us Anggora…”);
}else {
System.out.println(“Well…It could be Lucifer,” +
“ or Alleys or Regular Katt”);
System.out.println(“But one thing for sure…it‟s Katt” +
“ Praise the Lord”);
}
}
}
}
Gambar 11. To know more about Katt
Operator yang kita pakai adalah instanceof. A instanceof B, mengevaluai apakah objek A
bertipe B (B adalah nama class). Evaluasi itu menghasilkan nilai true jika nama class dari objek A adalah
B atau nama parent/grandparent/greatgrandparent /seterusnya dari class dari objek A adalah B.
Evaluasi juga akan bernilai benar jika B adalah nama interface dan A mengimplementasikan B.
Begitu pula jika parent/grandparent/greatgrandparent/seterusnya dari class objek A
mengimplementasi B.
Singkat kata. jika A instanceof B menghasilkan true, berarti objek A dapat menunjukkan
behavior yang disyaratkan oleh class atau interface B.
Package
Kita biasannya mengelompokkan class-class (dan juga interface-interface) yang terkait
(karena jenisnya/fungsinya/alasan lain) dalam sebuah package. Mungkin ada baiknya jika class-class
geometris yang kita buat dikumpulkan dalam sebuah package bernama com.raka.geoms
Tugas Statemen Pemrograman Java
/*simpan sebagai Graphic.java */
package com.raka.geoms;
public abstract class Shape {
…….
}
Gambar 12. Package---1
/* Simpan sebagai Rectangle java */
package com.raka.geoms;
public class Rectangle extends Shape {
……………
}
Gambar 13. Package---2
/* Simpan sebagai Triangle.java */
package com.raka.geoms;
public class Triangle extends Shape {
……………
}
Gambar 14. Package---3
Beberapa keuntungan mengorganisasi class-class buatan kita dalam sebuah package adalah
:
1. Terhindar dari konflik penamaan. Mungkin saja ada orang lain, dibelahan dunia lain, membuat
class yang bernama Rectangle juga. Yang membedakan antara Rectangle kita dengan yang lain
adalah fully qualified name. Fully qualified name dari class Rectangle kita adalah
com.raka.geoms.Rectangle.
2. Teratur. Mendapatkan suatu class tertentu akan mudah dengan mengetahui nama package-nya.
Pada contoh diatas, masing-masing anggota dari package com.raka.geoms disimpan di file
terpisah, dan dideklarasikan sebagai public. dengan demikian class/program lain (yang bukan anggota
com.raka.geoms) dapat mengimport clas-class kita diatas. Kita juga dapat mendefinisikan beberapa
class sekaligus dalam sebuah file java, seperti contoh berikut :
/* Simpan sebagai NuclearWarHead.java */
package com.raka.lethal;
public class NuclearWarHead {
……………
}
class Sarin {
………………….
}
class Uzi {
………………….
}
Gambar 15. All in Life
Jika kita kompilasi NuclearWarHead.java diatas, kita akan mendapatkan tiga file class, yaitu
NuclearWarHead.class,Sarin.class, Uzi.class. Kesemuanya akan menjadi anggota dari package
com.raka.lethal. Akan tetapi hanya NuclearWarHead yang bisa digunakan secara langsung dari luar
Tugas Statemen Pemrograman Java
package com.raka.lethal, karena hanya NuclearWarHead yang dideklarasikan sebagai public, selebihnya
dedeklarasikan sebagai protected (defaultnya), sehingga hanya dapat digunakan oleh class-class yang
tergabung didalam com.raka.lethal.
Sekarang untuk menggunakan class-class yang terdapat pada com.raka.geoms dari luar
com.raka.geoms, kita mengenal kata kunci import. Seperti contoh dibawah ini :
package com.drawworks.threedee;
import com.raka.geoms.*;
……
public class Cube {
……
Rectangle r = new Rectangle ();
…..
}
…..
Gambar 16. Mengimpor class.
Jika pemrogram com.drawworks.threedee bermaksud menggunakan class-class yang terdapat
pada java.awt juga dimana terdapat juga class Rectangle, maka saat inilah digunaka fully qualified name.
seperti contoh dibawah ini :
package com.drawworks.threedee;
import com.raka.geoms.*;
import java.awt.*;
……
public class ThreeWorld extends Canvas {
……
com.raka.geoms.Rectangle r = new com.raka.geoms.Rectangle ();
…..
}
…..
Gambar 17. Fully Qualified Name
Package-package didalam harddisk dapat kita organisasikan dalam suatu struktur direktori.
File-file class anggota com.raka.geoms terkumpul dalam struktur direktori. Anda boleh mengambil
kesimpulan bahwa tiap-tiap suku kata pada nama package adalah nama sebuah direktori.
Tugas Statemen Pemrograman Java
PENANGANAN EKSEPSI
Eksepsi adalah keadaan tidak normal yang muncul pada suatu bagian program pada saat
dijalankan. Penanganan eksepsi pada java membawa pengelolaan kesalahan program saat dijalankan
kedalam orientasi-objek. Eksepsi java adalah objek yang menjelaskan suatu keadaan eksepsi yang
muncul pada suatu bagian program.
Saat suatu keadaan eksepsi muncul, suatu objek exception dibuat dan dimasukkan ke dalam
method yang menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi
berdasarkan tipe tertentu. Method ini juga menjaga agar tidak keluar terlalu dini melalui suatu eksepsi,
dan memiliki suatu blok program yang dijalankan tepat sebelum suatu eksepsi menyebabkan metodenya
kembali ke pemanggil.
Eksepsi dapat muncul tidak beraturan dalam suatu method, atau dapat juga dibuat secara
manual dan nantinya melaporkan sejumlah keadaan kesalahan ke method yang memanggil.
Dasar-dasar penanganan Eksepsi
Penanganan eksepsi pada java diatur dengan lima kata kunci : try, catch, throw, throws dan
finally. Pada dasarnya try digunakan untuk mengeksekusi suatu bagian program, dan jika muncul
kesalahan, sistem akan melakukan throw suatu eksepsi yang dapat anda catch berdasarkan
tipe eksepsinya, atau yang anda berikan finally dengan penangan default.
Berikut ini bentuk dasar bagian penanganan eksepsi :
try {
// Block of Code
}
catch (ExceptionType1 e) {
// Exception Handler for ExceptionType1
} catch (ExceptionType2 e) {
// Exception Handler for ExceptionTYpe2
throw (e); // re-throw the Exception…
}
finally {
}
Tipe Eksepsi
Dipuncak hirarki class eksepsi terdapat satu class yang disebut throwable. Class ini digunakan
untuk merepresentasikan semua keadaan ekasepsi. Setiap ExceptionType pada bentuk umum diatas
adalah subclass dari throwable.
Dua subclass langsung throwable didefinisikan untuk membagi class throwable menjadi dua
cabang yang berbeda. Satu, class Exception, digunakan untuk keadaan eksepsi yang harus ditangkap
oleh program yang kita buat. Sedangkan yang lain diharapkan dapat menangkap class yang kita
subclasskan untuk menghasilkan keadaan eksepsi.
Cabang kedua throwable adalah class error, yang mendefinisikan keadaan yang tidak
diharapkan untuk ditangkap dalam lingkungan normal.
Eksepsi Yang Tidak Dapat Ditangkap
Tugas Statemen Pemrograman Java
Obyek eksepsi secara otomatis dihasilkan oleh runtime java untuk menanggapi suatu keadaan
eksepsi. Perhatikan contoh berikut :
class Exc0 {
public static void main (Stinr args[]) {
int d = 0;
int a = 42 / d;
}
}
Saat runtime java mencoba meng-eksekusi pembagian, akan terlihat bahwa pembaginya adalah
nol, dan akan membentuk objek eksepsi baru yang menyebabkan program terhenti dan harus berurusan
dengan keadaan kesalahan tersebut. Kita belum mengkodekan suatu penangan eksepsi, sehingga
penanganan eksepsi default akan segera dijalankan. Keluaran dari program diatas :
java.lang.ArithmeticExpression : /by zero
at Exc0.main (Exc0.java:4)
Berikut adalah contoh lainnya dari eksepsi :
class Exc1 {
static void subroutine() {
int d = 0;
int a = 42 / d;
}
public static void main (Stinr args[]) {
Exc1.subroutine();
}
}
Output-nya :
java.lang.ArithmeticException : / by zero
at Exc1.subroutine(Exc1.java :4)
at Exc1.main(Exc1.java : 7)
Try dan Catch
Kata kunci try digunakan untuk menentukan suatu blok program yang harus dijaga terhadap
semua eksepsi, setelah blok try masukkan bagian catch, yang menentukan tipe eksepsi yang akan
ditangkap. Perhatikan contoh berikut :
class Exc2 {
public static void main (String args[]) {
try {
int d = 0;
int a = 42 / d;
}
catch (ArithmeticException e) {
System.out.println(“Division By Zero);
Tugas Statemen Pemrograman Java
}
}
}
Throw
Pernyataan throw digunakan untuk secara eksplisit melemparkan suatu eksepsi. Pertama kita
harus mendapatkan penanganan dalam suatu instance throwable, melalui suatu parameter kedalam
bagian catch, atau dengan membuatnya menggunakan operator new. Bentuk umum pernyataan throw
:
throw ThrowableInstance;
Aliran eksekusi akan segera terhenti setelah pernyataan throw, dan pernyataan selanjutnya
tidak akan dicapai. Blok try terdekat akan diperiksa untuk melihat jika telah memiliki bagian catch yang
cocok dengan tipe instance Throwable. Jika tidak ditemukan yang cocok, maka pengaturan dipindahkan
ke pernyataan tersebut. Jika tidak, maka blok pernyataan try selanjutnya diperiksa, begitu seterusnya
sampai penanganan eksepsi terluar menghentikan program dan mencetak penelusuran semua tumpukan
sampai pernyataan throw. Contoh :
class throwDemo {
static void demoProc() {
try {
throw new NullPointerException(“demo”);
}
catch (NullPointerException e) {
System.out.println(“caught inside demoproc…”);
throw e;
}
}
public static void main (String args[]) {
try {
demoproc();
}
catch (NullPointerException e) {
System.out.println(“recaugt : “ + e);
}
}
}
Output :
caught inside demoproc
recaught : java.lang.NullPointerException : demo
Throws
Kata kunci throws digunakan untuk mengenali daftar eksepsi yang mungkin di-throw oleh suatu
method. Jika tipe eksepsinya adalah error, atau RuntimeException, atau suatu subclassnya, aturan ini
tidak berlaku, karena tidak diharapkan sebagai bagian normal dari kerja program.
Tugas Statemen Pemrograman Java
Jika suatu method secara eksplisit men-throws suatu intans dari Exception atau subclassnya,
diluar RuntimeException, kita harus mendeklarasikan tipenya dengan pernyataan throws. ini
mendefinisikan ulang deklarasi method sebelumnya dengan sintaks sbb :
type method-name (arg-list) throws exception-list { }
Contoh :
class ThrowsDemo {
static void procedure () thorws IllegalAccessException {
System.out.println(“Inside Procedure”);
throw new IllegalAccessException(“demo”);
}
public static void main(String args[]) {
try {
procedure();
}
catch (IllegalAccessException e) {
System.out.println(“caught “+ e);
}
}
}
Output :
Inside procedure
caught java.lang.IllegalAccessException : demo
Finally
Saat suatu eksepsi dilemparkan, alur program dalam suatu method membuat jalur yang
cenderung tidak linier melalui method tersebut, melompati baris-baris tertentu, bahkan mungkin akan
keluar sebelum waktunya pada kasus dimana tidak ada bagian catch yang cocok. Kadang-kadang perlu
dipastikan bahwa bagian program yang diberikan akan berjalan, tidak perduli eksepsi apa yang terjadi
dan ditangkap. Kata kunci finally dapat digunakan untuk menentukan bagian program seperti itu.
Setiap try membutuhkan sekurang-kurangnya satu bagian catch atau finally yang cocok. Jika
kita tidak mendapatkan bagian catch yang cocok, maka bagian finally akan dieksekusi sebelum akhir
program, atau setiap kali suatu method akan kembali ke pemanggilnya, melalui eksepsi yang tidak dapat
ditangkap, atau melalui pernyataan return, bagian finally akan dieksekusi sebelum kembali ke method
kembali.
Berikut adalah contoh program yang menunjukkan beberapa method yang keluar dengan
berbagai cara, tidak satu pun tanpa mengeksekusi bagian finally-nyA.
class finallyDemo {
static void proA() {
try {
System.out.println(“Inside procA..”);
throw new RuntimeException(“Demo”);
}
finally {
System.out.println(“procA is finally”);
}
Tugas Statemen Pemrograman Java
}
static void proB() {
try {
System.out.println(“Inside procB..”);
return;
}
finally {
System.out.println(“procB is finally”);
}
}
public static void main(String args[]) {
try {
procA{};
}
catch (Exception e);
procB();
}
}
Output :
Inside procA..
procA is finally
Inside procB..
procB is finally
Multithreading
Banyak persoalan dalam pemrograman membutuhkan kemampuan suatu program untuk
melakukan beberapa hal sekaligus, atau memberikan penanganan segera terhadap suatu kejadian/ event
tertentu dengan menunda aktivitas yang sedang dijalankan untuk menangani event tersebut dan
akhirnya kembali melanjutkan aktivitas yang tertunda.
Contoh, dalam sistem aplikasi jaringan, kita dapat membuat suatu program melakukan
komputasi lokal dengan data yang sudah didapat dari jaringan, pada saat program tersebut menunggu
datangnya tambahan data dari jaringan. Tanpa multithreading, program tersebut harus melakukannya
secara sekuensial dalam sebuah alur program tunggal (yaitu alur control utama), yang diawali dengan
penantian tibanya keseluruhan data, baru kemudian komputasi. Pada masa penantian tersebut, komputer
berada pada keadaan idle yang menyebabkan ketidakefisienan pada keseluruhan program.
Dengan multithreading kita dapat menciptakan dua thread secara dinamis, yaitu thread yang
berjaga dipintu gerbang, menunggu masuknya data., dan thread yang melakukan komputasi lokal atas
data yang sudah tersedia.
Multithreading dan Java
Thread (seringkali disebut juga lightweight process atau execution context) adalah sebuah
singlesequentialflow of control didalam sebuah program. Secara sederhana, thread adalah sebuah
subprogram yang berjalan didalam sebuah program.
Tugas Statemen Pemrograman Java
Seperti halnya sebuah program, sebuah thread mempunyai awal dan akhir. Sebuah program
dapat mempunyai beberapa thread didalamnya. Jadi perbedaannya program yang multithreaded
mempunyai beberapa flow of control yang berjalan secara konkuren atau paralel sedangkan program
yang singlethreaded hanya mempunyai satu flow of control.
Sebuah Program
Gb.1. Dua thread dalam satu program
Dua program yang dijalankan secara terpisah ( dari command line secara terpisah ), berada
pada dua address space yang terpisah. Sebaliknya, kedua thread pada gambar diatas berada pada
address space yang sama (address space dari program dimana kedua thread tersebut dijalankan).
Kalau program itu berjalan diatas mesin dengan single processor, maka thread-thread itu
dijalankan secara konkuren(dengan mengeksekusi secara bergantian dari satu thread ke thread yang
lainnya). Jika program itu berjalan diatas mesin dengan multiple processor, maka thread-thread itu
bisa dijalankan secara paralel (masing-masing thread berjalan di processor yang terpisah).
Concurrency Parallelism
Time Time
Gb.2. Konkurensi dan parallelism
Thread
lainnya
Sebuah
Thread
Task 2Task I
T
a
s
k
1
T
a
s
k
2
Tugas Statemen Pemrograman Java
Gambar 2 dapat menjelaskan perbedaan antara konkurensi dan parallelism. Bahasa Java
mempunyai kemampuan multithreading built-in, pada Java Virtual Macjine terdapat thread scheduler
yang menentukan thread mana yang beraksi pada selang waktu tertentu. Scheduler pada JVM
mendukung preemptive multithreading, yaitu suatu thread dengan prioritas tinggi dapat menyeruak
masuk dan menginterupsi thread yang sedang beraksi, kemampuan ini sangat menguntungkan dalam
membuat aplikasi real-time.
Scheduler pada JVM juga mendukung non-preemptive multithreading I(atau sering disebut
juga cooperative multithreading), yaitu thread yang sedang beraksi tidak dapat diinterupsi, ia akan
menguasai waktu CPU, sampai ia menyelesaikan tugasnya atau secara eksplisit merelakan diri untuk
berhenti dan memberi kesempatan bagi thread yang lain.
Daur Hidup sebuah Thread
Gb.3. State-state dari thread
Newborn
Sevbuah thread berada pada state ini ketika dia di instantiasi. Sebuah ruangan dimemori telah
dialokasikan untuk thread itu,dan telah menyelesaikan tahap inisialisasinya.
………
Thread timerThread = new TimerThread();
……..
Pada state ini, timeThread belum masuk dalam skema penjadwalan thread scheduler.
Runnable
Pada state ini, sebuah thread berada dalam skema penjadwalan, akan tetapi dia tidak sedang
beraksi. Kita bisa membuat timerThread yang kita buat sebelumnya masuk ke state runnable dengan :
Blocked
RunningRunnable
Dead
New
Born
stop()
start()
resume()
notify()
yield()
stop()
stop()
suspend()
sleep()
wait()
Tugas Statemen Pemrograman Java
…..
timerThread.start();
……
Kapan tepatnya timerThread beraksi, ditentukan oleh thread scheduler.
Running
Pada state ini, thread sedang beraksi. Jatah waktu beraksi bagi thread ini ditentukan oleh
thread scheduler. Pada kasus tertentu, thread scheduler berhak meng-interupsikegiatan dari thread
yang seddang beraksi (misalnya ada thread lainnya dengan prioritas yang lebih tinggi).
Thread dalam keadaan running bisa juga lengser secara sukarela, dan masuk kembali ke state
runnable, sehingga thread lain yang sedang menunggu giliran(runnable) memperoleh kesempatan untuk
beraksi. Tinddakan thread yang lengser secara sukarela itu biasanya disebut yield-ing.
public void run() {
…….
Thread.yield();
…….
}
Blocked
Pada tahap inii thread sedang tidak beraksi dan diabaikan dalam penjadwalan thread
scheduler. Thread yang sedang terblok menunggu sampai syarat-syarat tertentu terpenuhi, sebelum ia
kembali masuk kedalam skema penjadwalan thread scheduler (masuk state runnable lagi). Suatu thread
menjadi terblok karena hal-hal berikut :
a. Thread itu tidur untuk jangka waktu tertentu, seperti berikut :
public void run() {
……
try {
thread.slepp(3000);
//thread yg sedang beraksi akan tidur selama 3000 milisecond=3menit
}
catch (InterruptedException e) {
…….
}
b. Thread itu di- suspend(). Thread yang ter-suspend() itu bisa masuk kembali ke state runnable
bila ia resume(). seperti hal berikut :
……
//timerThread akan segera memasuki state blocked
timerThread.suspend();
………
timerThread.resume();
//timerThread kembali masuk state runnable
……
c. Bila thread tersebut memanggil method wait() dari suatu object yang sedang ia kunci. Thread
tersebut bisa kembali memasuki state runnable bila ada thread lain yang memanggil method
notify() atau notifyAll() dari object tersebut.
d. Bila thread ini menunggu selesainya aktifitas yang berhubungan dengan I/O. Misalnya, jika
suatu thread menunggu datangnya bytes dari jaringan komputer maka secara otomatis thread
tersebut masuk ke state blocked.
Tugas Statemen Pemrograman Java
e. Bila suatu thread mencoba mengakses critical section dari suatu object yang sedang dikunci
oleh thread lain. Critical section adalah method/blok kode yang ditandai dengan kata
synchronized.
Dead
Suatu thread secara otomatis disebut mati bila method run() – nya sudah dituntaskan (return
dari method run() ). Contoh dibawah ini adalah thread yang akan mengecap state running hanya sekali
saat thread scheduler memberinya kesempatan untuk running, ia akan mencetak “ I‟m doing
something….something stupid….but I‟m proud of It”… kemudian mati.
public class MyThread extends Thread {
…..
public void run() {
System.out.print(“I‟m doing something…”);
System.out.print(“something stupid…”);
System.out.println(“but I‟m proud of It…”);
// MyThread akan mati begitu baris diatas selesai dieksekusi
}
……
}

More Related Content

What's hot

Laporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQL
Laporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQLLaporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQL
Laporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQLShofura Kamal
 
Dokumen Final Project Manajemen Proyek Perangkat Lunak
Dokumen Final Project Manajemen Proyek Perangkat LunakDokumen Final Project Manajemen Proyek Perangkat Lunak
Dokumen Final Project Manajemen Proyek Perangkat LunakAdam Alfian
 
Pertemuan 6 tabview
Pertemuan 6 tabviewPertemuan 6 tabview
Pertemuan 6 tabviewheriakj
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
Rpl 5-perencanaan proyek perangkat lunak
Rpl 5-perencanaan proyek perangkat lunakRpl 5-perencanaan proyek perangkat lunak
Rpl 5-perencanaan proyek perangkat lunakf' yagami
 
Pertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuPertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuheriakj
 
Fuzzy logic (Logika Fuzzy)
Fuzzy logic (Logika Fuzzy)Fuzzy logic (Logika Fuzzy)
Fuzzy logic (Logika Fuzzy)radar radius
 
Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)Fitria Hati
 
Tahapan pengembangan perangkat lunak
Tahapan pengembangan perangkat lunakTahapan pengembangan perangkat lunak
Tahapan pengembangan perangkat lunakRobbyyanto Robbyyanto
 
16.modul melakukan deployment model (final) v1 1
16.modul melakukan deployment model (final) v1 116.modul melakukan deployment model (final) v1 1
16.modul melakukan deployment model (final) v1 1ArdianDwiPraba
 
Interaksi Manusia Dan Komputer 10
Interaksi Manusia Dan Komputer 10Interaksi Manusia Dan Komputer 10
Interaksi Manusia Dan Komputer 10Hide Maru
 
Pengenalan Jurusan RPL
Pengenalan Jurusan RPLPengenalan Jurusan RPL
Pengenalan Jurusan RPLHerman Hambali
 
Perancangan perangkat lunak
Perancangan perangkat lunakPerancangan perangkat lunak
Perancangan perangkat lunakSahrul Sindriana
 

What's hot (20)

Laporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQL
Laporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQLLaporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQL
Laporan Praktikum Basis Data Modul I-Membangun Database SQL Pada MYSQL
 
Dokumen Final Project Manajemen Proyek Perangkat Lunak
Dokumen Final Project Manajemen Proyek Perangkat LunakDokumen Final Project Manajemen Proyek Perangkat Lunak
Dokumen Final Project Manajemen Proyek Perangkat Lunak
 
Pertemuan 6 tabview
Pertemuan 6 tabviewPertemuan 6 tabview
Pertemuan 6 tabview
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
Kelompok 3 incremental
Kelompok 3   incrementalKelompok 3   incremental
Kelompok 3 incremental
 
Rpl 5-perencanaan proyek perangkat lunak
Rpl 5-perencanaan proyek perangkat lunakRpl 5-perencanaan proyek perangkat lunak
Rpl 5-perencanaan proyek perangkat lunak
 
Pertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuPertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menu
 
Fuzzy logic (Logika Fuzzy)
Fuzzy logic (Logika Fuzzy)Fuzzy logic (Logika Fuzzy)
Fuzzy logic (Logika Fuzzy)
 
Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)Incremental development (pengembangan incremental)
Incremental development (pengembangan incremental)
 
Activity Diagram
Activity DiagramActivity Diagram
Activity Diagram
 
Tahapan pengembangan perangkat lunak
Tahapan pengembangan perangkat lunakTahapan pengembangan perangkat lunak
Tahapan pengembangan perangkat lunak
 
16.modul melakukan deployment model (final) v1 1
16.modul melakukan deployment model (final) v1 116.modul melakukan deployment model (final) v1 1
16.modul melakukan deployment model (final) v1 1
 
Graph-Struktur Data.pdf
Graph-Struktur Data.pdfGraph-Struktur Data.pdf
Graph-Struktur Data.pdf
 
Aljabar boolean
Aljabar booleanAljabar boolean
Aljabar boolean
 
Modul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUIModul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUI
 
Interaksi Manusia Dan Komputer 10
Interaksi Manusia Dan Komputer 10Interaksi Manusia Dan Komputer 10
Interaksi Manusia Dan Komputer 10
 
Pengenalan Jurusan RPL
Pengenalan Jurusan RPLPengenalan Jurusan RPL
Pengenalan Jurusan RPL
 
Perancangan perangkat lunak
Perancangan perangkat lunakPerancangan perangkat lunak
Perancangan perangkat lunak
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
 
[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak
 

Viewers also liked

contoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyacontoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyastephan EL'wiin Shaarawy
 
Desain dan analisis algoritma
Desain dan analisis algoritmaDesain dan analisis algoritma
Desain dan analisis algoritmaDiki Rosandy
 
Modul pengajaran analisa perancangan sistem informasi
Modul pengajaran analisa perancangan sistem informasiModul pengajaran analisa perancangan sistem informasi
Modul pengajaran analisa perancangan sistem informasiApriyanto_apo
 
Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02KuliahKita
 
Micro teaching konsep logika algoritma
Micro teaching konsep logika algoritmaMicro teaching konsep logika algoritma
Micro teaching konsep logika algoritmaApriyanto_apo
 
Algorithm & Data Structure - Algoritma Pengurutan
Algorithm & Data Structure - Algoritma PengurutanAlgorithm & Data Structure - Algoritma Pengurutan
Algorithm & Data Structure - Algoritma PengurutanDudy Ali
 
Mengintip Kompleksitas
Mengintip KompleksitasMengintip Kompleksitas
Mengintip KompleksitasIwan Pranoto
 
MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...
MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...
MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...Edzai Conilias Zvobwo
 
default_change.pdf
default_change.pdfdefault_change.pdf
default_change.pdfsptlove
 
The Laws of the Christian Life
The Laws of the Christian LifeThe Laws of the Christian Life
The Laws of the Christian LifeVictorias Church
 
Moz agric extension-contact-farmers_zambezi-valley
Moz agric extension-contact-farmers_zambezi-valleyMoz agric extension-contact-farmers_zambezi-valley
Moz agric extension-contact-farmers_zambezi-valleyIFPRI-Maputo
 
How to turn your marketing into a lead sucking vortext
How to turn your marketing into a lead sucking vortextHow to turn your marketing into a lead sucking vortext
How to turn your marketing into a lead sucking vortextBrightIdeas.co
 
Leveraging the AWS Cloud to Create Scalable Research Performance Analytics
Leveraging the AWS Cloud to Create Scalable Research Performance AnalyticsLeveraging the AWS Cloud to Create Scalable Research Performance Analytics
Leveraging the AWS Cloud to Create Scalable Research Performance AnalyticsHPCC Systems
 
INSPIRED Magazine Vol 02 Issue 01
INSPIRED Magazine Vol 02 Issue 01INSPIRED Magazine Vol 02 Issue 01
INSPIRED Magazine Vol 02 Issue 01Amy Bensema
 
Flailing terror
Flailing terrorFlailing terror
Flailing terrornemedian
 
The engagement formula
The engagement formula The engagement formula
The engagement formula Vikas Sinhmar
 
Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23
Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23
Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23Eyal Doron
 

Viewers also liked (20)

contoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyacontoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnya
 
Desain dan analisis algoritma
Desain dan analisis algoritmaDesain dan analisis algoritma
Desain dan analisis algoritma
 
Analisis algoritma
Analisis algoritmaAnalisis algoritma
Analisis algoritma
 
Modul pengajaran analisa perancangan sistem informasi
Modul pengajaran analisa perancangan sistem informasiModul pengajaran analisa perancangan sistem informasi
Modul pengajaran analisa perancangan sistem informasi
 
Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02Matematika Diskrit - 11 kompleksitas algoritma - 02
Matematika Diskrit - 11 kompleksitas algoritma - 02
 
Micro teaching konsep logika algoritma
Micro teaching konsep logika algoritmaMicro teaching konsep logika algoritma
Micro teaching konsep logika algoritma
 
Algorithm & Data Structure - Algoritma Pengurutan
Algorithm & Data Structure - Algoritma PengurutanAlgorithm & Data Structure - Algoritma Pengurutan
Algorithm & Data Structure - Algoritma Pengurutan
 
Mengintip Kompleksitas
Mengintip KompleksitasMengintip Kompleksitas
Mengintip Kompleksitas
 
MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...
MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...
MathsGenius Leadership Institute (MGLI) solving Africa's quantitative leaders...
 
default_change.pdf
default_change.pdfdefault_change.pdf
default_change.pdf
 
The Laws of the Christian Life
The Laws of the Christian LifeThe Laws of the Christian Life
The Laws of the Christian Life
 
Moz agric extension-contact-farmers_zambezi-valley
Moz agric extension-contact-farmers_zambezi-valleyMoz agric extension-contact-farmers_zambezi-valley
Moz agric extension-contact-farmers_zambezi-valley
 
How to turn your marketing into a lead sucking vortext
How to turn your marketing into a lead sucking vortextHow to turn your marketing into a lead sucking vortext
How to turn your marketing into a lead sucking vortext
 
Leveraging the AWS Cloud to Create Scalable Research Performance Analytics
Leveraging the AWS Cloud to Create Scalable Research Performance AnalyticsLeveraging the AWS Cloud to Create Scalable Research Performance Analytics
Leveraging the AWS Cloud to Create Scalable Research Performance Analytics
 
INSPIRED Magazine Vol 02 Issue 01
INSPIRED Magazine Vol 02 Issue 01INSPIRED Magazine Vol 02 Issue 01
INSPIRED Magazine Vol 02 Issue 01
 
Flailing terror
Flailing terrorFlailing terror
Flailing terror
 
The engagement formula
The engagement formula The engagement formula
The engagement formula
 
Filelist
FilelistFilelist
Filelist
 
Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23
Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23
Exchange 2013 coexistence | Autodiscover infrastructure | Part 2/2 | 12#23
 
Bullying
BullyingBullying
Bullying
 

Similar to TUGAS

Similar to TUGAS (20)

Rangkuman tentang java
Rangkuman tentang javaRangkuman tentang java
Rangkuman tentang java
 
Materi java merancang aplikasi teks dan dekstop berbasis obyek
Materi java merancang aplikasi teks dan dekstop berbasis obyekMateri java merancang aplikasi teks dan dekstop berbasis obyek
Materi java merancang aplikasi teks dan dekstop berbasis obyek
 
Java netbeans
Java netbeansJava netbeans
Java netbeans
 
Makalah java
Makalah javaMakalah java
Makalah java
 
Makalah java
Makalah javaMakalah java
Makalah java
 
Makalah java
Makalah javaMakalah java
Makalah java
 
Makalah java
Makalah javaMakalah java
Makalah java
 
Makalah java
Makalah javaMakalah java
Makalah java
 
Pert 2 PBO
Pert 2 PBOPert 2 PBO
Pert 2 PBO
 
Pengenalan_Materi-Paradigman_PBO-fix.pptx
Pengenalan_Materi-Paradigman_PBO-fix.pptxPengenalan_Materi-Paradigman_PBO-fix.pptx
Pengenalan_Materi-Paradigman_PBO-fix.pptx
 
Pengenalan pemrograman java
Pengenalan pemrograman javaPengenalan pemrograman java
Pengenalan pemrograman java
 
Pengenalan pemrograman java
Pengenalan pemrograman javaPengenalan pemrograman java
Pengenalan pemrograman java
 
JAVA
JAVAJAVA
JAVA
 
Jeni Intro1 Bab02 Pengenalan Bahasa Java
Jeni Intro1 Bab02 Pengenalan Bahasa JavaJeni Intro1 Bab02 Pengenalan Bahasa Java
Jeni Intro1 Bab02 Pengenalan Bahasa Java
 
Modul2 - Pengenalan Bahasa Java
Modul2 - Pengenalan Bahasa JavaModul2 - Pengenalan Bahasa Java
Modul2 - Pengenalan Bahasa Java
 
Jeni intro1-bab02-pengenalan bahasa java
Jeni intro1-bab02-pengenalan bahasa javaJeni intro1-bab02-pengenalan bahasa java
Jeni intro1-bab02-pengenalan bahasa java
 
PPT JAVA
PPT JAVAPPT JAVA
PPT JAVA
 
Java1
Java1Java1
Java1
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 

More from roji muhidin

More from roji muhidin (14)

Printer
PrinterPrinter
Printer
 
Tugas imk
Tugas imkTugas imk
Tugas imk
 
Makalah statistik
Makalah statistikMakalah statistik
Makalah statistik
 
tugas pengamatan terhadap sebuah website
tugas pengamatan terhadap sebuah websitetugas pengamatan terhadap sebuah website
tugas pengamatan terhadap sebuah website
 
Alat input output
Alat input outputAlat input output
Alat input output
 
E Commerce
E CommerceE Commerce
E Commerce
 
Uu ite
Uu iteUu ite
Uu ite
 
Kelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engineKelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engine
 
Makalah printer
Makalah printerMakalah printer
Makalah printer
 
Makalah graph
Makalah graphMakalah graph
Makalah graph
 
Makalah kewirausahaan
Makalah kewirausahaanMakalah kewirausahaan
Makalah kewirausahaan
 
Makalah manajemen
Makalah manajemenMakalah manajemen
Makalah manajemen
 
Makalah hardisk
Makalah hardiskMakalah hardisk
Makalah hardisk
 
Spek komputer
Spek komputerSpek komputer
Spek komputer
 

Recently uploaded

UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...
UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...
UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...jumadsmanesi
 
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxIPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxErikaPuspita10
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxalalfardilah
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdfShintaNovianti1
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxsudianaade137
 
Catatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus PerilakuCatatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus PerilakuHANHAN164733
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...Kanaidi ken
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxherisriwahyuni
 
MATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptx
MATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptxMATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptx
MATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptxrofikpriyanto2
 
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2noviamaiyanti
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaSABDA
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxmtsmampunbarub4
 
Membuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam KelasMembuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam KelasHardaminOde2
 
SILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docxSILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docxrahmaamaw03
 
Demonstrasi Kontekstual Modul 1.2. pdf
Demonstrasi Kontekstual  Modul 1.2.  pdfDemonstrasi Kontekstual  Modul 1.2.  pdf
Demonstrasi Kontekstual Modul 1.2. pdfvebronialite32
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxarnisariningsih98
 
Materi Lingkaran kelas 6 terlengkap.pptx
Materi Lingkaran kelas 6 terlengkap.pptxMateri Lingkaran kelas 6 terlengkap.pptx
Materi Lingkaran kelas 6 terlengkap.pptxshafiraramadhani9
 
Edukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiEdukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiIntanHanifah4
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docxbkandrisaputra
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxDwiYuniarti14
 

Recently uploaded (20)

UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...
UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...
UNGGAH PEGANGAN LOKAKARYA DAN PENDAMPINGAN INDIVIDU DALAM KEGIATAN PEMBEKALAN...
 
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxIPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
 
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptxPPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
PPT_AKUNTANSI_PAJAK_ATAS_ASET_TETAP.pptx
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
 
Catatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus PerilakuCatatan di setiap Indikator Fokus Perilaku
Catatan di setiap Indikator Fokus Perilaku
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
 
MATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptx
MATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptxMATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptx
MATERI 1_ Modul 1 dan 2 Konsep Dasar IPA SD jadi.pptx
 
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
PRESENTASI PEMBELAJARAN IPA PGSD UT MODUL 2
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
 
Membuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam KelasMembuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
Membuat Strategi Penerapan Kurikulum Merdeka di dalam Kelas
 
SILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docxSILABUS MATEMATIKA SMP kurikulum K13.docx
SILABUS MATEMATIKA SMP kurikulum K13.docx
 
Demonstrasi Kontekstual Modul 1.2. pdf
Demonstrasi Kontekstual  Modul 1.2.  pdfDemonstrasi Kontekstual  Modul 1.2.  pdf
Demonstrasi Kontekstual Modul 1.2. pdf
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
 
Materi Lingkaran kelas 6 terlengkap.pptx
Materi Lingkaran kelas 6 terlengkap.pptxMateri Lingkaran kelas 6 terlengkap.pptx
Materi Lingkaran kelas 6 terlengkap.pptx
 
Edukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiEdukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajii
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docx
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
 

TUGAS

  • 1. Tugas Pemrograman Structur & Statement Programing Java Di Susun Oleh : Nama : Roji Muhidin NIM : 1202080 STIMIK MUHAMMADIYAH BANTEN 2014
  • 2. Tugas Statemen Pemrograman Java JAVA Sejarah Singkat Perkembangan JAVA Proyek Java dimulai pada tahun 1991, ketika sejumlah insinyur perusahaan Sun yang dimotori oleh James Gosling mempunyai keinginan untuk mendesain sebuah bahasa komputer kecil yang dapat dipergunakan untuk peralatan konsumen seperti kotak tombol saluran TV. Proyek ini kemudian diberi nama sandi Green. Keharusan untuk membuat bahasa yang kecil , dan kode yang ketat mendorong mereka untuk menghidupkan kembali model yang pernah dicoba oleh bahasa UCSD Pascal, yaitu mendesain sebuah bahasa yang portable yang menghasilkan kode intermediate. Kode intermediate ini kemudian dapat digunakan pada banyak komputer yang interpreternya telah disesuaikan. Karena orang-orang Sun memiliki latar belakang sebagai pemakai unix sehingga mereka lebih menggunakan C++ sebagai basis bahasa pemrograman mereka, maka mereka secara khusus mengembangkan bahasa yang berorientasi objek bukan berorientasi prosedur. Seperti yang dikatakan Gosling ”Secara keseluruhan, bahasa hanyalah sarana, bukan merupakan tujuan akhir”. Dan Gosling memutuskan menyebut bahasanya dengan nama “Oak” (diambil dari nama pohon yang tumbuh tepat diluar jendela kantornya di Sun), tetapi kemudian nama Oak diubah menjadi java, karena nama Oak merupakan nama bahasa komputer yang sudah ada sebelumnya. Pada tahun 1994 sebagian besar orang menggunakan mosaic, browser web yang tidak diperdagangkan yang berasal dari pusat Supercomputing Universitas Illinois pada tahun 1993.( Mosaic sebagian ditulis oleh Marc Andreessen dengan bayaran $6.85 per jam, sebagai mahasiswa yang melakukan studi praktek. Di kemudian hari ia meraih ketenaran sebagai salah seorang pendiri dan pemimpin teknologi di netscape) Browser yang sesungguhnya dibangun oleh Patrick Naughton dan Jonathan Payne dan berkembang ke dalam browser HotJava yang kita miliki saat ini. Browser HotJava ditulis dalam Java untuk menunjukkan kemampuan Java. Tetapi para pembuat juga memiliki ide tentang suatu kekuatan yang saat ini disebut dengan applet, sehingga mereka membuat browser yang mampu penerjemahkan kode byte tingkat menengah. “Teknologi yang Terbukti” ini diperlihatkan pada SunWorld ‟95 pada tanggal 23 mei 1995, yang mengilhami keranjingan terhadap Java terus berlanjut. Kriteria “Kertas Putih” Java Penulis Java telah menulis pengaruh “Kertas Putih” yang menjelaskan tujuan rancangan dan keunggulannya. Kertas mereka disusun lewat 11 kriteria berikut : Sederhana (Simple) Syntax untuk Java seperti syntax pada C++ tetapi syntax Java tidak memerlukan header file, pointer arithmatic (atau bahkan pointer syntax), struktur union, operator overloading, class virtual base, dan yang lainnya. Jika anda mengenal C++ dengan baik, maka anda dapat berpindah ke syntax Java dengan mudah tetapi jika tidak, anda pasti tidak berpendapat bahwa Java sederhana. Berorientasi Objek (Object Oriented) Rancangan berorientasi objek merupakan suatu teknik yang memusatkan rancangan pada data (objek) dan interface. Fasilitas pemrograman berorientasi objek pada Java pada dasarnya adalah sama
  • 3. Tugas Statemen Pemrograman Java dengan C++. Feature pemrograman berorientasi objek pada Java benar-benar sebanding dengan C++, perbedaan utama antara Java dengan C++ terletak pada penurunanberganda (multiple inheritance), untuk ini Java memiliki cara penyelesaian yang lebih baik. Terdistribusi (Distributed) Java memiliki library rutin yang luas untuk dirangkai pada protokol TCP/IP sepetrti HTTP dan FTP dengan mudah. Aplikasi Java dapat membuka dan mengakses objek untuk segala macam NET lewat URL sama mudahnya seperti yang biasa dilakukan seorang programmer ketika mengakses file sistem secara lokal. Kuat (Robust) Java dimaksudkan untuk membuat suatu program yang benar-benar dapat dipercaya dalam berbagai hal. Java banyak menekankan pada pengecekan awal untuk kemungkinan terjadinya masalah, pengecekan pada saat run0time dan mengurangi kemungkinan timbulnya kesalahan (error). Perbedaan utama antara Java dan C++ adalah Java memiliki sebuah model pointer yang mengurangi kemungkinan penimpaan (overwriting) pada memory dan kerusakan data (data corrupt). Aman (Secure) Java dimaksudkan untuk digunakan pada jaringan terdistribusi. Sebelum sampai pada bagian tersebut, penekanan terutama ditujukan pada masalah keamanan. Java memungkinkan penyusunan program yang bebas virus, sistem yang bebas dari kerusakan. Netral Arsitektur (Architecture Neutral) Kompiler membangkitkan sebuah format file dengan objek arsitektur syaraf, program yang di kompile dapat dijalankan pada banyak prosesor, disini diberikan sistem run time dari Java. Kompiler Java melakukannya dengan membangkitkan instruksi-instruksi kode byte yang tidak dapat dilakukan oleh arsitektur komputer tertentu. Dan yang lebih baiik Java dirancang untuk mempermudah penterjemahan pada banyak komputer dengan mudah dan diterjemahkan pada komputer asal pada saat run-time. Portabel (Portable) Tidak seperti pada C dan C++, di Java terdapat ketergantungan pada saat implementasi (implement dependent). ukuran dari tipe data primitif ditentukan, sebagaimana kelakuan aritmatik padanya. Librari atau pustaka merupakan bagian dari sistem yang mendefinisikan interface yang portabel. Interpreter Interpreter Java dapat meng-eksekusi kode byte Java secara langsung pada komputer- komputer yang memiliki interpreter. Dan karena proses linking dalam Java merupakan proses yang kenaikannya tahap demi tahapdan berbobot ringan, maka proses pengembangan dapat menjadi lebih cepat dan masih dalam penelitian. Kinerja Yang Tinggi (High Performance) Meskipun kinerja kode byte yang di interpretasi biasanya lebih dari memadai, tetapi masih terdapat situasi yang memerlukan kinerja yang lebih tinggi. Kode byte dapat diterjemahkan (pada saat run-time) de dalam kode mesin untuk CPU tertentu dimana aplikasi sedang berjalan. Multithreaded Multithreading adalah kemampuan sebuah program untuk melakukan lebih dari satu pekerjaan sekaligus. Keuntunga dari multithreading adalah sifat respons yang interaktif dan real-time.
  • 4. Tugas Statemen Pemrograman Java Dinamis Dalam sejumlah hal, Java merupakan bahasa pemrograman yang lebih dinamis dibandingkan dengan C atau C++. Java dirancang untuk beradaptasi dengan lingkungan yang terus berkembang. Librari dapat dengan mudah menambah metode dan variabel contoh yang baru tanpa banyak mempengaruhi klien. Informasi tipr run-time dalam Java adalah langsung (straigtforward). Java Keywords Abstract Abstract merupakan keyword yang digunakan untuk menyatakan kelas atau metode untuk menjadi abstract. Metode ini tidak memiliki implementasi, semua kelas yang berisi metode abstract harus dari mereka abstrak, walaupun tidak semua kelas abstrak memiliki metode abstrak. Objek dari kelas abstrak tidak dapat instantiated, tetapi dapat diperpanjang oleh kelas lain. Semua subclass dari kelas abstrak harus menyediakan implementasi untuk semua metode abstrak, atau juga harus abstrak. Contoh penggunaan Abstract pada program : abstract class Demo { // An abstract class may include abstract methods, which have no implementation. abstract public int sum(int x, int y); // An abstract class may also include concrete methods. public int product(int x, int y) { return x*y; } } interface DemoInterface { // All methods in an interface are abstract. int getLength(); } Assert Assert merupakan keyword digunakan untuk membuat pernyataan yang programmer percaya selalu benar di titik dalam suatu program. Jikapernyataan akan diaktifkan ketika program dijalankan dan ternyata bahwa pernyataan adalah palsu, keyword ini dimasukkan untuk membantu dalam debugging. Syntax : assert expression1 [: expression2]; Contoh Penggunaan dalam program : int total = countNumberOfUsers(); if (total % 2 == 0) { // total is even
  • 5. Tugas Statemen Pemrograman Java } else { // total is odd and non-negative assert(total % 2 == 1); } Boolean Boolean digunakan untuk menyatakan variable yang dapat menyimpan nilai boolean yaitu benar atau salah. Syntax dan contoh penggunaan : boolean nama_variable; boolean code = 1; if(code = 1) { System.out.println(―Benar‖); }else { System.out.println(―Salah‖); } Break Break merupakan keyword yang digunakan untuk melanjutkan eksekusi program ke statement selanjutnya segera setelah selesai mengeksekusi suatu statement. Syntax dan contoh penggunaan : class TestBreak{ public static void main(String[] args){ System.out.println(―Sebelum for‖); for(int x=0;x<10;x++){ if(x==4) break; System.out.pritnln(―Nilai x : ‖+x); } System.out.println(―Setelah For‖); } } Byte Byte adalah keyword yang digunakan untuk menyatakan suatu variabel yang dapat menyimpan data integer sebanyak 8-bit. Selain itu keyword ini juga digunakan untuk
  • 6. Tugas Statemen Pemrograman Java menyatakan bahwa suatu metode mengembalikan nilai tipe byte. Contoh penggunaan : byte x = 60; Case Case digunakan untuk membuat kasus-kasus individu dalam pernyataan switch. Contoh penggunaan : int i = 3; switch(i) { case 1: System.out.println(―The number is 1.‖); break; case 2: System.out.println(―The number is 2.‖); break; case 3: System.out.println(―The number is 3.‖); // this line will print break; case 4: System.out.println(―The number is 4.‖); break; case 5: System.out.println(―The number is 5.‖); break; default: System.out.println(―The number is not 1, 2, 3, 4, or 5.‖); } Catch Keyword adalah sebuah blok satement yang dieksekusi jika pengecualian dijalankan pada blok pendefinisian oleh keyword try sebelumnya. Contoh penggunaan : try { //… throw new MyException_1(); //… } catch ( MyException_1 e ) { // — Handle the Exception_1 here — } catch ( MyException_2 e ) { // — Handle the Exception_2 here — }
  • 7. Tugas Statemen Pemrograman Java Char Keyword char digunakan untuk menyatakan variable yang dapat menyimpan data karakter sebanyak 16-bit. Contoh penggunaannya : char code=‘a'; Class Keyword class digunakan untuk mendefinisikan dan mengimplementasikan berbagai macam objek didalamnya. Berikut contoh penggunaannya: public class PersegiPanjang { float lebar; float panjang; … Const Keyword Const tidak digunakan dan tidak memiliki fungsi. Continue Keyword continue digunakan untuk melanjutkan eksekusi program pada akhir pengulangan. Berikut contoh penggunaannya : int maxLoopIter = 7; for (int i = 0; i < maxLoopIter; i++ ) { if (i == 5) { continue; // — 5 iteration is skipped — } System.println(―Iteration = ‖ + i); }
  • 8. Tugas Statemen Pemrograman Java Default Keyword default dapat digunakan dalam pernyataan switch untuk label blok pernyataan yang akan dieksekusi jika case tidak sesuai dengan nilai tertentu. Contoh Penggunaannya : public class Test { public static void main(String args[]){ //char grade = args[0].charAt(0); char grade = ‗C'; switch(grade) { case ‗A‘ : System.out.println(―Memuaskan!‖); break; case ‗B‘ : case ‗C‘ : System.out.println(―Bagus‖); break; case ‗D‘ : System.out.println(―Cukup‖); case ‗F‘ : System.out.println(―Coba lagi‖); break; default : System.out.println(―Invalid grade‖); } System.out.println(―Grade anda adalah ‖ + grade); } } Do Keyword do digunakan bersama dengan while untuk membuat do-while pengulangan, yang mengeksekusi suatu blok statemen berkaitan dengan pengulangan dan kemudian tes ekspresi boolean, jika pernyataan bernilai true, pemgulangan dijalankan lagi, ini terus sampai ekspresi bernilai false. Contoh penggunaannya : public class Test {
  • 9. Tugas Statemen Pemrograman Java public static void main(String args[]){ int a = 5; do{ System.out.print(―nilai a : ‖ + a ); a++; System.out.print(―n‖); }while( a < 10 ); } } Double Keyword double digunakan untuk menyatakan variable dapat menampung 64-bit tipe data float. syntax: duble nama_variabel= nilai_variabel; Else Keyword lain yang digunakan bersama dengan if untuk membuat pernyataan jika-lain, yang menguji suatu ekspresi boolean, jika ekspresi bernilai true, blok pernyataan terkait dengan jika dievaluasi, jika mengevaluasi ke false blok, dari laporan terkait dengan lain dievaluasi . Contoh penggunaan if dapat dilihat pada contoh dipembahasan keyword if Enum Enum merupakan keyword yang digunakan untuk mendeklarasikan tipe enumerasi. Enumerations memperpanjang kelas dasar Enum. Contoh penggunaan : /** Grades of courses */ enum Grade { A, B, C, D, F }; // … private Grade gradeA = Grade.A; Extends Keyword extends digunakan bila terjadi pewarisan, kelas yang mewariskan method dan attributenya disebut kelas super, sedangkan yang diwariskan disebut subkelas. Syntax dan contoh penggunaannya :
  • 10. Tugas Statemen Pemrograman Java Public class subclass extends superclass { } Public class Siswa extends Sekolah { } Final Dengan keyword ini kelas tidak dapat menurunkan kelas lain, method tidak dapat dioverride oleh method lain, membentuk suatu attribute menjadi konstanta. Finally Keyword finally digunakan untuk mendefinisikan suatu blok statemen untuk blok yang ditetapkan sebelumnya dengan keyword try. Float Digunakan untuk menyatakan variable dapat menampung 32-bit tipe data decimal. Contoh penggunaannya : float phi = 3.14; For Keyword for digunakan untuk membuat untuk pengulangan, yang menetapkan inisialisasi variabel, ekspresi boolean, dan suatu incrementation. Inisialisasi variabel dilakukan terlebih dahulu, kemudian ekspresi boolean dievaluasi. Jika ekspresi bernilai true, blok pernyataan yang berhubungan dengan pengulangan dijalankan, dan kemudian incrementation yang dilakukan. Ekspresi boolean kemudian dievaluasi lagi, ini terus sampai ekspresi bernilai false . Berikut contoh penggunaannya : for ( int i=0; i < 5; i++ ) { System.println(―i ke-‖ +i); } Goto Meskipun tercantum sebagai keyword di Java, goto tidak digunakan dan tidak memiliki fungsi.
  • 11. Tugas Statemen Pemrograman Java If Keyword if digunakan untuk menguji suatu ekspresi boolean, jika ekspresi bernilai true, blok statement yang berhubungan akan dieksekusi. Keyword ini juga dapat digunakan untuk membuat pernyataan if-else. Berikut contoh penggunaany : if(harga > 50000) { System.println(―Harganya Mahal‖); } else { System.println(―Harganya Murah‖); } Implements Implements termasuk dalam sebuah deklarasi kelas untuk menentukan satu atau lebih interface yang diimplementasikan oleh kelas saat ini. Kelas A mewarisi jenis dan metode abstrak dinyatakan oleh interface. Syntax : public class MyClass implements MyInterface1, MyInterface2 { … } Import Keword Import digunakan pada awal sebuah file sumber untuk menentukan kelas atau seluruh paket JAVA untuk disebut kemudian tanpa termasuk paket-paket mereka nama- nama dalam referensi. Sejak J2SE 5.0, pernyataan impor dapat mengimpor anggota statis dari sebuah kelas. Syntax : import package.JavaClass; import package.*; Instanceof Instanceof merupakan sebuah operator biner yang menggunakan sebuah referensi obyek sebagai operan pertama dan kelas atau antarmuka sebagai operan kedua dan menghasilkan hasil boolean. Operator instanceof bernilai true jika dan hanya jika jenis objek runtime adalah tugas kompatibel dengan kelas atau interface.
  • 12. Tugas Statemen Pemrograman Java Int Int digunakan untuk menyatakan variable dapat menampung 32-bit tipe data bilangan asli. Contoh penggunaan : int x = 54; Interface Merupakan kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. Interface digunakan bila Anda ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance. Tipe data yang boleh pada interface hanya tipe data konstan. Setelah mengetahui apa itu interface. Syntax : public interface SampleInterface { public void method1(); //… } Long Long igunakan untuk mendeklarasikan variabel yang dapat menampung 64-bit ditandatangani melengkapi dua itu integer. long x = 567575764563; Native Native digunakan dalam deklarasi metode untuk menentukan bahwa metode ini tidak diimplementasikan dalam file sumber Java yang sama, melainkan dalam bahasa lain . Syntax : [public|protected|private] native method(); New
  • 13. Tugas Statemen Pemrograman Java Digunakan untuk membuat sebuah instance dari kelas atau array / obyek. Syntax : JavaType variabel = new javaobject(); Package Packege merupakan sekelompok jenis. Paket dinyatakan dengan keyword package. Contoh penggunaan : package com.mycompany.code; public class MyClass { } Private Dengan keyword ini kelas/method/attribute tidak bisa diakses oleh kelas lain bahkan juga tidak dapat diturunkan. Syntax : private void method(); Protected Dengan keyword ini kelas/method/attribute dapat diakses oleh kelas lain yang satu package atau kelas lain tersebut merupakan turunannya. Contoh penggunaannya : public class StudentRecord { //akses pada variabel protected int name; //akses dasar terhadap metode protected String getName () { return name; } Public Public merupakan keyword dimana dengan keyword ini kelas/method/attribute dapat diakses oleh kelas lain dimanapun. Return
  • 14. Tugas Statemen Pemrograman Java Keyword ini digunakan untuk keluar dari suatu method. Baris – baris program setelah keyword ini yang berada dalam blok method tersebut akan diabaikan. Kemudian eksekusi dilanjutkan ke pernyataan setelah blok method tersebut. Contoh penggunaan dalam program : public int myIntMethod() { int y = 5; return(y); } Short Short digunakan untuk menyatakan variable dapat menampung 16-bit tipe data integer. Contoh : short a = 5; Static Dengan keyword ini method dan attribute milik kelas menjadi sifat bersama dari semua objek dalam kelas tersebut (tidak memerlukan instansiasi dan tidak bisa dioverride). Contoh penggunaannya: public class Car { static String color; static void beep() { //beep beep! } void brake() { // stop } } Strictfp Keyword ini digunakan untuk membatasi presisi dan pembulatan perhitungan floating point untuk memastikan portabilitas. Super Keyword super igunakan untuk mengakses anggota kelas diwariskan oleh kelas di mana
  • 15. Tugas Statemen Pemrograman Java ia muncul. Memungkinkan subclass untuk mengakses ditimpa metode dan anggota tersembunyi dari superclassnya. Keyword super juga digunakan untuk meneruskan panggilan dari konstruktor ke konstruktor di superclass. Switch Keyword switch digunakan dengan case dan default, yang akan memeriksa sebuah variabel, dan mengeksekusi blok pernyataan yang sama dengan case tersebut. Contoh switch dapat dilihat pada pembahasan case. Synchronized Synchronized digunakan dalam deklarasi metode atau blok kode untuk memperoleh kunci mutex untuk objek while thread saat mengeksekusi kode . Untuk metode statis, objek terkunci adalah Kelas kelas. Jaminan bahwa paling banyak satu thread pada waktu operasi pada obyek yang sama mengeksekusi kode tersebut. Kunci mutex secara otomatis dilepaskan ketika keluar eksekusi kode disinkronisasi. Fields, kelas dan interface tidak dapat dinyatakan sebagai disinkronisasi. This This merupakan keyword yang digunakan untuk menyatakan objek sekarang dan tanpa instansiasi. Throw Throw enyebabkan deklarasi pengecualian. Hal ini menyebabkan eksekusi untuk melanjutkan dengan pengecualian penangan melampirkan pertama dinyatakan oleh keyword catch untuk menangani tipe pengecualian tugas kompatibel. Jika tidak ada handler pengecualian tersebut ditemukan dalam metode saat ini, maka kembali metode dan proses ini diulang dalam metode panggilan. Jika tidak ada handler pengecualian ditemukan dalam setiap pemanggilan metode di stack, maka pengecualian dilewatkan ke handler pengecualian tidak tertangkap thread ini. Throws Keyword throws digunakan dalam deklarasi metode untuk menentukan pengecualian tidak ditangani dalam metode melainkan diteruskan ke tingkat yang lebih tinggi berikutnya program. Semua pengecualian tidak tertangkap dalam sebuah metode yang tidak case RuntimeException harus dideklarasikan menggunakan keyword throws. Transient Transient menyatakan bahwa medan contoh bukan bagian dari default serial bentuk
  • 16. Tugas Statemen Pemrograman Java objek. Ketika suatu objek serial, hanya nilai-nilai non-fana bidang misalnya dimasukkan dalam representasi serial default. Ketika suatu objek deserialized, while bidang diinisialisasi hanya untuk nilai default mereka. Jika bentuk standar tidak digunakan, misalnya ketika sebuah tabel serialPersistentFields ini dideklarasikan pada hirarki kelas, semua keyword while diabaikan. Try Keyword try endefinisikan suatu blok statemen yang memiliki penanganan eksepsi. Jika eksepsi dilemparkan di dalam blok try, sebuah blok catch opsional dapat menangani jenis pengecualian dideklarasikan. Juga, sebuah blok akhirnya opsional dapat dideklarasikan yang akan dijalankan ketika eksekusi keluar dari blok mencoba dan menangkap klausa, terlepas dari apakah eksepsi dilemparkan atau tidak. Sebuah try blok harus memiliki minimal satu klausa catch atau finally blok. Void Void merupakan keyword yang merupakan tipe jenis return value dimana method yang menggunakan keyword ini tidak mengembalikan nilai apapaun setelah dipanggil atau dieksekusi. Contoh penggunaanya : public void method() { //… return; // — In this case the return is optional } Volatile Keyword volatile digunakan dalam deklarasi lapangan untuk menentukan bahwa variabel yang diubah asynchronously oleh bersamaan menjalankan thread. Metode, kelas dan interface sehingga tidak dapat dideklarasikan volatile. While Keyword while digunakan untuk membuat pengulangan while, yang menguji suatu ekspresi boolean dan mengeksekusi blok pernyataan yang berhubungan dengan pengulangan jika ekspresi bernilai true, sampai ekspresi bernilai salah. Keyword ini juga dapat digunakan untuk membuat pengulangan do-while. Contoh penggunaan keyword while while ( i < maxLoopIter ) {
  • 17. Tugas Statemen Pemrograman Java System.println(―Iter=‖ +i++); } Bagaimana Java Lebih Baik daripada C++ ? Prinsip dasar pembuatan Java adalah karena C++ ternyata tidak memenuhi janji sebagai pemrograman berorientasi objek. Jadi apa yang salah dari C++ sehingga Java harus dibuat ? Jawabannya sederhana, yaitu Kompatibilitas ke belakang ( backward compability). Kompabilitas kebelakang biasanya dikenal sebagai kemampuan yang menjamin keberhasilan dengan membuat programmer belajar dengan cepat. Java menggunakan hampir semua konvensi yang identik untuk deklarasi variabel, melewatkan parameter, operator dan pengaturan aliran. Sehingga dengan kata lain Java menambahkan bagian-bagian yang baik dari C++ dan menghapus bagian-bagian yang jelek dari C. Java jauh lebih baik dari C++ karena hal-hal yang tidak dimilikinya, seperti beberapa contoh berikut: Variabel Global Para programmer menulis program dalam bahasa assembly, dan semua program yang disimpan dalan punch card, penghubung alat pemrograman adalah variabel global, masalahnya, dengan menggunakan variabel blobal suatu fungsi dapat memberikan efek samping yang buruk dengan mengubah keadaan global. Variabel global pada C++ adalah tanda sebuah program yang tidak dirancang cukup baik untuk enkapsulasi data dengan cara yang masuk akal. Pada Java, ruang penamaan global hanya hirarki class. Tidak mungkin menciptakan variabel global diluar semua class. Setidaknya penentuan keadaan global dibuat lebih jelas dengan enkapsulasi dalam class. Contoh, system.out.println() sering digunakan dalam program Java. Ini adalah cara mengakses output standar global untuk interpreter Java. Goto Beberapa kemampuan yang digunakan sebagai cara cepat untuk menyelesaikan program tanpa membuat struktur yang jelas adalah pernyataan goto.Dalam C++ dikenal sebagai if-then-goto. Sebeleum C++ memasukkan penanganan eksepsi, goto sering digunakan untuk membuat perulangan didalam keadaan eksepsi. Java tidak memiliki pernyataan goto. Java menyediakan kata goto hanya untuk menjaga agar programmer tidak bingung menggunakannya. Java memiliki bagian break yang diberi label dan pernyataan continue yang merupakan bagian dimana goto boleh dipergunakan. Penanganan eksepsi yang ampuh dan terdefinisi dengan baik pada Java menghilangkan kebutuhan perintah goto. Pointer Pointer atau address pada memori adalah kemampuan C++ yang paling ampuh juga paling berbahaya. Biasanya kesalahan terjadi karena “kurang satu tempat” atau rusaknya data yang disimpan karena lokasi memori terakhir hancur.kesalahan ini merupakan salah satu kesalahan yangterburuk yang susah untuk diperiksa dan ditelusuri. Meskipun penanganan objek Java menggunakan pointer, bahasa Java tidak memiliki kemampuan memanipulasi pointer secara langsung. Kita tidak dapat mengubah integer menjadi pointer, menunjuk ulang sembarang address memori. Array merupakan objek yang didefinisikan, tidak berupa address dimemori.Di Java kita tidak dapat menulis sebelum akhir lokasi yang disediakan untuk array. Alokasi Memori Kemampuan C++ yang sama berbahayanya dengan pengolahan matematis pointer adalah manajemen memori. Manajemen memori di C dan C++ diwujudkan dengan keunggulan dan kelemahan
  • 18. Tugas Statemen Pemrograman Java fungsi library malloc() dan free(). Fungsi malloc, mengalokasikan jumlah tertentu memori (dalam byte), dan mengeluarkan address blok tersebut. Fungsi free, mengirimkan blok yang telah dialokasikan kepada sistem untuk penggunaan umum. Secara umum dapat menyebabkan kebocoran memori yang mengakibatkan program berjalan semakin lama semakin lambat. Java tidak memiliki fungsi malloc dan free, karena setiap struktur data yang rumit adalah objek, maka mereka dialokasikan dengan operator new, yang mengalokasikan ruang untuk objek pada „heap‟ memori. Memori yang disediakan disebut „heap‟ karena kita tidak perlu lagi memikirkannya sebagai penambahan address yang berstruktur linier. Jadi hanya berupa kumpulan instan objek. Yang didapat dari fungsi new bukanlah address memori, melainkan hanya „pegangan‟ untuk objek dalam heap. Tipe Data Yang Rapuh C++ mewarisi semua tipe data umum pada C. Tipe-tipe ini mewakili bilangan bulat dan pecahan dengan berbagai rentang nilai dan ketelitian. Rentang nilai dan ketelitian tipe ini bervariasi bergantung pada implementasi kompilernya. Javamemecahkan masalah ini dengan mengambil ukuran yang sesuai untuk semua tipe numerik dasar dan menyatukannya. Arsitektur tertentu akan mengalami kesulitan atau bekerja tidak optimal untuk meng-implementasikan tipe data yang bergantung hardware secara ketat pada interpreter Java yang diberikan, tetapi inilah satu-satunya cara untuk menjamin hasil yang dapat dibuat ulang pada platform hardware yang berbeda. Pemilihan Tipe (Type Casting) yang Tidak Aman Type Casting adalah mekanisme yang ampuh dalam C/C++ yang memungkinkan kita untuk mengubah tipe suatu pointer secara sembarang. Mungkin kita sering melihat bentuk seperti ini : memset((void *)p, 0, sizeof (struct p)) Penggunaan ini, walaupun tidak baik, tetapi cukup aman. Tentu saja dengan menganggap blok memori yang ditunjuk oleh p sekurang0kurangnya sepanjang sizeof (struct p).ini harus digunakan dengan sangat hati-hati karena tidak ada syarat untuk memeriksa apakah kita telah memilih tipe dengan benar. Penanganan objek Java mencakup informasi lengkap tentang class yang menjadi instans suatu objek, sehingga dapat dilakukan pemeriksaan kompatibilitas tipe selama program berjalan, dan menghasilkan eksepsi jika terjadi kegagalan. Daftar Argumen Yang Tidak Aman C++ banyak disukai karena kemampuannya melewatkan pointerdengan tipe sembarang dalam daftar argumen panjang-variabel yang dikenal sebagai varargs. Varargs adalah tambahan sederhana pada premis yang menyatakan bahwa sembarang address dapat dipetakan pada sembarang tipe, tugas pemeriksaan tipe diserahkan kepada programmer. Sangat menyenagkan jika Java memiliki cara yang aman terhadap tipe untuk mendeklarasikan dan melewatkan daftar argumen panjang-variabel, tetapi sampai versi 1.0 belum ada ketentuan seperti itu. File Header yang Terpisah Salah satu kemampuan yang patut dipertimbangkan adalah file header, dimana kita dpata mendeklarasikan prototipe class kita dan mendistribusikannya dengan kode biner implementasi class yang telah di-compile. Kemampuan ini membuat lingkungan compiler C++ hampir tidak dapat digunakan. C++ memiliki format file yang bergantung mesin untuk kode yang telah di-compile, sehingga informasi header dapat dibuat coresiden. Karena antarmuka programmer ke class yang di-compile dilakukan melalui file header-nya, maka kode yang telah di-compile sangat bergantung pada apa yang ada pada file header tersebut.
  • 19. Tugas Statemen Pemrograman Java Misalkan programmer yang senang berpetualang ingin meningkatkan akses pada beberapa anggota data private pada class yang telah di-compile. Yang harus dilakukan oleh orang tersebut adalah mengganti pengubah akses yang asalnya private menjadi public pada file header dan meng-compile suatu sub class dari class yang telah di-compile. Pada Java ini tidak mungkin terjadi, karena di Java tidak ada file header. Tipe dan visibilitas anggota class dicompile ke dalam file class Java. Interpreter Java menjalankan pengaturan akses saat program berjalan, jadi sama sekali tidak ada cara untuk mengakses variabel private dari luar suatu class. Struktur yang Tidak Aman C berusaha menyediakan enkapsulasi data melalui deklarasi struktur yang disebut struct, dan polimorfisme dengan mekanisme union. Dua gagasan ini menghasilkan batas tipis antara penyesuaian bergantung mesin yang kritis dan berbahaya dengan batasan ukuran. Java tidak memiliki konsep struct dan union , sebaliknya Java menyatukan konsep ini dengan class. Peng-hacker-an Preprocessor Untuk mewujudkan keinginan memiliki model yang jelas untuk ditulis oleh programmer, compiler C dan C++ menggunakan tool yang sama dengan yang digunakan pada masa-masa MACRO assembler. Ini menghasilkan preprocessor C yang tugasnya mencari perintah khusus yang diawali tanda pagar (#).Preprocessor C sering digunakan untuk membangun program yang sangat sulit dibaca. Java mengatur agar kita dapat bekerja tanpa preprocessor, hanya bergantung pada kata kunci final untuk mendeklarasikan konstanta yang sebelumnya dihasilkan dengan #define. QED Berasal dari bahasa latin Quod Erat Demonstrandum, yang berarti “Terbuktikan..!!!”. Hal-hal Tata Bahasa Progaram Java adalah kumpulan spasi, komentar, kata kunci, identifier, literal, operator, dan pemisah. Spasi Java adalah bahasa bebas bentuk. Tidak perlu mengatur tata letaknya agar dapat bekerja. Asalkan ada sekurang-kurangnya satu spasi, tab, atau baris baru diantara setiap token sebelum disisipi operator atau pemisah lain. Komentar Ada beberapa bentuk : 1. Komentar baris tunggal Diawali dengan tanda // dan diletakkan diakhir baris yang diberi komentar. 2. Komentar baris banyak Diawali dengan tanda /* dan ditutup dengan */ semua diantara kedua tanda tersebut dianggap komentar dan akan diabaikan oleh compiler. contoh penulisan : /* * komentar……. * komentar…… */ 3. Komentar terdokumentasi Menggunakan piranti Javadoc, yang mennggunakan komponen compiler Java untuk secara otomatis menghasilkan dokumentasi antarmuka public suatu class. Aturan pembuatan komentar yang dapat
  • 20. Tugas Statemen Pemrograman Java diolah oleh Javadoc adalah : sebelum deklarasi class, method, dan variabel public harus digunakan komentar bertanda /** untuk menyatakan komentar dokumentasi, diakhiri dengan tanda */. Javadoc akan mengenali sejumlah variabel khusus yang didahului dengan tanda @ didalam bagian komentar. contoh penulisan : /** * komentar…. * komentar….. */ Kata Kunci Simpanan (Keywords) Kata kunci simpanan adalah identifier khusus yang disimpan oleh bahasa Java untuk mengendalikan bagaimana program didefinisikan. Kata kunci ini digunakan untuk mengenali tipe-tipe, pengubah, dan mekanisme pengaturan aliran program. Kata kunci ini hanya dapat digunakan untuk fungsi tertentu dan tidak dapat digunakan sebagai identifier nama suatu variabel, class dan method. Sampai denga Versi 1.0 terdapat 59 kata kunci seperti terlihat dalam tabel : abstract boolean break byte byvalue case cast catch char class const continue default do double else extends false final finally float for future generic goto if implement s import inner instanceof int interface long native new null operator outer package private protected public rest return short static super switch synchronize d this throw throws transient true try var void volatile while Identifier Bdigunakan untuk nama class, method, dan variabel. Suatu variabel dapat berupa urutan tertentu huruf (besar atau kecil), angka, garis bawah, dan tanda dolar. Tidak boleh diawali oleh angka dan bersifat case sensitive. Kelompok Java mengikuti aturan penamaan identifier untuk semua method public dan variabel instans dengan huruf awal kecil dan menandai bagian kata selanjutnya dengan huruf besar, misalnya nextItem, currentValue, getTimeOfDay. Untuk variabel provate dan lokal identifier akan berupa huruf kecil semua dikombinasikan dengan garis bawah, misalnya next_val, temp_val. Untuk variabel final yang mewakili suatu konstanta, digunakan huruf besar semua, misalnya TOK_BRACE, DAY_FRIDAY. Literal Besaran konstanta pada Java dihasilkan dengan menggunakan literal yang mewakilinya. Setiap literal merepresentasikan nilai suatu tipe, dimana tipe itu sendiri menjelaskan bagaimana sifat nilai tersebut dan bagaimana penyimpanannya. Separator (Pemisah) Simbol Nama Fungsi
  • 21. Tugas Statemen Pemrograman Java () Kurung Digunakan untuk menghimpun parameter dalam definisi dan pemanggilan method, juga digunakan untuk menyatakan tingkatan pernyataan, menghimpun pernyataan untuk pengaturan alur program dan menyatakan tipe cast. {} kurung kurawal Digunakan untuk menghimpun nilai yang otomatis dimasukkan kedalam array, juga digunakan untuk mendefinisikan blok program, untuk cakupan class, method, dan lokal. [] kurung siku Digunakan untuk menyatakan tipe array, juga digunakan untuk membedakan nilai array. ; titik-koma pemisah pernyataan. , koma Pemisah urutan identifier dalam deklarasi variabel, juga digunakan untuk mengaitkan pernyataan didalam pernyataan for. . titik Dugunakan untuk memisahkan nama paket dari sub-paket dan class, juga digunakan untuk memisahkan variabel atau method dari variabel referensi. Variabel variabel adalah satuan dasar penyimpanan dalam program Java. Suatu variabel didefinisikan dengan kombinasi identifier, tipe, dan cakupan. Bergantung pada tempat kita mendeklarasikannya, variabel dapat bersifat lokal atau sementara, misalnya didalam perulangan for, atau dapat juga berupa variabel instans yang dapat diakses oleh semua method dalam class. Cakupan lokal dinyatakan dalam kurung kurawal. Tipe Data Java merupakan contoh bahasa yang strongly typed language. Hal ini berarti bahwa setiap variabel harus memiliki tipe yang sudah dideklarasikan. Terdapat 8 tipe primitif, 6 diantaranya adalah tipe bilangan ( 4 tipe integer, 2 tipe floating point), 1 tipe karakter char, digunakan mengawa-sandi (encode) Unicode, dan 1 tipe boolean. Integer Tipe Tempat yang Diperlukan Jangkauan (inclusive) int 4 byte - 2.147.483.648 sampai 2.147.483.647 (hanya lebih dari 2 miliar) short 2 byte - 32.768 sampai 32.767 long 8 byte - 9.223.372.036.854.775.808L sampai 9.223.372.036.854.775.807L byte 1 byte - 128 sampai 127 Floating Point Tipe Tempat Yang Dibutuhkan Jangkauan float 4 byte secara kasar 3,40282347E+38F ( 7 digit desimal signifikan) double 8 byte secara kasar  1,79769313486231570E+308 (15 digit desimal siignifikan) Char
  • 22. Tugas Statemen Pemrograman Java Tipe char menggunakan tanda kutip tunggal untuk menyatakan suatu char. Tipe char juga menyatakan karakter dalam upaya mengawa-sandi unicode, yang merupakan kode 2-byte. Karakter unicode paling sering dinyatakan dalam istilah skema pengkodean hexadesimal yang dimulai dari u0000 sampai uFFFF. Selain karakter bebas (escape „ u „ yang menyatakan karakter unicode di Java terdapat juga b backspace u0008 t tab u0009 n linefeed u000a r carriage return u000d ” double quote u0022 ‟ single quote u0027 a backslash u005c Boolean Tipe boolean memiliki nilai true dan false. Tipe ini digunakan untul logical testing dengan menggunakan operator relasional. Konversi antar Nilai Numerik Operasi biner apapun pada variabel numerik dengan tipe yang berbeda dapat diterima dan diperlakukan dengan cara seperti dibawah ini : 1. Jika tipe operand adalah double, maka yang lain juga akan diperlakukan sebagai double pada lingkup operasi tersebut. 2. Jika operand adalah float, maka yang lain juga akan diperlakukan sebagai float. 3. Jika operand adalaha long, maka yang lain juga akan diperlakukan sebagai long. konversi yang diijinkan adalah sebagai berikut : byte  short  int  long  float  double Dimana kita dapat memberikan nilai variabel suatu tipe disebelah kiri ke tipe disebelah kanannya. OPERATOR Assignment Operator ( = ) Shorthand assignment operator Operator Usage Meaning += X += Y X = X + Y -= X -= Y X = X – Y *= X *= Y X = X * Y /= X /= Y X = X / Y %= X %= Y X = X % Y Arithmetic Operator Operator Operation
  • 23. Tugas Statemen Pemrograman Java + Addition - Subtraction * Multiplication / Division % Modulo Bitwise Operator Operator Operation & AND | OR ^ XOR >> Shift Kanan << Shift Kiri >>> Shift Kanan isi dengan nol Unary Operator Operator Operation ~ Unary NOT - Minus ++ Increment -- Decrement Relational Operator Operator Operation == Equal To != Not Equal To > Greater Than < Less Than >= Greater or Equal To <= Less or Equal To Logical Operator Operator Operation ! Short-circuit NOT && Short-circuit AND || Short-circuit OR ?: Operator ternary if-then-else
  • 24. Tugas Statemen Pemrograman Java Preseden Operator Tertinggi () [] . ++ -- ~ ! * / % + - >> >>> << > >= < <= == != & ^ | && || ?: = op= Terendah CONTROL FLOW Percabangan  if – else Bentuk if-else menyebabkan eksekusi dijalankan melalui sekumpulan keadaan boolean sehingga hanya bagian tertentu program yang dijalankan. Bentuk umum pernyataan if-else : if (boolean expression) statement 1; [else statement 2; ] Klausa else bersifat optional, setiap statement dapat berupa satu statement tunggal atau dapat berupa satu blok statement yang ditandai dengan tanda {} (kurung kurawal). Boolean expression dapat berupa sembarang pernyataan boolean yang menghasilkan besaran boolean.  break Java tidak memiliki pernyataan goto. Penggunaan goto adalah untuk membuat percabangan secara sembarang yang membuat program sulit dimengerti dan mengurangi optimasi compiler tertentu. Pernyataan break pada Java dirancang untuk mengatasi semua kasus tersebut. Istilah break mengacu kepada proses memecahkan blok program. Proses tersebut memerintahkan runtime untuk menjalankan program dibelakang blok tertentu. Untuk dapat ditunjuk blok diberi nama/label. Break juga dapat digunakan tanpa label untuk keluar dari suatu loop dan pernyataan switch. Penggunaan break menunjukkan bahwa kita akan keluar dari sutu blok program.  switch Pernyataan switch memberiikan suatu cara ubtuk mengirimkan bagian program berdasarkan nilai suatu variabel atau pernyataan tunggal. Bentuk umum pernyataan switch : switch (expression) { case value1 :
  • 25. Tugas Statemen Pemrograman Java Statement; break; case value2 : Statement; break; case valueN : Statement; break; default; } Expression dapat menghasilkan suatu tipe sederhana, dan setiap value yang disebutkan pada pernyataan case harus berupa tipe yang cocok. Pernyataan switch bekerja dengan cara membandingkan nilai expression dengan setiap nilai pada pernyataan case. Jika ada yang cocok maka urutan program yang ada di pernyataan case tersebut akan dijalankan, jika tidak ada yang cocok, program akan menjalankan default  return Java menggunakan bentuk sub-routine yang disebut method untuk mengimplementasikan antarmuka prosedural ke class objek. Setiap saat dalam method dapat digunakan pernyataan return yang menyebabkan eksekusi mencabang kembali ke pemanggil method. Perulangan (Looping) Looping artinya mengulangi eksekusi blok program tertentu sampai tercapai kondisi untuk menghentikannya. Setiap perulangan memiliki 4 bagian : a. Inisialisasi, adalah program yang mengyiapkan bagian awal perulangan b. Badan program, adalah pernyataan yang ingin kita ulangi. c. Iterasi, adalah program yang sering digunakan untu penambahan atau penguranagn pencacah dan index. d. Terminasi, adalah pernyataan boolean yang diperiksa setiap kali selama perulangan dilaksanakan untuk melihat apakah perulangan sudah saatnya dihentikan.  while While adalah pernyataan perulangan yang paling mendasar pada Java. Penggunaan pernyataan while akan menyebabkan rekursi pernyataan secara terus menerus selama pernyataan booleannya bernilai true. Bentuk umum dari pernyataan while : [initialization;] while (termination) { body program ; [iteration;] }  do-while Penggunaan pernyataan do –while menyebabkan body program akan dieksekusi sekurang- kurangnya 1 kali walaupun pernyataan booleannya menghasilkan nilai false. Pemeriksaan terminasi dilaksanakan pada akhir program. Bentuk umum pernyataan do – while : [initialization;]
  • 26. Tugas Statemen Pemrograman Java do { body program; [iteration;] } while [termination];  for Pernyataan for adalah cara praktis untuk menyatakan suatu perulangan. Bentuk umum pernyataan for : for {initialization; termination; iteration ) body program; Jika keadaan awal tidak menyebabkan termination bernilai true maka pernyataan body program dan iteration tidak akan dijalankan.  Pernyataan koma Kadang-kadang ada keadaan dimana kita ingin memasukkan lebih dari satu pernyataan inisialisasi atau terminasi, Java menyediakan cara lain untuk menyatakan beberapa pernyataan sekaligus. Penggunaan koma untuk memisahkan pernyataan di batasi hanya untuk digunakan didalam tanda kurung untuk pernyataan for.  continue Pernyataan continue akan menghentikan iterasi yang bersangkutan tetapi program akan menjalankan sisa perulangan sampai dengan selesai. Class dan Object Beberapa orang pada awalnya, biasanya tidak memperhatikan perbedaan antara class dan object, mereka mencampuradukkan kedua istilah tersebut. Mari kita simak kode berikut : /* Di sini kita mendefinisikan sebuah class bernama NiceGuy. Simpan sebagai file NiceGuy.java dan compile file Tersebut. Anda akan mendapatkan file bernama NiceGuy.class */ public class NiceGuy { private string name; public NiceGuy(String name) { system.out.println(“Instantion of NiceGuy named “ + name) ; this.name=name; } public void sayHello() { system.out.println(“Hello Object Oriented World…!!!“ ) ; } public sayHelloOutLoud() { system.out.println(“HELLLOOOO OBJECT ORIENTED WORLD!!!”) ;
  • 27. Tugas Statemen Pemrograman Java } Public String getName() { Return name; } } Gambar 1. Definisiclass NiceGuy /* Di sini, kita membuat sebuah java application yang bernama OurFirstCode. Simpan source ini dalam file bernama OurFirstCode.java, di direktori yang sama dengan tempat anda menyimpan NiceGuy.java. Kemudian compile file tersebut, Anda akan Mendapatkan file OurFirstCode.class. Lalu jalankan aplikasi ini dengan mengetikan java OurFirstCode pada command line */ public class OurFirstCode { public static void main(String[] args) { NiceGuy ng= new NiceGuy (“ButtHead”); ng.sayHello(); ng.sayHelloOutLoud(); //he‟s so cute…,who‟s he??? String NiceGuyName = ng.getName(); System.out.println(“OH…!!!! HE‟S “ + NiceGuyName.toUpperCase()); } } Gambar 2. Aplikasi Java Diatas merupakan contoh pendefinisian sebuah class bernama NiceGuy pada Gambar 1. Pada Gambar 2 merupakan kode dari sebuah aplikasi java yang bernama OurFirstCode. Pada aplikasi tersebut kita menggunakan class NiceGuy untuk membuet objek bertipe NiceGuy. Pendefinisian Class Sintaks dalam mendefinisikan class adalah sebagai berikut : [modifier-modifier] class namaclass [extends parentclass] [implements interface] { [deklarasi field-field] [definisi method-method] } Yang tertera didalam kurung siku bersifat optional. Dengan demikian, definisi minimal dari sebuah class bisa jadi seperti berikut : class Useless {
  • 28. Tugas Statemen Pemrograman Java //….mmm…. } Tidak ada yang bisa kita harapkan dari objek diatas. Contoh yang lebih baik adalah Gambar 1. Disana kita mendeklarasikan 1 field dan 3 method. Pada baris 8 kita mendeklarasikan field yang bernama name yang bertipe string. Secara umum sintaks untuk mendeklarasikan field adalah : type namafield; Tipe dari field bisa primitif (seperti int, boolean, float, dan sebagainya), dan bisa juga Object (seperti String, Vector, Hashtable, dan sebagainya). Method-method yang dimiliki class NiceGuy adalah method sayHello() sepanjang baris 14-16 (method void), method sayHelloOutLoud() pada baris 17-19 (method void), dan method getName() pada baris 20-22 (method non-void). Secara umum sintaks dalam pendefinisian sebuah method adalah : [modifier-modifier] return-type namamethod ( [parameter1, [parameter2],… , [parameter N] ) { [statement-statement]; } Tipe Return bisa void, tipe data primitif, atau tipe data object. Method dengan tipe return non-void harus mencantumkan statement return <something> pada akhir deklarasi method itu (seperti pada baris 21 class NiceGuy) kita juga dapat menggunakan kata return pada method void untuk keluar dari method tersebut. Bagian penting lain dari definisi class adalah constructor. Pendefinisian constructor dicontohkan pada baris 10-12 class NiceGuy. Constructor digunakan pada saat penciptaan objek dari sebuah class. Pendeklarasian constructor mirip dengan pendeklarasian method, dengan satu pengecualian bahwa constructor tidak mencantumkan tipe return. [modifier-modifier] namaconstructor ([parameter 1], [parameter 2], … , [parameter N]) { [statement-statement]; } Hal lain yang perlu dicatat tentang constructor adalah, nama constructor harus sama dengan classnya. Constructor tanpa parameter disebut default constructor. Kalau kita sama sekali tidak mendeklarasikan constructor, compiler secara otomatis akan membuatkan sebuah default constructor. Pada Gambar 2, aplikasi OurFirstCode memanfaatkan class NiceGuy untuk menciptakan sebuah objek bertipe NiceGuy dimemori (perhatikan baris 13 gambar 2). Setelah itu, reference ng dapat digunakan untuk memanggil method-method (mengirimkan pesan kepadanya) atau mengakses field-field dari objek yang bersangkutan. Reference adalah seperti alamat rumah sedangkan objek adalah rumahnya. dengan mengetahui alamat, kita bisa mencapai rumah yang dimaksud. Inheritance
  • 29. Tugas Statemen Pemrograman Java Salah satu topik penting dalam OOP adalah inheritance (pewarisan sifat). Dengan inheritance, pengembangan software dapat bekerja lebih efisien dan lebih cepat. Berkat inheritance dapat menggunakan definisi class yang pernah dibuat sebelumnya untuk membuat class-class lain yang menyerupai class tersebut. Perhatikan contoh berikut : public class KattWorld { public static void main (String args[]) { Katt k = new Katt(); k.speak(); Anggora a = new Anggora(); a.speak(); a.jump(); Siam s = new Siam(); s.speak(); } } class Katt { public Katt() { system.out.println(“Katt Constructor”); } public void speak() { system.out.println(“Miaww…”); } } class Anggora extends Katt { public void jump() { system.out.println(“Crash…Boom…”); } } class Siam extends Katt { public Siam() { system.out.println(“Siam Constructor”); } public void speak() { system.out.println(“Mmurrrr…mmurrrr…”); } } Gambar 3. Kisah kucing Hal pertama yang harus diperhatikan dari gambar 3 dalah cara melakukan inheritance. Coontoh diatas mempunyai satu class bernama Katt (baris 12-19). Kemudian dibut class lainnya yang mempunyai sifat seperti Katt, tetapi memiliki keunikan sendiri. Contohnya adalah class Anggora, kita dapat membuat subclass dari Katt (baris 21-25). Kini dapat dikatakan bahwa Katt menjadi parentclass (baseclass atau superclass) dari class Anggora. Secara umum kita dapat mendefinisikan suatu class sebagai turunan dari baseclass dengan cara : class namaclass extends baseclass {
  • 30. Tugas Statemen Pemrograman Java [statement-statement]; } Method overiding Kita membuat varian baru lain dari Katt dengan cara mengeong Murr….Murr…Murr…. Kita namai varian itu Siam. Kita definisikan Siam sebagai subclass dari Katt, tapi kini kita melakukan metode overiding, kita mendefinisikan ulang method speak() didalam definisi class Siam. Jika dijalankan akan menghasilkan output : Katt constructor Miaww… Katt constructor Miaww… Crash…Boom… Katt constructor Siam constructor Mmurrr…mmurrr… Baris 6 dan 7 dimunculkan sewaktu berlangsung konstruksi/instantiasi objek bertipe Siam. Default constructor Katt dijalankan terlebih dahulu. Ini menunjukkan bahwa default, kecuali kita minta yang lain, dari baseclass secara otomatis dijalankan terlebih dahulu sebelum constructor dari class yang bersangkutan. This This sebenarnya adalah sebuah variable read-only (tidak dapat diubah nilainya). Dengan variable ini, kita mendapatkan reference/pointer menuju objek terkini. Bayangkan aplikasi anda sedang berjalan, pada saat tertentu yang dijalankan oleh komputer anda adalah method aMethod() milik object anObject. Dari method aMethod() anda membutuhkan reference ke objek terkini yaitu object anObject itu sendiri. Untuk itulah kita menggunakan variabel this dalam method aMethod() milik object anObject. Perhatikan contoh berikut : public class BeavisAndButtheadStory { public static void main (string[] args) { DivineBeing beavis = new DivineBeing (“Beavis”); DivineBeing butthead = new DivineBeing (“Butthead”); //guess what‟s gonna happen next… beavis.messWith (butthead); butthead.makeRevenge(); } } class DivineBeing { private String name; private DivineBeing baddDivineBeing; public DivineBeing (String name) { this.name = name ; } public void messWith (DivineBeing anotherDivineBeing) { anotherDivineBeing.kapow(this); } public void kapow (DivineBeing baddDivineBeing) {
  • 31. Tugas Statemen Pemrograman Java system.out.println(baddDivineBeing.getName()+”!!!!Damn You!!”); //forgive but not forget… this.baddDivineBeing = baddDivineBeing; } public void makeRevenge() { of (baddDivineBeing != null) { baddDivineBeing.kapow(this); } } public String getName() { return name; } } Gambar 4.Contoh penggunaan kata kunci this beavis memulai gara-gara dengan memukul butthead, beavis memberikan butthead referensi atas dirinya sendiri. Hal ini dilakukan dengan memberikan argument this pada pemanggilan method kapow(divineBeing baddDivineBeing). Dengan reference yang ia dapatkan itu , suatu saat butthead dapak balik mengirim pesan makeRevenge() ke beavis.butthead ingat betul siapa yang memukulnya, karena sewaktu ia dipukul, ia menyimpan reference ke objek beavis itu pada variabel baddDivineBeing miliknya, yang dideklarasikan pada baris 13. Praktek diatas disebut Callback. Penggunaan lain dari this dapat dilihat pada baris 15 dan 23. Pada baris 15, kita bermaksud menetapkan variabel name yang di deklarasikan pada baris 12, tapi sekarang timbul konflik dalam penamaan variabel. Didalam daftar argumen pada constructor kita juga mendefinisikan variabel lain yang juga bernama name (baris 14). Jangkauan variabel name pada baris 12 mencakup semua ruang pada class DivineBeing, sedangkan variabel name pada baris 14 mempunyai jangkauan terbatas didalam constructor itu. Untuk mengatakan saya menginginkan name yang global bukan name yang lokal, kita menerobos keluar dengan keyword this. Dapat dilihat pada gambar 5. class DivineBeing { private String name; private DivineBeing baddDivineBeing; public DivineBeing (String name ) { this.name = name ; } Gambar 5.Out Of The Box Experience Abstract Abstract method adalah method yang belum mempunyai implementasi. Kita dapat menyatakan suatu method abstract dengan membubuhkan keyword abstract pada deklarasi method tersebut. Secara umum sintaks dari pendeklarasian method abstract :
  • 32. Tugas Statemen Pemrograman Java abstract return-type namamethod ([daftar-parameter]); Contoh : public class ExplainAbstract { public static void main (String args[]) { Penyanyi joshua = new Pnyanyi(); joshua.berkesenian(); Pemrogram raka = new Pemrogram(); raka.berkesenian(); } } abstract class Seniman { public abstract void berkesenian(); public void tidur() { system.out.println (“ZZZZ…”); } } class Pemrogram extends Seniman { public void berkesenian() { system.out.println(“tap…tap…click- click…tap…PLAK ! Click…DOR !!!”); } public void tidur() { system.out.println(“Buzzz…ngingggg….”); } } class Penyanyi extends Seniman { public void berkesenian() { system.out.println(“Tralala-Trilili…”); } } Gambar 6. Contoh Pendeklarasian method abstract Static method Pada contoh-contoh sebelumnya kita harus menginstantiasi/membuat objek terlebih dahulu sebelum dapat menggunakan method-method atau mengakses field-field pada class yang bersangkutan. Tapi dengan mendefinisikan suatu field atau method sebagai static, kita dapat saja mengakses field method tersebut tanpa harus melakukan instantiasi terlebih dahulu. Perhatikan contoh berikut : public class MyGeomUtil { int iAmNotPopular = 13; static int iAmCelebrity = 7; public static double luasSegiempat (float length, float width) { return length * width; }
  • 33. Tugas Statemen Pemrograman Java public static double luasSegitiga (float alas, float tinggi) { return 0.5 * alas * tinggi; } public static double luasSegitiga (float A, float B, float gamma) { //fungsi sin (double angel) menerima masukan sudut //dalam radian angle not angel, you prevert..! return 0.5 * A * B * Math.sin(gamma / Math.PI); } } Gambar 7. Definisi MyGeomUtil Final Dengan menambahkan modifier final pada deklarasi sebuah method, kita menetapkan bahwa method pada class tersebut tiidak bisa ditimpa pada subclass yang kelak mungkin akan dibuat. Salah satu alasan untuk membubuhkan final pada method di sebuah base class adalah karena method itu begitu fundamental bagi kerja instance class tersebut, sehingga jika di implementasikan secara berbeda oleh subclassnya ( yang bisa saja ditulis oleh programer yang salah ) berpotensi menyebabkan kerja instance itu tidak benar. Bentuk umum final method : [modifier-modifier] final namamethod() { //…mmmm….. } Final juga bisa diberlakukan bagi class, kita tidak dapat membuat turunan dari class final. Bentuk umum final class : final class namaclass extends parentclass { //…mmm… } Interface Pada Interface juga kita dapat mendeklarasikan method-method, field-field (dengan beberapa catatan tentunya), dan juga dapat membuat rantai inheritance seperti yang dilakukan pada class. Lihat contoh program dibawah ini : import java.awt.*; import java.awt.event.*; public class AustinPower extends Frame implements MouseListener { Button behave; public static void main (String args[]) { AustinPower asyWhoShaggedMe = new AustinPower(); spyWhoShaggedMe.setSize(100,100); spyWhoShaggedMe.setVisible(true); } public AustinPower() {
  • 34. Tugas Statemen Pemrograman Java behave = new Button (“I Am a Button”); behave.addMouseListener(this); add(behave); } public void mouseEntered(MouseEvent me) { behave.setLabel (“Click me…!!!”); } public void mouseExited(MouseEvent me) { behave.setLabel (“Come to me…!!!”); } public void mousePressed(MouseEvent me){} public void mouseReleased(MouseEvent me){} public void mouseClicked(MouseEvent me){} } Gambar 8. Penggunaan Interface Sedangkan interface MouseListener seperti tertera dibawah ini : package java.awt.event; import java.util.EventListener; /** * The listener interface for receiving mouse event on a * Component. * @version 1.7 07/01/98 * @author Carl Quinn */ public interface MouseListener extends EventListener { public void mouseClicked (MouseEvent e); public void mousePressed (MouseEvent e); public void mouseReleased (MouseEvent e); public void mouseEntered (MouseEvent e); public void mouseExited (MouseEvent e); } Gambar 9. Deklarasi interface MouseListener Pada contoh diatas, kita mengatakan bahwa AustinPower mengimplementasikan MouseListener. Secara umum interface dapat dideklarasikan sebagai berikut : interface namainterface [extends parentinterface] { [deklarasi field-field (konstanta)] [deklarasi method-method] Mendeklarasikan method dalam interface mirip dengan mendeklarasikan method abstract, dimana deklarasi method tidak diakhiri pasangan kurung kurawal, melainkan tanda titik koma :
  • 35. Tugas Statemen Pemrograman Java return-type namamethod ([daftar parameter]); Ada satu catatan, field-field yang didefinisikan pada interface secara otomatis bersifat static dan final, yang berarti mereka hanya bertindak sebagai konstanta. sedangkan secara umum, suatu class dibuat agar mengimplementasikan suatu interface dengan cara sebagai berikut : class namaclass [extends parentclass] [implements interface1,interface2,…] { [deklarasi field-field] [deklarasi method-method milik class ini] [deklarasi implementasi method-method yang terdefinisikan pada interface-interface yang di implementasi oleh class tersebut] } Pada contoh diatas dengan mengimplementasikan MouseListener, class AustinPower dikatakan menandatangai suatu kontrak yang menyatakan bahwa ia mampu menunjukkan kelakuan-kelakuan seorang MouseListener (yaitu bereaksi terhadap event-event yang berhubungan dengan Mouse). Semua method yang terdefinisi pada interface adalah betul-betul abstract, tidak ada implementasinya. Salah satu konsekuensi dari totalitas abstraksi pada interface itu adalah semua method yang tertera pada interface harus di implementasikan oleh implementor. Polymorphism Polymorphism didefinisikan sebagai kemampuan beberapa objek bertipe sama bereaksi secara berbeda terhadap message yang sama. Lihat contoh dibawah ini : public class KattParty { public static void main (String args[]) { Katt[] kandangKatt = new Katt[3]; kandangKatt[0] = new Anggora(); kandangKatt[1] = new Siam(); kandangKatt[2] = new Katt(); for (int I = 0 ; I < 3 ; I++) { kandangKatt[I].speak(); } } } Gambar 10. Pesta Kucing Disetiap iterasi pada loop diatas, pada dasarnya kita mengirimakan pesan yang sama ke objek- objek yang bertipe sama (yaitu Katt, sesuai dengan definisi array pada baris 3), speak(). Walaupun begitu, ternyata masing-masing bereaksi dengan caranya sendiri-sendiri. Contoh lain dari polymorphism yaitu, misalkan kita membuat aplikasi client/server, dimana client mengirimkan objek-objek Katt (dan tentunya bisa juga apapun turunan Katt) ke server. Pada kasus tersebut, server bersedia menerima Kat-Kat itu tanpa terlalu mempermasalahkan perbedaan spesifikasinya. Untu itu kode diserver bisa jadi seperti berikut: … Katt k = null; while (true) {
  • 36. Tugas Statemen Pemrograman Java k = receive(); } … Tentunya untuk kasus ini, tidaklah tepat jika, secara static kita mengasosiasikan k dengan class Siam (misal dengan pendeklarasian Siam k = null). Pada kode diatas, pengasosiasian k dengan clas spesifik (Anggora, Siam atau lainnya) dilakukan pada saat run-time, yaitu ketika return Value dari pemanggilan receive() di-assign ke k. Itulah yang disebut dynamic/late binding. Operator Instanceof Bagaimana seandainya pihak server ingin mengetahui type spesifik dari objek Katt yang diterimanya ? lihat contoh KattParty yang dimodifikasi berikut : public class KattParty { public static void main (String args[]) { Katt[] kandangKatt = new Katt[3]; kandangKatt[0] = new Anggora(); kandangKatt[1] = new Siam(); kandangKatt[2] = new Katt(); for (int I = 0 ; I < 3 ; I++) { kandangKatt[I].speak(); if (kandangKatt[I] instanceof Siam) { System.out.println(“Wow, It‟s a Siam…”); } else if (kandangKatt[I] instanceof Anggora) { System.out.println(“Look, they sent us Anggora…”); }else { System.out.println(“Well…It could be Lucifer,” + “ or Alleys or Regular Katt”); System.out.println(“But one thing for sure…it‟s Katt” + “ Praise the Lord”); } } } } Gambar 11. To know more about Katt Operator yang kita pakai adalah instanceof. A instanceof B, mengevaluai apakah objek A bertipe B (B adalah nama class). Evaluasi itu menghasilkan nilai true jika nama class dari objek A adalah B atau nama parent/grandparent/greatgrandparent /seterusnya dari class dari objek A adalah B. Evaluasi juga akan bernilai benar jika B adalah nama interface dan A mengimplementasikan B. Begitu pula jika parent/grandparent/greatgrandparent/seterusnya dari class objek A mengimplementasi B. Singkat kata. jika A instanceof B menghasilkan true, berarti objek A dapat menunjukkan behavior yang disyaratkan oleh class atau interface B. Package Kita biasannya mengelompokkan class-class (dan juga interface-interface) yang terkait (karena jenisnya/fungsinya/alasan lain) dalam sebuah package. Mungkin ada baiknya jika class-class geometris yang kita buat dikumpulkan dalam sebuah package bernama com.raka.geoms
  • 37. Tugas Statemen Pemrograman Java /*simpan sebagai Graphic.java */ package com.raka.geoms; public abstract class Shape { ……. } Gambar 12. Package---1 /* Simpan sebagai Rectangle java */ package com.raka.geoms; public class Rectangle extends Shape { …………… } Gambar 13. Package---2 /* Simpan sebagai Triangle.java */ package com.raka.geoms; public class Triangle extends Shape { …………… } Gambar 14. Package---3 Beberapa keuntungan mengorganisasi class-class buatan kita dalam sebuah package adalah : 1. Terhindar dari konflik penamaan. Mungkin saja ada orang lain, dibelahan dunia lain, membuat class yang bernama Rectangle juga. Yang membedakan antara Rectangle kita dengan yang lain adalah fully qualified name. Fully qualified name dari class Rectangle kita adalah com.raka.geoms.Rectangle. 2. Teratur. Mendapatkan suatu class tertentu akan mudah dengan mengetahui nama package-nya. Pada contoh diatas, masing-masing anggota dari package com.raka.geoms disimpan di file terpisah, dan dideklarasikan sebagai public. dengan demikian class/program lain (yang bukan anggota com.raka.geoms) dapat mengimport clas-class kita diatas. Kita juga dapat mendefinisikan beberapa class sekaligus dalam sebuah file java, seperti contoh berikut : /* Simpan sebagai NuclearWarHead.java */ package com.raka.lethal; public class NuclearWarHead { …………… } class Sarin { …………………. } class Uzi { …………………. } Gambar 15. All in Life Jika kita kompilasi NuclearWarHead.java diatas, kita akan mendapatkan tiga file class, yaitu NuclearWarHead.class,Sarin.class, Uzi.class. Kesemuanya akan menjadi anggota dari package com.raka.lethal. Akan tetapi hanya NuclearWarHead yang bisa digunakan secara langsung dari luar
  • 38. Tugas Statemen Pemrograman Java package com.raka.lethal, karena hanya NuclearWarHead yang dideklarasikan sebagai public, selebihnya dedeklarasikan sebagai protected (defaultnya), sehingga hanya dapat digunakan oleh class-class yang tergabung didalam com.raka.lethal. Sekarang untuk menggunakan class-class yang terdapat pada com.raka.geoms dari luar com.raka.geoms, kita mengenal kata kunci import. Seperti contoh dibawah ini : package com.drawworks.threedee; import com.raka.geoms.*; …… public class Cube { …… Rectangle r = new Rectangle (); ….. } ….. Gambar 16. Mengimpor class. Jika pemrogram com.drawworks.threedee bermaksud menggunakan class-class yang terdapat pada java.awt juga dimana terdapat juga class Rectangle, maka saat inilah digunaka fully qualified name. seperti contoh dibawah ini : package com.drawworks.threedee; import com.raka.geoms.*; import java.awt.*; …… public class ThreeWorld extends Canvas { …… com.raka.geoms.Rectangle r = new com.raka.geoms.Rectangle (); ….. } ….. Gambar 17. Fully Qualified Name Package-package didalam harddisk dapat kita organisasikan dalam suatu struktur direktori. File-file class anggota com.raka.geoms terkumpul dalam struktur direktori. Anda boleh mengambil kesimpulan bahwa tiap-tiap suku kata pada nama package adalah nama sebuah direktori.
  • 39. Tugas Statemen Pemrograman Java PENANGANAN EKSEPSI Eksepsi adalah keadaan tidak normal yang muncul pada suatu bagian program pada saat dijalankan. Penanganan eksepsi pada java membawa pengelolaan kesalahan program saat dijalankan kedalam orientasi-objek. Eksepsi java adalah objek yang menjelaskan suatu keadaan eksepsi yang muncul pada suatu bagian program. Saat suatu keadaan eksepsi muncul, suatu objek exception dibuat dan dimasukkan ke dalam method yang menyebabkan eksepsi. Method tersebut dapat dipilih untuk menangani eksepsi berdasarkan tipe tertentu. Method ini juga menjaga agar tidak keluar terlalu dini melalui suatu eksepsi, dan memiliki suatu blok program yang dijalankan tepat sebelum suatu eksepsi menyebabkan metodenya kembali ke pemanggil. Eksepsi dapat muncul tidak beraturan dalam suatu method, atau dapat juga dibuat secara manual dan nantinya melaporkan sejumlah keadaan kesalahan ke method yang memanggil. Dasar-dasar penanganan Eksepsi Penanganan eksepsi pada java diatur dengan lima kata kunci : try, catch, throw, throws dan finally. Pada dasarnya try digunakan untuk mengeksekusi suatu bagian program, dan jika muncul kesalahan, sistem akan melakukan throw suatu eksepsi yang dapat anda catch berdasarkan tipe eksepsinya, atau yang anda berikan finally dengan penangan default. Berikut ini bentuk dasar bagian penanganan eksepsi : try { // Block of Code } catch (ExceptionType1 e) { // Exception Handler for ExceptionType1 } catch (ExceptionType2 e) { // Exception Handler for ExceptionTYpe2 throw (e); // re-throw the Exception… } finally { } Tipe Eksepsi Dipuncak hirarki class eksepsi terdapat satu class yang disebut throwable. Class ini digunakan untuk merepresentasikan semua keadaan ekasepsi. Setiap ExceptionType pada bentuk umum diatas adalah subclass dari throwable. Dua subclass langsung throwable didefinisikan untuk membagi class throwable menjadi dua cabang yang berbeda. Satu, class Exception, digunakan untuk keadaan eksepsi yang harus ditangkap oleh program yang kita buat. Sedangkan yang lain diharapkan dapat menangkap class yang kita subclasskan untuk menghasilkan keadaan eksepsi. Cabang kedua throwable adalah class error, yang mendefinisikan keadaan yang tidak diharapkan untuk ditangkap dalam lingkungan normal. Eksepsi Yang Tidak Dapat Ditangkap
  • 40. Tugas Statemen Pemrograman Java Obyek eksepsi secara otomatis dihasilkan oleh runtime java untuk menanggapi suatu keadaan eksepsi. Perhatikan contoh berikut : class Exc0 { public static void main (Stinr args[]) { int d = 0; int a = 42 / d; } } Saat runtime java mencoba meng-eksekusi pembagian, akan terlihat bahwa pembaginya adalah nol, dan akan membentuk objek eksepsi baru yang menyebabkan program terhenti dan harus berurusan dengan keadaan kesalahan tersebut. Kita belum mengkodekan suatu penangan eksepsi, sehingga penanganan eksepsi default akan segera dijalankan. Keluaran dari program diatas : java.lang.ArithmeticExpression : /by zero at Exc0.main (Exc0.java:4) Berikut adalah contoh lainnya dari eksepsi : class Exc1 { static void subroutine() { int d = 0; int a = 42 / d; } public static void main (Stinr args[]) { Exc1.subroutine(); } } Output-nya : java.lang.ArithmeticException : / by zero at Exc1.subroutine(Exc1.java :4) at Exc1.main(Exc1.java : 7) Try dan Catch Kata kunci try digunakan untuk menentukan suatu blok program yang harus dijaga terhadap semua eksepsi, setelah blok try masukkan bagian catch, yang menentukan tipe eksepsi yang akan ditangkap. Perhatikan contoh berikut : class Exc2 { public static void main (String args[]) { try { int d = 0; int a = 42 / d; } catch (ArithmeticException e) { System.out.println(“Division By Zero);
  • 41. Tugas Statemen Pemrograman Java } } } Throw Pernyataan throw digunakan untuk secara eksplisit melemparkan suatu eksepsi. Pertama kita harus mendapatkan penanganan dalam suatu instance throwable, melalui suatu parameter kedalam bagian catch, atau dengan membuatnya menggunakan operator new. Bentuk umum pernyataan throw : throw ThrowableInstance; Aliran eksekusi akan segera terhenti setelah pernyataan throw, dan pernyataan selanjutnya tidak akan dicapai. Blok try terdekat akan diperiksa untuk melihat jika telah memiliki bagian catch yang cocok dengan tipe instance Throwable. Jika tidak ditemukan yang cocok, maka pengaturan dipindahkan ke pernyataan tersebut. Jika tidak, maka blok pernyataan try selanjutnya diperiksa, begitu seterusnya sampai penanganan eksepsi terluar menghentikan program dan mencetak penelusuran semua tumpukan sampai pernyataan throw. Contoh : class throwDemo { static void demoProc() { try { throw new NullPointerException(“demo”); } catch (NullPointerException e) { System.out.println(“caught inside demoproc…”); throw e; } } public static void main (String args[]) { try { demoproc(); } catch (NullPointerException e) { System.out.println(“recaugt : “ + e); } } } Output : caught inside demoproc recaught : java.lang.NullPointerException : demo Throws Kata kunci throws digunakan untuk mengenali daftar eksepsi yang mungkin di-throw oleh suatu method. Jika tipe eksepsinya adalah error, atau RuntimeException, atau suatu subclassnya, aturan ini tidak berlaku, karena tidak diharapkan sebagai bagian normal dari kerja program.
  • 42. Tugas Statemen Pemrograman Java Jika suatu method secara eksplisit men-throws suatu intans dari Exception atau subclassnya, diluar RuntimeException, kita harus mendeklarasikan tipenya dengan pernyataan throws. ini mendefinisikan ulang deklarasi method sebelumnya dengan sintaks sbb : type method-name (arg-list) throws exception-list { } Contoh : class ThrowsDemo { static void procedure () thorws IllegalAccessException { System.out.println(“Inside Procedure”); throw new IllegalAccessException(“demo”); } public static void main(String args[]) { try { procedure(); } catch (IllegalAccessException e) { System.out.println(“caught “+ e); } } } Output : Inside procedure caught java.lang.IllegalAccessException : demo Finally Saat suatu eksepsi dilemparkan, alur program dalam suatu method membuat jalur yang cenderung tidak linier melalui method tersebut, melompati baris-baris tertentu, bahkan mungkin akan keluar sebelum waktunya pada kasus dimana tidak ada bagian catch yang cocok. Kadang-kadang perlu dipastikan bahwa bagian program yang diberikan akan berjalan, tidak perduli eksepsi apa yang terjadi dan ditangkap. Kata kunci finally dapat digunakan untuk menentukan bagian program seperti itu. Setiap try membutuhkan sekurang-kurangnya satu bagian catch atau finally yang cocok. Jika kita tidak mendapatkan bagian catch yang cocok, maka bagian finally akan dieksekusi sebelum akhir program, atau setiap kali suatu method akan kembali ke pemanggilnya, melalui eksepsi yang tidak dapat ditangkap, atau melalui pernyataan return, bagian finally akan dieksekusi sebelum kembali ke method kembali. Berikut adalah contoh program yang menunjukkan beberapa method yang keluar dengan berbagai cara, tidak satu pun tanpa mengeksekusi bagian finally-nyA. class finallyDemo { static void proA() { try { System.out.println(“Inside procA..”); throw new RuntimeException(“Demo”); } finally { System.out.println(“procA is finally”); }
  • 43. Tugas Statemen Pemrograman Java } static void proB() { try { System.out.println(“Inside procB..”); return; } finally { System.out.println(“procB is finally”); } } public static void main(String args[]) { try { procA{}; } catch (Exception e); procB(); } } Output : Inside procA.. procA is finally Inside procB.. procB is finally Multithreading Banyak persoalan dalam pemrograman membutuhkan kemampuan suatu program untuk melakukan beberapa hal sekaligus, atau memberikan penanganan segera terhadap suatu kejadian/ event tertentu dengan menunda aktivitas yang sedang dijalankan untuk menangani event tersebut dan akhirnya kembali melanjutkan aktivitas yang tertunda. Contoh, dalam sistem aplikasi jaringan, kita dapat membuat suatu program melakukan komputasi lokal dengan data yang sudah didapat dari jaringan, pada saat program tersebut menunggu datangnya tambahan data dari jaringan. Tanpa multithreading, program tersebut harus melakukannya secara sekuensial dalam sebuah alur program tunggal (yaitu alur control utama), yang diawali dengan penantian tibanya keseluruhan data, baru kemudian komputasi. Pada masa penantian tersebut, komputer berada pada keadaan idle yang menyebabkan ketidakefisienan pada keseluruhan program. Dengan multithreading kita dapat menciptakan dua thread secara dinamis, yaitu thread yang berjaga dipintu gerbang, menunggu masuknya data., dan thread yang melakukan komputasi lokal atas data yang sudah tersedia. Multithreading dan Java Thread (seringkali disebut juga lightweight process atau execution context) adalah sebuah singlesequentialflow of control didalam sebuah program. Secara sederhana, thread adalah sebuah subprogram yang berjalan didalam sebuah program.
  • 44. Tugas Statemen Pemrograman Java Seperti halnya sebuah program, sebuah thread mempunyai awal dan akhir. Sebuah program dapat mempunyai beberapa thread didalamnya. Jadi perbedaannya program yang multithreaded mempunyai beberapa flow of control yang berjalan secara konkuren atau paralel sedangkan program yang singlethreaded hanya mempunyai satu flow of control. Sebuah Program Gb.1. Dua thread dalam satu program Dua program yang dijalankan secara terpisah ( dari command line secara terpisah ), berada pada dua address space yang terpisah. Sebaliknya, kedua thread pada gambar diatas berada pada address space yang sama (address space dari program dimana kedua thread tersebut dijalankan). Kalau program itu berjalan diatas mesin dengan single processor, maka thread-thread itu dijalankan secara konkuren(dengan mengeksekusi secara bergantian dari satu thread ke thread yang lainnya). Jika program itu berjalan diatas mesin dengan multiple processor, maka thread-thread itu bisa dijalankan secara paralel (masing-masing thread berjalan di processor yang terpisah). Concurrency Parallelism Time Time Gb.2. Konkurensi dan parallelism Thread lainnya Sebuah Thread Task 2Task I T a s k 1 T a s k 2
  • 45. Tugas Statemen Pemrograman Java Gambar 2 dapat menjelaskan perbedaan antara konkurensi dan parallelism. Bahasa Java mempunyai kemampuan multithreading built-in, pada Java Virtual Macjine terdapat thread scheduler yang menentukan thread mana yang beraksi pada selang waktu tertentu. Scheduler pada JVM mendukung preemptive multithreading, yaitu suatu thread dengan prioritas tinggi dapat menyeruak masuk dan menginterupsi thread yang sedang beraksi, kemampuan ini sangat menguntungkan dalam membuat aplikasi real-time. Scheduler pada JVM juga mendukung non-preemptive multithreading I(atau sering disebut juga cooperative multithreading), yaitu thread yang sedang beraksi tidak dapat diinterupsi, ia akan menguasai waktu CPU, sampai ia menyelesaikan tugasnya atau secara eksplisit merelakan diri untuk berhenti dan memberi kesempatan bagi thread yang lain. Daur Hidup sebuah Thread Gb.3. State-state dari thread Newborn Sevbuah thread berada pada state ini ketika dia di instantiasi. Sebuah ruangan dimemori telah dialokasikan untuk thread itu,dan telah menyelesaikan tahap inisialisasinya. ……… Thread timerThread = new TimerThread(); …….. Pada state ini, timeThread belum masuk dalam skema penjadwalan thread scheduler. Runnable Pada state ini, sebuah thread berada dalam skema penjadwalan, akan tetapi dia tidak sedang beraksi. Kita bisa membuat timerThread yang kita buat sebelumnya masuk ke state runnable dengan : Blocked RunningRunnable Dead New Born stop() start() resume() notify() yield() stop() stop() suspend() sleep() wait()
  • 46. Tugas Statemen Pemrograman Java ….. timerThread.start(); …… Kapan tepatnya timerThread beraksi, ditentukan oleh thread scheduler. Running Pada state ini, thread sedang beraksi. Jatah waktu beraksi bagi thread ini ditentukan oleh thread scheduler. Pada kasus tertentu, thread scheduler berhak meng-interupsikegiatan dari thread yang seddang beraksi (misalnya ada thread lainnya dengan prioritas yang lebih tinggi). Thread dalam keadaan running bisa juga lengser secara sukarela, dan masuk kembali ke state runnable, sehingga thread lain yang sedang menunggu giliran(runnable) memperoleh kesempatan untuk beraksi. Tinddakan thread yang lengser secara sukarela itu biasanya disebut yield-ing. public void run() { ……. Thread.yield(); ……. } Blocked Pada tahap inii thread sedang tidak beraksi dan diabaikan dalam penjadwalan thread scheduler. Thread yang sedang terblok menunggu sampai syarat-syarat tertentu terpenuhi, sebelum ia kembali masuk kedalam skema penjadwalan thread scheduler (masuk state runnable lagi). Suatu thread menjadi terblok karena hal-hal berikut : a. Thread itu tidur untuk jangka waktu tertentu, seperti berikut : public void run() { …… try { thread.slepp(3000); //thread yg sedang beraksi akan tidur selama 3000 milisecond=3menit } catch (InterruptedException e) { ……. } b. Thread itu di- suspend(). Thread yang ter-suspend() itu bisa masuk kembali ke state runnable bila ia resume(). seperti hal berikut : …… //timerThread akan segera memasuki state blocked timerThread.suspend(); ……… timerThread.resume(); //timerThread kembali masuk state runnable …… c. Bila thread tersebut memanggil method wait() dari suatu object yang sedang ia kunci. Thread tersebut bisa kembali memasuki state runnable bila ada thread lain yang memanggil method notify() atau notifyAll() dari object tersebut. d. Bila thread ini menunggu selesainya aktifitas yang berhubungan dengan I/O. Misalnya, jika suatu thread menunggu datangnya bytes dari jaringan komputer maka secara otomatis thread tersebut masuk ke state blocked.
  • 47. Tugas Statemen Pemrograman Java e. Bila suatu thread mencoba mengakses critical section dari suatu object yang sedang dikunci oleh thread lain. Critical section adalah method/blok kode yang ditandai dengan kata synchronized. Dead Suatu thread secara otomatis disebut mati bila method run() – nya sudah dituntaskan (return dari method run() ). Contoh dibawah ini adalah thread yang akan mengecap state running hanya sekali saat thread scheduler memberinya kesempatan untuk running, ia akan mencetak “ I‟m doing something….something stupid….but I‟m proud of It”… kemudian mati. public class MyThread extends Thread { ….. public void run() { System.out.print(“I‟m doing something…”); System.out.print(“something stupid…”); System.out.println(“but I‟m proud of It…”); // MyThread akan mati begitu baris diatas selesai dieksekusi } …… }