java materi

Upload: syatria-babullah

Post on 30-Oct-2015

87 views

Category:

Documents


0 download

TRANSCRIPT

  • Java.Jamilah,SKom.,MT 1

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

    Karakteristik Java

    Sintaks Java merupakan pengembangan dari bahasa C/C++. Berikut adalah beberapa hal tentang

    pemrograman Java:

    1. Bersifat protable dan platform independent. Program Java yang telah ditulis akan dapat dieksekusi di mesin apapun dan sistem operasi apapun tanpa harus mengubah sedikitpun

    dari program tersebut.

    2. memiliki garbage collection yang dapat mendealokasikan memori secara otomatis. 3. menghilangkan sifat pewarisan berganda yang terdapat pafa C++. 4. Mengurangi pointer aritmetika. Pengaksesan lokasi memori secara langsung dengan

    menggunakan pointer memungkinakn program untuk melakukan suatu tindakan yang

  • Java.Jamilah,SKom.,MT 2

    tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi kemungkinan kesalahan

    seperti ini penggunaan pointer pada Java telah dibatasi dengan menggunakan reference.

    5. memiliki array sejati. 6. mengurangi kerancuan antara pemberian nilai pada statement conditional.

    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 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.Jamilah,SKom.,MT 3

    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.

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

    Pemrograman Berorientasi Objek (PBO)

    Pemrograman Berorientasi Objek dimulai pertama kali dengan bahasa Semula yang

    dikembangkan di Scandinavia di pertengahan tahun 60-an. Simula utamanya digunakan untuk

    pemrograman simulasi, dimana adalah alamiah untuk memodelkan suatu entitas eksternal / diluar

    sistem perangkat lunak dan untuk memilih istilah-istilah untuk entitas-entitas tersebut dan

    tingkah lakunya. Simula memiliki sintak yang mirip dengan Pascal, tetapi programmer berfikir

    sedikit lebih berbeda ketika merancang suatu program yang akan dibuat dengan Simula. Sebuah

    ide dasar yang diperkenalkan dalam Simula adalah inheritance (pewarisan). Dalam Simula juga

    sudah dikenal objek (entitas) yang ada dalam sistem yang dimodelkan. Ada beberapa objek yang

  • Java.Jamilah,SKom.,MT 4

    dikumpulkan kemudian disebut Class, dan tugas utama dari seorang perancang program dengan Simula adalah menentukan behaviour dari class tersebut.

    Elemen sebuah Objek: atribute dan behaviour

    Setiap objek selalu memiliki atribute dan behaviour yang dapat mengubah atribut

    tersebut. Sebagai contoh manusia memiliki atribut: umur, tinggi, berat dan sebagainya. Demikian

    pula manusia memiliki behaviour: menua, meninggi, makan (menambah berat badan) dan

    sebagainya. Behaviour juga dapat tidak mengubah sama sekali state dari objek tersebut, baik

    secara langsung maupun tidak langsung. Secara sederhana state bisa dianggap sebagai suatu kata

    benda karena sifatnya yang pasif, benda tersebut tidak melakukan operasi tetapi justru menjadi

    target atau bahan operasi. Demikian pul behaviour bisa dianggap sebagai kata kerja, karena ia

    berfungsi untuk menujukkan operasi apa yang dilakukan.

    Konsep Pemrograman Berorientasi Objek

    Ciri PBO adalah :

    1. Enkapsulasi

    Enkapsulasi adalah suatu mekanisme untuk menyembunyikan atau memproteksi

    suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem

    sekaligus menyederhanakan penggunaan system itu sendiri. Akses ke internal sistem diatur

    sedemikian rupa melalui seperangkat interface. Contoh kasus sepeda motor tadi, pada sistem

    pemindahan gigi transmisi, maka pengendara tidak perlu tahu detail dari bagaimana proses

    pemindahan gigi itu dilakukan oleh mesin, cukup tahu bagaimana menekan gigi transmisi itu.

    Pedal gigi transmisi yang diinjak pengendara itu merupakan interface (antar muka) pengendara

    dengan sistem transmisi sepeda motor.

    Dalam bahasa Java segala sesuatu adalah objek (everything is object). Setiap baris

    program yang ditulis programmer adalah merupakan bagian dari sebuah objek. Programmer juga

    dapat membangun sebuah objek yang disusun oleh objek-objek kecil, dimana masing-masing

    objek yang menyusunnya memiliki fungsi sendiri-sendiri.

    2. Pewarisan (Inheritance)

    Sebagai manusia kita sebenarnya terbiasa untuk melihat objek yang berada disekitar kita

    tersusun secara hierarki berdasarkan class-nya masing-masing. Dari sini kemudian timbul suatu

    konsep tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan

    dari class lainnya sehingga ia mendapatkkan cirri atau sifat dari class tersebut. Perhatikan

    contoh hirarki berikut ini:

  • Java.Jamilah,SKom.,MT 5

    Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin bersifat

    spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh binatang, demikian halnya juga

    Anjing, kucing dan Monyet memiliki seluruh sifat yang diturunkan dari class mamalia. Dengan

    konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan didefinisikan

    dalam class binatang saja. Class mamalia tidak perlu mendefinisikan ulang apa yang telah

    dimiliki oleh class binatang, karena sebagai class turunannya, ia akan mendapatkan karakteristik

    dari class binatang secara otomatis. Demikian juga dengan class anjing, kucing dan monyet,

    hanya perlu mendefinisikan karakteristik yang spesifik dimiliki oleh class-nya masing-masing.

    Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya perlu

    mendefinisikan karakteristik yang lebih umum akan didapatkan dari class darimana ia

    diturunkan.

    3. Polymorphism

    Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO,

    konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek

    agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses

    berbeda. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu

    interface banyak aksi.

    Aturan Dasar Java

    Aturan Dasar dari penggunaan sintaks bahasa JAVA

    JAVA bersifat case-sensitive Secara umum JAVA mengabaikan spasi kosong

    (karakter yang tidak muncul pada layar, mis kosong, tab, baris baru)

    Brace { } adalah simbol pengelompokkan dalam JAVA yang enandai awal dan akhir bagian suatu program.

    Setiap pernyataan JAVA diakhiri dengan simbol ; Simbol // membuat sebuah baris komentar Simbol /* */ membatasi bagian awal dan

    akhir suatu komentar

    Komentar javadoc khusus digunakan untuk men-generate dokumentasi HTML untukprogram Java Anda. Anda dapat menciptakan komentar javadoc dengan memulai

    baris dengan /** dan mengakhirinya dengan */.

    JAVA memiliki beberapa kata yang dicadangkan dan tidak bisa digunakan dalam ekspresi biasa. Kata-kata tersebut disebut keyword.

    Kelas pertama dalam sebuah program JAVA (disebut kelas pengendali) harus memiliki nama yang sama dengan file di mana ia disimpan.

    Contoh program :

    // menampilkan sebaris text dengan multiple statement

    class salam2 {

    public static void main(String[] args) {

    System.out.print(Selamat datang); System.out.println( di JAVA programming);

    }}

  • Java.Jamilah,SKom.,MT 6

    // menampilkan beberapa baris dengan sebaris statement

    class salam3 {

    public static void main(String[] args) {

    System.out.println(Selamat datang\n di JAVA programming); }

    }

    Identifier

    Identifier merupakan nama yang digunakan untuk menamai class, interface, variable dan

    method. Programmer dapat menentukan sendiri identifier yang akan digunakan. Hanya yang

    perlu diperhatikan adalah:

    - tidak ada batasan panjang, jadi identifier dapat dibuat dengan panjang karakter yang tidak terbatas.

    - Identifier harus diawali dengan huruf, underscore / garis bawah ( _ ) atau lambang dollar ($). Untuk selebihnya dapat digunakan karakter apapun, kecuali karakter yang digunakan

    sebagai operator oleh Java (*, +, -, /).

    - Bukan merupakan keyword yang telah dikenal oleh Java.

    Reserved Word / keywords

    Ini merupakan kata-kata yang telah dikenal oleh Java dengan memiliki arti khusus dalam

    program. Berikut ini adalah daftar kata-kata tersebut.

    Table 1 Daftar Kata (Keyword) yang dikenal dalam Java

    abstract Boolean break byte case

    catch Char Class const Continue

    default Do Double else Extends

    false Final finally float For

    goto If Implements import Instanceof

    int Interface long native New

    null Package Private protected Public

    return Short Static strictfp Super

    switch Synchronized this throw Throws

    transient True Try void Volatile

    while

    Tipe Data

    1. Tipe data Primitif Bahasa pemrograman Java mendefinisikan delapan tipe data primitif. Mereka diantaranya

    adalah boolean (untuk bentuk logika), char (untuk bentuk tekstual), byte, short, int, long, double

    and float (floating point).

    Tabel Tipe Data

    Tipe Lebar Jangkauan nilai

    Boolean True / False True / false

    Char 2 byte 0 65535

    Byte 1 byte -128.. +127

  • Java.Jamilah,SKom.,MT 7

    Short 2 byte - 32.768 32.767

    Int 4 byte 2.147.483.468 2.147.483.647

    Long 8 byte 9.233.372.036.854.755.808

    Float 4 byte 3,40282347E+38F

    Double 8 byte 1,79763913486231570E+308

    2. Tipe data composite /reference Merupakan tipe data yang dibentuk dari tipe data primitive seperti array dan String.

    Karakter Escape (Escape Sequence )

    Karakter Fungsi

    \a Bunyi bell atau alert

    \b Mundur 1 spasi (backspace)

    \f Form feed (ganti halaman)

    \n New line (ganti baris)

    \r Carriage return (ke kolom pertama,baris yg sama

    \t Tabulasi horizontal

    \v Tabulasi vertical

    \0 Nilai kosong (null)

    \ Tanda petik

    \ Petik ganada

    \\ Backslash

    Berikut adalah beberapa contoh penulisan literal:

    Contoh Tipe Data

    178 Int

    0xA17 Int dalam bentuk hexa

    072 Int dalam bentuk octal

    8864L Long

    37.266 Double

    37.266D Double

    87.363F Float

    26.77E3 Double

    ' c ' Char

    True Boolean

    False Boolean

    Variabel

    Ada 3 jenis variabel, yaitu :

    1. variabel instance (objek) adalah variabel yang digunakan untuk mendefnisikan atribut dari objek tertentu dan dideklarasikan di luar definisi method.

  • Java.Jamilah,SKom.,MT 8

    2. variabel kelas adalah variabel yang bersifat global terhadap kelas dan terhadap instance kelas. Untuk mendeklarasikan variabel kelas digunakan kata kunci static.

    Cont : static int jumlah

    static final int jumlah = 12; // untuk konstanta./

    3. Variabel local adalah variabel yang dideklarasikan dan dipakai dalam definisi method.

    Sintaks pendeklarasian variabel secara umum adalah sebagai berikut:

    Tipe_data nama_variable = nilai ;

    Contoh :

    int hitung;

    String kata = Java; Catatan:

    1. Tipe data pada JAVA, tidak tergantung pada mesin komputer.

    2. Character selalu diapit oleh tanda petik tunggal H 3. H suatu string yang berisi sebuah karakter

    Konversi Tipe Numerik

    Jika salah satu operand bertipe double, operand yang lain akan diubah menjadi double pula.

    Jika salah satu operand bertipe float, operand yang lain akan diubah menjadi float pula.

    Jika salah satu operand bertipe long, operand yang lain akan diubah menjadi long pula. Perubahan : byte short int long float double Sama halnya dengan int , short dan byte

    Type casting adalah istilah dimana suatu data dipaksa menjadi tipe data lain.

    Contoh : int x = 9;

    int y = 4;

    int z = x/y;

    Maka nilai z = 2.0 maka z diganti : double z = (double) x/y; maka z = 2.25;

    Constant (Konstanta)

    final final int PANJANG_SEGIEMPAT = 30;

    biasanya ditulis dengan huruf besar semua

    class constant ditulis dengan static final

    class Contoh

    {

    static final double G = 9.81;

    public static void main (String[] args)

    {

    System.out.println(G + meter per detik); }}

    Separator (Pemisah)

  • Java.Jamilah,SKom.,MT 9

    Simbol Nama Fungsi

    () 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.

    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

    + Addition

    - Subtraction

    * Multiplication

    / Division

    % Modulo

  • Java.Jamilah,SKom.,MT 10

    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

  • Java.Jamilah,SKom.,MT 11

    * / %

    + -

    >> >>> >= <

  • Java.Jamilah,SKom.,MT 12

    int[][] numbers = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};

    int searchNum = 5;

    boolean foundNum = false;

    searchLabel:

    for( int i=0; i

  • Java.Jamilah,SKom.,MT 13

    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;]

    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.

  • Java.Jamilah,SKom.,MT 14

    continue Pernyataan continue akan menghentikan iterasi yang bersangkutan tetapi program akan

    menjalankan sisa perulangan sampai dengan selesai. Bentuk labeled akan melanjutkan

    sebuah statement dengan melewati pengulangan yang sedang berjalan dari loop terluar yang

    diberi label (tanda).

    Contoh continue berlabel :

    outerLoop:

    for( int i=0; i

  • Java.Jamilah,SKom.,MT 15

    CLASS, OBYEK DAN METHOD

    Class

    Didefinisikan Class sebagai sebuah blue print, atau prototipe, yang mendefiniskan

    variable-variabel dan metode-metode yang umum untuk semua objek dari jenis tertentu.

    Class mendefinisikan atribut dan perilaku obyek yang dibuatnya. Class merupakan

    definisi formal suatu abstraksi. Class berlaku sebagai template untuk pembuatan obyek-obyek.

    Class berisi abstraksi yang terdiri dari nama class, atribut dan service.

    Bagian-bagian dari sebuah Class

    Secara umum penulisan class terdiri atas 2 bagian yakni:

    1. Class Declaration Bentuk Umum :

    [modifier] class

    { }

    Penamaan suatu class mempunyai aturan umum :

    a. Tidak menggunakan spasi atau menggunakan spasi dengan diganti _ (misal class Sarjana_Mipa)

    b. Tidak menggunakan kata-kata yang telah dipakai oleh compiler (reserved Word, lihat

    bab sebelumnya)

  • Java.Jamilah,SKom.,MT 16

    Modifier saat deklarasi kelas adalah :

    Tidak ditentukan (default) Kelas tersebut dapat diakses oleh kelas lain dalam satu package.

    Public Jika sebuah kelas tersebut dapat digunakan oleh kelas lain tanpa memperdulikan apakah

    kelas lain yang menggunkannya itu berasal dari package yang sama atau berbeda.

    Abstract Jika kelas tersebut memiliki abstract methode dan tidak dapat diinstantiasi menjadi

    sebuah objek.

    Final Kelas tidak akan dapat diturunkan lagi menjadi kelas turunan.

    Class Body

    Class Body merupakan bagian dari kelas yang mendeklarasikan kode program java.

    Class Body tersusun atas:

    a. Konstruktor

    b. Variable Instance (Atribut)

    c. Method (Fungsi-fungsi atau prosedur)

    Untuk dapat menggunakan kelas yang telah didefinisikan, anda harus membuat sebuah obyek

    dari kelas tersebut (instance class), dengan sintaks:

    NamaKelas namaObyek = new NamaKelas ( [parameter] );

    Contoh:

    Anjing goofy = new Anjing();

    Instance Variables (Atribute Class)

    Suatu obyek dapat dibedakan berdasarkan sifat (behavior) yang berbeda. obyek juga

    dapat dibedakan berdasarkan atributnya. Mis: burung dapat dibedakan berdasarkan suara

    kicauan, warna bulu, bentuk tubuh, dsb. Atribut yang membedakan suatu instance obyek burung

    yang satu dengan yang lainnya disebut instance variabel.

    Bentuk Umum : [modifier] [ = nilai default];

    Contoh : public double tinggi;

    private int berat = 70;

    Modifier untuk atribut, yaitu public, protected, private

    Perbedaan local dan instance variable

    1. Instance variables dideklarasikan di dalam kelas tetapi tidak di dalam method.

    class Kuda {

    double tinggi = 15.2;

    String jenis;

    }

    2. Local variables dideklarasikan di dalam method.

    int tambah( ) { int total = tinggi*2; // total adalah variabel local

  • Java.Jamilah,SKom.,MT 17

    return total; }

    Method

    Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau

    dari method lainnya untuk menjalankan fungsi yang spesifik di dalam kelas. Method dapat dibagi

    menjadi fungsi dan prosedur. Fungsi adalah bagian atau sub dari program yang mempunyai

    algoritma tertentu dalam menyelesaikan suatu masalah dengan mengembalikan hasil. Prosedur

    adalah bagian atau sub dari program yang mempunyai algoritma tertentu dalam menyelesaikan

    suatu masalah tanpa mengembalikan suatu nilai hasil. Secara umum method dalam java adalah

    sebuah fungsi.

    Berikut adalah karakteristik dari method :

    1. dapat mengembalikan satu nilai atau tidak sama sekali

    2. dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama sekali.

    Parameter bisa juga disebut sebagai argumen dari fungsi

    3. setelah method telah selesai dieksekusi, dia akan kembali pada method yang Memanggilnya.

    Deklarasi sebuah method

    Method terdiri atas dua bagian yakni :

    1. Method declaration

    2. Method Body

    Method dapat digambarkan sebagai sifat (behavior) dari suatu class. Untuk mendefinisikan

    method pada dalam class digunakan sintaks sintaks

    [modifier] nama_method( [parameter] ) { methode body }

    Contoh : public int Perkalian (int y;int z) { methode body }

    Modifier pada method

    Modifier menentukan level pengaksesan sebuah method. Hal ini menentukan apakah sebuah

    method bias diakses oleh objek lain, objek anak, objek dalam satu paket atau tidak dapat diakses

    oleh suatu object sama sekali berikut adalah beberapa jenis level access:

    Public Atribut ini menunjukan bahwa fungsi/method dapat diakses oleh kelas lain.

    Private Atribut ini menunjukan bahwa fungsi atau method tidak dapat diakses oleh kelas lain

    Protected Atribut ini menunjukan bahwa fungsi atau method bisa diakses oleh kelas lain dalam satu

    paket dan hanya kelas lain yang merupakan subclass nya pada paket yang berbeda.

    Tanpa modifier Atribut ini menunjukan bahwa method dapat diakses oleh kelas lain dalam paket yang

    sama.

    Abstract Fungsi tidak memiliki implementasi.

    Final Method tersebut tidak dapat dioverride oleh kelas turunan.

  • Java.Jamilah,SKom.,MT 18

    Static Method dapat diakses tanpa harus melakukan instantiasi terlebih dahulu.

    Parameter

    Bagian parameter diisi dengan parameter-parameter fungsi yang diperlukan. Parameter

    apabila lebih dari satu akan dipisahkan dengan tanda koma (,) parameter-parameter pada fungsi-fungsi di java akan di by pass value yang artinya pada tiap fungsi tidak akan dapat

    merubah isi dari variable parameter yang dimasukan.

    Untuk memanggil method dapat digunakan sintaks sebagai berikut:

    namaObyek.nama_method( [parameter] );

    Contoh :

    class manusia {

    int tinggi, berat;

    void init(int x, int y) {

    tinggi = x;

    berat = y; }

    public static void main(String args[]) {

    manusia putri = new manusia(); //pembuatan objek manusia

    putri.init(170,50); //memanggil method init dgn mngirim nilai 170&50

    System.out.println(tinggi = + utrid.tinggi + berat = + utrid.berat); } }

    out : tinggi = 170 berat = 50

    Method dengan nilai balik

    Bagaimana jika bagian lain dari program ingin tahu juga nilai volume itu tetapi tidak ingin

    menampilkannya (mencetaknya). Apabila terdapat suatu fungsi yang tidak menghasilkan suatu

    nilai apapun maka bagian return type ini diganti dengan void .

    Contoh penggunaan return:

    class balok { int p, l, t;

    void nilai (int a, int b, int c); { p = a; l = b; t = c;}

    int volume( ) { return (p*l*t); }

    public static void main(String args[]) {

    Scanner masuk = new Scanner(System.in);

    Sytem.out.print(Panjang = ); int a = masuk.nextInt(); Sytem.out.print(\n Lebar = ); int b = masuk.nextInt(); Sytem.out.print(\n Tinggi = ); int c = masuk.nextInt(); balok coba = new balok();

    coba.nilai(a,b,c); Sytem.out.print(\nVolume balok = + coba.volume()); }}

  • Java.Jamilah,SKom.,MT 19

    Out : Panjang = 2

    Lebar = 3

    Tinggi = 2

    Volume balok = 12

    Method Static

    Sebuah method static dapat diakses tanpa harus melakukan instantiasi terlebih dahulu.

    Pemanggilan method static dilakukan dengan format :

    Nama_kelas.nama_method();

    Nama_kelas diberikan bila method tersebut dipanggil dari kelas yang berbeda..

    Contoh :

    class MyStatic {

    static void Luas() { int p = 10; int l = 2 ;

    System.out.println(Luas = + p*l ); } public static void main (String [] args ) {

    Luas(); // pemanggilan method luas

    }

    Method Overloading

    JAVA interpreter memiliki kemampuan untuk menggunakan beberapa cara pemanggilan

    method. Method overloading merupakan method dengan nama sama tetapi argument atau daftar

    parameter berbeda. Overloading method merupakan cirri-ciri dari pemograman berbasis obyek

    yang bersifat polymorphisme.

    Contoh :

    class Anjing {

    void menggonggong() // tanpa parameter

    { System.out.println(guk guk); }

    void menggonggong(String suaraGonggongan)

    { System.out.println(suaraGonggongan); }

    public static void main(String args[] )

    { Anjing bleki = new Anjing();

    Anjing snoopy = new Anjing();

    bleki.menggonggong();

    snoopy.menggonggong(wuf wuf); }

    }

    output: guk guk

    wuf wuf

  • Java.Jamilah,SKom.,MT 20

    Kata Kunci This

    This merupakan besaran referensi yang digunakan dalam method yang dirujuk untuk

    objek yang sedang berlaku. Nilai this merujuk pada objek di mana method yang sedang berjalan

    dipanggil. This digunakan jika

    Contoh :

    class manusia {

    int tinggi, berat;

    void init(int x, int y) {

    this.tinggi = tinggi; // menyimpan nilai var local tinggi ke var instan tinggi

    this.berat = berat; }

    }

    class utama{

    public static void main(String args[]) {

    manusia putri = new manusia();

    putri.init(170,50); //memanggil method init dgn mngirim nilai 170&60

    System.out.println(tinggi = + putri.tinggi + berat = + putri.berat); } }

    out : tinggi = 170 berat = 50

    Konstruktor

    Konstruktor adalah method yang menginisialisasikan objek segera setelah pembuatan

    objek. Konstruktor tersebut memiliki nama yang sama dengan class tempatnya. Tugas

    konstruktor adalah menginisialisasikan semua keadaan dengan operator new yang akan segera

    memiliki objek yang baik dan berguna.

    Contoh :

    class Aktor{

    String nama;

    int umur;

    Aktor (String n, int u) //konstruktor

    { nama = n;

    umur = u; }

    void tampilAktor( )

    { System.out.print(namaku + nama+, umurku +umur+ tahun); } static void tertawa()

    { System.out.println(Hahaha.); } public static void main(String args[])

    { Aktor a = new Aktor(Dian Sastro,20); //menjalankan konstruktor a.tampilAktor( );

    tertawa(); //memanggil method static

    } }

    out : namaku Dian Sastro umur 20 tahun

    Hahaha.

  • Java.Jamilah,SKom.,MT 21

    Overloading Construktor

    Overloading konstruktor merupakan dua buah konstruktor atau lebih dengan parameter yang

    berbeda.

    Contoh :

    class Aktor{

    String nama;

    int umur;

    Aktor (String n, int u) // konstruktor

    { nama = n;

    umur = u; }

    Aktor() // konstruktor tanpa parameter

    { umur = 19; nama = Pratama; }

    void tampilAktor( )

    { System.out.print(namaku + nama+ , umurku +umur+ tahun);} static void tertawa() { System.out.println(Hahaha..haha); }

    class testAktor {

    public static void main(String args[])

    { Aktor a = new Aktor(Dian Sastro,20); Aktor b = new Aktor( ); //pemanggilan konstruktor tanpa parameter

    a.tampilAktor(); b.tampilAktor();

    Aktor.tertawa(); }

    }

    Out : namaku Dian Sastro umurku 20 tahun

    Namaku Pratama umurku 19 tahun

    Hahahahaha

  • Java.Jamilah,SKom.,MT 22

    INHERITANCE

    Inheritance

    Merupakan kelas yang diturunkan dari kelas lainya. Pada pewarisan semua yang dimiliki

    superclass secara otomatis dimiliki subclass meskipun tanpa dideklarasikan lagi.

    BU : nama_subclass extends nama_superclass { //class body }

    Contoh :

    class Point {

    int x, y;

    Point (int x ,int y) //konstruktor superclass dengan parameter

    { this.x = x; this.y = y; }

    void grs( ) { System.out.println(-------------------------); } }

    class Point3D extends Point{

    int z;

    Point3D (int x, int y, int z) //konstruktor subclass

    { super(x,y); //pemanggilan konstruktor kelas super dengan parameter x dan y

    this.z = z; }

    public static void main(String args[]) {

    Point3D p = new Point3D(10,20,30);

    System.out.println(x = + p.x+ y= +p.y+ z = +p.z); p.grs( ) ; }

    }

    out : x = 10 y = 20 z = 30

    ------------------------

    Ket : Pada contoh diatas dibuat sebuah kelas turunan dari kelas Point (superclass), yaitu kelas

    Point3D(subclass) yang mewarisi semua yang dimiliki kelas super.

    Overriding Method (Penindihan)

    Overriding yaitu subclass dan superclass memiliki nama method yang sama. Penindihan

    method meliputi pendefinisian methode dalam subclass yang memiliki ciri yang sama dengan

    superclass. Kemudian, ketika method dipanggil, methode dalam subclass ditemukan dan method

    inilah yang dieksekusi bukan method dalam superclassnya. Untuk menjalankan method

    superclass harus menggunakan :

    super.nama_method([parameter]));

    Contoh :

    class tampil1{

    private int x = 3, y = 1;

  • Java.Jamilah,SKom.,MT 23

    void tmp( ){ System.out.println( x = +x+ y = +y); } }

    class tampil2 extends tampil1{

    int z = 3;

    public static void main (String args[ ]) {

    tampil2 a = new tampil2 ( );

    // System.out.println( x = +p.x+ y = + p.y); salah, x, y private dan beda kelas. a.tmp(); }

    }

    Output : x = 3 y = 1

    ket : dalam subclass tidak ditemukan method tmp, maka JVM akan mencari method pada kelas

    atasnya (superclass).

    class tampil2 extends tampil1{

    int z = 3;

    void tmp() { System.out.println( x = +x+ y = +y+ z = +z); } public static void main (String args[ ]) {

    tampil2 a = new tampil2( );

    a.tmp(); }

    }

    Output : x = 3 y = 1 z = 3

    ket : method tmp pada tampil1 tertindih oleh method tmp pada kelas anak tampil2 sehingga

    methode anak yang akan dijalankan. Pada overriding hak akses pada method subclass

    harus lebih tinggi atau minimal sama dengan method superclass.

    Konstruktor Pada Inheritance

    Konstrukor pada kelas induk otomatis akan dijalankan saat pembuatan obyek pada kelas

    turunan. Bila kelas anak juga memiliki konstruktor maka sebelum menjalankan konstruktor kelas

    anak maka terlebih dahulu menjalankan konstruktor kelas induk. Untuk pemnggilan konstruktor

    pada kelas induk yang memiliki parameter, maka pemanggilanya menggunakan :

    super(arg1,arg2,); Contoh :

    class Bapak{

    int umur, berat = 60;

    Bapak () { System.out.println(Ini kelas Bapak); Bapak(int a) { System.out.println(Ini kelas Bapak dengan nilai a); } void tidur() { System.out.println(zzzzzzzzzzz); } void tertawa( ) { System.out.println(Huahahahaha..); } void menangis (){System.out.println(aduh..aduh.); } static berjalan() {System.out.println(Tak..tik..tuk..); }

    }

  • Java.Jamilah,SKom.,MT 24

    class Anak extends Bapak {

    super.umur = 100;

    Anak() { super(1); System.out.println(Ini kelas Anak); } protected void tidur() { System.out.println(errrerrrerr); } protected void tertawa ( ) { super.tertawa(); System.out.println(Hihihi..hihi.); }

    }

    class utama extends Bapak

    { public static void main(String [ ] args)

    { Bapak Andi = new Bapak();

    Anak Tama = new Anak();

    Andi.tertawa();

    Tama.umur = 19;

    Tama.tertawa();

    Tama.menangis(); berjalan();

    System.out.println(umur Tama = + Tama.umur + berat = + (Tama.berat + 50) ); }}

    Out : Ini kelas Bapak

    Ini kelas Bapak dengan nilai 1

    Ini kelas Anak

    Huahahahaha.. Huahahahaha..

    Hihihi..hihi aduh..aduh Tak..tik..tuk..

    Umur Tama = 19 berat = 50;

    Class Abstract

    Merupakan suatu class yang memiliki minimal satu abstract methode (method yang

    belum terdapat implementasinya) dan tidak dapat diinstantiasi. Kelas turunan harus

    mengimplementasikan semua method abstract. Kata kunci abstract tidak dapat digunakan untuk

    konstruktor dan method static.

    Contoh :

    abstract class manusia {

    int tinggi, berat;

    abstract void marah( ) ;

    void bernyanyi(){ System.out.println(Tralala..lilili); } }

    class bapak extends manusia {

    void marah() { System.out.println(errrrrrr); } //implementasi method }

    class utama{

    public static void main(String args[]) {

    //manusia putri = new manusia(); tidak diijinkan membuat objek kls manusia.

    bapak budi = new bapak();

  • Java.Jamilah,SKom.,MT 25

    // diperbolehkan membuat referensi objek

    manusia putri; putri = budi;

    budi.marah();

    budi bernyanyi(); } }

    out : errrrrr Tralala..lilili

    Class Final

    Merupakan kelas yang tidak dapat diturunkan lagi menjadi kelas baru.

    Contoh :

    final class manusia {

    int tinggi, berat;

    void bernyanyi(){ System.out.println(Tralala..lilili); } } class bapak extends manusia { }// salah

    Ket : pernyataan class bapak extends manusia tidak lagi diperbolehkan karena class manusia

    memiliki modifier final.

    Method Final

    Method final pada superclass merupakan method yang tidak dapat lagi dimiliki pada subclass,

    artinya method tersebut tidak dapat dioverride (diperbaharui) pada kelas turunan.

    Contoh :

    class manusia {

    final void bernyanyi(){ System.out.println(Tralala..lilili); } }

    class bapak extends manusia {

    // void bernyanyi() { System.out.println(Trilili..Lalala); }salah }

    ket : Pada kelas bapak tidak boleh mengimplementasikan ulang method bernyanyi karena pada

    kelas manusia method tersebut final.

    Inner Class

    Merupakan kelas yang didefinisikan di dalam kelas. Kelas inner dapat mengakses data

    dan method dari kelas luar, meskipun data dan method tersebut bersifat private. Sebaliknya kelas

    luar tidak dapat mengakses data atau method dari kelas dalam yang bersifat private.

    Ketentuan kelas inner :

    a. Kelas Luar yang mnegandung kelas inner bila dikompilasi akan menghasilkan dua file yaitu Luas.class dan Luas$Inner.class.

    b. Kelas Inner boleh tidak diberi nama disebut Anonymous Inner. c. Pada non-static, pembuatan objek inner class bila dilakukan di dalam method static, maka

    harus membuat objek kelas luar terlebih dahulu.

    Contoh :

    Luar a = new Luar(); // membuat objek kelas luar

  • Java.Jamilah,SKom.,MT 26

    Dalam.Luar b = a.new Dalam(); // membuat objek kelas Dalam

    Bila instantiasi dilakukan pada method non-static dari kelas luar, maka dapat dilakukan

    secara langsung seperti biasa.

    Contoh : Dalam b = new Dalam();

    d. Jika kelas Inner bersifat static, maka objek milik kelas Inner dapat dibuat sendiri tanpa melalui kelas luarnya tetapi kelas inner tidak dapat mengakses atribut ataupun method

    non-static milik kelas luar.

    Contoh :

    class Luar {

    private int c = 10;

    class Dalam {

    private int d = 100;

    void show() { System.out.println(Nilai c = +c +d = +d); }

    } void tampil(){ System.out.println( Kelas luar c = +c);

    //System.out.println(dari kelas luar d = +d); tidak diijinkan krn d private } }

    class test{

    public static void main(String[]args) {

    Luar a = new Luar();

    //Dalam b = new Dalam(); tidak diperbolehkan karena inner non-static

    Luar.Dalam b = a.new Dalam();

    a.tampil();

    b.show(); }

    }

    out : Nilai c = 10 d = 100

    Kelas luar c = 10

    Bila pembuatan objek kelas dalam dilakukan dalam method non-static milik kelas luar maka

    menjadi :

    class Luar {

    private int c = 10;

    class Dalam {

    private int d = 100;

    void show() { System.out.println(Nilai c = +c +d = +d); } }

    void tampil(){ Dalam b = new Dalam();

    b.show(); }

    }

    class test{

    public static void main(String[]args) {

    Luar a = new Luar(); a.tampil(); }}

  • Java.Jamilah,SKom.,MT 27

    Out : nilai c = 10 d = 100

    Static Inner class

    Pada static inner class pembuatan objek dapat dilakukan langsung tanpa harus melalui

    kelas luar. T etapi kelas inner tidak dapat menggunakan data atau method non-static pada kelas

    luar.

    Contoh :

    class Luar {

    int c = 10; static int e = 5;

    static class Dalam {

    private int d = 100;

    void show() {

    // System.out.println(Nilai c = +c ); salah karena c non-static System.out.println(Nilai d = +d + dan e = +e); } }

    class test{

    public static void main(String[]args) {

    Dalam b = new Dalam();

    b.show(); }}

    out: Nilai d = 100 dan e = 5

    ARRAY

    Array Dimensi satu

    Pendeklarasian Array :

    int[ ] nilaiMahasiswa;

    nilaiMahasiswa = new int [14];

    Atau bisa juga : int nilaiMahasiswa [] = new int[15];

    Int [] nilai Mahasiswa = new int[15];

    Bila nilai array langsung diberikan, maka penulisanyya tidak perlu menggunakan kata new.

    Penulisannya menjadi :

    int nilaiMahasiswa [] = {100,20,45,40,100};

    Jika array tidak diberi nilai, maka elemen array diberi nilai 0.

    Mendapatkan besar array dapat dilakukan dengan nama_array.length.

    Contoh :

    class Larik {

    public static void main(String[ ] args) {

    int A[ ] = {1 , 2 , 3 , 4};

    System.out.print(A.length);

    System.out.println(A[1]); }}

  • Java.Jamilah,SKom.,MT 28

    Out: 42

    Contoh2 :

    import java.io.*

    class input Array

    {

    public static void main(String[] args) throws IOException

    { String[] nama = new String[100];

    BufferedReader masuk= new BufferedReader

    (new InputStreamReader(System.in));

    System.out.print("masukkan banyak data:");

    int pil = Integer.parseInt(masuk.readLine());

    for (int i =1; i

  • Java.Jamilah,SKom.,MT 29

    mat[i][j] = Integer.parseInt(a.readLine()); } }

    } }

    class inputArray

    {

    public static void main(String[] args) throws Exception

    { Array a = new Array(); //menjalankan konstruktor array

    }}

    Out : Masukan elemen matriks ke 0 0 : 2

    Masukan elemen matriks ke 0 1 : 4

    Masukan elemen matriks ke 1 0 : 2

    Masukan elemen matriks ke 1 1 : 6

    Contoh 2 :

    import java.util.*;

    import java.io.*;

    class test

    {

    public static void main(String args[]) throws Exception{

    Scanner a = new Scanner(System.in);

    BufferedReader b = new BufferedReader(new InputStreamReader(System.in));

    String nama[] = new String[100];

    int nilai[]=new int[4];

    int rata[]=new int[100];

    System.out.print("Jumlah Mhs : ");

    int n = a.nextInt();

    for(int i = 0;i

  • Java.Jamilah,SKom.,MT 30

    Nama mhs 1 : Andi Ruslan

    Nilai 1 : 90

    Nilai 2 : 100

    Nilai 3 :70

    Nilai 4 : 100

    Nama mhs 2 : Dewi Antariksa

    Nilai 1 : 90

    Nilai 2 : 100

    Nilai 3 : 50

    Nilai 4 : 100

    Andi Ruslan dengan rata-rata = 90

    Dewi Antariksa dengan rata-rata = 85

  • Java.Jamilah,SKom.,MT 31

    PACKAGE DAN INTERFACE

    Package

    adalah container class yang digunakan untuk menjaga ruang nama class tetap terbagi-

    bagi. Package disimpan secara hirarkis dan secara eksplisit diimpor ke dalam definisi class baru.

    Package sangat berguna untuk :

    - memungkinkan kita mengoorganisir kelas2 ke dalam unit-unit. - Mengurangi masalah yang timbul akibat konflik nama.

    Fasilitas Pakage merupakan mekanisme penamaan dan kendali atas ketampakan data dan

    metoda. Package didefinisik

    an dengan menambahkan baris:

    package ;

    pada awal file. Jika sebuah kelas tidak mempunyai package maka akan masuk ke package

    default.

    File-file class yg tergabung dalam satu package harus disimpan pd satu direktori dg

    nama direktori adalah nama package. Kelas yang berasal dari suatu package diakses dengan

    menggunakan nama package dan nama kelas. Misal points.Point (kelas Point yang terdapat pada

    package points). Kelas yang berasal dari suatu package dapat diakses langsung dengan

    menggunakan nama kelas dengan cara menggunakan import

    Package & enkapsulasi

    Package juga merupakan mekanisme untuk membatasi scope sebuah variabel/method/class

    variabel/method/class yang tidak memiliki access modifier (public/private/protected) memiliki scope package, yaitu hanya dapat diakses oleh class lain yang berada dalam satu

    package

    variabel/method dengan access modifier protected dapat diakses oleh class lain yang berada dalam satu package dan kelas turunan pada package yang berbeda.

    Modifier di kelas & Package

    Segala sesuatu yg didekalrasikan public dpt diakses dari manapun

    Segala sesuatu yg dideklarasikan private tidak dpt diakses diluar kelasnya

    Ketika modifier tidak ditulis secara eksplisit (menjadi default) maka data dan method itu akan tampak di subkelas-subkelas, dan kelas lain dalam satu paket

    Jika data dan metoda hanya ingin dilihat pd subkelas secara langsung modifier yg digunakan protected

    Level tertinggi adalah paket yang disebut Java (built-in) yang mencakup kelas-kelas :

    a. lang : berisi fungsionalitas bahasa yang paling dasar.

    b. applet : kelas dasar untuk seluruh applet.

    c. awt : kelas untuk pengembangan antarmuka grafis (Abstrac Windowing Toolkit).

    d. io : untuk operasi file Input/Output

    e. net : untuk operasi jaringan

  • Java.Jamilah,SKom.,MT 32

    f. util : berisi utilitas-ultilitas yang penting.

    BU : package nama pkg1[.pkg2[.pkg3]] ;

    Contoh 1 :

    package Paketku.Display ;

    public class Displayku

    { public void suara() {System.out.print(Test package); } }

    keterangan : buat class Displayku (file Displayku.java) di dalam package Display

    atau Displayku simpan di dalam folder C:\Paketku\Display.

    Statement Import

    Untuk mengimport kelas dari suatu paket, kita menggunakan perintah import.

    BU : import package1[.package2].nama_kelas ;

    Mis : import Paketku.Display.Displayku;

    import java.io.* ; //mengimport semua kelas yang terdapat dalam java.io

    Conflik nama :

    import hariclass.*;

    import idoclass.*;

    keduanya mempunyai class Namaku,

    pembuatan obyek : Namaku a= new Namaku(); // salah

    hariclass.Namaku a = new Namaku(); // benar

    Contoh :

    //file Displayku.java pada folder Paketku\Display

    package Paketku.Display ; public class Displayku

    { public void suara() {System.out.print(Test package); } }

    //file Displayku1.java pada folder Paketku

    package Paketku;

    import Display.Displayku; // karena turunan dari Displayku

    public class Displayku1 extends Displayku

    { public void suaraku() {System.out.print(Test package anak); } }

    //file testPackage.java

    import Paketku.Display.Displayku ; //mengakses kelas Displayku

    import Paketku.Displayku1 ; //mengakses kelas Displayku1

    class testPackage{

    public static void main(String args[]) {

    displayku coba = new displayku();

    displayku1 coba1 = new displayku1();

    coba.suara(); coba1.suara(); } }

  • Java.Jamilah,SKom.,MT 33

    Out : Test package

    Test package

    Ket :

    Simpan file testPackage.java pada drive C.

    Modifier kelas harus public dan pada method jika ingin dapat diakses dari luar paket maka harus public atau protected untuk dapat diakses kelas turunan

    Simpan file Displayku.java pada C:\Paketku\Display

    Simpan file Displayku1.java pada C:\Paketku

    Compile C:\javac testPackage.java

    Untuk class yang mengimport package harus memiliki hirarki yang lebih tinggi atau sama bila mempunyai path yang sama.Misal pada paket di atas, maka jangan menyimpan file

    testPackage.java pada C:\Paketku\Display\Uji

    Penulisan :

    import java.util.*;

    class MyDate extends date

    { . .. }

    bila tanpa statemen import dapat dituliskan menjadi

    class MyDate extends java.util.date

    { .. }

    Hak akses pada package

    Private Tanpa pengubah Protected Public

    Class yang sama V V V V

    Subclass package yg sama X V V V

    Non subclass p. yg sama X V V V

    Subclass beda package X X V V

    Non subclass beda package X X X V

    V : Dapat diakses

    X : tidak dapat diakses

    Antarmuka ( Interface)

    Adalah eksplisit suatu kumpulan methode yang dapat diipmlementasikan class tanpa

    implementasi sesungguhnya yang berhubungan dengan spesifikasi tersebut. Suatu class dapat

    mengimplementasikan antarmuka dengan jumlah tak terbatas, meskipun hanya diturunkan dari 1

    superclass. Untuk menggunakan interface, class harus mengimplementasikan interface tersebut.

    Antarmuka :

    - tanpa variabel instance

    - method dideklarasikan tanpa isi dan konstanta - kelas yang mengimplementasikan sebuah interface harus menyediakan semua method

    yang disebutkan dalam interface tersebut.

  • Java.Jamilah,SKom.,MT 34

    Bentuk umum : [modifier] interface nama+interface { [isi interface] }

    Modifier : public atau default

    Contoh : interface Coba{

    void method1 ( int nilai);

    int A = 5;

    String B = Sukses; }

    class Test implements Coba{

    public void method1 (int n) {

    System.out.println(callback called with + n +A);

    public static void main (Sting args[])

    { Test c = new Test();

    c. method1(42);

    System.out.println(B); }

    out : callback called with 425

    Sukses

    Apabila suatu class mengimplementasikan interface maka semua konstanta dari interface akan

    dimiliki oleh oleh class. Kelas yang mengimplement interface harus mengimplementasikan

    semua method pada interface. Interface harus dideklarasikan public dan secara default

    merupakan static dan final sedangkan method dlam interface otomatis selalu public dan abstract(

    tidak ada definisinya).

  • Java.Jamilah,SKom.,MT 35

    EXCEPTION

    Exception adalah pesan yang sengaja dilemparkan oleh Java Virtual Mecine ketika terjadi

    kegagalan dalam menjalankan statement. Ecxeption merupakan keadaan tidak normal yang

    muncul pada suatu bagian program pada saat dijalankan.

    Dalam Java Excetion adalah sebuah objek dari kelas-kelas yang diturunkan dari Throwable.

    Class Throwable memiliki 2 subclass, yaitu Error dan Exception. Error ditunjukkan dan

    ditanganni secara internal oleh JVM. Sedangkan class yang dapat ditangani merupakan turunan

    dari Exception.

    Beberapa keadaan yang dapat dilaporkan disebabkan oleh kesalahan program/desain program,

    diantaranya :

    NullPointerException : dilemparkan jika Anda memanggil sebuah metode dari sebuah variable yang bernilai null

    FileNotFoundException : dilemparkan jika anda mencoba mengakses sebuah file tidak ada.

    ArrayOutOfBondException : dilemparkan jika Array melebihi batas

    SQLException : dilemparkan jika terjadi kesalahan/ kegagalan berinterkasi dengan basis data.

    ClassCastException : dilemparkan jika anada mencoba mencasting obyek lain yang tidak sesuai.

    Penanganan Eksepsi

    Try-Catch Bentuk : try{..} catch() {.}

    Di dalam blok try merupakan kode program yang ingin dilindungi. Catch enentukan

    eksepsi yang ingin ditangkap. Bolk catch untuk mendefinisikan kode program yang akan

    dijalankan bila terjadi eksepsi tersebut. Jika terjadi kesalahan makan blok catch akan

    diabaikan.

    Contoh tanpa penanganan :

    class cobaException {

    public static void main(String args[]) {

    int bil = 10;

    System.out.println( bil / 0 );

    } }

    Output : Exception in thread main java.lang.ArithmeticException : / by zero At cobaException.main(cobaException.java:4)

    Contoh dengan Try-Catch

    class cobaException {

    public static void main(String args[]) {

    int bil = 10;

    try { System.out.println( bil / 0 ); }

  • Java.Jamilah,SKom.,MT 36

    catch(Exception e) { System.out.println(Ada error); } } }

    Output : Ada error

    Catch majemuk 1 blok try dapat menggunakan lebih dari satu blok catch

    Contoh :

    class catchMajemuk {

    public static void main(String args[]) {

    int a = args.length;

    string b[ ] = (a,b,c}; try { System.out.println(40/a);

    System.out.println( b[3] ) ; }

    catch(ArithmeticException ai)

    { System.out.println(Ada pembagian dengan nol);} catch(ArrayIndexOutOfBoundsException n)

    { System.out.println(Array melebihi kapasitas); } catch(Exception e)

    { System.out.println(Ada error); } } }

    C:\ java catchMajemuk

    Output : Ada pembagian dengan nol

    C:\ java catchMajemuk 2

    Output :

    40

    Array melebihi kapasitas

    Ket :

    Pada output yang pertama tidak terdapat argument, maka a yang menyimpan panjang

    args bernilai 0 sehingga terdapat pembagian nol. Catch yang pertama menangkap pembagian

    40/a yaitu 40/0. Karena eksepsi telah ditangkap oleh blok catch yang pertama, maka blok

    catch yang kedua tidak dijalankan lagi. Pada output yang kedua terdapat argument sehingga

    panjang a bernilai 1,. maka eksepsi yang tertangkap adalah

    ArrayIndexOutOfBoundsException karena index array ke-3 tidak ada.

    Try bersusun. Contoh :

    class catchTersusun {

    static void dalam(){String b[] ={"a","b","c"};

    try { System.out.println( b[3] ) ;}

    catch(ArrayIndexOutOfBoundsException n)

    { System.out.println("Array melebihi kapasitas"); }

    }

  • Java.Jamilah,SKom.,MT 37

    public static void main(String args[]) {

    int a = args.length;

    try { System.out.println(40/a); dalam(); }

    catch(ArithmeticException ai)

    { System.out.println("Ada pembagian dengan nol");}

    catch(Exception e)

    { System.out.println("Ada error"); } } }

    Output sama dengan contoh catchMajemuk. Prosedur memiliki penanganan try-catchnya

    sendiri.

    Throw Digunakan untuk melemparkan suatu eksepsi. Pertama kita harus mendapatkan

    penanganan dalam suatu instant Throwable, melalui suatu parameter ke dalam bagian catch,

    atau dengan menggunakan operator new.

    Bentuk umum : throw Throwableinstance;

    Setelah exception dilemparkan oleh throw, program akan mencari blok try-catch yang cocok.

    Contoh :

    class cobaThrow{

    Static void coba() {

    try {throw new NullPointerException(Demo); } catch(NullPointerException e)

    { System.out.println(tertangkap dalam dalam method coba); throw e; } }

    public static void main(String args[]) {

    try { coba(); }

    catch(NullPointerException e)

    { System.out.println(Tertangkap lagi dalam main: +e) ; } } }

    output : tertangkap dalam method coba

    Tertangkap lagi dalam main : java.lang.NullPointerException :Demo

    Ket : pada method coaba sudah tertangkap adanya eksepsi sehingga blok catch dijalankan.

    Kemudian eksepti tersebut dilemparkan kedalam main yang memanggilnya maka akan

    tertangkap lagi dalam blok try-catch yang sesuai sehingga blok catch pada main menangkap

    lagi eksepsi pada method coba.

    Throws Dipakai untuk menyatakan sebuah method yang mungkin melemparkan exception yang

    tidak ditanganinya sendiri.

    Contoh :

    class cobaThrows {

    static void fungsi() throws Exception

    { String b[] ={"a","b","c"};

  • Java.Jamilah,SKom.,MT 38

    System.out.println(b[3]); throw new Exception(); }

    public static void main(String args[]) {

    try { fungsi(); }

    catch(ArithmeticException ai)

    { System.out.println("Ada pembagian dengan nol");}

    catch(ArrayIndexOutOfBoundsException n)

    { System.out.println("array melebihi kapasitas "+n);}

    catch(Exception e)

    { System.out.println("Ada error"+e); } } }

    Output : Array melebihi kapasitas java.lang. ArrayIndexOutOfBoundsException : 3

    Finally Blok finally digunakan bersamaan dengan blok try-catch. Blok finally akan selalu

    dieksekusi baik ada eksepsi atau tidak sebelum program berakhir. Dalam pemanggilan suatu

    methode, finally disksekusi sebelum methode kembali.

    Contoh :

    class cobaFinally {

    public static void main(String args[]) {

    int a = 10;

    try { System.out.println(a / 0); }

    catch(ArithmeticException ai)

    { System.out.println(Ada pembagian dengan nol);} finally { System.out.println(Finally selalu dieksekusi); } } }

    Output : Ada pembagian dengan nol

    Finally selalu dieksekusi

    Subclass Exception Kita dapat membuat class baru yang mewarisi class Exception dari java.lang.Exception.

    Contoh :

    class salah extends Exception {

    salah(String a) //gunakan konstruktor

    { super(a); // memanggil kontuktor pada kelas Exception dengan mengirim String

    } }

    class ujiTest{

    static void hitung(int a) throws salah{

    System.out.println(hitung dengan nilai a = +a); if (a > 3) throw new salah(salah disengaja ko); System.out.println (Kondisi normal) ; } public static void main(String args[]) {

  • Java.Jamilah,SKom.,MT 39

    try { hitung(1);

    hitung(4); }

    catch(salah e)

    { System.out.println(Terdapat eksepsi + e) ; } } }

    Output : hitung dengan nilai a = 1

    Kondisi normal

    Hitung dengan nilai a = 4

    Terdapat eksepsi salah : salah disengaja ko

    MULTITHREADING

    Thread (lightweight process raut execution context) adalah sebuah singlesequential flow

    control di dalam program. Secara sederhana, thread adalah sebuah sub program yang berjalan di

    dalam program. Sebuah thread mempunyai awal dan akhir. Multhithreading adalah program

    yang mempunyai beberapa flow of control yang berjalan secara konkuren atau pararel.

    Scheduler JVM mendukung :

    a. preemptive multithreading, suatu thread prioritas tinggi bisa menyeruak masuk dan menginterupsi thread yang sedang beraksi.

    b. non-preemptive (cooperative) multithreading, thread yang sedang beraksi tidak dapat diinterupsi.

    Ada dua macam thread dalam Java, yaitu :

    1. Daemon thread, merupakan thread yang siklus hidupnya tergantung pada thread utama. Apabila thread utama berakhir maka otomatis thread-thread daemon juga berakhir.

    2. User thread, apabila thread utama berakhir maka user thread akan terus dijalankan.

    Daur hidup thread :

    newborn thread diinstantiasi, sebuah ruangan di telah dialokasikan untuk thread ini dan telah

    menyelesaikan tahap inisialisasi. Pada state ini, timerThread belum masuk dalam skema

    penjadwalan.

    . Thread coba = new Thread ( );

    .

    Runnable Sebuah thread berada dalam skema penjadwalan akan tetapi dia tidak sedang beraksi.

    .. coba.start()

    Running Pada state ini, thread sedang beraksi. Jatah waktu beraksi ditentukan oleh thread

    scheduler. Thread yang berada dalam state ini dapat juga lengser secara sukarela, dan

    masuk kembali ke status runnable, sehingga thread lain yang sedang menunngu giliran

  • Java.Jamilah,SKom.,MT 40

    memperoleh kesempatan untuk beraksi. Tindakan thread yang lengser secara sukarela

    disebut dengan yield-ing.

    public void run ( ){

    Thread.yield();

    . }

    Blocked Pada tahap ini thread sedang tidak beraksi dan diabaikan dalam penjadwalan. Suatu

    thread terblok jika :

    a. Thread itu tidur untuk jangka waktu tertentu. Thread.sleep(3000); // tidur selama 3000milisecond = 3 menit.

    b. Thread itu di-suspend( )

    Thread yang ter-suspend bisa masuk kembali ke ruunable bila ia di resume.

    . timerThread.suspend( ); // thread memasuki state blok

    timerThread.resume( ); // thread memasuki state runnable

    c. Thread tersebut memanggil method wait( ) dari suatu objek yang sedang ia kunci.

    Thread tersebut bisa kembali ke ruunable bila ada thread lain yang memanggil

    method notify( ) atau notifyAll( ) dari objek tersebut.

    d. Bila thread ini menunggu selesainya aktivitas yang berhubungan dengan I/O. e. Bila thread mencoba mengakses critical section dari suatu objek yang sedang dikunci

    oleh thread lain. Critical section adalah segmen dalam kode, bisa berupa method

    maupun blok dimana beberapa thread yang berbeda mengakses objek yang sama.

    Dead Suatu thread secara otomatis disebut mati bila method run()-nya sudah diselesaikan. Suatu

    thread juga bisa dead bila ia di stop( ).

    Untuk mendefinisikan thread ada dua cara, yaitu :

    1. Membuat subclass dati Thread 2. Mengimplementasikan Interface Runnable.

    1. Thread dengan membuat subclass dari java.lang.Thread :

    public class Coba1 extends Thread

    { String nama;

    coba1(String nm) { nama = nm ; }

    public void run ( )

    {

    for(int i = 0; i

  • Java.Jamilah,SKom.,MT 41

    coba1 t2 = new coba1(B); coba1 t3 = new coba1(C); t1.start(); //mejalankan method run

    t2.start();

    t3.start(); }}

    Out program diatas Program akan memberikan kluaran yang berbeda tiap kali eksekusi.

    Misal : Thread[main,5,main]

    Thread[Threadku,5,main]

    AAAAAAAABBCCCCBCABBCCABBBBCCBC.AABBBB

    2. Thread dengan mengimplementasikan Interface Runnable

    Bentuk : Thread objek = new Thread(Objekrunnable,);

    Objek.start();

    atau

    new Thread(Objekrunnable,).start();

    Contoh :

    public class Coba2 implements Runnable

    { String nama;

    Coba2 (String nm) {

    nama=nm;

    Thread objek = new Thread(this) ; objek.start(); }

    public void run ( )

    {

    for(int i = 0; i

  • Java.Jamilah,SKom.,MT 42

    import java.io.*;

    public class user extends Thread

    { String nama;

    user(String nm) { super(nm); /**menjalankan thread dengan sekali instantiasi*/

    nama = nm ; start(); }

    public void run ( )

    { while(true) { System.out.print (nama); } }

    public static void main (String args[ ]) {

    user t1 = new user("A");

    user t2 = new user("B");

    user t3 = new user("C");

    try{ System.in.read();

    System.out.println(" Tombol enter ditekan");}

    catch(IOException o)

    {System.out.println(o);}

    System.out.println("selesai"); }}

    Apabila dijalankan maka program ini akan menampilkan A, B, dan C secara bergantian.

    Bila kita menekan tombol enter maka akan keluar :

    Tombol enter ditekan

    selesai

    Setelah thread utama yang menjalankan method main berakhir maka thread yang telah dibuat

    akan terus berjalan karena merupakn tipe user thread. Untuk menghentikan tekan tombol

    Control+C.

    Untuk menjadikan suatu thread menjadi daemon thread, gunakan method

    setDaemon(true). Misal pada contoh1 pada method Coba1(String nm) menjadi :

    Coba1(String nm) { super(nm); nama = nm ; setDaemon(true) ; start(); }

    maka ketika menekan enter program berhenti termasuk semua thread-thread yang ada.

    Sinkronisasi

    Satu atau lebih thread membutuhkan akses yang hampir bersamaan ke suatu sumber daya

    terbagi, maka thread-thread tersebut perlu sangat memperhatikan agar hanya ada satu yang

    mengakses dalam satu saat. Java menyediakan dukungan tingkat bahasa yang unik untuk

    sinkronisasi yang disebut monitor. Monitor adalah suatu objek yang digunakan sebagai kunci

    eksklusif untuk kepentingan bersama. Cara untuk memasuki suatu monitor objek adalah dengan

    memanggil suatu method yang ditandai dengan kata kunci synchronize.

    Bentuk : synchronize() { //satemen yang akan disinkronisasikan }

    Contoh Synchronized pertama

    class hasil{

  • Java.Jamilah,SKom.,MT 43

    static void cetak(String str1, String str2) {

    try { System.out.print (str1); Thread.sleep(1000);

    System.out.println(str2); }

    catch(Exception e)

    { System.out.println(e); }

    }}

    public class Coba2 implements Runnable

    { String nama,angka;

    Coba2 (String str1, String str2) { nama=str1; angka=str2 ;

    new Thread(this); //membuat objk thread (new born)

    objek.start(); }

    public void run ( ) {

    hasil.cetak(str1,str2) ; }

    public static void main (String args[ ]) {

    new Coba2("A","1");

    new Coba2("B","2");

    new Coba2("C","3");

    }}

    out : ABC1

    2

    3

    Ini disebabkan tidak adanya sesuatu yang menhgentikan ketiga thread untuk memanggil method

    yang sama pada objek yang sama. Bila kita tambahkan kata kunci synchronized menjadi :

    class hasil {

    synchronized static void cetak (String srt1,String str2) {. }

    Out menjadi :

    A1

    B2

    C3

    Contoh Synchronized kedua

    class hasil{

    void cetak(String str1, String str2){

    try{

    System.out.print (str1); Thread.sleep(100);

    System.out.println(str2); }

    catch(Exception e){System.out.println(e); }

    } }

    public class Coba2 implements Runnable

    { String nama,angka;

    hasil cetak1;

  • Java.Jamilah,SKom.,MT 44

    Coba2 (String str1, String str2,hasil cetak1)

    { nama=str1; angka=str2 ;this.cetak1=cetak1;

    Thread a = new Thread(this,Thread sinkronisasi); System.out.println(a); a.start();}

    public void run ( )

    {

    synchronized (cetak1) {cetak1. cetak(nama,angka); }

    }

    public static void main (String args[ ]) {

    hasil cetak1 = new hasil();

    Coba2 t1 = new Coba2("A","1",cetak1);

    Coba2 t2 = new Coba2("B","2",cetak1);

    Coba2 t3 = new Coba2("C","3",cetak1);

    }}

    Out : Thread[Thread Sinkronisasi,5,main]

    Thread[Thread Sinkronisasi,5,main]

    Thread[Thread Sinkronisasi,5,main]

    A1

    B2

    C3

    Komunikasi Thread

    Java memasukkan suatu mekanisme antar-proses yang elegan berupa method wait, notify,

    dan notifyAll. Method-method ini diimplementasikan sebagai method-method final pada objek

    sehingga semua class memilikinya. Ketiga method tersebut hanya boleh dipanggil dari dalam

    method synchronized.

    wait : memberitahukan thread yang berlaku untuk menyerahkan monitor dan beristirahat sampai suatu jalinan lain memasuki monitor.

    notify: membangunkan jalinan pertama yang memanggil wait pada objek yang sama.

    notifyAll:membangunkan semua objek yang memanggil wait pada objek yang sama. Thread dengan prioritas tertinggi yang bangun akan jalan terlebih dahulu.

    Method cflass thread :

    Thread.currentThread() menghasilkan objek thread berupa thread yang sedang berjalan.

    Thread.yield() Menyebabkan runtime mengalihkan konteks dari thread yang berlaku ke thread lain yang

    tersedia dan dapat dijalankan.

    Thread.sleep(int n) Menyebabkan thread yang berlaku beristirahat selam n milidetik.

    Method instans :

    start()

  • Java.Jamilah,SKom.,MT 45

    Memberitahukan runtime java untuk menciptakan konteks jalinan dan menjalankannya.

    run() Metod run adalah badan thread yang berjalan.

    stop() Menyebabkan thread segera berhenti.

    suspend() Suspend mengambil thread tertentu dan menyebabkanya berhenti tanpa menghancurkan

    thread system yang berjalan sebelumnya.

    resume() Digunakan untuk menghidupkan method yang di-suspend.

    setPriority(int p) mengisiprioritas suatu thread dengan besaran integer. Ada beberapa konstanta priority,

    yaitu MIN_PRIORITY, NORM_PRIORITY, dan MAX_PRIORITY, secara berurutan

    bernilai 1,5,10.

    getPriority() mengjhasilkan prioritas thread, berupa suatu nilai antara 1 sampai 10.

    setName(String name) Mengulang pemberian nama thread sesuai dengan argument name.