Struktur Pemrograman Java

of 47 /47
Tugas Pemrograman Structur & Statement Programing Java Di Susun Oleh : Nama : Roji Muhidin NIM : 1202080 STIMIK MUHAMMADIYAH BANTEN 2014

Embed Size (px)

Transcript of Struktur Pemrograman Java

  • 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

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

  • Tugas Statemen Pemrograman Java

    Preseden Operator

    Tertinggi

    () [] .

    ++ -- ~ !

    * / %

    + -

    >> >>> >= <

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

    //hes so cute,whos he???

    String NiceGuyName = ng.getName();

    System.out.println(OH!!!! HES +

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

    }

    }

    class Siam extends Katt {

    public Siam() {

    system.out.println(Siam Constructor);

    }

    public void speak() {

    system.out.println(Mmurrrrmmurrrr);

    }

    }

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

    CrashBoom

    Katt constructor

    Siam constructor

    Mmurrrmmurrr

    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 whats 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(taptapclick-

    clicktapPLAK ! ClickDOR !!!);

    }

    public void tidur() {

    system.out.println(Buzzzngingggg.);

    }

    }

    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, Its a Siam);

    } else if (kandangKatt[I] instanceof Anggora) {

    System.out.println(Look, they sent us Anggora);

    }else {

    System.out.println(WellIt could be Lucifer, +

    or Alleys or Regular Katt);

    System.out.println(But one thing for sureits 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