Upload
yayang-khoirunnisaa-pratomo
View
221
Download
5
Embed Size (px)
Citation preview
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
BAB 1Latar Belakang Java,
Teknologi dan
Fitur Java2 | P a g e
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
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
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
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
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
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
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
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
BAB 2Komentar pada
Java,Pernyataan dalam 11 | P a g e
Java dan Blok ,Java
Identifier, ....
12 | P a g e
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
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
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
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
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
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
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
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
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
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
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
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
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
BAB 3Struktur Kontrol
Pemilihan,Struktur 26 | P a g e
Kontrol
Perulangan,Pernyataan
Percabangan
27 | P a g e
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
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
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
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
//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
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
}
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
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
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
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
BAB 4
38 | P a g e
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
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
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
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
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
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
{
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
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
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
}
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
BAB 5
49 | P a g e
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
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
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
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
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
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
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
BAB 6KELAS,OBJEK,KONSTRUK
TOR dan OVERLOADING57 | P a g e
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
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
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
3. Metode (method) berupa fungsi-fungsi (functions) atau
prosedur-prosedur
61 | P a g e
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
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
64 | P a g e
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
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
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
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
ialah tas, maka objek nya ialah tas ransel, tas koper, dll. Jadi
objek itu lebih khusus dibanding kelas.
69 | P a g e
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
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
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
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
}
}
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
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
BAB 7
76 | P a g e
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
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
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
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
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
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
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
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
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
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
<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
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
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
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
}
91 | P a g e
BAB 8
92 | P a g e
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
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
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
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
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
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
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
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
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
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
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
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
println().
105 | P a g e
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
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
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
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
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
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
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
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
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
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
> 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
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
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
(“jdbc:mysql://localhost:3306/pulsa”, “root”, “root”);
119 | P a g e
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
P1
P2
P3
R1
R2
R3
K1
K2
K3
MILIKPEGAWAI KENDARAAN
1:M / N:1
135 | P a g e
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
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
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
……
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
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
• 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
142 | P a g e
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
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
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
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
2. contoh one to many :
3. contoh many to many :
147 | P a g e