180
RANGKUMAN Java, Aplikasi dan Basis Data TUGAS Diajukan untuk memenuhi syarat mendapatkan nilai Mata kuliah Java Pada Teknik Telekomunikasi OLEH : Khoirunnisaa (101331017) Nurisma Kurnia R (101331022) PROGRAM STUDI TEKNIK TELEKOMUNIKASI JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI BANDUNG 2012 1 | Page

Buku Java

Embed Size (px)

Citation preview

Page 1: Buku Java

RANGKUMANJava, Aplikasi dan Basis Data

TUGASDiajukan untuk memenuhi syarat mendapatkan nilai

Mata kuliah Java Pada Teknik Telekomunikasi

OLEH :

Khoirunnisaa (101331017)

Nurisma Kurnia R (101331022)

PROGRAM STUDI TEKNIK TELEKOMUNIKASI

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI BANDUNG

2012

1 | P a g e

Page 2: Buku Java

BAB 1Latar Belakang Java,

Teknologi dan

Fitur Java2 | P a g e

Page 3: Buku Java

Latar Belakang Java

Java merupakan bahasa pemograman yang biasa

digunakan dalam berbagai computer dan juga telepon genggam,.

Bahasa ini awalnya dibuat pada 1991 oleh sekelompok insinyur

Sun dipimpin oleh Patrick Naughton dan James Gosling yang

ingin merancang bahasa komputer untuk perangkat konsumer

seperti cable TV Box. Bahasa ini banyak mengadopsi sintaksis

yang terdapat pada C dan C++ namun dengan sintaksis model

objek yang lebih sederhana. Aplikasi-aplikasi berbasis java

umumnya dikompilasi ke dalam p-code (bytecode) dan dapat

dijalankan pada berbagai Mesin Virtual Java (JVM). Java

merupakan bahasa pemrograman yang bersifat umum/non-

spesifik (general purpose), dan secara khusus didisain untuk

memanfaatkan dependensi implementasi seminimal mungkin.

Karena fungsionalitasnya yang memungkinkan aplikasi java

mampu berjalan di beberapa platform sistem operasi yang

berbeda. Saat ini java merupakan bahasa pemrograman yang

paling populer digunakan, dan secara luas dimanfaatkan dalam

pengembangan berbagai jenis perangkat lunak aplikasi ataupun

aplikasi berbasis web. Pada Java, suatu variabel tidak selalu

merujuk pada suatu objek tertentu. Variabel-variabel yang ada

dikelompokan ke dalam dua kelompok, yaitu tipe data referensi

dan tipe data primitif.

Java telah mengakomodasi hampir seluruh fitur penting

bahasa–bahasa pemrograman yang ada semenjak perkembangan

komputasi modern, diantaranya adalah :

SIMULA, bahasa yang paling mempengaruhi JAVA sekaligus C+

+

LISP, fasilitas garbage collection yang diadopsi oleh JAVA

3 | P a g e

Page 4: Buku Java

Algol, JAVA mengadopsi struktur kendali darinya

Dari C++, diadopsi sintaks, sebagian semantiks dan exception

handling

bahasa Ada, diambil strongly type, dan exception handling

Objective C, diambil fasilitas interface

bahasa SmallTalk, diambil pendekatan single-root class

hiérarchie, dimana object adalah satu kesatuan hirarki

pewarisan bahasa Eiffel, fasilitas assertion yang mulai

diterapkan di sebagian JDK 1.4

Versi awal Java ditahun 1996 sudah merupakan versi

release sehingga dinamakan Java Versi 1.0. Java versi ini

menyertakan banyak paket standar awal yang terus

dikembangkan pada versi selanjutnya:

java.lang: Peruntukan kelas elemen-elemen dasar.

java.io: Peruntukan kelas input dan output, termasuk

penggunaan berkas.

java.util: Peruntukan kelas pelengkap seperti kelas struktur

data dan kelas kelas penanggalan.

java.net: Peruntukan kelas TCP/IP, yang memungkinkan

berkomunikasi dengan komputer lain menggunakan jaringan

TCP/IP.

java.awt: Kelas dasar untuk aplikasi antarmuka dengan

pengguna (GUI)

java.applet: Kelas dasar aplikasi antar muka untuk diterapkan

pada penjelajah web.

Kelebihan, teknologi, dan Alasan Mempelajari Java

Multiplatform

4 | P a g e

Page 5: Buku Java

Kelebihan utama dari Java ialah dapat dijalankan di

beberapa platform / sistem operasi komputer, Pemograman

cukup menulis sebuah program Java dan dikompilasi

(diubah, dari bahasa yang dimengerti manusia menjadi

bahasa mesin / bytecode) hasilnya dapat dijalankan di atas

beberapa platform tanpa perubahan. Kelebihan ini

memungkinkan sebuah program berbasis java dikerjakan

diatas operating system Linux tetapi dijalankan dengan baik

di atas Microsoft Windows. Platform yang didukung sampai

saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun

Solaris.

OOP (Object Oriented Programming - Pemrogram

Berorientasi Objek)

OOP adalah semua aspek yang terdapat di Java adalah

Objek. Java merupakan salah satu bahasa pemrograman

berbasis objek secara murni. Semua tipe data diturunkan

dari kelas dasar yang disebut Object. Dapat dijalankan pada

berbagai platform sistem operasi dikembangkan untuk

berbagai sistem operasi dan bersifat open source

Bergaya C++

Java memiliki sintaks seperti bahasa pemrograman C++

sehingga menarik banyak pemrogram C++ untuk pindah ke

Java. Saat ini pengguna Java sangat banyak, sebagian besar

adalah pemrogram C++ yang pindah ke Java. Universitas-

universitas di Amerika Serikat juga mulai berpindah dengan

mengajarkan Java kepada murid-murid yang baru karena

lebih mudah dipahami oleh murid dan dapat berguna juga

bagi mereka yang bukan mengambil jurusan komputer.

Sederhana

5 | P a g e

Page 6: Buku Java

Java menghilangkan penggunaan pointer dan multiple

inheritance namun menggunakan automatic memory

allocation dan memory garbage collection.

Dapat didistribusi dengan mudah

Java dibuat untuk membuat aplikasi terdistribusi secara

mudah dengan adanya libraries networking yang

terintegrasi pada Java.

Interpreter

Program Java dijalankan menggunakan interpreter yaitu

Java Virtual Machine (JVM). Hal ini menyebabkan source

code Java yang telah dikompilasi menjadi Java bytecodes

dapat dijalankan pada platform yang berbeda-beda

Robust

Reliabilitas dan ketelitian yang lebih tinggi dibandingkan

bahasa pemrograman lain. Serta runtime-Exception

handling dalam membantu mengatasi error pada

pemrograman

Aman

Java memiliki mekanisme keamanan untuk menjaga

aplikasi tidak digunakan untuk merusak sistem komputer

yang menjalankan aplikasi tersebut

Dinamis

Java didesain untuk dapat dijalankan pada lingkungan yang

dinamis. Perubahan pada suatu class dengan

menambahkan properties ataupun method dapat dilakukan

tanpa menggangu program yang menggunakan class

tersebut

6 | P a g e

Page 7: Buku Java

Kekurangan dari Java

Tulis sekali, perbaiki di mana saja

Masih ada beberapa hal yang tidak kompatibel antara

platform satu dengan platform lain. Untuk J2SE, misalnya

SWT-AWT bridge yang sampai sekarang tidak berfungsi

pada Mac OS X.

Mudah didekompilasi

Dekompilasi adalah proses membalikkan dari kode jadi

menjadi kode sumber. Ini dimungkinkan karena kode jadi

Java merupakan bytecode yang menyimpan banyak atribut

bahasa tingkat tinggi, seperti nama-nama kelas, metode,

dan tipe data. Hal yang sama juga terjadi pada

Microsoft .NET Platform. Dengan demikian, algoritma yang

digunakan program akan lebih sulit disembunyikan dan

mudah dibajak/direverse-engineer.

Penggunaan memori yang banyak

Penggunaan memori untuk program berbasis Java jauh

lebih besar daripada bahasa tingkat tinggi generasi

sebelumnya seperti C/C++ dan Pascal (lebih spesifik lagi,

Delphi dan Object Pascal). Biasanya ini bukan merupakan

masalah bagi pihak yang menggunakan teknologi terbaru

(karena trend memori terpasang makin murah), tetapi

menjadi masalah bagi mereka yang masih harus berkutat

dengan mesin komputer berumur lebih dari 4 tahun.

Integrated Development Environment

Banyak pihak telah membuat IDE (Integrated Development

Environment - Lingkungan Pengembangan Terintegrasi) untuk

Java. Yang populer saat ini (Juli 2006) antara lain:

7 | P a g e

Page 8: Buku Java

Dr. Java, program gratis yang dikembangkan oleh

Universitas Rice, Amerika Serikat

BlueJ, program gratis yang dikembangkan oleh Universitas

Monash, Australia

NetBeans (open source- Common Development and

Distribution License (CDDL))

NetBeans disponsori Sun Microsystems, dan versi terkininya

memilki Matisse, sebuah GUI Editor yang menurut pendapat

umum merupakan yang terbaik

Eclipse JDT (open source- Eclipse Public License)

Eclipse dibuat dari kerja sama antara perusahaan-

perusahaan anggota 'Eclipse Foundation' (beserta individu-

individu lain). Banyak nama besar yang ikut dalam 'Eclipse

Foundation', termasuk IBM, BEA, Intel, Nokia, Borland.

Eclipse bersaing langsung dengan Netbeans IDE. Plugin

tambahan pada Eclipse jauh lebih banyak dan bervariasi

dibandingkan IDE lainnya.

IntelliJ IDEA (commercial, free 30-day trial)

Oracle JDeveloper (free)

Xinox JCreator (ada versi berbayar maupun free)

JCreator ditulis dalam C/C++ sehingga lebih cepat (dan

menggunakan memori lebih sedikit) dari kebanyakan IDE.

Fitur Java

Java Virtual Machine

mesin imajiner (maya) yang bekerja dengan menyerupai

aplikasi pada sebuah mesin nyata

JVM menyediakan spesifikasi hardware dan platform dimana

kompilasi kode Java terjadi

8 | P a g e

Page 9: Buku Java

Aplikasi program Java diciptakan dengan file teks

berekstensi .java, Program ini dikompilasi menghasilkan

bytecode berekstensi .class.

Garbage Collection

seorang programmer mengalokasikan memori pada saat

dijalankan

setelah menggunakan alokasi memori tersebut, harus terdapat

cara untuk mengembalikan blok memori tersebut supaya

program lain dapat menggunakannya

Jika tidak akan menyebabkan situasi yang dikenal dengan

nama memory leaks

Program Java melakukan garbage collection yang berarti

program tidak perlu menghapus sendiri objek-objek yang tidak

digunakan lagi.

Code Security

terimplementasi pada Java melalui penggunaan Java Runtime

Environment (JRE)

Java menggunakan model pengamanan 3 lapis untuk

melindungi sistem dari untrusted Java Code, yaitu classloader,

bytecode verifier dan manajemen keamanan

class-loader menangani pemuatan kelas Java ke runtime

interpreter, yaitu menyediakan pengamanan dengan

memisahkan kelas-kelas yang berasal dari local disk dengan

kelas–kelas yang diambil dari jaringan

bytecode verifier membaca bytecode sebelum dijalankan dan

menjamin bytecode memenuhi aturan–aturan dasar bahasa

Java

9 | P a g e

Page 10: Buku Java

manajemen keamanan menangani keamanan tingkat aplikasi

dengan mengendalikan apakah program berhak mengakses

sumber daya seperti sistem file, port jaringan, proses eksternal

dan sistem windowing

Fase-fase Pemrograman Java

10 | P a g e

Page 11: Buku Java

BAB 2Komentar pada

Java,Pernyataan dalam 11 | P a g e

Page 12: Buku Java

Java dan Blok ,Java

Identifier, ....

12 | P a g e

Page 13: Buku Java

Komentar Pada Java

Pada bahasa pemrograman  manapun  komentar  program 

biasa digunakan untuk memberikan penjelasan baris atau blok

program  supaya pembaca program  atau programer  lainnya

supaya bisa mengerti bagian-bagian program tersebut. Java

mendukung tiga jenis komentar : C++ style komentar satu baris,

C style beberapa dan baris, dan komentar javadoc khusus.

1. End Of Line Comment ( // )

Komentar  dengan tanda slash ganda ( // ) disebut dengan end-of-

line comment,  karena semua perintah program, komentar-

komentar atau penjelasan program berada setelah tanda slash

ganda, semua dianggap sebagai komentar dan komentar hanya

satu baris saja. Contoh:

Penulisan Komentar C++ Style

// This is a C++ style or single line comments

2. Multiple Line Comment ( /* */)

Komentar  dengan tanda slash  dan asterik ( / *  */) disebut 

dengan Multiple-Line Comment, karena ini, perintah program,

komentar-komentar  atau penjelasan program  berada dalam

apitan tanda slash dan asterik, semua dianggap sebagai

komentar,  dan komentar  bisa lebih dari satu baris. Contoh :

Penulisan Komentar C Style

/* this is an example of a

C style or multiline comments */

3.Javadoc Comment ( /**   */)

Komentar dengan tanda slash ganda didepan  dan asterik ( /**  

*/)  disebut  dengan Javadoc Comment.  Penggunaannya sama

13 | P a g e

Page 14: Buku Java

seperti  Multiple  Line Comment,  akan tetapi penggunaannya

untuk dokumentasi-dokumentasi didalam program. Semua

komentar program atau penjelasan program  pada saat program 

java dicompile tidak ikut serta dicompile, karena tidak dianggap

sebagai suatu baris program.Contoh :

Komentar Khusus javadoc

/**

This is an example of special java doc comments used for

generating an html documentation. It uses tags like:

@author Florence Balagtas

@version 1.2

*/

Komentar javadoc khusus digunakan untuk men-generate

dokumentasi HTML untuk program Java Anda

Anda dapat menciptakan komentar javadoc dengan memulai

baris dengan /** dan mengakhirinya dengan */.

Pernyataan dalam Java dan Blok

Pernyataan adalah satu atau lebih baris kode yang diakhiri

dengan semicolon. Sebagai contoh untuk pernyataan

tunggal adalah:

System.out.println(“Hello world”);

Blok adalah satu atau lebih pernyataan yang terbentang

antara kurung kurawal buka dan kurung kurawal tutup yaitu

sekumpulan pernyataan sebagai satu unit kesatuan

Contoh berupa Blok (pernyataan majemuk):

public static void main( String[] args )

{

System.out.println("Hello");

System.out.println("world");

14 | P a g e

Page 15: Buku Java

Java Identifier

Java Identifier adalah suatu tanda yang mewakili nama-

nama vaiabel, method, class dsb.Contoh dari pengidentifikasi

adalah : Hello, main, System, out.Pendeklarasian Java adalah

case-sensitive. Hal ini berarti bahwa pengidentifikasi : Hello tidak

sama dengan hello.Pengidentifikasi harus dimulai dengan salah

satu huruf, underscore “_”, atau tanda dollar “$”. Hurufnya dapat

berupa huruf besar maupun huruf kecil. Karakter selanjutnya

dapat menggunakan nomor 0 smpai 9. Pengidentifikasi/identifier

tidak dapat menggunakan kata kunci dalam java seperti class,

public, void, dsb.

Pedoman Penulisan Program:

1.Untuk pemberian nama dai class java, diberikan huruf kapital

untuk huruf pertama pada nama class. Untuk nama method

dan variabel, huruf pertama dari kata harus dimulai dengan

huruf kecil. Sebagi contoh:

ThisIsAnExampleOfClassName

thisIsAnExampleOfMethodName

2.Pada kasus untuk pengidentifikasi labih dari satu kata ,

menggunakan huruf kapital untuk mengindikasikan awal dari

kata kecuali kata pertama. Sebagai contoh, charArray,

fileNumber, ClassName.

3.Hindari menggunakan underscores pada awal

pengidentifikasian seperti _read atau _write.

Keywords dalam Java

Keyword adalah pengidentifikasi yang telah dipesan untuk

didefinisikan sebelumnya oleh java untuk tujuan tertentu. Anda

tidak dapat menggunakan keyword sebagai nama variabel anda,

15 | P a g e

Page 16: Buku Java

class, method dsb. Berikut ini adalah daftar dai kata kunci dalam

java (Java Keywords).

Java Literals:

Literals adalah tanda bahwa tidak terjadi perubahan atau

konstan. Macam-macam literals dalam Java adalah :

Integer Literals,

Floating-Point Literals,

Boolean Literals,

Character Literals dan String Literals

Tipe Data Dalam Java

Tipe data diperlukan agar compiler tahu operasi apa yang

valid dan seberapa banyak memori yang diperlukan oleh sebuah

nilai yang akan disimpan atau dioperasikan. Di dalam Java

terdapat tiga tipe data yaitu tipe data primitif, tipe data referensi

dan array.

Tipe Data Primitif

Tipe data primitif adalah tipe data dasar yang dikenali oleh

Java dan bukan merupakan class.Walaupun kelihatan sepele,

tetapi dengan memahami cara penggunaan dan mengetahui

16 | P a g e

Page 17: Buku Java

nilai-nilai yang dapat ditampung oleh variabel data ini dapat

mempermudah pekerjaan kita. Terutama sekali bagi seorang

programmer Java yang sehari-harinya berhadapan dengan

berbagai macam data dan manipulasinya. Data ini bisa berasal

dari database server, text, web, dsbnya.

Tipe data primitif ini dapat dikenali dengan ciri sebagai berikut

:

memiliki keyword huruf kecil semuanya

memiliki wrapper class, yaitu class yang membantu untuk

mewakili dan mengolah lebih lanjut nilai dari tipe data

bersangkutan. Misalkan int dengan, class Integer.

karena bukan suatu class, untuk inisialisasi variabel tidak

menggunakan keyword new

Ada 8 tipe data primitif dalam bahasa Java.

Ke delapan tipe data pada tabel di dibawah dapat

dikelompokan menjadi empat kolompok

logika – boolean

Boolean, merupakan tipe data yang menunjukan nilai

true atau false, yang terdiri atas Boolean.

tekstual – char

Tipe data character (char) mewakili simbol dari sebuah

karakter yang terdiri atas char, diwakili oleh karakter

17 | P a g e

Page 18: Buku Java

single Unicode. Tipe data ini harus memiliki ciri berada

dalam tanda single quotes(’ ’).

'\'' //untuk single quotes

'\"' //untuk double quotes

Integral – byte, short, int & long

Integral, merupakan tipe data bilangan bulat yang

terdiri atas byte,short, int, dan long.

Tipe data integral dalam Java menggunakan tiga

bentuk- yaitu desimal, oktal atau heksadesimal, contoh

2 //nilai desimal 2

077 //angka 0 pada awal pernyataan

mengindikasikan nilai oktal

0xBACC //karakter 0x mengindikasikan nilai

heksadesimal

Dalam mendefinisikan suatu nilai long,

lowercase L tidak dianjurkan karena sangat sulit

untuk membedakan dari digit 1

Floating Point – float dan double

Floating-Point, merupakan tipe data bilangan pecahan

yang terdiri ata float dan double.

E or e //(add exponential value)

F or f //(float)

D or d //(double)

Semua angka bilangan bulat secara default adalah bertipe

int. Oleh sebab itu perlu digunakan suffix L untuk menyatakan

bilangan bulat yang bertipe long , apalagi jika nilai bilangan bulat

yang digunakan sudah melewati jangkauan nilai int. Sebaliknya

untuk bilangan pecahan, secara default tipenya adalah double.

Sehingga untuk semua nilai pecahan yang akan dimasukkan

18 | P a g e

Page 19: Buku Java

sebagai nilai untuk tipe data float ini, maka perlu diberikan suffix

f.

Variabel

Variabel adalah item yang digunakan data untuk

menyimpan pernyataan objek.Suatu variabel baru dapat

digunakan apabila telah dideklarasikan. Pernyataan deklarasi

variabel digunakan untuk mendeklarasikan satu atau lebih

variabel dan memberinya nama. Ketika komputer mengeksekusi

deklarasi variabel, Komputer akan menyediakan ruangan di

memori kemudian menyimpan alamat ini sesuai dengan nama

variabel yang diberikan. Nama_variabel dapat berupa sebuah

nama variabel atau beberapa nama sekaligus yang dipisah

dengan koma. Gaya pemrograman yang baik yaitu dengan

mendeklarasikan satu variabel dalam satu pernyataan, kecuali

variabel tersebut berhubungan erat satu sama lain. Atau

pendeklarasian variabel bisa juga dilakukan sekaligus dengan

pemberian nilainya,

Jenis-jenis Variabel

Java memiliki beberapa jenis variabel yang dapat dikelompokkan

sebagai berikut :

Instance Variables (tidak statis). Dalam bahasa

pemrograman berorientasi objek, objek menyimpan

variabel yang tidak dideklarasikan dengan kata kunci static

dalam kategori non-statis, atau dapat berubah-ubah. Suatu

kelas dapat dijelmakan ke dalam beberapa objek. Nilai yang

terkandung dalam variabel tak-statis ini berbeda untuk

setiap objeknya.

19 | P a g e

Page 20: Buku Java

Class Variables (statis). Variabel ini merupakan bagian

integral dari suatu kelas, dan tidak ada satu objek pun yang

dapat menyatakan kepemilikan atas variabel ini. Variabel

yang dideklarasikan sebagai statis digunakan bersama oleh

semua objek. Variabel ini lebih bersifat global yang nilainya

sama untuk setiap objek pada kelas yang bersangkutan.

Local Variables. Variabel ini didefinisikan di dalam suatu

metoda (method) atau dalam suatu prosedur. Variabel ini

bersifat lokal karena hanya dapat diakses oleh metoda atau

prosedur tersebut.

Parameter. Paramater atau argumen adalah variabel yang

digunakan pada saat suatu metoda atau prosedur

dipanggil. Parameter berguna untuk memberikan nilai awal

untuk diteruskan (pass) ke dalam suatu prosedur atau

metoda.

Untuk deklarasi variabel adalah sebagai berikut :

<tipe data > <name> [=initial value];

Contoh :

char option;

option = 'C'; //menandai 'C' sebagai option

Sangat baik untuk menginisialisasi variabel yang Anda

buat seperti Anda mendeklarasikannya

double exam=0;

double quiz=10;

Variabel Reference dan Variabel Primitif

String pada JAVA merupakan kelas yang menangani

deretan karakter

Berbeda dengan bahasa C/C++, yaitu String

digunakan dengan melakukan inisialisasi dalam

20 | P a g e

Page 21: Buku Java

bentuk array sebagai kumpulan dari suatu karakter.

Contoh :

char nama[15];

Menampilkan data Variabel

Variabel Reference dan Variabel Primitif

Variabel primitif adalah variabel dengan tipe data

primitif. Mereka menyimpan data dalam lokasi

memori yang sebenarnya dimana variabel tersebut

berada

Variabel Reference adalah variabel yang menyimpan

alamat dalam lokasi memori yang menunjuk ke lokasi

memori dimana data sebenarnya berada

Sebagai contoh :

int num = 10; // variabel primitif

String name = "Hello“ // variabel reference

Variabel Reference dan Variabel Primitif

String pada JAVA merupakan kelas yang menangani

deretan karakter

Berbeda dengan bahasa C/C++, yaitu String

digunakan dengan melakukan inisialisasi dalam

bentuk array sebagai kumpulan dari suatu karakter.

Contoh :

char nama[15];

21 | P a g e

Page 22: Buku Java

OPERATOR PADA JAVA

Operator Java merupakan karakter khusus yang berupa

simbol atau tanda yang memerintahkan compiler untuk

melakukan berbagai operasi terhadap sejumlah operand. Perintah

operasi dispesifikasikan oleh operator, dimana operand-nya

adalah variabel, pernyataan, atau besaran literal.

A. Operator Aritmatika

Sama halnya dengan semua bahasa pemrograman, Java

menyediakan operator-operator aritmatika untuk manipulasi

variabel data numerik.

B. Operator Increment dan Decrement

Operator Increment dan Decrement digunakan untuk

menaikan atau menurunkan suatu nilai integer (bilangan bulat)

sebanyak satu satuan, dan hanya dapat digunakan pada variabel.

Ada dua versi operator increment maupun decrement, yaitu

prefix dan postfix. Prefix berarti operator digunakan sebelum

variabel atau ekspresi, dan postfix berarti operator digunakan

sesudahnya.

22 | P a g e

Page 23: Buku Java

C. Operator Assignment ( Penugasan )

Operator assignment dalam Java digunakan untuk memberikan

sebuah nilai ke sebuah variabel.

D. Operator Relasi

Operator relasi dalam Java digunakan untuk menghasilkan nilai

boolean yang sering digunakan untuk mengatur alur jalannya

sebuah program.

E. Operator Logical

23 | P a g e

Page 24: Buku Java

Operator ini digunakan untuk ekspresi logik yang menghasilkan

nilai boolean. Operator-operator yang digunakan adalah AND ( &&

), OR ( ¦ ¦ ) dan NOT ( ! ).

F. Operator Bitwise

Operator ini dalam Java digunakan untuk melakukan manipulasi

bit.

G. Precedence Operator

Operator precedence didefinisikan sebagai perintah yang

dilakukan compiler ketika melakukan evaluasi terhadap operator,

untuk mengajukan perintah dengan hasil yang tidak ambigu/ hasil

yang jelas. Operasi-operasi yang menggunakan operator dapat

melibatkan lebih dari 1 operator dan 1 operand. Operator

precedence juga dapat didefinisikan sebagai perintah yang

dilakukan compiler ketika melakukan evaluasi terhadap operator,

untuk mengajukan perintah dengan hasil yang tidak ambigu/ hasil

yang jelas

24 | P a g e

Page 25: Buku Java

H. Operator Kondisi( ?: )

Operator kondisi ?: adalah operator ternary. Berarti bahwa

operator ini membawa tiga argumen yang membentuk suatu

ekspresi bersyarat. Struktur pernyataan yang menggunakan

operator kondisi adalah sebagai berikut :

25 | P a g e

Page 26: Buku Java

BAB 3Struktur Kontrol

Pemilihan,Struktur 26 | P a g e

Page 27: Buku Java

Kontrol

Perulangan,Pernyataan

Percabangan

27 | P a g e

Page 28: Buku Java

Struktur Kontrol Pemilihan

Struktur kontrol pemilihan adalah pernyataan dari Java

yang mengijinkan user untuk memilih dan mengeksekusi blok

kode spesifik dan mengabaikan blok kode yang lain. Java

menyediakan dua buah perintah untuk proses pemilihan, yaitu if

dan switch-case. Kedua perintah ini digunakan untuk mengontrol

eksekusi tergantung pada kondisi yang ditentukan sebelumnya.

Statement “If”

Pernyataan if akan menentukan sebuah pernyataan (atau blok

kode) yang akan eksekusi jika dan hanya jika persyaratan bernilai

benar (true).

Bentuk dari pernyataan if :

Bentuk dasar Statement if :

if( boolean_expression )

statement;

atau

if( boolean_expression ) {

statement1;

statement2;

. . .

}

Contoh Penggunaan Statement if

int grade = 68;

if( grade > 60 ) 28 | P a g e

Page 29: Buku Java

System.out.println("Congratulations!");

Atau

int grade = 68;

if( grade > 60 ){

System.out.println("Congratulations!");

System.out.println("You passed!");

}

Statement “If-else”

Pernyataan if-else digunakan apabila kita ingin mengeksekusi

beberapa pernyataan dengan kondisi true dan pernyataan yang

lain dengan kondisi false.

Bentuk statement if-else :

if( boolean_expression )

statement;

else

statement;

Atau dapat ditulis sbb :

if( boolean_expression ){

statement1;

statement2;

. . .

}

else{

statement1;

statement2;

. . .

}

29 | P a g e

Page 30: Buku Java

Contoh Penggunaan Statement if-else

int grade = 68;

if( grade > 60 )

System.out.println("Congratulations!");

else

System.out.println("Sorry you failed");

atau

int grade = 68;

if( grade > 60 ){

System.out.println("Congratulations!");

System.out.println("You passed!");

}

else {

System.out.println("Sorry you failed");

}

Statement “ if-else-if”

Pernyataan pada bagian kondisi else dari blok if-else dapat

menjadi struktur if-else yang lain. Kondisi struktur seperti ini

mengijinkan kita untuk membuat seleksi persyaratan yang lebih

kompleks.

30 | P a g e

Page 31: Buku Java

Bentuk statement if-else-if :

Bentuk statement if-else if,

if( boolean_expression1 )

statement1;

else if( boolean_expression2 )

statement2;

else

statement3;

Contoh Penggunaan Statement if-else-if

int grade = 68;

if( grade > 90 ){

System.out.println("Very good!");

}

else if( grade > 60 ){

System.out.println("Very good!");

}

else{

System.out.println("Sorry you failed");

}

Kesalahan umum ketika menggunakan statement if-else-if (cont.)

Kondisi pada statement if tidak mengevaluasi nilai logika

boolean. Contohnya :

31 | P a g e

Page 32: Buku Java

//SALAH

int number = 0;

if( number ){

//some statements here

}

Penulisan elseif yang seharusnya ditulis sebagai else if.

Menggunakan operator = sebagai operator perbandingan

yang seharusnya adalah operator “==“ Contohnya :

//SALAH

int number = 0;

if( number = 0 ) {

//Beberapa pernyataan

}

Seharusnya kode tersebut ditulis :

//BENAR

int number = 0;

if( number == 0 ){

//beberapa pernyataan

}

Statement “Switch”.

Perintah switch merupakan pemilihan alternatif, yang biasanya

digunakan untuk penyederhanaan perintah if yang banyak

mengandung kondisi. Switch mengkonstruksikan cabang untuk

beberapa kondisi dari nilai.

Statement switch Tidak seperti pada pernyataan if,

beberapa pernyataan pada struktur pernyataan switch akan

dieksekusi tanpa memerlukan tanda kurung kurawal “{ }”

Ketika sebuah case pada pernyataan switch menemui

kecocokan, semua pernyataan pada case tersebut dan

case lain yang berada dibawahnya akan dieksekusi.

32 | P a g e

Page 33: Buku Java

Untuk menghindari program mengeksekusi pernyataan

pada case berikutnya, digunakan pernyataan break sebagai

pernyataan akhir pada setiap blok case.

Bentuk statement switch :

Struktur Kontrol Perulangan

while

Struktur perulangan while adalah jenis perulangan yang

mendefinisikan kondisi di awal blok. Artinya jika kondisi

tidak terpenuhi (bernilai false) maka proses perulangan

tidak akan pernah dieksekusi. Inisialisasi nilai ditulis

sebelum penulisan struktur while itu sendiri, sedangkan

iterasi ditulis di dalam blok perulangan

Bentuk pernyataan while:

while( boolean_expression ){

statement1;

statement2;

. . .

33 | P a g e

Page 34: Buku Java

}

Contoh Penggunaan While Loop

int x = 0;

while (x<10)

{

System.out.println(x);

x++;

}

Atau

//infinite loop

while(true)

System.out.println(“hello”);

Contoh lain :

//no loops

// statement is not even executed

while (false)

System.out.println(“hello”);

Do while

Struktur perintah do-while sebenarnya mirip dengan struktur

while. Perbedaannya terletak pada penempatan kondisinya saja,

yaitu diletakkan pada bagian akhir blok perulangan. Sehingga

pada struktur jenis ini, blok perulangan akan dilakukan minimal

satu kali meskipun ternyata kondisinya tidak terpenuhi.

Bentuk dasar :

do{

statement1;

statement2;

. . .

} while( boolean_expression );

34 | P a g e

Page 35: Buku Java

Contoh penggunaan do-while

int x = 0;

do

{

System.out.println(x);

x++;

} while (x<10);

//infinite loop

do{

System.out.println(“hello”);

} while (true);

// statement is dieksekusi 1 kali

do

System.out.println(“hello”);

while (false);

Pernyataan Percabangan

Pernyataan percabangan mengijinkan kita untuk mengatur aliran

eksekusi program. Java memberikan tiga bentuk pernyataan

percabangan: break, continue dan return.

Pernyataan break

Pernyataan break memiliki dua bentuk: tidak berlabel

(unlabeled) dan berlabel (labeled).

1. Pernyataan break tidak berlabel (unlabeled)

Pernyataan break tidak berlabel (unlabeled) digunakan

untuk menghentikan jalannya pernyataan switch. Selain

itu pernyataan break unlabeled juga bisa digunakan untuk

menghentikan pernyataan – pernyataan

for, while atau do while loop.

Pernyataan Break tidak berlabel :

35 | P a g e

Page 36: Buku Java

for( int i=0; i< names.length; i++ ){

if( names[i].equals( searchName )){

foundName = true;

break;

}

}

2. Pernyataan break berlabel

Bentuk label dari pernyataan break akan menghentikan

pernyataan di luarnya, dimana sebelumnya harus

diberikan label yang sudah di spesifikasikan pada program

pada pernyataan break. Program berikut ini akan mencari

nilai dalam array dua dimensi. Terdapat dua pengulangan

bersarang (nested loop). Ketika sebuah nilai ditemukan,

brea akan menghentikan pernyataan yang diberi label

searchLabel yang terletak di luar pernyataan for loop.

Pernyataan Break berlabel :

searchLabel:

for( int i=0; i<numbers.length; i++ ){

for( int j=0; j<numbers[i].length; j++ ){

if( searchNum == numbers[i][j] ){

foundNum = true; break searchLabel;

}

}

}

Pernyataan CONTINUE

Pernyataan continue dapat digunakan untuk melanjutkan

pengulangan yang sedang dijalankan oleh pernyataan for,

while, atau do-while loop. Pernyataan continue memiliki dua

bentuk yaitu tidak berlabel dan berlabel.

1. Pernyataan continue tidak berlabel (unlabeled)

36 | P a g e

Page 37: Buku Java

Bentuk pernyataan continue tidak berlabel (unlabeled) akan

melewati bagian pernyataan setelah pernyataan ini

dituliskan dan memeriksa eksepresi logika (boolean) yang

mengkontrol pengulangan.

Jika ekspresi logika (boolean) masih bernilai true, maka

pengulangan tetap dilanjutkan.

Pada dasarnya pernyataan ini akan melanjutkan bagian

pengulangan pada pernyataan loop.

Pernyataan continue tidak berlabel :

for( int i=0; i<names.length; i++ ){

if( !names[i].equals("Beah") ){

continue; //skip next statement

}

count++;

}

2. Pernyataan continue berlabel :

Bentuk pernyataan continue berlabel (labeled) akan

melanjutkan pengulangan yang sedang terjadi dan dilanjuti

ke pengulangan berikutnya dari pernyataan pengulangan

yang diberi label (tanda).

outerLoop:

for( int i=0; i<5; i++ ){

for( int j=0; j<5; j++ ){

System.out.println("Inside for(j) loop"); //message1

if( j == 2 ) continue outerLoop;

}

System.out.println("Inside for(i) loop"); //message2

}

37 | P a g e

Page 38: Buku Java

BAB 4

38 | P a g e

Page 39: Buku Java

ArrayArray Pada Java

Array adalah sekelompok data sejenis yang disimpan ke

dalam variabel dengan nama yang sama,dengan memberi indeks

pada variabel untuk membedakan antara yang satu dengan yang

lain. Array pada JAVA juga merupakan objek yang dapat

digunakan untuk menyimpan sejumlah data.

Elemen yang dapat disimpan pada array dapat berupa tipe

data primitif (misal int) ataupun instan kelas (objek)

Cara menciptakan array :

1. Mendeklarasikan variabel untuk merujuk pada array

(variabel array)

2. Menciptakan objek dan menugaskannya pada

variabel yang telah dideklarasikan

3.

39 | P a g e

Page 40: Buku Java

Variabel Array

ketentuan nama variabel arrray sama dengan nama

variabel biasa. Indeks menunjukkan nomor dari variable.

nama_variabel[indeks]

DEKLARASI VARIABEL ARRAY

Bentuk deklarasi array :

TipeDataPrimitif namaVariabelArray[];

atau

namaKelas namaVariabelArray[];

contoh :

int [] nilai;

String[] kota;

Contoh : float bil[10];

deklarasi variabel array dengan nama bil yang akan

menampung 10 data yang bertipe float. Indeks 10 menunjukkan

variabel bil terdiri dari 10 elemen, dimana setiap elemen akan

menampung sebuah data.

Indeks array dimulai dari nol(0) , sedang nomor elemen

biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama

dengan nomor indeks untuk mempermudah pembuatan program

yaitu dengan memberi indeks satu lebih banyak dari jumlah data

yang dibutuhkan, sehingga menjadi :

float bil[11]

Objek Array

Penciptaan objek array dan penugasan objek ke variabel

array dilakukan dengan menggunakan kata kunci new.

Bentuk objek array :

40 | P a g e

Page 41: Buku Java

namaKelas namaVariabel = new namaKelas

[jumlahElemen];

atau

tipePrimitif namaVariabel = new tipePrimitif

[jumlahElemen];

contoh :

String[] kota = new String[5]; int[] nilai = new int[3];

Mengakses Elemen Array

Elemen array dapat diakses melalui indeks atau subscript

seperti berikut :

namavariabelArray[subscript];

Indeks atau subscript berupa nomor elemen yang diawali

dengan nol (0, 1, 2, dst.)

Contoh :

kota[0] = “Bandung”;

kota[1] = “Jakarta”:

kota[2] = “Solo”;

Mengetahui Jumlah Elemen Array

Jumlah elemen array dapat diketahui dengan menggunakan

variabel instan length milik objek array

Contoh :

for (int i=0; i < kota.length; i++)

System.out.println(kota[i]);

Array Multidimensi

JAVA mendukung array multidimensi melalui pendekatan

“array dari array”

contoh :

41 | P a g e

Page 42: Buku Java

int [ ] [ ] warna = new int [5] [3];

Contoh Penggunaan Array

STRING [ ] NEGARA =

{"INDONESIA","SINGAPORE","MALAYSIA","JAPAN", "INDIA"};

ATAU

STRING[] KOTA = NEW STRING [5];

KOTA[0]= "JAKARTA";

KOTA[1]= "BANDUNG";

KOTA[2]= "SEMARANG";

KOTA[3]= "JOGJAKARTA";

KOTA[4]= "SURABAYA";

INISIALISASI ARRAY 1 DIMENSI

Inisialisasi dapat dilakukan bersama dengan deklarasi atau

tersendiri. Inisialisasi suatu array adalah dengan meletakkan

elemen array di antara tanda kurung kurawal {}, antara elemen

yang satu dengan lainnya dipisahkan koma.

int bil[2] = {4,1,8}

bil[0] = 4

bil[1] = 1

bil[2] = 8

42 | P a g e

Page 43: Buku Java

AUTOMATIC ARRAY

Automatic array adalah Inisialisasi array dilakukan di dalam

fungsi tertentu. Hanya compiler C yang berstandar ANSI C yang

dapat menginisialisasikan automatic array. Cara

menginisialisasikan array dari compiler yg tidak mengikuti

standar ANSI C:

1. Diinisialisasikan di luar fungsi sebagai variabel

GLOBAL/EXTERNAL ARRAY.

Int bil[2]={0,0,0};

main()

3. Diinisialisasikan didlm fungsi sebagai variabel

LOKAL/STATIC ARRAY.

main()

{

static int bil[2]={0,0,0};

.........

Pada automatic array yang tidak diinisialisasikan , elemen

array akan memiliki nilai yang tidak beraturan. Bila global & static

array tidak diinisialisasi maka semua elemen array secara

otomatis akan diberi nilai nol(0).

Contoh :

main()

{

int y;

int hitung=0;

int x[0];

for(y=0;y<5;y++)

{

43 | P a g e

Page 44: Buku Java

hitung+=y;

x[y]=hitung;

printf("%3d - %3d\n",y,x[y]);

}

}

OUTPUT:

0- 0

1- 1

2- 3

3- 6

4- 10

MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL

Besarnya variabel indeks dapat ditentukan dengan

menggunakan preprocessor directives #define

#define N 40

main()

{

int no[N],gaji[N],gol[N],status[N],juman[N];

Bila besari indeks akan diubah menjadi 50, cukup diganti dengan

#define N 50

ARRAY 2 DIMENSI

nama_variabel [indeks1][indeks2]

indeks1 : jumlah/nomor baris

indeks2 : jumlah/nomor kolom

Jumlah elemen yang dimiliki array 2 dimensi dapat ditentukan

dari hasil perkalian indeks1 * indeks2

misal : array A[2][3] akan memiliki 2*3 = 6 elemen.

main()

44 | P a g e

Page 45: Buku Java

{

float bil [5] [5]

.......

dapat dituliskan dengan #define

#define N 5

main()

{

float bil [N] [N]

.......

INISIALISASI ARRAY 2 DIMENSI

main()

{

float bil[2] [3] =

{ { 1,2,3}, /*baris 0*/

{ 4,5,6}, /*baris 1*/

}

elemen bil [0] [0] = 1

elemen bil [0] [1] = 2

elemen bil [0] [2] = 3

elemen bil [1] [0] = 4

elemen bil [1] [1] = 5

elemen bil [1] [2] = 6

Contoh :

main()

{

int x[3][5];

45 | P a g e

Page 46: Buku Java

int y,z;

int hitung=0;

for(y=0;y<3;y++)

{

printf("y = %d\n",y);

for(z=0;z<5;z++)

{

hitung+=z;

x[y][z] = hitung;

printf("%/t%3d - %3d\n",z,x[y][z])

}

}

}

OUTPUT:

y = 0

0- 0

1- 1

2- 2

3- 6

4- 10

y = 1

0- 10

1- 11

2- 13

3- 16

4- 20

y = 2

0- 20

1- 21

2- 23

46 | P a g e

Page 47: Buku Java

3- 26

4- 30

STRING dan ARRAY

1. Pada string terdapat karakter null(\0) di akhir string

2. String sudah pasti array, array belum tentu string

CONTOH - CONTOH :

1. array dengan pengisian input melalui keyboard

baca_input()

{

float nilai[10];

for(i=0;i<10;i++)

scanf("%d",&nilai[i]);

}

2. Fungsi yang mencetak isi array dari akhir ke awal

cetak_array()

{

float nilai[10];

for(i=9;i>=0;i--)

scanf("%3f",nilai[i]);

}

3. Menghitung rata - rata isi array nilai

rata_rata()

{

float nilai[10],jum*rata;

for(i=0,jum=0;i<=9;i++)

jum+=nilai[i];

rata=jum/i;

47 | P a g e

Page 48: Buku Java

}

4. Mencari nilai terbesar

besar()

float temp,nilai[10];

{

for(temp=nilai[0],i=1;i<=9;i++)

if(nilai[i] > temp)

temp=nilai[i];

}

return(temp)

48 | P a g e

Page 49: Buku Java

BAB 5

49 | P a g e

Page 50: Buku Java

Pemrograman

Berorientasi ObjekKonsep Pemrograman Berorientasi Objek

Pemrograman berorientasi pada objek secara prinsip

menjadikan objek sebagai komponen utama dalam

program.Objek menggabungkan data dan fungsi dalam satu

kesatuan, sedangkan program yang non objek menjadikan fungsi

sebagai fokus utama

Pendekatan pemrograman berorientasi pada objek

membuat pengembangan program dapat dilakukan dengan

mudah, mengurangi duplikasi kode program serta mengurangi

kesalahan. Kelas dapat digambarkan sebagai cetakan yang

digunakan untuk membuat suatu objek

Contoh lain dari suatu kelas dapat digambarkan oleh

sebuah drum dimana objek dari kelas drum adalah drum_tama,

drum_pearl, drum_yamaha, drum_sonor

Data objeknya adalah seperti type,warna, ukuran,no series,jenis

musik

50 | P a g e

Page 51: Buku Java

Metode objeknya adalah cara_memukul_snare,

cara_memukul_tom, cara_memukul_floortom,

cara_memukul_simbal/hihat, cara_menginjak_pedal,

cara_menciptakan_beat

Objek-objek tersebut bersifat independent walaupun dibentuk

oleh kelas yang sama

51 | P a g e

Page 52: Buku Java

Penggunaan Kelas dalam Program

Kelas pada JAVA didefinisikan dengan menggunakan kata kunci

class. seperti contoh berikut :

Class Drum {

String Warna;

int TahunProduksi;

}

Program selanjutnya adalah contoh penggunaan kelas dalam

program

Contoh Penggunaan Kelas dalam Program

Class Drum {

String Warna;

int TahunProduksi;

}

Public class KelasDrum {

Public static void main (String[ ] args) {

Drum DrumSaya = new Drum ();

//mengisi variabel instan

DrumSaya.Warna = “Biru”;

DrumSaya.TahunProduksi = 2012; //menampilkan isi

variabel instan

System.out.println(“warna : ” +MobilSaya.Warna);

System.out.println(“Tahun : ” +MobilSaya.TahunProduksi);

}

}

Output Program : Warna : Biru

Tahun : 2012

52 | P a g e

Page 53: Buku Java

Kata Kunci This

Kata kunci this dipergunakan pada pembuatan kelas dan

digunakan untuk menyatakan objek sekarang. Untuk menghindari

variabel yang sama antara variabel class dengan variabel

property.

void IsiData (String WarnaMobil, int TahunProd)

{

this.Warna = WarnaMobil;

this.ThnPrd = TahunProd

}

Lingkup Variabel

Konsep lingkup (scope) merupakan konsep yang sangat

penting berkaitan dengan waktu hidup variabel. Lingkup sangat

terkait erat dengan blok. Lingkup mengacu pada sebagaimana

bagian-bagian program berdampak pada waktu hidup variabel.

Setiap variabel yang dideklarasikan di program mempunyai

lingkup keberlakuan. Lingkup ditentukan oleh blok.

Blok kelas sangat penting. Hampir semua keperluan di Java

berkaitan dengan kelas atau milik suatu kelas. Metode

didefinisikan di kelas yang memiliki metode tersebut. Secara

sintaks maupun logik, segala sesuatu di Java berada di dalam

suatu kelas tertentu.

Blok berikutnya adalah blok di dalam kelas seperti didefinisikan

pada kode di dalam metode main (). Blok dalam berada/berada di

dalam blok luar. Setiap variabel yang didefinisikan di dalam blok

lebih dalam adalah lokal blok itu dan tidak tampak ke blok luar,

lingkup variabel didefinisikan sebagai blok dalam.

53 | P a g e

Page 54: Buku Java

Bila suatu metode terdapat pemangilan suatu variabel,

pada JAVA akan mengacu pada blok terdalam bila tidak ada maka

akan dicarikan blok yang lebih luar, dan begitu seterusnya

Dimungkinkan untuk membuat suatu variabel secara lokal

maupun global

Perhatikan program berikut:

class Lingkup {

//variabel instan

String warna =“Biru”;

//Metode

void infoLingkup() {

String warna = “Hitam”;

System.out.println(“warna pada metode : “ +warna);

System.out.println(“warna milik kelas : “

+this.warna);

}

}

public class LingkupVariabel {

public static void main (String [ ] args) {

Lingkup varX = new Lingkup();

varX.infoLingkup();

}

}

Output Program :

warna pada metode : Hitam

Warna milik kelas : Biru

Akses dalam Java

54 | P a g e

Page 55: Buku Java

Yang perlu anda ketehui, Di dalam java terdapat tiga akses

yaitu,private,protected,dan public tentunya tingkat akses

tersebut mempunyai fungsi dan kegunaan masing-masing.

1.Tingkat akses Private

Dengan menggukanan data dan method dengan tingkat akses

private,maka data dan method tersebut hanya dapat di akses

oleh kelas yang di milikinya saja

2.Tingkat akses Protected

Suatu data atau method yang di deklarasi kan dengan tinggakt

akses protected dapat di akses oleh kelas yang di milikinya saja

dan juga kelas-kelas yang masih memiliki keturunan.

3.Tingkat akses Public

Tingkatan public merupakan kebalikan dari tingkat akses

private.data maupun method dapat di akses oleh semua bagian

di dalam program

Penentu Akses : Public dan Private

Pemrograman berorientasi pada objek, proses akses suatu

variabel instan di luar kelas biasanya tidak diperkenankan,

sehingga dimungkinkan untuk mengakses variabel instan dengan

menggunakan metode

Penentu yang disediakan oleh JAVA adalah private dan public

public berarti pengaksesan suatu variabel instan atau metode

dapat dilakukan dari luar kelas

Private berarti pengaksesan suatu variabel instan atau metode

hanya dapat dilakukan di dalam kelas; tidak dari luar kelas

55 | P a g e

Page 56: Buku Java

Pada saat String nama disisipkan kata kunci private maka akan

menimbulkan error demikian :

Variabel nama in class Siswa not accessible from class

PenentuAkses

Perbedaan public, private dan tanpa penentu akses pada

metode :

Tanpa penentu à metode hanya dapat diakses dalam kelas itu

sendiri ataupun metode pada kelas lain yang terletak pada paket

yang sama

public à metode dapat diakses dari kelas manapun

private à hanya dapat diakses oleh metode-metode dalam kelas

yang sama

56 | P a g e

Page 57: Buku Java

BAB 6KELAS,OBJEK,KONSTRUK

TOR dan OVERLOADING57 | P a g e

Page 58: Buku Java

Kelas

Program-program yang ditulis menggunakan Java selalu

menggunakan kelas-kelas (class) yang mencerminkan objek-

objek (object) yang sesungguhnya hadir di dunia nyata. Hal ini

berarti saat kita akan membuat program menggunakan bahasa

pemograman Java, kita harus mempertimbangkan objek-objek

apa saja yang semestinya hadir dalam program kita dan

bukannya semua objek yang ada di dunia nyata, dimana proses

ini sering disebut sebagai abstraksi, suatu kelas pada umumnya

memiliki data/atribut yang berfungsi untuk mendeskripsikan

(menerangkan) kelas yang bersangkutan, dan juga pada

umumnya memiliki metode/fungsi yang menjelaskan apa yang

akan/bisa dilakukan oleh kelas yang bersangkutan.

Kelas merupakan konsep pokok di bahasa pemograman

berorientasi object, demikian juga di Java. Kelas merupakan

bentuk logis yang menjadi landasan bangun seluruh bahasa

pemograman berorientasi object. Kelas mendefinisikan bentuk

dan perilaku object. Kelas sungguh sangat penting di Java.

Sembarang konsep/abstraksi yang diimplementasikan di Java

harus di kapsulkan di kelas. Java adalah bahasa pemograman

yang full OOP. Artinya pengelolaan program sepenuhnya

diarahkan pada pembentukan object.

Pemograman Java tidak mungkin dipisahkan dari kelas.

Penggunaan terpenting kelas adalah dalam pendefinisian type

baru. Kelas adalah template/prototype yang mendefinisikan type

object. Kelas merupakan sarana pengkapsulan kumpulan data

dan metode-metode yang beroperasi pada kumpulan data. Data

dan metode untuk mendefinisikan isi dan kamampuan object.

Kelas adalah cetakan object. Object harus merupakan instan

suatu kelas. Kelas digunakan untuk menciptakan banyak object.

58 | P a g e

Page 59: Buku Java

Object-object dari kelas yang sama mempunyai data sendiri tapi

berbagi implementasi metode dengan object-object lain di satu

kelas. Kelas dapat merupakan realisasi/implementasi abstraksi di

domain persoalan.

Kelas merupakan blok pembangun terpenting di

pendekatan berorientasi object. Kelas adalah tipe data abstrak

yang dilengkapi implementasi parsial atau total. Kelas

mendeskripsikan kelompok object dengan properti-properti

(atribut-atribut) serupa, perilaku (operasi-operasi) yang common,

keterhubungan terhadap himpunan object-object lain dan

semantik yang common. Seperti juga tipe data abstrak, kelas

mendeskripsikan sekelompok struktur data yang dapat dibentuk

oleh kelas, disebut instan kelas atau object.

Berikut ini adalah kegunaan kelas :

Mengelompokkan object-object menjadi kelas-kelas berarti

mengabstraksikan persoalan yang dihadapi. Abstraksi

memberi daya keampuhan pemodelan dan memberikan

kemampuan generalisasi beberapa kasus spesifik menjadi

induk kasus-kasus yang serupa.

Definisi-definisi common (seperti nama kelas dan atribut)

cukup disimpan sekali per kelas bukan sekali per instan

kelas (object). Operasi-operasi dapat ditulis sekali per kelas.

Semua object dalam kelas mendapat manfaat penggunaan

kembali (reuse) kode itu.

Kelas (class) merupakan contoh abstrak dari sebuah object

yang telah terbentuk dari proses penyederhanaan. Dengan kata

lain kelas (class) merupakan cikal bakal dari object. Kemudian

contoh nyata atau perwujudan dari sebuah object dinamakan

instance. Sehingga apabila kita mempunyai sebuah kelas

59 | P a g e

Page 60: Buku Java

manusia, maka beberapa instances (wujud nyata) dari kelas

manusia adalah Prima, Aulia, Dewi dan masih banyak yang

lainnya. Perhatikan table dibawah ini untuk perbedaan kelas dan

object dalam OOP.

Kelas (class) Objek (object)

class merupakan rancangan

(design)

Object merupakan perwujudan

suatu class

class bersifat abstract Object bersifat konkrit

Ketika mendeklarasikan class, sebelum kata kunci class,

kita dapat memberi modifier. Modifier mempengaruhi makna

deklarasi. Modifier yang berlaku untuk kelas adalah antara lain

modifier ketampakan (visibility modifier). Modifier ini mengatur

izin pengaksesan kelas oleh kelas-kelas lain. Selain itu adalah

modifier untuk mengatur apakah kelas tersebut dapat diwarisi

atau tidak, modifier final akan membuat kelas itu tidak dapat

diwarisi. Modifier lainnya adalah abstract untuk mengatakan

apakah kelas merupakan kelas abstrak yang belum

diimplementasikan serta mengharapakan kelas turunannya yang

harus mengimplementasikan metode-metode darinya.

Class Body merupakan bagian dari kelas yang

mendeklarasikan kode-kode program (program codes) Java. Class

Body bisa dibedakan menjadi tiga bagian utama dari sebuah

kelas sebagai behavior dari kelas dan object. Tiga bagian utama

yang dimaksud adalah :

1. Konstruktor (constructor) digunakan untuk instansiasi

object

2. Variabel (variable) menyatakan atau sebagai keadaan

(state) dari kelas dan objek

60 | P a g e

Page 61: Buku Java

3. Metode (method) berupa fungsi-fungsi (functions) atau

prosedur-prosedur

61 | P a g e

Page 62: Buku Java

Deklarasi suatu kelas secara umum ialah seperti ini :

a. Pendefinisian Kelas (minimal), terdiri atas :

• Variabel Kelas (Field)

• Konstruktor

• Pendeklarasian Metode

b. Pendefinisian Kelas (Lengkap), terdiri atas :

• Modifiers

• Nama Kelas

• Nama Super Kelas (optional), jika ada

menggunakan kata kunci extends

• Nama Interface (optional), jika ada

menggunakan kata kunci implements

• Tubuh Kelas (The Class Body), diantara tanda “

{ } “

Pendeklarasian kelas dapat dimulai dengan

pernyataan package. Pernyataan seperti baris pertama

dari Listing 1 berarti kelas tersebut adalah bagian dari

package com.arih. Hirarki package di sini secara konseptual sama

dengan konsep pohon, di mana ada node akar dan bercabang

terus oleh node anak. Pernyataan ini tidak harus ada dalam

setiap kode program kelas. Hanya bila program Anda memiliki

banyak kelas dan ingin disusun menurut hirarki tertentu barulah

Anda perlu meletakkan pernyataan seperti ini. Biasanya hirarki

package mengikuti hirarki domain vendor. Dalam kasus

ini, arih.com—nama situs saya.

Setelah pernyataan package, kita dapat meletakkan baris-

baris pernyataan import. Pernyataan import digunakan untuk

mendaftarkan nama lengkap dari kelas-kelas yang kita impor

agar di dalam kelas ini nantinya kita tidak lagi perlu menuliskan

nama lengkap secara hirarkis sebuah kelas. Contohnya di Listing

62 | P a g e

Page 63: Buku Java

1 kita meletakkan baris import java.io.*;, artinya semua kelas

yang berada di dalam package java.io dapat kita panggil dalam

kelas kita langsung dengan nama kelas, tanpa nama package.

Jadi bila kita ingin menggunakan

kelas java.io.InputStreamReader, kita dapat langsung

menuliskan InputStreamReader tanpa mesti mem

bubuhkan java.io di depannya. Dalam kasus tertentu kemudahan

ini dapat terganggu bila ada dua kelas dengan nama yang sama

namun dari package berbeda yang keduanya kita impor.

Akibatnya penggunaan nama kelas tersebut akan menyebabkan

ambiguitas. Pemecahannya adalah dengan menggunakan nama

lengkap, atau minimal nama package yang berbeda untuk kedua

kelas tersebut.

Baris-baris pernyataan impor ini sebenarnya hanya

berfungsi sebagai pembantu agar penulisan kode program lebih

mudah dan lebih singkat. Jadi hal ini tidak wajib dilakukan.

Selama Anda merasa senang menulis nama lengkap suatu kelas

yang biasanya cukup panjang, silahkan tidak menggunakan

fasilitas impor. Kalaupun Anda menggunakan fasilitas ini,

biasakanlah untuk tetap mengetahui nama lengkap dari kelas-

kelas yang Anda gunakan. Dengan begitu Anda tidak akan

kesusahan bila ingin melihat dokumentasi API Java untuk kelas

tersebut.

Pada kelas terdapat pengaturan untuk mengakses,

dinamakan access modifier, berikut ini macam-macam access

modifier yang dapat digunakan dalam kelas java.

63 | P a g e

Page 64: Buku Java

64 | P a g e

Page 65: Buku Java

Modifier memberi dampak tertentu pada kelas, interface, metode

dan variable.

No

.

Modifier Kelas dan

Interface

Metode dan variable

1. Default Tampak di

paketnya

Diwarisi oleh subkelasnya di

paket yang sama dengan

kelasnya. Dapat diakses oleh

metode-metode di kelas-

kelas yang sepaket.

2. Public Tampak

dimanapun

Diwarisi oleh semua

subkelasnya. Dapat diakses

oleh metode-metode di

kelas-kelas yang sepaket.

3. Protected Tidak dapat

diterapkan

Diwarisi oleh semua

subkelasnya. Dapat diakses

oleh metode-metode di

kelas-kelas yang sepaket.

4. Private Tidak dapat

diterapkan

Tidak diwarisi oleh

subkelasnya. Tidak dapat

diakses oleh kelas lain

1. default

Modifier default menspesifikasikan kelas-kelas sepaket yang

mengakses. Tidak ada keyword khusus untuk mendeklarasi

kan default access modifier, bila tidak ada access modifier pada

deklarasi variabel atau metode berarti modifier yang digunakan

adalah default modifier.

2. public

Modifier public menspesifikasikan variabel dan metode yang

dapat diakses oleh siapa pun, baik di dalam atau di luar kelas. Hal

65 | P a g e

Page 66: Buku Java

ini berarti anggota  public tampak dan dapat diakses oleh

sembarang objek lain.

3. protected

Modifier protected menspesifikasikan anggota hanya dapat

diakses metode-metode di kelas itu dan subkelas-subkelas

turunan kelas itu. Ini berarti anggota protected hanya terbatas

pada kelas itu dan subkelas-subkelasnya.

4. private

Modifier private adalah paling terbatas karena menspesifikasikan

anggota kelas hanya dapat diakses olehkelas di mana anggota itu

didefinisikan. Ini berarti tidak ada kelas lain yang dapat

mengakses anggotaprivate, sekalipun subkelasnya.

Objek

Semua aspek dalam pemrograman Java dapat kita anggap

sebagai objek, terkecuali tipe data primitif karena semua library

dan objek dalam java memiliki akar awal class java.lang.object.

Object adalah sebuah entity yang memilki keadaan, behavior,

dan identitas yang tugasnya dirumuskan dalam suatu lingkup

masalah dengan baik. Object dapat juga disebut suatu instans

(instance). Instance adalah proses pembuatan (perwujudan)

suatu kelas menjadi objek. Dalam pembuatan suatu kelas, kita

hanya membuat pendefinisian tipe data baru.

Ada 2 tahap untuk membuat objek baru dari tipe kelas yang telah

didefinisikan, yaitu :

Tahap 1 : mendeklarasikan variabel yang digunakan sebagai

referensi ke objek dari kelas yang bersangkutan.

Tahap 2 : Menginstansiasi (instans) kelas dengan menggunakan

kata kunci new dan memasukkan instanc – nya ke dalam

referensi yang baru dideklarasikan.

66 | P a g e

Page 67: Buku Java

Class yang menggunakan kata kunci new secara dinamis

akan mengalokasikan ruang memori untuk menyimpan suatu

objek tertentu dan mengembalikan nilai berupa referensi ke objek

yang bersangkutan. Referensi objek adalah sebuah alamat

memori dari objek yang dialokasikan dengan menggunakan

operator new.

Pemrograman berorientasi objek diciptakan untuk

mempermudah pengembangan program dengan cara mengikuti

model yang telah ada dalam kehidupan nyata. Dalam paradigma

ini, sesuai dengan model kehidupan nyata, segala bagian (entiti)

dari suatu permasalahan adalah objek. Objek-objek ini kemudian

juga dapat berupa gabungan dari beberapa objek yang lebih

kecil. Sebagai contoh, tengoklah sebuah mobil. Mobil adalah

sebuah objek dalam kehidupan nyata. Namun mobil sendiri

terbentuk dari beberapa objek yang lebih kecil seperti roda ban,

mesin, jok, dll. Mobil sebagai objek yang merupakan gabungan

dari objek yang lebih kecil dibentuk dengan membentuk

hubungan antara objek-objek penyusunnya. Begitu juga dengan

sebuah program. Objek besar dapat dibentuk dengan

menggabungkan beberapa objek-objek dalam bahasa

pemrograman. Objek-objek tersebut berkomunikasi dengan saling

mengirim pesan kepada objek lain.

Konsep-konsep pemrograman berorientasi objek dalam Java

secara umum sama dengan yang digunakan oleh bahasa-bahasa

lain. Jadi kebanyakan konsep yang kita bahas juga terdapat

dalam bahasa selain Java. Namun, terkadang terdapat

perbedaan-perbedaan kecil antara penerapan konsep-konsep

tersebut dalam masing-masing bahasa. Perbedaan-perbedaan ini

juga akan dijelaskan seiring penjelasan masing-masing konsep.

67 | P a g e

Page 68: Buku Java

Dalam penjelasan mengenai analogi, kita sudah

menyinggung mengenai objek. Sekarang kita akan mengupas

lebih dalam tentang objek sebagai konsep kunci dari

pemrograman berorientasi objek. Baik dalam dunia nyata atau

dalam sebuah program, sebuah objek memiliki dua karakteristik,

yaitu state dan behaviour. State adalah keadaan dari sebuah

objek, seperti mobil memiliki state warna, model, tahun

pembuatan, kondisi, dll. Sedang behaviour adalah kelakuan dari

objek tersebut, seperti mobil dapat melaju, membelok,

membunyikan klakson, dll. Objek menyimpan statenya dalam

satu atau lebih variabel, dan mengimplementasikan behaviournya

dengan metode. Dengan penjelasan di atas, dapat disimpulkan

bahwa objek adalah bagian software yang dibentuk dengan

variabel-variabel dan metode-metode yang berhubungan dengan

variabel tersebut.

Dengan karakteristik tersebut, kita dapat memodelkan

berbagai objek dalam kehidupan nyata ke dalam objek-objek

dalam sebuah program. Lebih lanjut kita dapat memodelkan

objek-objek abstrak ke dalam sebuah program. Contoh umum

untuk konsep abstrak seperti ini adalah objek Event, yaitu objek

untuk mewakili peristiwa klik atau tombol ditekan.

Sebuah objek yang dibentuk dari sebuah kelas biasa disebut

instans dalam terminologi OOP. Artinya objek tersebut adalah

wujud nyata dari sebuah kelas. Variabel dan metode dari instans

ini disebut variabel instans danmetode instans. Setiap instans

menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk

tiap instans bisa berbeda. Dengan pengertian kelas dan objek

ini , kita dapat mengetahui perbedaan kelas dan objek. Pada java

Kelas adalah konsep dan deskripsi dari sesuatu sedangkan

Objek adalah instance dari kelas. Seperti contoh jika kelasnya

68 | P a g e

Page 69: Buku Java

ialah tas, maka objek nya ialah tas ransel, tas koper, dll. Jadi

objek itu lebih khusus dibanding kelas.

69 | P a g e

Page 70: Buku Java

Konstruktor

Konstruktor (constructor) adalah suatu method khusus

tanpa retrun type yang dipanggil secara otomatis setiap kali

suatu object atau kelas diciptakan. Programmer tidak perlu

memanggil kosntruktor, karena Java yang akan mengerjakannya.

Ini berarti proses pemberian nilai awal (atau inisialisasi bukan

instanisasi) seluruh data objek dilakukan melalui constructor.

Constructor bisa berisi perintah pemanggilan method internal

atau intruksi lain.

Kita membuat constructor terutama untuk inisialisasi

variable-variable instan kelas serta melakukan persiapan pada

suatu object agar object itu dapat beroperasi dengan baik,

semacam melakukan start pada kendaraan bermotor. Ketika

object suatu kelas diciptakan, new memanggil constructor kelas

untuk melakukan inisialisasi.

Bentuk konstruktor sendiri mirip dengan sebuah metode.

Beda yang paling mencolok adalah nama sebuah konstruktor

harus sama dengan nama kelas tersebut dan konstruktor tidak

memiliki definisi return type seperti sebuah metode. Untuk

jelasnya Anda bisa lihat kembali Listing 1, di mana terdapat dua

buah konstruktor. Yang satu adalah konstruktor default dan yang

lain adalah konstruktor dengan sebuah parameter bertipe int.

Adanya dua buah konstruktor ini termasuk

sifat polimorfisme dalam pemrograman berorientasi objek. Sifat

ini dapat berlaku bagi konstruktor dan juga metode. Lebih jauh

mengenai polimorfisme akan dijelaskan lebih jauh di akhir tutorial

ini. Secara singkat, konstruktor adalah perintah yang akan

dilaksanakan saat ada instruksi untuk menciptakan sebuah

instans dari kelas tersebut. Bisa saja konstruktor tersebut tidak

melakukan apa-apa, yaitu bila konstruktor tersebut kosong.

70 | P a g e

Page 71: Buku Java

Berikut adalah contoh-contoh penciptaan suatu kelas dengan

berbagai jenis konstruktor.

1. SuatuKelas kelasContoh = new SuatuKelas();

2. SuatuKelasLain kelasContoh2 = new

3. SuatuKelasLain("judul");

BufferedReader reader = new BufferedReader(new

InputStreamReader(System.in));

4. new SuatuKelas().sebuahMetode();

Pada contoh pertama, kita menciptakan sebuah instans dari

kelas SuatuKelas dengan memanggil konstruktor tanpa

parameter. Bila dalam pendefinisian kelas SuatuKelas sebenarnya

tidak ada pendefinisian konstruktor, perintah seperti ini tetap

dapat dipakai, karena kompiler Java akan menyisipkan secara

otomatis kosntruktor default bila tidak ada definisi konstruktor

dalam sebuah kelas. Konstruktor default sendiri sebenarnya tidak

melakukan apa-apa dalam proses instansiasi objek, karena tidak

berisi perintah apapun.

Pada contoh kedua, kita memanggil sebuah konstruktor

yang mengandung argumen berupa sebuah parameter

bertipe String. Konstruktor seperti ini menjadi sangat berguna bila

dalam proses instansiasi sebuah objek kita ingin memasukkan

suatu nilai untuk dapat digunakan oleh instans baru tersebut.

Pada contoh ketiga, kita memanggil konstruktor dengan

argumen sebuah parameter bertipe InputStreamReader. Yang

menarik dari contoh ini adalah kita memasukkan argumen berupa

kelas baru yang anonim sehingga terjadi pemanggilan

konstruktor lain di dalam argumen konstruktor semula. Dalam

konstruktor yang terakhir kita juga memasukkan argumen berupa

sebuah objek InputStream yaitu System.in.

71 | P a g e

Page 72: Buku Java

Contoh keempat adalah contoh yang lebih jelas mengenai

kelas anonim. Pada contoh ini kita menciptakan sebuah instans

dari kelas SuatuKelas namun tidak menyimpan referensi ke

instans tersebut, sehingga kita hanya bisa menggunakannya

sekali, yaitu langsung pada baris tersebut seperti terlihat pada

contoh.

Ada hal yang menarik dan perlu diperhatikan mengenai

konstruktor dalam kelas-kelas yang merupakan subkelas. Pada

saat kita menginstans sebuah objek dari sebuah subkelas,

kompiler tidak hanya memanggil konstruktor subkelas tersebut,

melainkan memanggil kosntruktor superkelasnya terlebih dahulu,

baru kemudian memanggil konstruktor subkelas tersebut.

Penjelasan mengenai hal ini adalah bahwa sebuah subkelas

adalah superkelas itu sendiri namun dengan tambahan

karakterisasi yang lebih detil. Sehingga untuk menginstans

sebuah subkelas, pertama-tama kita menginstansiasi sebuah

superkelas, kemudian menerapkan karakterisasi dari subkelas

kepada instans baru tersebut.

Berikut ini adalah hal-hal yang harus juga diperhatikan dalam

pembuatan konstruktor :

1. Konstruktor harus menggunakan nama yang sama dengan

class. Termasuk huruf besar dan kecilnya.

2. Dalam satu kelas bisa terdapat lebih dari satu konstruktor.

3. Konstruktor akan dieksekusi setiap kali ada pembuatan

objek.

4. Setiap kelas harus mempunyai paling tidak sebuah

konstruktor.

5. Jika sudah mendeklarasikan konstruktor, maka konstruktor

default tidak akan dibuat oleh compiler java.

72 | P a g e

Page 73: Buku Java

6. Constructor tidak men-spesifikasi tipe yang dikirim karena

dapat dipastikan tipe yang dikirim bertipe kelas itu

7. Constructor dapat mempunyai access modifier, biasanya

public namun dapat berupa private

Sebuah kelas memiliki beberapa konstruktor, konstruktor yang

dibuat lebih dari satu dibunakan untuk keperluan berikut :

1. Menentukan nilai instance variable yang berbeda, jadi pada

setiap konstruktor diinisialisasikan variable yang berbeda.

2. Melakukan tugas awal dengan menjalankan metode

tertentu, seperti untuk melakukan penghitungan. Jadi,

selama konstruktor dijalankan, akan dilakukan perhitungan.

Deklarasi konstruktor dapat memiliki beberapa atribut sebagai

berikut:

private : Jika konstruktor dideklarasikan sebagai private,

kelas yang bersangkutan tidak akan dapat diinstansiasi

manjadi object dari kelas lain.

Contoh

class SepedaMotor extends Sepeda{

private SepedaMotor(){

.....................

}

}

protected : Jika konstruktor dideklarasikan

sebagai protected, kelas yang bersangkutan hanya dapat

diinstansiasi menjadi object oleh kelas yang lain yang

merupakan kelas turunan (subclass-nya).

Contoh

class SepedaMotor extends Sepeda{

protected SepedaMotor(){

.......................

73 | P a g e

Page 74: Buku Java

}

}

public : Jika konstruktor dideklarasikan sebagai public,

kelas yang bersangkutan akan dapat diinstansiasi menjadi

sebuah object oleh sembarang kelas yang lain.

Tanpa spesifikasi : Jika konstruktor dideklarasikan tanpa

spesifikasi apakah public, private, atauprotected, kelas

tersebut hanya akan dapat diinstansiasi menjadi object oleh

kelas dalam packageyang sama.

Overloading

Overloading di Java diterpakan didalam method/fungsi.

Dengan overloading dapat dibuat method dengan nama yang

sama tetapi berbeda parameternya. Java sendiri akan

menggunakan daftar parameter-parameter itu sebagai acuan

untuk method manakah yang akan dijalankan.

Overloading Methods jika dilihat dari arti katanya, berarti

me-load beberapa method. Konsep ini akan sering digunakan

dalam penggunaan Constructor, dengan kata lain dikatakan

sebagai Overloading Constructors. Sedangkan pengertian

Constructor, yakni suatu method yang mempunyai nama yang

sama dengan nama Class-nya.

Jika terdapat beberapa Constructor dalam suatu Class, lalu

apakah yang membedakan antara Constructor yang satu dengan

Constructor yang lainnya?. Overloading Constructors adalah

mendefinisikan beberapa Constructors dalam satu Class.

Overloading Methods adalah mendefinisikan beberapa Methods

dengan nama yang sama dalam satu Class.

Konsep Overloading Methods mirip dengan Overloading

Constructors.

74 | P a g e

Page 75: Buku Java

1. Overloading Metode

Overloading metode disini adalah membuat lebih dari satu

metode dengan nama metode yang sama dalam satu class

dimana satu metode dengan metode lainnya mempunyai

parameter yang berbeda. Overloading ini sangat berguna jika

kita ingin memasukkan parameter yang berbeda pada

beberapa metode.

Terdapat dua cara untuk meng-overload metode, yaitu :

Memberikan parameter yang berbeda pada konstruktor

yang baru.

Memberikan setidaknya satu parameter yang berbeda pada

konstruktor yang baru.

2. Overloading Konstruktor

Overloading konstruktor adalah jika kita membuat lebih dari

satu konstruktor pada satu class. Overloading ini sangat

berguna jika kita ingin memasukkan parameter yang berbeda

pada beberapa konstruktor. Cara untuk mengoverload suatu

konstruktor sama dengan cara untuk mengoverload suatu

metode.

75 | P a g e

Page 76: Buku Java

BAB 7

76 | P a g e

Page 77: Buku Java

INHERITENCE,

POLIMORFISME dan

INTERFACESalah satu bagian penting dalam object oriented

programming adalah inheritance / pewarisan. Inheritance adalah

proses pewarisan data dan method dari suatu class kepada class

yang lain. Secara default inheritance bersifat menyeluruh

sehingga semua data dan method diturunkan kepada class yang

baru. Kelas yang mewariskan disebut dengan super class

sedangkan class turunan disebut dengan sub class.

Inheritance adalah dimana sebuah objek dapat mempunyai

objek turunan. Dalam hal pemrogramman makan dapat

diimpelementasikan dengan sebuah class yang mempunyai class

turunan. Class yang mempunyai class turunan disebut

sebagai Parent Class atauBase Class, sedangkan class yang

menjadi turunan dari Parent Class disebut

sebagai Subclass atau Child Class. Secara sederhana misal

Hewan adalah parent class maka child class bisa berupa

ayam,kucing,bebek dll. Suatu subclass dapat mewarisi sebagian

atau keseluruhan sifat dari parent class-nya, denga kata lain

sebuah subclass hanya merupakan perluasan dari parent class.

1. Inheritance merupakan salah satu dari tiga konsep dasar

OOP.

2. Konsep inheritance ini mengadopsi dunia riil dimana suatu

entitas/obyek / y dapat mempunyai entitas/obyek turunan.

77 | P a g e

Page 78: Buku Java

3. Dengan konsep inheritance, sebuah class dapat mempunyai

class turunan.

4. Suatu class yang mempunyai class turunan dinamakan

parent class atau base class.

5. Sedangkan class turunan itu sendiri seringkali disebut

subclass atau child class.

Keuntungan dari inheritance

• Bersifat reusable. Bayangkan bila anda perlu membuat

beberapa class yang mempunyai sifat dasar dan basis class

yang sama, dan pada masing masing class tersebut

ditambahkan data dan method yang unique. Tanpa

inheritance anda harus menyalin semua data dan method

dari suatu class. Hal tersebut mungkin masih bisa dilakukan

jika basis class anda definisikan sendiri. Namun bagaiman

jika anda ingin menggunakan method dari class standard

API. Saya rasa itu tidak mungkin.

• Kemudahan dalam me-manage kelas yang memiliki data

dan method yang sama. Jika anda ingin melakukan

modifikasi suatu data atau method pada semua sub class

anda tidak perlu melakukan perubahan pada masing

masing sub class. Modifikasi cukup dilakukan pada super

class.

Dalam inheritance dikenal dengan istilah overriding.

Overidding adalah kemampuan sub class untuk melakukan

modifikasi data dan method dari super class. Sebelum anda

melakukan overidding terhadap method atau data dari class

induk, anda harus memperhatikan aksesibelitas dari data dan

method dari super class.[ overidding hanya bisa dilakukan untuk

78 | P a g e

Page 79: Buku Java

data dan method yang memiliki modifier default, public dan

protected.

Deklarasi Inheritance

• Dengan menambahkan kata kunci extends

setelah deklarasi nama class, kemudian diikuti dengan nama

parent class‐nya

• Kata kunci extends tersebut memberitahu

kompiler Java bahwa kita ingin melakukan perluasan class.

79 | P a g e

Page 80: Buku Java

Penggunaan Inheritance

Kita menggunakan inheritance apabila ditemukan Class

yang dapat diperluas menggunakan class lain.Misalnya kita

mempunyai kelas Pegawai:

Public class Pegawai{

Public String nama;

Public double gaji;

}

Selain itu kita juga mempunyai Class Manajer :

Public class Manajer{

Public String nama;

Public double gaji;

Public String departemen;

}

Dari dua class diatas kita dapat melihat bahwa class

Manajer mempunyai data member yang identik dengan class

Pegawai ,hanya saja ada tambahan member

Departemen.Sebenarnya class Manajer merupakan perluasan dari

class manajer dengan tambahan data member Departemen.Maka

kita perlu menggunakan konsep inheritance untuk kasus

diatas.Sehingga class  Manajer dapat kita tuliskan sebagai

berikut.

Public class Manajer extends Pegawai{

Public String departemen;

}

Konsep Inheritance dalam Java

Konsep inheritane yang ada di Java adalah hanya

memperkenankan adanya Single inheritance.Konsep Single

inheritane artinya bahwa sebuah subclass hanya diperkenankan

80 | P a g e

Page 81: Buku Java

memiliki satu parent class. Konsep inheritance yang ada di java

memperkenankan adanya multilevel inheritance.

Konsep multilevel inheritanceberarti bahwa

sebuah subclass dapat memiliki subclass lagi sebagai

turunannya.

Subclass menggunakan keyword super untuk mereferensi

data dan fungsi dariparent class-nya. Dengan kata lain

keyword super ini berfungsi sebagai alias dari Parent class.Format

penulisan dari keyword ini :

-        super.data_member  ->  merujuk pada data member

dari parent class

-        super.function_member()  ->  merujuk pada function

member dari parent class

-        super()  ->  merujuk pada konstriktor dari parent class

Polimorfisme

Polimorfisme merupakan suatu konsep yang menyatakan

sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku

berbeda. Istilah ini sendiri berasal dari bahasa Yunani, yang

berarti “Mempunyai banyak bentuk”.

Polimorfisme merupakan kemampuan objek-objek yang

berbeda kelas namun terkait dalam pewarisan untuk merespon

secara berbeda terhadap suatu pesan yang sama. Polimarfisme

juga dapat dikatakan kemampuan sebuah objek untuk

memutuskanmethod mana yang akan diterapkan padanya,

tergantung letak objek tersebut pada jenjang pewarisan.

Polimorfisme secara bahasa dapat diartikan memiliki

banyak bentuk. Konsep ini terdapat dalam bahasa pemrograman

seperti konstruktor yang memiliki beberapa bentuk. Selain

konstruktor, konsep ini juga berlaku bagi metode. Metode atau

81 | P a g e

Page 82: Buku Java

konstruktor dapat memiliki banyak bentuk dalam arti memiliki

nama yang sama namun dengan argumen yang berbeda atau

dengan return type yang berbeda. Contoh polimorfisme untuk

konstruktor maupun untuk metode dapat Anda lihat pada Listing

1. Disana terdapat konstruktor-konstruktor dengan nama sama

namun dengan argumen yang mengandung parameter-

parameter yang berbeda. Untuk contoh polimorfisme untuk

metode ditunjukkan bahwa terdapat metode dengan nama sama

namun memiliki argumen dan return type yang berbeda.

Kegunaan dari polimorfisme adalah agar kita dapat

mendefinisikan beberapa konstruktor atau metode dengan

karakteristik yang berbeda-beda agar nantinya dapat digunakan

untuk kasus-kasus yang berbeda. Misalnya kita ingin

menciptakan instans dari kelas KelasKita pada Listing 1 tanpa

memberikan nilai apapun, namun terkadang kita ingin

memberikan sebuah nilai sebagai parameter untuk digunakan

oleh instans dari kelas tersebut, maka kita dapat membuat kelas

seperti KelasKita tersebut. Begitu juga halnya dengan metode,

sehingga kita dapat membuat metode-metode yang memiliki

karakteristik yang khusus.

Polimorfisme sebenarnya dapat dihilangkan dengan

medefinisikan sebuah konstruktor atau metode yang dapat

menangani semua kasus yang mungkin. Namun hal ini akan

menyebabkan program Anda lebih rumit dan sulit dimengerti.

Sedangkan polimorfisme yang membantu Anda untuk membuat

program yang lebih baik dan mudah juga membawa konsekuensi

yaitu proses kompilasi yang lebih rumit, dan penurunan

kecepatan eksekusi kelas. Namun hal ini tidak perlu menjadi

perhatian Anda kecuali Anda memang ingin mendalami proses

kompilasi Java.

82 | P a g e

Page 83: Buku Java

Kondisi yang harus dipenuhi dalam prinsip Polimorfisme :

Method yang dipanggil harus melalui variabel dari

basis class atau superclass.

Method yang dipanggil harus juga menjadi method

dari basis class.

Signature method harus sama baik pada superclass

maupun subclass.

Method access attribute pada subclass tidak boleh

lebih terbatas dari basis class (superclass).

Kadangkala pada class yang sama(pada satu kelas) 

mempunyai nama operation yang sama. Sebagai contoh

operation (method/fungsi) 'buka' bisa dipakai untuk membuka

pintu, membuka jendela, membuka buku, membuka seminar dan

lain-lain. Meski kedengarannya sama, sebenarnya apa yang

dilakukan berbeda. Konsep inilah yang disebut dengan

polimorphisme. 

Polimorfisme (polymophism) atau yang disebut juga dengan

kebanyak rupaan adalah kemampuan program untuk

mengungkap banyak hal berbeda dengan cara yang sama.

Polimorphisme adalah konsep yang sangat handal bagi

pengembang perangkat lunak untuk pemisahan secara jelas

diantara sub sistem yang berbeda. Dengan dimikian sebuah

sistem akan bisa dimodifikasi secara mudah karena hanya

dibutuhkan interface antar class. Sebagai contoh kita bisa

membuat operation 'hitungGaji'. Operation 'hitungGaji' ini bisa

dipakai untuk menghitung gaji semua pegawai, baik pegawai

tetap, pegawai paruh waktu maupun pegawai kontrak. Dengan

konsep polomorphisme kita bisa menghitung gaji masing-masing

83 | P a g e

Page 84: Buku Java

pegawai. Sekedar iliustrasi, untuk menghitung gaji karyawan

tetap jelas akan memperhitungkan jabatan dan golongan.

Sedangkan untuk pegawai paruh waktu akan memperhitungkan

jumlah jam kerja. Adapun untuk pegawai kontrak tidak ada

tunjangan pensiun.

Polimorfisme bisa disamakan dengan overload method,

dimana sebuah class terdapat beberapa metodhs dengan nama

yang sama (biasanya hanya berbeda dalam jumlah atau tipe data

parameternya)

Interface

Interface adalah kelas abstract yang sepenuhnya. Yang

berarti, semua metodenya adalah abstract. Ini bertujuan untuk

menerapkan pewarisan jamak, yaitu suatu kelas tertentu dapat

mewarisi kemampuan kelas lebih awal dari nenek moyang. Serta

adanya kewajiban bagi kelas tersebut untuk mendefinisikan ulang

semua metode yang ada pada kelas induk.

Di kelas kita  sudah belajar apa interface tersebut, untuk

mengulang materi di kelas, semoga postingan saya tentang

interface kali ini bisa memperjelas tentang konsep interface yang

kita pelajari di kelas praktikum dan penjelasan tugas yang sudah

dikumpulkan minggu lalu.

Kenapa kita butuh interface?  Sebagai pengantar kita harus

mengetahui apa yang disebut interface dan kegunaan’nya dalam

pemrograman java / pemrograman berorientasi objek, karena kita

akan bermain banyak dengan objek tersebut.

Interface adalah jenis khusus dari blok yang hanya berisi

method signature (atau constant).  Interface mendefinisikan

sebuah(signature) dari sebuah kumpulan method tanpa tubuh.

Interface mendefinisikan sebuah cara standar dan umum dalam

menetapkan sifat-sifat dari class-class. Mereka menyediakan

84 | P a g e

Page 85: Buku Java

class-class, tanpa memperhatikan lokasinya dalam hirarki class,

untuk mengimplementasikan sifat-sifat yang umum. Dengan

catatan bahwa interface-interface juga menunjukkan

polimorfisme, dikarenakan program dapat memanggil method

interface dan versi yang tepat dari method yang akan dieksekusi

tergantung dari tipe object yang melewati pemanggil method

interface.

Untuk memahami lebih mudah, interface sekumpula dari

method-method yang dibuat tapi belum ada operasi di dalam

tubuh method tersebut, interface ini bisa diturunkan atau

diwariskan kepada class yang ingin memakai method yang ada

dalam masing-masing interface tersebut dengan

keyword extends [interface yang didefinisikan]. Dan juga sebuah

class mengimplementasi 1 interface yang sudah dibuat dengan

keyword implements.

Ciri-ciri dari interface adalah sebagai berikut..

Method interface tidak punya tubuh, sebuah interface

hanya dapat mendefinisikan konstanta dan interface tidak

langsung mewariskan hubungan dengan class istimewa

lainnya, mereka didefinisikan secara independent.

Tidak bisa membuat instance atau objek baru dari sebuah

interface.

Ciri umum lain adalah baik interface maupun class dapat

mendefinisikan method. Bagaimanapun, sebuah interface

tidak punya sebuah kode implementasi sedangkan class

memiliki salah satunya.

Interface adalah class yang hanya mengandung deklarasi

method tanpa memiliki implementasi dan semua property yang

dimilikinya bersifat final. Interface mirip dengan class abstrak,

tetapi interface tidak terikat dengan class hierarki.

85 | P a g e

Page 86: Buku Java

Berikut ini adalah aturan yang harus kita ingat tentang

pendeklarasian interface:

1. Modifier yang digunakan hanya public atau tidak sama

sekali. Jika tidak menggunakan modifier maka interface

tersebut hanya dapat diakses dalam package yang sama.

2. Semua variabel yang dideklarasikan dalam interface secara

otomatis adalah static final. Karena itu waktu

pendeklarasian harus diberikan nilai.

3. Semua method adalah abstrak. Bedanya dengan class

abstrak adalah kita tidak perlu menuliskan keyword

abstract pada saat mendeklarasikan method dalam

interface.

4. Kita dapat mengimplementasikan lebih dari satu interface

(multiple inheritance) dengan memisahkan nama dari

setiap interface dengan tanda koma.

5. Dapat terjadi saat kita mengimplementasikan lebih dari

satu interface ternyata interface – interface tersebut

memiliki method yang sama. Dalam hal ini method yang

akan diimplementasi adalah method yang berada pada

posisi pertama.

6. Semua method yang diimplemetasikan harus public.

7. Jika kita tidak mengimplementasikan semua method yang

ada pada interface, maka class tersebut harus

dideklarasikan sebagai abstract class.

Interface dalam java dia adalah sebuah kelas. yang isinya

bisa berupa variable-variable ataupun method-method.

pendeklarasiannya seperti ini…

public interface <nama_interface> {

<deklarasi_variable>;

86 | P a g e

Page 87: Buku Java

<deklarasi_method>;

}

 

tetapi didalam interface ini methodnya tidak dijelaskan detailnya.

hanya sekedar deklarasinya saja. dan untuk variable-nya boleh

ada nilainya. Jadi, interface ada agar isinya bisa dipakai oleh kelas

lain yang mengimplementasikan interface tersebut. hal ini

membuat kita tidak perlu menuliskan code yang banyak. Inilah

salah satu keunggulan java. hemat ngetik code.

Kita akan menggunakan interface jika kita ingin class yang

tidak berhubungan mengimplementasikan method yang sama.

Melalui interface-interface, kita dapat menangkap kemiripan

diantara class yang tidak berhubungan tanpa membuatnya

seolaholah class yang berhubungan.

Mari kita ambil contoh class Line dimana berisi method yang

menghitung panjang dari garis dan membandingkan object Line

ke object dari class yang sama. Sekarang, misalkan kita punya

class yang lain yaitu MyInteger dimana berisi method yang

membandingkan object MyInteger ke object dari class yang sama.

Seperti yang kita lihat disini, kedua class-class mempunyai

method yang mirip dimana membandingkan mereka dari object

lain dalam tipe yang sama, tetapi mereka tidak berhubungan

sama sekali. Supaya dapat menjalankan cara untuk memastikan

bahwa dua class-class ini mengimplementasikan beberapa

method dengan tanda yang sama, kita dapat menggunakan

sebuah interface untuk hal ini. Kita dapat membuat sebuah class

interface, katakanlah interface Relation dimana mempunyai

deklarasi method pembanding. Relasi interface dapat

dideklarasikan sebagai public interface Relation

{

87 | P a g e

Page 88: Buku Java

public boolean isGreater( Object a, Object b);

public boolean isLess( Object a, Object b);

public boolean isEqual( Object a, Object b);

}

Alasan lain dalam menggunakan interface pemrograman object

adalah untuk menyatakan sebuah interface pemrograman object

tanpa menyatakan classnya. Seperti yang dapat kita lihat nanti

dalam bagian Interface vs class, kita dapat benar-benar

menggunakan interface sebagai tipe data.

Pada akhirnya, kita perlu menggunakan interface untuk

pewarisan model jamak dimana menyediakan class untuk

mempunyai lebih dari satu superclass. Pewarisan jamak tidak

ditunjukkan di Java, tetapi ditunjukkan di bahasa berorientasi

object lain seperti C++.

Interface vs. Class Abstract

Berikut ini adalah perbedaan utama antara sebuah interface dan

sebuah class abstract:

method interface tidak punya tubuh, sebuah interface hanya

dapat mendefinisikan konstanta dan interface tidak langsung

mewariskan hubungan dengan class istimewa lainnya, mereka

didefinisikan secara independent.

Interface vs. Class

Satu ciri umum dari sebuah interface dan class adalah pada tipe

mereka berdua. Ini artinya bahwa sebuah interface dapat

digunakan dalam tempat-tempat dimana sebuah class dapat

digunakan. Sebagai contoh, diberikan class Person dan interface

PersonInterface, berikut deklarasi yang benar:

PersonInterface pi = new Person();

88 | P a g e

Page 89: Buku Java

Person pc = new Person();

Bagaimanapun, Anda tidak dapat membuat instance dari sebuah

interface.

Contohnya:

PersonInterface pi = new PersonInterface(); //COMPILE

//ERROR!!!

Ciri umum lain adalah baik interface maupun class dapat

mendefinisikan method. Bagaimanapun, sebuah interface tidak

punya sebuah kode implementasi sedangkan class memiliki salah

satunya.

Membuat Interface

Untuk membuat interface, kita tulis, public interface

[InterfaceName]

{

//beberapa method tanpa isi

}

Hubungan dari Interface ke Class

Seperti yang telah kita lihat dalam bagian sebelumnya, class

dapat mengimplementasikan sebuah interface selama kode

implementasi untuk semua method yang didefinisikan dalam

interface tersedia. Hal lain yang perlu dicatat tentang hubungan

antara interface ke class-class yaitu, class hanya dapat

mengextends satu superclass, tetapi dapat

mengimplementasikan banyak interface. Sebuah contoh dari

sebuah class yang mengimplementasikan interface adalah :

public class Person implements PersonInterface,

LivingThing,

WhateverInterface {

//beberapa kode di sini

}

89 | P a g e

Page 90: Buku Java

Contoh lain dari class yang meng-extend satu superclass dan

mengimplementasikan sebuah interface adalah :

public class ComputerScienceStudent extends Student

implements PersonInterface,

LivingThing {

//beberapa kode di sini

}

Catatan bahwa sebuah interface bukan bagian dari hirarki

pewarisan class. Class yang tidak berhubungan dapat

mengimplementasikan interface yang sama.

Petunjuk penulisan program:

Gunakan interface untuk mendefinisikan method standar yang

sama dalam classclass berbeda yang memungkinkan. Sekali Anda

telah membuat kumpulan definisi method standar, Anda dapat

menulis method tunggal untuk memanipulasi semua classclass

yang mengimplementasikan interface.

Pewarisan Antar Interface

Interface bukan bagian dari hirarki class. Bagaimanapun,

interface dapat mempunyai hubungan pewarisan antara mereka

sendiri. Contohnya, misal kita punya dua interface

StudentInterface dan PersonInterface. Jika StudentInterface

meng-extend PersonInterface, maka ia akan mewariskan semua

deklarasi method dalam PersonInterface.

public interface PersonInterface {

. . .

}

public interface StudentInterface extends PersonInterface {

. . .

90 | P a g e

Page 91: Buku Java

}

91 | P a g e

Page 92: Buku Java

BAB 8

92 | P a g e

Page 93: Buku Java

Exception

HandlingException

Exception adalah singkatan dari Exceptional Events.

Kesalahan (errors) yang terjadi saat runtime, menyebabkan

gangguan pada alur eksekusi program. Terdapat beberapa tipe

error yang dapat muncul. Sebagai contoh adalah error pembagian

0, mengakses elemen di luar jangkauan sebuah array, input yang

tidak benar dan membuka file yang tidak ada. Seluruh exceptions

adalah subclasses, baik secara langsung maupun tidak langsung,

dari sebuah root class Throwable. Kemudian, dalam class ini

terdapat dua kategori umum : Error class dan Exception class.

Exception class menunjukkan kondisi yang dapat diterima oleh

user program. Umumnya hal tersebut disebabkan oleh beberapa

kesalahan pada kode program. Contoh dari exceptions adalah

pembagian oleh 0 dan error di luar jangkauan array. Error class

digunakan oleh Java run-time untuk menangani error yang

muncul pada saat dijalankan. Secara umum hal ini di luar control

user karena kemunculannya disebabkan oleh run-time

environment. Sebagai contoh adalah out of memory dan harddisk

crash.

Bahasa pemrograman java mempunyai 3 keyword penting

untuj menangani masalah exception yaitu : Try, Catch dan Finally.

Ke 3 keyword penting untuk menangani bermacam-macam tipe

93 | P a g e

Page 94: Buku Java

exception ke 3 keyword tersebut digunakan bersama-sama

kecuali keyword finally karena bersifat opsional.

Menangkap Exception

Try - Catch

Seperti yang telah dijelaskan sebelumnya, keyword try,

catch dan finally digunakan dalam menangani bermacam tipe

exception. 3 Keyword tersebut digunakan bersama, namun finally

bersifat opsional. Akan lebih baik jika memfokuskan pada dua

keyword pertama, kemudian membahas finally pada bagian akhir.

Ketika sebuah exception terjadi, maka kejadian tersebut

dikatakan sebagai exception yang dilemparkan (thrown) [1].

Kode yang bertanggung jawab untuk melakukan sesuatu

ketika exception dilemparkan disebut dengan exception

handler [1].

Ketika ada sebuah exception dilemparkan dan ada

exception handler yang bertanggung jawab terhadap jenis

exception tersebut, maka exception handler

dikatakan menangkap (catch) exception [1&3].

Mekanisme exception adalah mentransfer eksekusi

program dari tempat terjadinya exception ke exception

handler yang sesuai.

try, catch, finally, throw, dan throws adalah keyword-

keyword yang berhubungan dengan proses pelemparan

object (instance dari subclass java.lang.Throwable) [1]. Akan

tetapi kita biasanya keyword-keyword tersebut hanya akan

digunakan untuk instance dari

subclass java.lang.Exception saja .

Berikut ini adalah peta try-catch-finally :

94 | P a g e

Page 95: Buku Java

Beberapa aturan yang berhubungan dengan peta try-catch-

finally di atas adalah :

1)  Harus ada blok try

2)  Blok try harus diikuti oleh 1 atau lebih blok catch dan atau 1

blok finally.

3)  Blok try dapat hanya diikuti oleh blok catch saja, atau

blok try dapat hanya diikuti oleh blok finally saja. Akan tetapi

tidak boleh kedua-duanya (catch dan finally) tidak mengikuti

blok try.

4) Bila setelah blok try terdapat blok catch dan blok finally, maka

blok finally harus terletak setelah blok catch.

5)  Antar blok try-catch-finally tidak boleh ada statement.

Try

try dipergunakan untuk menempatkan blok kode dimana

ada kemungkinan exception terjadi dalam blok tersebut [2].

Bila exception terjadi dalam baris x dari blok try, maka baris

x+1 tidak akan dijalankan

Bila dalam blok try tidak terjadi exception, kontrol program

akan meloncat ke blok finally (bila ada blok finally), dan

kemudian kontrol program akan meloncat ke statement

setelah bloktry-catch-finally.

Keyword Finally

95 | P a g e

Page 96: Buku Java

Blok finally mengandung kode penanganan setelah penggunaan

try dan catch. Blok kode ini selalu tereksekusi walaupun sebuah

exception terjadi atau tidak pada blok try. Blok kode tersebut juga

akan menghasilkan nilai true meskipun return, continue ataupun

break tereksekusi. Terdapat 4 kemungkinan skenario yang

berbeda dalam blok try-catch-finally. Pertama, pemaksaan keluar

program terjadi bila control program dipaksa untuk melewati blok

try menggunakan return, continue ataupun break. Kedua, sebuah

penyelesaian normal terjadi jika try-catch-finally tereksekusi

secara normal tanpa terjadi error apapun. Ketiga, kode program

memiliki spesifikasi tersendiri dalam blok catch terhadap

exception yang terjadi. Yang terakhir, kebalikan skenario ketiga.

Dalam hal ini, exception yang terjadi tidak terdefinisikan pada

blok catch manapun.

Blok try dapat diikuti oleh maksimal 1 buah blok finally (bila

setelah blok try tidak terdapat blok finally, maka setelah

blok try harus terdapat minimal 1 buah blok catch).

Blok finally harus terletak setelah blok-blok catch(bila ada),

atau langsung mengikuti blok try (bila blok catch tidak ada).

Blok finally pasti dijalankan, baik apabila pada

blok try terdapat exception ataupun tidak.

Biasanya blok finally berisi statement-statement untuk

cleanup resource .

Skenario umum yang melibatkan blok finally:

1.      Bila dalam blok try tidak terdapat exception, maka setelah

blok try selesai dieksekusi, control flow akan meloncat ke

blok finally , dan blok finally tersebut akan

dijalankan. Setelah blok finallydijalankan, control flow akan

meloncat ke statement setelah blok finally.

96 | P a g e

Page 97: Buku Java

2.      Bila dalam blok try terdapat exception, maka control flow

program akan meloncat ke blok catch yang sesuai dengan

exception tersebut (bila ada), setelah blok catch selesai

dijalankan, control flow akan meloncat ke blok finally. Setelah

blok finally dijalankan, control flow akan meloncat ke

statement setelah blok finally.

3.      Bila dalam blok try terdapat exception, dan tidak

terdapat catch yang sesuai untuk exception tersebut, maka

control flow akan meloncat ke blok finally, setelah

blok finally selesai dijalankan, flow control akan meloncat lagi

ke method pemanggil method saat ini.

Berikut ini merupakan alur kejadian blok try, catch dan finally :

 

Melempar Exception

Keyword Throw

Kata kunci throw digunakan di program untuk melempar

(throw) exception secara eksplisit. Bentuk umum kalimat adalah,

Throw ThrowableInstance;

97 | P a g e

Page 98: Buku Java

Instan Throwable harus merupakan obyek dengan tipe

Throwable atau subkelas dari Throwable. Terdapat dua cara untuk

memperoleh obyek Throwable, yaitu,

1. Menggunakan parameter di klausa catch

2. Menciptakab salah satu dengan menggunakan operator

new()

Eksekusi program akan dihentikan segera setelah kalimat

throw, kalimat-kalimat setelah kalimat throw tidak dieksekusi.

Java akan melakukan inspeksi blok try terdekat untuk

menemukan catch yang cocok dengan dengan tipe exception

yang dilempar. Jika Java menemukannya, maka kendali program

ditransfer ke kalimat itu. Jika tidak ditemukan, maka Java akan

melakukan penelusuran ke blok berikutnya dan bila tetap tidak

ditemukan, maka penanganan exception secara default akan

menghentikan programnya.

Penggunaan kata kunci throws berhubungan erat dengan

penggunaan exception yang dicek oleh Java. Klausa throws

mendaftarkan tipe-tipe exception yang dapat dilempar method.

Hal ini diperlukan agar diketahui semua exception yang mungkin

dilempar method atau subkelasnya, kecuali tipe Error atau

RunTimeException yang dilakukan sistem Java secara otomatis

bila menemui pelangggaran aturan-aturan Java. Semua exception

yang hendak dilempar method harus dideklarasikan di klausa

throws. Jika method melemparkan exception yang tidak

dideklarasikan di deklarasi method, maka kompilator akan

memberi pesan kesalahan

Secara umum, penggunaan kata kunci throw, yaitu,

Throw ObjekEksepsi;

98 | P a g e

Page 99: Buku Java

ObjekEksepsi disini adalah semua obyek yang merupakan

turunan dari class throwable.

Disamping menangkap exception, Java juga mengijinkan

seorang user untuk melempar sebuah exception. Sintaks

pelemparan exception cukup sederhana.

throw <exception object>;

Jika sebuah method dapat menyebabkan sebuah exception

namun tidak menangkapnya, maka digunakan keyword throws.

Aturan ini hanya berlaku pada checked exception. Anda akan

mempelajari lebih lanjut tentang checked exception dan

unchecked exception pada bagian selanjutnya, “Kategori

Exception”. Berikut ini penulisan syntax menggunakan keyword

throws :

<type> <methodName> (<parameterList>) throws

<exceptionList> {

<methodBody>

}

Sebuah method perlu untuk menangkap ataupun mendaftar

seluruh exceptions yang mungkin terjadi, namun hal itu dapat

menghilangkan tipe Error, RuntimeException, ataupun subclass-

nya.

Kategori Exception

Exception Classes dan Hierarki

Seperti yang disebutkan sebelumnya, root class dari

seluruh exception classes adalah Throwable class. Yang

disebutkan dibawah ini adalah exception class hierarki. Seluruh

exceptions ini terdefinisi pada package java.lang.

99 | P a g e

Page 100: Buku Java

Checked dan Unchecked Exceptions

Exception terdiri atas checked dan unchecked exceptions.

Checked exceptions adalah exception yang diperiksa oleh Java

compiler. Compiler memeriksa keseluruhan program apakah

menangkap atau mendaftar exception yang terjadi dalam sintax

throws. Apabila checked exception tidak didaftar ataupun

ditangkap, maka compiler error akan ditampilkan. Tidak seperti

checked exceptions, unchecked exceptions tidak berupa compile-

time checking dalam penanganan exceptions. Pondasi dasar dari

unchecked exception classes adalah Error, RuntimeException dan

subclass-nya.

User Defined Exceptions

Meskipun beberapa exception classes terdapat pada

package java.lang namun tidak mencukupi untuk menampung

seluruh kemungkinan tipe exception yang mungkin terjadi.

Sehingga sangat mungkin bahwa Anda perlu untuk membuat tipe

exception tersendiri. Dalam pembuatan tipe exception Anda

sendiri, Anda hanya perlu untuk membuat sebuah extended class

terhadap RuntimeException class, maupun Exception class lain. 100 | P a g e

Page 101: Buku Java

Selanjutnya tergantung pada Anda dalam memodifikasi class

sesuai permasalahan yang akan diselesaikan. Members dan

constructors dapat dimasukkan pada exception class milik Anda.

Assertions

User Defined Exceptions

Assertions mengijinkan programmer untuk menentukan

asumsi yang dihadapi. Sebagai contoh, sebuah tanggal dengan

area bulan tidak berada antara 1 hingga 12 dapat diputuskan

bahwa data tersebut tidak valid. Programmer dapat menentukan

bulan harus berada diantara area tersebut. Meskipun hal itu

dimungkinkan untuk menggunakan contructor lain untuk

mensimulasikan fungsi dari assertions, namun sulit untuk

dilakukan karena fitur assertion dapat tidak digunakan. Hal yang

menarik dari assertions adalah seorang user memiliki pilihan

untuk digunakan atau tidak pada saat runtime. Assertion dapat

diartikan sebagai extensi atas komentar yang menginformasikan

pembaca kode bahwa sebagian kondisi harus terpenuhi. Dengan

menggunakan assertions, maka tidak perlu untuk membaca

keseluruhan kode melalui setiap komentar untuk mencari asumsi

yang dibuat dalam kode. Namun, menjalankan program tersebut

akan memberitahu Anda tentang assertion yang dibuat benar

atau salah. Jika assertion tersebut salah, maka AssertionError

akan terjadi.

Mengaktifkan dan Menonaktifkan Exceptions

Penggunaan assertions tidak perlu melakukan import

package java.util.assert. Menggunakan assertions lebih tepat

ditujukan untuk memeriksa parameter dari nonpublic methods

jika public methods dapat diakses oleh class lain. Hal itu mungkin

terjadi bila penulis dari class lain tidak menyadari bahwa mereka

101 | P a g e

Page 102: Buku Java

dapat menonaktifkan assertions. Dalam hal ini program tidak

dapat bekerja dengan baik. Pada non-public methods, hal

tersebut tergunakan secara langsung oleh kode yang ditulis oleh

programmer yang memiliki akses terhadap methods tersebut.

Sehingga mereka menyadari bahwa saat menjalankannya,

assertion harus dalam keadaan aktif. Untuk mengkompilasi file

yang menggunakan assertions, sebuah tambahan parameter

perintah diperlukan seperti yang terlihat dibawah ini :

javac –source 1.4 MyProgram.java

Jika Anda ingin untuk menjalankan program tanpa menggunakan

fitur assertions, cukup jalankan program secara normal.

java MyProgram

Namun, jika Anda ingin mengaktifkan assertions, Anda perlu

menggunakan parameter –enableassertions atau –ea.java –

enableassertions MyProgram

Sintaks Assertions

Penulisan assertions memiliki dua bentuk. Bentuk yang paling

sederhana terlihat sebagai berikut :

assert <expression1>;

dimana <expression1> adalah kondisi dimana assertion bernilai

true. Bentuk yang lain menggunakan dua ekspresi, berikut ini

cara penulisannya :

assert <expression1> : <expression2>;

dimana <expression1> adalah kondisi assertion bernilai true dan

<expression2> adalah

informasi yang membantu pemeriksaan mengapa program

mengalami kesalahan.

Perlu diingat pada penggunaan exception khususnya pada

penggunaan catch bertingkat. Anak kelas harus ditempatkan

lebih awal dibandingkan dengan Induk kelasnya.

102 | P a g e

Page 103: Buku Java

Istilah exception digunakan untuk menunjukkan kesalahan

pada hardware, software, serta algoritma. Suatu exception adalah

obyek dari kelas standar Throwable, yang mempunyai turunan

terdiri dari :

Error. Exception yang didefinisikan dalam keas ini

mempunyai karakteristik bahwa kondisi yang terjadi tidak

dapat diubah. Terdapat tiga macam subclass yang berada

dibawahnya yaitu, ThreadDeath, Linkage Error,

VirtualMachineError.

Exception. Untuk kelas yang diturunkan dari

exception kompiler memeriksa bahwa kita bisa menangani

exception dengan metode yang ada.

Kelas exception mempunyai banyak kelas turunan. Dua kelas

yang penting yaitu :

IOException

RuntimeException

Tabel Subkelas dari RunTime Exception

Kelas Keterangan

ArithmeticException Kesalahan pada operasi aritmatika

IndexOutofBoundsException Beberapa jenis indeks di luar batas

NegativeArraySizeException Array diciptakan dengan ukuran negatif

NullPointerExcepotion Penggunaan acuan null yang tidak valid

ArrayStroreException Penyimpanan array dengan tipe data

yang tidak sesuai.

ClassCastException Cast yang tidak valid

IllegalArrayArgumentException Argumen yang tidak benar

SecurityException Aturan sekuriti yang dilanggar

IllegalMonitorStateException Operasi monitor ilegal

IllegalStateException Lingkungan yang tidak benar

UnsupportedOperationExceptio Operasi yang tidak didukung

103 | P a g e

Page 104: Buku Java

n

Membuat Kelas Eksepsi Sendiri

Meskipun tersedia banyak kelas exception pada package

java.lang, namun tidak mencukupi untuk menampung seluruh

kemungkinan tipe eksepsi yang mungkin terjadi. Sehingga

seringkali diperlukan untuk membuat tipe eksepsi tersendiri.

Cara pembauatan kelas eksepsi baru adalah mudah.

Tinggal mendefinisikan turunan kelas Exception (yang juga

merupakan turunan dari kelas Throwable). Kelas baru tersebut

tidak perlu mengimplementasikan apapun. Hanya perlu

mendeklarasikan konstruktor yang mungkin akan digunakan.

Kelas Exception tidak mendefinisikan method apapun di

dirinya. Kelas ini hanya mewarisi method-method yang

disediakan kelas Throwable. Jika diperlukan, maka method-

method tersebut dapat dioverride sesuai kebutuhan

Berikut ini daftar method tersebut :

Method Fungsi

Throwable fillStackTrace() Mengembalikan object Throwable yang berisi

data stack trace lengkap.

String getLocalizedMessage() Mengembalikan deskripsi tentang eksepsi

menggunakan bahasa lokal

String getMessage() Mengembalikan deskripsi tentang eksepsi

void printStackTrace() Menampilkan stack trace

voidprintStackTrace(PrintStrea

m stream)

Mengirim hasil dari stack trace ke stream

yang telah ditentukan

void

printStackTrace(PrintWriter

stream)

Mengirim hasil dari stack trace ke stream

yang telah ditentukan

String toString() Mengembalikan deskripsi tetang tipe object

eksepsi dan penjelasan tentang eksepsi

tersebut.Akan dipanggil secara otomatis

ketika object eksepsi dicetak dengan

104 | P a g e

Page 105: Buku Java

println().

105 | P a g e

Page 106: Buku Java

BAB 9Database

Pengertian Basis Data

Basis Data atau biasa disebut Database adalah

kumpulan informasi yang disimpan di dalam komputer secara

sistematik sehingga dapat diperiksa menggunakan suatu program

komputer untuk memperoleh informasi dari basis data tersebut.

Konsep dasar dari basis data adalah kumpulan dari catatan-

catatan, atau potongan dari pengetahuan.Istilah basis

data mengacu pada koleksi dari data-data yang saling

berhubungan. Jika konteksnya sudah jelas, banyak administrator

dan programer menggunakan istilah basis data untuk kedua arti

tersebut. Pemrograman database pada java bisa menggunakan

mySQL atau JDBC.

106 | P a g e

Page 107: Buku Java

Sebelum kita mengetahui lebih lanjut tentang database.Kita

harus mengetahui tentang JDBC, Java menyediakan standard API

untuk mengakses database yang disebut Java Database

Connectivity (JDBC) API. Dengan menggunakan ini, para

pengembang memungkinkan dapat mengakses database tanpa

memperdulikan vendornya; para vendor menyediakan

implementasi untuk abstract interfaces yang dijelaskan didalam

API, penyediaan tersebut sama dengan set dari kemampuan

koneksi untuk para pengembang. Berikut ini merupakan class

kunci dari JDBC API, semuanya akan dijelaskan secara detail

kemudian :

• java.sql.Connection – membuat sebuah koneksi dengan

database. Secara abstrak memberikan detail dari bagaimana

cara untuk berkomunikasi dengan database server.

• java.sql.DriverManager – mengatur JDBC driver yang digunakan

oleh aplikasi. Pada hubungannya dengan proper driver URL

dan proper authentication, dapat menyediakan aplikasi

dengan valid instances dari object koneksi.

• javax.sql.DataSource – memisahakan detail (URL,

authentication details) dari bagaimana untuk memperoleh

sebuah koneksi ke database. Merupakan method terbaru dan

yang lebih disukai dari obtaining Connection objects.

• java.sql.Statement – menyediakan method untuk para

pengembang dalam mengeksekusi pernyataan SQL.

• java.sql.ResultSet – menyediakan hasil dari sebuah pernyataan

SQL. Objects ini sering dikembalikan dari method yang

terletak pada Statement object.

MySql

DBMS adalah suatu perangkat lunak yang digunakan untuk

mengelola, membuat, menghapus, memasukan data, dan

107 | P a g e

Page 108: Buku Java

melakukan manajemen database lainnya. Salah satu DBMS yang

handal adalah MySQL. MySQL merupakan salah satu DBMS

(Dababase Management System) yang menggunakan stuktur

database relasional (RDBMS). Java telah menyediakan berbagai

fitur untuk pengembangan aplikasi database. Sehingga hampir

semua DBMS (Dababase Management System) populer yang ada

saat ini sudah disupport penuh oleh Java, tidak terkecuali MySQL,

Microsoft SQL Server, dan Oracle. Banyak sekali cara yang

digunakan untuk melakukan koneksi dengan database, dan di

antara caracara tesebut yang paling populer adalah koneksi

melalui JDBC, JDBCODBC

Bridge (disebut juga via ODBC), an XML, tentunya dengan

kelebihan dan kekurangan masing-masing terhadap yang

ditangani atau permasalahan yang akan diselesaikan.

Secara umum langkah-langkah yang dilakukan dalam bahasa

pemrograman database adalah:

a) Melakukan loading database driver.

b) Membangun koneksi.

c) Melakukan statement.

d) Mengambil data dengan ResultSet.

Berikut ini merupakan istruksi-instruksi pada pembuatan program

database pada Java :

SELECT

Pernyataan SELECT digunakan untuk query database tentang

informasi database yang mana yang ditampilkan sebagai data.

Format dasar dari pernyataan SELECT adalah :

SELECT kolom FROM namatabel where kondisi

Pernyataan SQL SELECT dimulai dengan kata kunci SELECT,

diikuti oleh tanda koma dari kolomkolom yang akan ditampilkan,

108 | P a g e

Page 109: Buku Java

kemudian clause FORM yang menentukan tabel yang berisi data

yang akan ditampilkan. Secara bebas, clause WHERE dapat

ditambahkan pada pernyataan SELECT, menjelaskan sebuah set

dari kondisi yang harus ditemukan oleh data yang akan

dikembalikan oleh database. Clause WHERE tidak dipisahkan oleh

koma; melainkan, dia tehubung oleh pernyataan AND atau OR

yang fungsinya sama dengan logik mereka. Menetapkan *

sebagai nama kolom memberitahu database server untuk

meretrieve semua kolom yang tersedia didalam tabel.

Operator lain yang dapat digunakan pada conditional statements:

• < - kurang dari

• <= - kurang dari atau sama dengan

• > - lebih besar dari

• >= - lebih besar dari atau sama dengan

109 | P a g e

Page 110: Buku Java

INSERT

Pernyataan INSERT digunakan untuk memasukkan baris data

yang baru dari informasi tabel database yang aktif. Struktur dasar

dari pernyataan INSERT adalah :

INSERT INTO nama-tabel VALUES(nilai1, nilai2, ...)

Dimana nama-tabel adalah nama dari tabel yang akan berisi baris

data yang baru. Parameter yang diberikan didalam kata kunci

VALUES adalah daftar data dari nilai yang akan ditambahkan

kedalam tabel. Jika seperti ini dimana hanya tabel yang

ditetapkan, SQL akan memasukkan nilai yang diberikan pada

pernyataan dengan field didalam database berdasarkan nilai

yang dipesan dan field yang ditentukan pada tabel database.

UPDATE

Pernyataan UPDATE akan mengupdate baris yang dipilih pada

tabel, sebagai lawan dari pernyataan INSERT yang menambahkan

baris data baru. Format dasar pernyataan UPDATE adalah:

UPDATE nama-tabel set nilai-kolom WHERE kondisi

Dimana nama-tabel adalah nama dari tabel yang berisi baris yang

akan diupdate, dan nilai-kolom adalah daftar data dari nama

kolom dan nilainya. Secara bebas, daftar data dari kondisi dapat

ditambahkan secara spesifik dengan baris yang akan

dimodofikasi pada tabel. Jika tidak diberi kondisi, maka update

data akan dilakukan pada tiap-tiap baris didalam tabel yang

ditentukan. Berbagai update harus disesuaikan dengan aturan

integritas pada database.

DELETE

Pernyataan DELETE menghapus baris data pada tabel yang

dipilih. Struktur dasar dari pernyataan DELETE adalah :

110 | P a g e

Page 111: Buku Java

DELETE FROM nama-tabel WHERE kondisi

Dimana nama-tabel adalah nama dari tabel yang berisi baris data

yang akan dihapus. Daftar data dari kondisi secara bebas dapat

dispesifikasikan sebaik mungkin. Jika tidak diberi kondisi, maka

pernyataan akan mneghapus semua baris data pada tabel yang

telah ditentukan.

Sedangkan pada MySQL database dapat digunakan juga

Menjalankan MySQL

Untuk menjalankan MySQL cukup dengan mengetikan mysql pada

system prompt

Bentuk umum perintah

mysql database –h host –u user –p password

Dengan windows

Menu Start All Program MySQL

MySQL server 5.1

pilih dan klik Command line client

Aplikasi xampp

Aktifkan menu cmd.exe pada menu klik start kemudian klik run

lalu ketik cmd kemudian klik OK.

Ketik cd “c:\program file\xampp\mysql\bin “

Aktifkan mysql dengan : mysql –u root –p password (tekan

enter)

MySQL Prompt

Dalam penulisan di dalam MySQL tidak membedakan huruf besar

dan huruf kecil, yang membedakan adalah sistem operasi yang

digunakan :

1. Sistem operasi Unix/Linux akan membedakan huruf besar

dan kecil

2. Sistem operasi windows tidak membedakan

111 | P a g e

Page 112: Buku Java

Menampilkan Bantuan

Untuk mengaktifkan bantuan sederhana – HELP dengan

mengetikan pada MySQL prompt help atau \h

Mengetahui versi MySQL

Perintah umum

SELECT VERSION() ;

Pengetikan:

mysql>select version() ;

Cara pengetikan perintah

Cara pengetikan boleh dilakukan dengan dua cara, yaitu :

mysql>select version() ;

Atau

Mysql>select

>version()

>;

Kedua cara perintah tersebut hasilnya akan sama. Untuk

mengakhir setiap perintah diakhir oleh tanda titik koma ”;” . Jika

tidakdiakhiri oleh tanda ”;”, MySQL menunggu perintah

selanjutnya.

Membatalkan perintah

Untuk membatalkan perintah di prompt MySQL, tambahkan

perintah backslas cancel atau ” \c ” diakhir perintah .

Mysql>select

>version()

>\c

Menampilkan Database

Perintah

SHOW DATABASES

Contoh

mysql> show databases.

112 | P a g e

Page 113: Buku Java

Memberikan catatan

Perintah

Awalan /* dan akhiran */ : Dapat digunakan lebih dari satu

baris

Awalan # : Digunakan untuk satu baris

Contoh

Mysql> /* perintah untuk menampilkan

> database */

> show databases ;

Mysql> show databases # tampilkan database

> ;

Membuat Database Baru

Perintah

CREATE DATABASE database

Contoh

mysql> create database latihan1

Query OK, 1 row affected (0.01 sec)

Ini tanda database latihan1 telah dibuat

Untuk memastikan lakukan perintah show databases

Memilih database yang akan digunakan

Perintah

USE database

Contoh

mysql> use latihan1 ;

Database changed

Menampilkan Tabel

Perintah

SHOW TABLES

113 | P a g e

Tanda database latihan1 aktif

Page 114: Buku Java

Contoh

mysql> use latihan1 ;

mysql> show tables ;

Empty set (0.00) sec

Membuat Tabel Baru

Perintah

CREATE TABLE table (field spesifikasi_field, ... )

Jika sudah terdapat database, maka dapat memulai membuat

tabel,untuk contoh membuat tabel.

Contoh

Membuat tabel karyawan

Langkah :

- Aktifkan database

- Lakukan pembuatan teble dengan create

mysql> create table karyawan

- > (nopeg int unsigned auto_increment primary key,

- > nama varchar(35) not null,

- > gender varchar(2),

- > alamat varchar(30),

- > kota varchar(15),

- > tgllahir date null default ’0000-00-00’) ;

Query OK, 0 row affected (0.02 sec)

Keterangan :

Integer : Bilangan bulat

Unsigned : Tanpa tanda negatif

Auto_increment : Akan bertambah nilainya secara otomatis

Primary key : Kolom (key) pertama

Variable character : Jenis data alfabeta

(...) : Jumlah karakter

Not null : Tidak boleh dikosongkan

114 | P a g e

Tanda belum pernah membuat tabel

Page 115: Buku Java

Date : Format petanggalan

Untuk memastikan apakah tabel karyawan sudah ada pada

database latihan 1,lakukan perintah show tables

mysql> show tables ;

Menampilkan Struktur Tabel

Perintah

SHOW COLUMNS FROM tabelatau DESCRIBE tabel

Contoh

mysql> show columns from karyawan ;

Mengubah Struktur Tabel

Perintah

ALTER TABLE tabel jenis_pengubahan

Dalam perintah ALTER dapat melakukan :

Menambah kolom : ADD

Mengganti nama tabel : RENAME

Menghapus kolom atau indek : DROP

Mengubah jenis kolom : MODIFY

Menganti nama kolom sekaligus jenis kolom :

CHANGE

Contoh menambah satu kolom, yaitu kodepos

mysql> alter table karyawan

> add kodepos varchar(5)

> ;

Setiap penambahan kolom secara default selalu diletakan diakhir

tabel.

Menghapus kolom

Perintah gunakan alter table yaitu drop

Contoh

Untuk menghapus kodepos2

Mysql> alter table karyawan

115 | P a g e

Page 116: Buku Java

> drop kodepos2 ;

Mengisi Data

Perintah bentuk pertama

INSERT INTO tabel (kolom1, kolom2,...)

VALUES (data_kolom1, data_kolom2,...)

Perintah bentuk kedua

INSERT INTO tabel

SET kolom1 = data_kolom1,

Kolom 2 = data_kolom2,...

Perintah bentuk ketiga

INSERT INTO tabel

VALUES (data_kolom1, data_kolom2,...)

Menampilkan Data

Perintah

SELECT kolom FROM tabel WHERE kriteria

ORDER BY kolom

Jika akan menampilkan seluruh data dalam kolom gunakan tanda

asterik (*)

Koneksi Via Java Database Connectivity (JDBC)

Java Database Connectivity (JDBC) berfungsi untuk

melakukan koneksi database dengan aplikasi yang ditulis dengan

bahasa pemrograman Java. Bentuk fisik dari JDBC adalah file

driver yang berisi class atau kumpulan class-class (termasuk

interface, exception dan juga spesifikasi baik bagi vendor driver

JDBC maupun Driver Manager bagi pengambangan aplikasi yang

memanfaatkan JDBC) yang digunakan untuk menghubungkan

Java dengan database tertentu, sehingga apabila database yang

116 | P a g e

Page 117: Buku Java

akan dikoneksikan berbeda, maka file driver yang digunakan juga

berbeda, meskipun jenis koneksinya sama, yaitu JDBC.

Arsitektur JDBC

Sebuah spesifikasi yang terbuka, seperti JDBC yang

dispesifikasikan oleh Sun Microsystem, harus dapat besifat

terbuka bagi para vendor lain, terutama dalam pendefinisian

driver JDBC untuk masing-masing RDBMS. Untuk itu JDBC disusun

dalam sebuah arsitektur sebagai berikut:

Gambar 1. Arsitektur JDBC

Lapisan Vendor Spesific JDBC Driver merupakan driver JDBC

yang dikeluarkan oleh para vendor pengembang RDBMS.

Sedangkan JDBC-ODBC Bridge berfungsi sebagai perantara untuk

mengakses database melalui ODBC driver. Baik JDBC driver

maupun JDBC-ODBC Bridge diatur dan diakses melalui JDBC

Driver Manager. Aplikasi yang dikembangkan untuk mengakses

database dengan memanfaatkan JDBC akan berinteraksi dengan

JDBC Driver Manager. Arsitektur ini memudahkan pemrogram

untuk mengakses database. JDBC API tersedia dalam paket

java.sql dan javax.sql.

117 | P a g e

Page 118: Buku Java

Berikut ini adalah class-class, interface, dan exception JDBC

penting yang sering digunakan selama pemrograman:

1. Driver Manager : memanggil

driver JDBC ke memori, dan juga

untuk membuka koneksi ke sumber

data.

2. Connection : mempresentasikan

suatu koneksi dengan suatu data

source, juga digunakan untuk

membuat objek Statement,

PreparedStatement, dan

CallableStatement.

3. Statement : mempresentasikan

suatu perintah SQL, dan dapat

digunakan untuk menerima objek

ResultSet.

4. PreparedStatement : merupakan

alternative untuk objek Statement

SQL yang telah dikompilasi awal.

Koneksi dengan MySQL

Seperti pada umumnya koneksi ke database dengan JDBC,

maka perlu meng-include-kan (dengan perintah import) paket

berupa java.sql, kemudian diikuti dengan penggunaan class yang

ada pada driver JDBC for MySQL. Kode program yang digunakan

untuk loading driver JDBC for MySQL adalah sebagai berikut:

Class.forName(“com.mysql.jdbc.Driver”);

Sedangkan kode program untuk melakukan koneksi ke database

MySQL adalah sebagai berkut:

Connectin conn = DriverManager.getConnection

118 | P a g e

Page 119: Buku Java

(“jdbc:mysql://localhost:3306/pulsa”, “root”, “root”);

119 | P a g e

Page 120: Buku Java

Database

Di dalam suatu organisasi yang besar, sistem database

merupakan bagian penting pada sistem informasi, karena di

perlukan untuk mengelola sumber informasi pada organisasi

tersebut. Untuk mengelola sumber informasi tersebut yang

pertama kali di lakukan adalah merancang suatu sistem database

agar informasi yang ada pada organisasi tersebut dapat

digunakan secara maksimal.

Tujuan Perancangan Database

Untuk memenuhi kebutuhan akan informasi dari pengguna

dan aplikasi

Menyediakan struktur informasi yang natural dan mudah di

mengerti oleh pengguna

Mendukung kebutuhan pemrosesan dan beberapa obyek

kinerja dari suatu sistem database

Berikut ini siklus kehidupan sistem informasi di mana terdapat

siklus kehidupan sistem database.

1. Siklus Kehidupan Sistem Informasi (Macro Life Cycle )

Tahapan–tahapan yang ada pada siklus kehidupan sistem

informasi yaitu :

1. Analisa Kelayakan

Tahapan ini memfokuskan pada penganalisaan areal

aplikasi yang unggul , mengidentifikasi pengumpulan

informasi dan penyebarannya, mempelajari keuntungan

dan kerugian , penentuan kompleksitas data dan proses,

dan menentukan prioritas aplikasi yang akan digunakan.

2. Analisa dan Pengumpulan Kebutuhan Pengguna

Kebutuhan–kebutuhan yang detail dikumpulkan dengan

berinteraksi pada sekelompok pemakai atau pemakai

120 | P a g e

Page 121: Buku Java

individu. Mengidentifikasikan masalah yang ada dan

kebutuhan-butuhan, ketergantungan antar aplikasi,

komunikasi dan prosedur laporan.

3. Perancangan

Perancangan terbagi menjadi dua yaitu : perancangan

sistem database dan sistem aplikasi

4. Implementasi

Mengimplementasikan sistem informasi dengan database

yang ada

5. Pengujian dan Validasi

Pengujian dan validasi sistem database dengan kriteria

kinerja yang diinginkan oleh pengguna.

6. Pengoperasian dan Perawatan

Pengoperasian sistem setelah di validasi disertai dengan

pengawasan dan perawatan sistem

2. Siklus Keh idupan Aplikasi Database ( Micro Life Cycle )

Tahapan yang ada pada siklus kehidupan aplikasi database

yaitu :

1. Pendefinisian Sistem

Pendefinisian ruang lingkup dari sistem database,

pengguna dan aplikasinya.

2. Perancangan Database

Perancangan database secara logika dan fisik pada suatu

sistem database sesuai dengan sistem manajemen

database yang diinginkan.

3. Implementasi Database

Pendefinisian database secara konseptual, eksternal dan

internal, pembuatan file–file database yang kosong serta

implementasi aplikasi software.

121 | P a g e

Page 122: Buku Java

4. Pengambilan dan Konversi Data

Database ditempatkan dengan baik, sehingga jika ingin

memanggil data secara langsung ataupun merubah file–file

yang ada dapat di tempatkan kembali sesuai dengan

format sistem databasenya.

5. Konversi Aplikasi

Software-software aplikasi dari sistem database

sebelumnya di konversikan ke dalam sistem database yang

baru

6. Pengujian dan Validasi

Sistem yang baru telah di test dan di uji kinerja nya

7. Pengoperasian

Pengoperasian database sistem dan aplikasinya

8. Pengawasan dan Pemeliharaan

Pengawasan dan pemeliharaan sistem database dan

aplikasi software

Proses Perancangan Database

Ada 6 tahap untuk proses perancangan suatu database :

1. Pengumpulan data dan analisis

2. Perancangan database secara konseptual

3. Pemilihan sistem manajemen database

4. Perancangan database secara logika

5. Perancangan database secara fisik

6. Implementasi sistem database

122 | P a g e

Page 123: Buku Java

Keterangan :

Secara khusus proses perancangan berisikan 2 aktifitas

paralel. Aktifitas yang pertama melibatkan perancangan dari isi

data dan struktur database, sedangkan aktifitas kedua mengenai

perancangan pemrosesan database dan aplikasi–aplikasi

perangkat lunak.

Dua aktifitas ini saling berkaitan , misalnya mengidentifikasi

data item yang akan disimpan dalam database dengan cara

menganalisa aplikasi–aplikasi database. Dua aktifitas ini juga

saling mempengaruhi satu sama lain. Contohnya tahap

perancangan database secara fisik, pada saat memilih struktur

penyimpanan dan jalur akses dari file suatu database dimana

bergantung dengan aplikasi–aplikasi yang akan menggunakan file

tersebut.

123 | P a g e

Gambar 2. Tahap perancangan database untuk database yang berukuran besar

Page 124: Buku Java

Penentuan perancangan aplikasi–aplikasi database yang

mengarah ke konstruksi skema database telah ditentukan selama

aktifitas pertama.

Ke-enam tahap yang telah disebutkan sebelumnya dapat di

proses secara tidak berurutan . Dalam beberapa hal, dapat

dilakukan modifikasi perancangan kembali ke tahap yang

pertama (feedback loop) setelah melakukan tahap selanjutnya.

Tahap 1 : Pengumpulan data dan analisis

Sebelum merancang suatu database, yang harus dilakukan

adalah mengetahui dan menganalisis apa yang diinginkan dari

pengguna aplikasi, sehingga proses ini disebut pengumpulan data

dan analisis. Untuk menspesifikasikan kebutuhan yang pertama

kali dilakukan adalah mengidentifikasi bagian lain di dalam sistem

informasi yang berinteraksi dengan sistem database. Termasuk

pengguna yang baru atau yang sudah lama juga aplikasinya,

kebutuhan–kebutuhan tersebut dikumpulkan dan di analisa.

Kegiatan pengumpulan data dan analisis :

Menentukan kelompok pemakai dan areal bidang

aplikasiny.

Pengguna yang menguasai aplikasi yang lama dari setiap

bagian dipilih untuk menyampaikan kebutuhan-kebutuhan

dan menspesifikasikannya.

Peninjauan dokumentasi yang ada.

Dokumen yang berhubungan dengan aplikasi yang akan

dibuat dipelajari dan dianalisa, sedangkan dokumen

lainnya seprti kebijakan manual, form, laporan–laporan

dan bagan-bagan organisasi diuji dan ditinjau kembali

untuk mengetahui apakah dokumen tersebut berpengaruh

terhadap pengumpulan data dan proses spesifikasi

124 | P a g e

Page 125: Buku Java

Analisa lingkungan operasi dan kebutuhan pemrosesan.

Lingkungan operasional yang sekarang dan informasi yang

direncanakan akan di gunakan dipelajari, termasuk

menganalisa jenis–jenis dari transaksi dan frekuensi

transaksinya seperti halnya alur informasi dengan sistem.

Input dan output data untuk transaksi tersebut harus

diperinci.

Pengumpulan respon terhadap daftar pertanyaan dan

angket yang telah dibuat sebelumnya.

Pengumpulan respon dari angket dan daftar pertanyaan

berisikan prioritas para pengguna dan penempatan

mereka di dalam berbagai aplikasi. Ketua kelompok

mungkin akan ditanya untuk membantu para pengguna

dalam memberikan informasi yang penting dan

menentukan prioritas.

Teknik yang digunakan dalam penspesifikasian kebutuhan

secara formal :

OOA ( Object Oriented Analysis )

DFD ( Data Flow Diagram )

HIPO ( Hierarchical Input Process Output )

SADT ( Structured Analysis & Design )

Tahap 2 : Perancangan database secara konseptual

Tujuan dari tahap ini adalah untuk menghasilkan skema

konseptual untuk databse yang tidak tergantung pada sistem

manajemen database yang spesifik. Penggunaan model data

tingkat tinggi seperti ER/EER sering digunakan didalam tahap

ini. Di dalam skema konseptual dilakukan perincian aplikasi–

aplikasi database dan transaksi–transaksi yang diketahui .

125 | P a g e

Page 126: Buku Java

Ada dua kegiatan di dalam perancangan database secara

konseptual :

Perancangan skema konseptual :

Pada tahap ini kegiatan yang dilakukan mengecek tentang

kebutuhan– kebutuhan pemakai terhadap data yang

dihasilkan dari tahap 1, dimana

tujuan dari proses perancangan skema konseptual adalah

menyatukan pemahaman dalam struktur database,

pengertian semantik, keterhubungan dan batasan-

batasannya, dengan membuat sebuah skema database

konseptual dengan menggunakan model data ER/EER

tanpa tergantung dengan sistem manajemen database

Ada dua pendekatan perancangan skema konseptual :

Terpusat

Kebutuhan–kebutuhan dari aplikasi atau kelompok–

kelompok pemakai yang berbeda digabungkan menjadi

satu set kebutuhan pemakai kemudian dirancang menjadi

satu skema konseptual.

Integrasi view–view yang ada

Untuk masing–masing aplikasi atau kelompok–kelompok

pemakai yang berbeda dirancang sebuah skema eksternal

( view ) kemudian view – view tersebut disatukan ke dalam

sebuah skema konseptual.

Ada 4 strategi dalam perancangan skema konseptual :

Top down

Bottom Up

Inside Out

Mixed

126 | P a g e

Page 127: Buku Java

Transaksi

Merancangan karakteristik dari transaksi–transaksi yang

akan di implementasikan tanpa tergantung dengan DBMS

yang telah dipilih. Transaksi–transaksi ini digunakan untuk

memanipulasi database sewaktu diimplementasikan . Pada

tahap ini diidentifikasikan input, output dan fungsional .

Transaksi ini antara lain : retrieval, update dan delete,

select dll.

Tahap 3 : Pemilihan Sistem Manajemen Database

Pemilihan sistem manajemen database ditentukan oleh

beberapa faktor a.l : Teknik, Ekonomi, dan Politik Organisasi

Faktor Teknik :

Tipe model data ( hirarki, jaringan atau relasional )

Struktur penyimpanan dan jalur pengaksesan yang

didukung sistem manajemen database

Tipe interface dan programmer

Tipe bahasa queri

Faktor Ekonomi :

Biaya penyiadaan hardware dan software

Biaya konversi pembuatan database

Biaya personalia

Biaya pelatihan

Biaya pengoperasian

Biaya pemeliharaan

127 | P a g e

Page 128: Buku Java

Faktor Organisasi :

Struktur data

Jika data yang disimpan dalam database mengikuti

struktur hirarki, maka suatu jenis hirarki dari sistem

manajemen database harus dipikirkan.

Personal yang terbiasa dengan sistem yang terdahulu

Jika staff programmer dalam suatu organisasi sudah

terbiasa dengan sautu sistem manajemen database maka

hal ini dapat mengurangi biaya latihan dan waktu belajar.

Ketersediaan dari service vendor

Keberadaan fasilitas pelayanan penjual sangat dibutuhkan

untuk membantu memecahkan masalah sistem.

Tahap 4 : Perancangan database secara logika

( Transformasi model data )

Transformasi dari skema konseptual dan eksternal ( Tahap 2 )

ke model data sistem manajemen database yang terpilih, ada

dua proses yaitu :

Transformasi yang tidak tergantung pada sistem, pada

tahap ini transformasi tidak mempertimbangkan

karakteristik yang spesifik atau hal– hal khusus yang akan

diaplikasikan pada sistem manajemen database

Penyesuaian skema ke sistem manajemen database yang

spesifik, di lakukan suatu penyesuaian skema yang dihasilkan

dari tahap 1 untuk dikonfirmasikan pada bentuk

implementasi yang spesifik dari suatu model data seperti

yang digunakan oleh sistem manajemen database yang

terpilih

128 | P a g e

Page 129: Buku Java

Hasil dari tahap ini dituliskan dengan perintah DDL ke dalam

bahasa sistem manajemen database terpilih. Tapi jika

perintah DDL tersebut termasuk dalam parameter–parameter

perancangan fisik , maka perintah DDL yang lengkap harus

menunggu sampai tahap perancangan database secara fisik

telah lengkap.

Tahap 5 : Perancangan Database Secara Fisik

Proses pemilihan struktur penyimpanan yang spesifik dan

pengaksesan file– file database untuk mencapai kinerja yang

terbaik di bermacam–macam aplikasi

Kriteria pemilihan perancangan fisik :

Waktu respon

Waktu transaksi database selama eksekusi untuk

menerima respon

Penggunaan ruang penyimpanan

Jumlah ruang penyimpanan yang digunakan oleh database

file dan struktur jalur pengaksesannya

Terobosan yang dilakukan file transaksi

(Transaction troughput )

Merupakan nilai rata–rata transaksi yang dapat di proses

permenit oleh sistem database dan merupakan parameter

kritis dari sistem transaksi

Apabila waktu respon dari database tidak mencapai

optimalisasi, maka pada tahap perancangan fisik ini dapat

dilakukan denormalisasi.

129 | P a g e

Page 130: Buku Java

Denormalisasi

Denormalisasi merupakan proses yang dilakukan pada

database yang sudah dinormalisasi, dengan cara

memodifikasi struktur tabel dan mengabaikan kerangkapan

data (yang terkontrol) untuk meningkatkan kinerja database.

Proses denormalisasi termasuk :

Mengkombinasikan tabel-tabel yang terpisah dengan join

Mereplikasi/menduplikat data pada tabel

Tahap 6 : Implementasi

Implementasi skema database logik dan fisik ke dalam

penyataan DDL dan SDL dari sistem manajemen database

yang telah dipilih, untuk digunakan dalam pembuatan file–file

database yang masih kosong

Penyajian data dengan menggunakan Entity dan relationship

1. Entity

- Entity adalah objek yang dapat dibedakan dalam dunia

nyata

- Entity Set adalah kumpulan dari entity yang sejenis

- Entity Set dapat berupa :

a. Objek secara Fisik: Rumah, kendaraan, Peralatan

b. Objek secara konsep: Pekerjaan, Perusahaan,

Rencana

2. Atribut

Karakteristik dari Entity atau relationship, yang menyediakan

penjelasan detail tentang entity atau relationship tersebut.

Jenis Atribut:

- Nilai Atribut :

130 | P a g e

Page 131: Buku Java

Data actual atau informasi yang disimpan pada suatu atribut

di dalam suatu entity atau relationship

- Key

Atribut yang digunakan untuk menentukan suatu Entity

secara unik

- Atribut Simple

Atribut yang bernilai tunggal

Contoh:

- Atribut Multivalue

Atribut yang memiliki sekelompok nilai untuk setiap instant

Entity

Contoh Atribut : Atribut Multivalue

- Atribut composite

131 | P a g e

nama

pegawai

Tgl Lahir Gelar NIP Nama

PEGAWAI

Page 132: Buku Java

Nama

Nama Depan

Nama Tengah Nama

belakang

Pegawai

Suatu atribut yang terdiri dari beberapa atribut yang lebih

kecil yang mempunyai arti tertentu

Contoh:

- Atribut Derivatif

Suatu atribut yang dihasilkan dari atribut yang lain.

132 | P a g e

Page 133: Buku Java

Tgl Lahir Umur

PEGAWAI

Contoh:

3. Relationship

- Definisi

Hubungan yang terjadi antara satu atau lebih entity.

- Relationship Set

Kumpulan Relationship yang sejenis

Contoh:

- Derajat dari Relationship

Menjelaskan jumlah Entity yang berpartisipasi dalam suatu

Relationship

Unary Degree (Derajat Satu)

Binary Degree (Derajat Dua)

133 | P a g e

PEGAWAI KERJA PROYEK

PEGAWAILAPOR

Page 134: Buku Java

PEGAWAI KERJA DEPARTEMEN

Ternary Degree (Derajat Tiga)

4. Cardinality Ratio Constraint

- Definisi :

Menjelaskan batasan Jumlah keterhubungan satu Entity

dengan Entity lainnya.

Jenis-jenis Cardinality Ratio

1:1

Pegawai Milik Kendaraan

134 | P a g e

KERJAPEGAWAI PROYEK

KOTA

Page 135: Buku Java

P1

P2

P3

R1

R2

R3

K1

K2

K3

MILIKPEGAWAI KENDARAAN

1:M / N:1

135 | P a g e

Page 136: Buku Java

Pegawai Kerja Departemen

M : N

Pegawai Kerja Proyek

5. Participation Constraint

136 | P a g e

p1

p2

p3

p4

r1

r2

r3

r4

d1

d2

d3

KERJAPEGAWAI DEPARTEMEN

p1

p2

p3

r1

r2

r3

r4

p1

p2

p3

KERJA PROYEKPEGAWAI

Page 137: Buku Java

Definisi:

Menjelaskan apakah keberadaan suatu Entity bergantung

pada hubungannya dengan entity lain

Jenis-Jenis Participation Constraint

1. Total Participation

Keberadaan suatu entity tergantung pada hubungannya

dengan entity lain

2. Partial Participation

Keberadaan suatu entity tidak tergantung pada hubungannya

dengan Entity lain

6. Weak Entity

Definisi:

Weak Entity: suatu entity dimana keberadaan dari entity

tersebut tergantung dari keberadaan entity lain

137 | P a g e

PUNYAPEGAWAI BAGIAN

KERJAPEGAWAI PROYEK

Page 138: Buku Java

Entity yang merupakan induknya disebut Identifying Owner

dan relationship-nya

Disebut Identifyimg Relationship

Weak Entity Selalu mempunyai Total Participation Constraint

dengan Identifying Owner

Contoh Weak Entity:

138 | P a g e

MILIKPEGAWAI TANGGUNGAN

NOPEG ……... NAMA

……

Page 139: Buku Java

Anomali struktur tabel pada database

Anomali

Anomali adalah proses pada basisdata yang memberikan efek

samping yang tidak diharapkan (misal menyebabkan ketidak-

konsistenan data atau membuat sesuatu data menjadi hilang

ketika data lain dihapus). Anomali pada basis data dapat

dibedakan menjadi 3 (tiga ), yaitu beikut ini:

1. Anomali Peremajaan (Update)

2. Anomali Penghapusan (Delete), dan

3. Anomali Penyisipan (Insert).

a. Anomali Peremajaan (Update).

Anomali peremajaan terjadi apabila ada perubahan pada

sejumlah data yang mubazir pada suatu table tetapi tidak

seluruhnya diubah. Pada contoh relasi KRS tersebut, terjadi

anomali peremajaan, seandainya nama matakuliah ‘Pengantar

Teknologi Informasi’ berubah menjadi ‘Sistem Teknologi

Informasi’, dan perubahan hanya dilakukan pada record

1pertama, dan record kedua dan empat tidak dilakukan

perubahan, maka hal ini menyebabkan adanya

ketidakkonsistenan.

b. Anomali Penyisipan (Insert).

Anomali peremajaan terjadi apabila pada saat penambahan

hendak dilakukan, ternyata ada elemen data yang masih kosong,

dan elemen data tersebut justru menjadi kunci.

Pada contoh relasi KRS tersebut terjadi anomali peremajaan,

seorang mahasiswa mengambil beberapa matakuliah untuk

semester dan tahun akademik tertentu. Masalahnya,

bagaimanakah menyimpan fakta bahwa ada suatu matakuliah

139 | P a g e

Page 140: Buku Java

baru yang tidak diambil oelh mahasiswa ?. Penyisipan tidak bisa

dilakukan karena tidak ada informasi mahasiswa yang mengambil

matakuliah tersebut.

c. Anomali Penghapusan (Delete).

Anomali peremajaan terjadi apabila suatu baris (record) yang

tidak terpakai dihapus, dan sebagai akibatya ada data lainnya

yang hilang.

Pada contoh relasi HRS tersebut terjadi anomali penghapusan,

apabila data pada record pertama dihapus, maka seluruh data

yang ada pada record tersebut akan terhapus juga, padahal data

tersebut masih diperlukan.

Normalisasi pada database

Normalisasi adalah proses pembentukan struktur basis data

sehingga sebagian besar ambiguity bisa dihilangkan. Proses

normalisasi merupakan proses pengelompokan data elemen

menjadi tabel yang menunjukkan entity dan relasinya (Kristanto,

H., 1994). Normalisasi data merupakan suatu proses untuk

mendapatkan struktur tabel atau relasi yang efisien dan bebas

dari anomali, dan mengacu pada cara data item dikelompokkan

ke dalam struktur record.

Tujuan normalisasi ialah :

• Untuk menghilangkan kerangkapan data

• Untuk mengurangi kompleksitas

• Untuk mempermudah pemodifikasian data

Proses Normalisasi yaitu sebagai berikut :

• Data diuraikan dalam bentuk tabel, selanjutnya

dianalisisberdasarkan persyaratan tertentu ke beberapa

tingkat.

140 | P a g e

Page 141: Buku Java

• Apabila tabel yang diuji belum memenuhi persyaratan

tertentu,maka tabel tersebut perlu dipecah menjadi beberapa

tabel yanglebih sederhana sampai memenuhi bentuk yang

optimal.

Tahapan-tahapan dari normalisasi yaitu sebagai berikut :

• Bentuk Tidak Normal

Menghilangkan perulangan group

• Bentuk Normal Pertama (1NF)

Menghilangkan ketergantungan sebagian

• Bentuk Normal Kedua (2NF)

Menghilangkan ketergantungan transitif

• Bentuk Normal Ketiga (3NF)

Menghilangkan anomali-anomali hasil dari ketergantungan

fungsional

• Bentuk Normal Boyce-Codd (BCNF)

Menghilangkan Ketergantungan Multivalue

• Bentuk Normal Keempat (4NF)

Menghilangkan anomali-anomali yang tersisa

• Bentuk Normal Kelima

Ketergantungan fungsional Penuh

Atribut Y pada relasi R dikatakan tergantung fungsional penuh

pada atribut X pada relasi R, jika Y tidak tergantung pada subset

dari X ( bila X adalah key gabungan).

Suatu atribut Y mempunyai dependensi sepenuhnya terhadap

atribut X jika

• Y mempunyai dependensi terhadap X

• Y tidak mempunyai dependensi terhadap

bagian dari X

141 | P a g e

Page 142: Buku Java

142 | P a g e

Page 143: Buku Java

Ketergantungan transitif

• Atribut Z pada relasi R dikatakan tergantung transitif pada

atribut X , jika atribut Y tergantung pada atribut X pada relasi

R dan atribut Z tergantung pada atribut Y pada relasi R. (X à

Y, Y à Z , maka X àZ )

Penjelasan proses-proses tahapan normalisasi

• Tahap Normalisasi dimulai dari tahap paling ringan (1NF)

hingga paling ketat (5NF)

• Biasanya hanya sampai pada tingkat 3NF atau BCNF karena

sudah cukup memadai untuk menghasilkan tabel-tabel yang

berkualitas baik.

• Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka

paling tidak tabel tersebut tidak melanggar Bentuk Normal

tahap ketiga (3rd Normal Form / 3NF).

Bentuk-bentuk normal

1. Bentuk Normal Tahap Pertama (1st Normal Form / 1NF)

2. Bentuk Normal Tahap Kedua (2nd Normal Form / 2NF)

3. Bentuk Normal Tahap (3rd Normal Form / 3NF)

4. Boyce-Code Normal Form (BCNF)

5. Bentuk Normal Tahap (4th Normal Form / 4NF)

6. Bentuk Normal Tahap (5th Normal Form / 5NF)

1. Bentuk 1NF

Bentuk normal 1NF terpenuhi jika sebuah tabel tidak

memiliki atribut bernilai banyak (multivalued attribute),

atribut composite atau kombinasinya dalam domain data

yang sama.

143 | P a g e

Page 144: Buku Java

Setiap atribut dalam tabel tersebut harus bernilai atomic

(tidak dapat dibagi-bagi lagi)

Bentuk normal 1NF terpenuhi jika sebuah tabel tidak

memiliki atribut bernilai banyak (multivalued attribute),

atribut composite atau kombinasinya dalam domain data

yang sama.

Setiap atribut dalam tabel tersebut harus bernilai atomic

(tidak dapat dibagi-bagi lagi)

2. Bentuk 2NF

Bentuk normal 2NF terpenuhi dalam sebuah tabel jika telah

memenuhi bentuk 1NF, dan semua atribut selain primary

key, secara utuh memiliki Functional Dependency pada

primary key

Sebuah tabel tidak memenuhi 2NF, jika ada atribut yang

ketergantungannya (Functional Dependency) hanya bersifat

parsial saja (hanya tergantung pada sebagian dari primary

key)

Jika terdapat atribut yang tidak memiliki ketergantungan

terhadap primary key, maka atribut tersebut harus dipindah

atau dihilangkan

3. Bentuk 3NF

Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk

2NF, dan jika tidak ada atribut non primary key yang

memiliki ketergantungan terhadap atribut non primary key

yang lainnya.

Untuk setiap Functional Dependency dengan notasi X à A,

maka:

a. X harus menjadi superkey pada tabel tsb.

144 | P a g e

Page 145: Buku Java

b. Atau A merupakan bagian dari primary key pada tabel

tsb.

4. Bentuk BCNF

Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk

setiap functional dependency terhadap setiap atribut atau

gabungan atribut dalam bentuk: X à Y maka X adalah

super key

tabel tersebut harus di-dekomposisi berdasarkan functional

dependency yang ada, sehingga X menjadi super key dari

tabel-tabel hasil dekomposisi

Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi

setiap 3NF belum tentu termasuk BCNF . Perbedaannya,

untuk functional dependency X à A, BCNF tidak

membolehkan A sebagai bagian dari primary key.

5. Bentuk 4NF

Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah

memenuhi bentuk BCNF, dan tabel tersebut tidak boleh

memiliki lebih dari sebuah multivalued atribute

Untuk setiap multivalued dependencies (MVD) juga harus

merupakan functional dependencies

6. Bentuk 5NF

Bentuk normal 5NF terpenuhi jika tidak dapat memiliki

sebuah lossless decomposition menjadi tabel-tabel yg lebih

kecil.

Jika 4 bentuk normal sebelumnya dibentuk berdasarkan

functional dependency, 5NF dibentuk berdasarkan konsep

join dependence. Yakni apabila sebuah tabel telah di-

dekomposisi menjadi tabel-tabel lebih kecil, harus bisa

digabungkan lagi (join) untuk membentuk tabel semula.

145 | P a g e

Page 146: Buku Java

Jenis-jenis relasi pada system database

Merupakan hubungan yang terjadi pada suatu tabel dengan tabel

yang lainnya, yang berfungsi untuk mengatur operasi suatu

database. Hubungan yang dapat dibentuk dapat mencakupi 3

(tiga) macam hubungan yaitu :

a. One-To-One

Mempunyai pengertian “Setiap baris data pada tabel pertama

dihubungkan hanya ke satu baris data pada tabel ke dua”.

b. One-To-Many

Mempunyai pengertian “Setiap baris data dari tabel pertama

dapat dihubungkan ke satu baris atau lebih data pada tabel ke

dua “.

c.Many-To-Many

Mempunyai pengertian “Satu baris atau lebih data pada tabel

pertama bisa dihubungkan ke satu atau lebih baris data pada

tabel ke dua “.

1. contoh one to one :

146 | P a g e

Page 147: Buku Java

2. contoh one to many :

3. contoh many to many :

147 | P a g e