Anda di halaman 1dari 140

RANGKUMAN

Java, Aplikasi dan Basis Data


TUGAS
Diajukan untuk memenuhi syarat mendapatkan nilai
Mata kuliah Java Pada Teknik Telekomunikasi
OLEH :
Khoirunnisaa (101331017)
Nurisma Kurnia R (101331022)
PROGRAM STUDI TEKNIK TELEKOMUNIKASI
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BANDUNG
2012
1 | P a g e
BAB 1
Latar Belakang Java,
Teknologi dan
Fitur Java
2 | 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
bahasabahasa 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
+ Algol, JAVA mengadopsi struktur kendali darinya
3 | P a g e
+ 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
hirarchie, 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
Kelebihan utama dari Java ialah dapat dijalankan di beberapa
platform / sistem operasi komputer, Pemograman cukup
menulis sebuah program Java dan dikompilasi (diubah, dari
4 | P a g e
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
Java menghilangkan penggunaan pointer dan multiple
inheritance namun menggunakan automatic memory
allocation dan memory garbage collection.
Dapat didistribusi dengan mudah
5 | P a g e
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
kelaskelas yang diambil dari jaringan
bytecode verifier membaca bytecode sebelum dijalankan
dan menjamin bytecode memenuhi aturanaturan dasar bahasa
Java
manajemen keamanan menangani keamanan tingkat
aplikasi dengan mengendalikan apakah program berhak
9 | P a g e
mengakses sumber daya seperti sistem file, port jaringan,
proses eksternal dan sistem windowing
Fase-fase Pemrograman Java
10 | P a g e
BAB 2
Komentar 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 seperti
Multiple Line Comment, akan tetapi penggunaannya untuk
13 | P a g e
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");
Java Identifier
14 | P a g e
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,
class, method dsb. Berikut ini adalah daftar dai kata kunci dalam
java (Java Keywords).
15 | P a g e
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 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
16 | P a g e
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
single Unicode. Tipe data ini harus memiliki ciri berada
dalam tanda single quotes( ).
'\'' //untuk single quotes
'\"' //untuk double quotes
17 | P a g e
- 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
sebagai nilai untuk tipe data float ini, maka perlu diberikan suffix f.
Variabel
18 | P a g e
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.
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.
19 | P a g e
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 bentuk
array sebagai kumpulan dari suatu karakter. Contoh :
char nama[15];
Menampilkan data Variabel
20 | P a g e
- 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];
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.
21 | P a g e
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 3
Struktur 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 );
Contoh penggunaan do-while
34 | P a g e
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 :
for( int i=0; i< names.length; i++ ){
if( names[i].equals( searchName )){
35 | P a g e
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)
- Bentuk pernyataan continue tidak berlabel (unlabeled) akan
melewati bagian pernyataan setelah pernyataan ini
36 | P a g e
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
Array
38 | P a g e
Array 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.
Variabel Array
ketentuan nama variabel arrray sama dengan nama variabel
biasa. Indeks menunjukkan nomor dari variable.
39 | P a g e
nama_variabel[indeks]
DEKLARASI VARIABEL ARRAY
- Bentuk deklarasi array :
TipeDataPrimitif namaVariabelArray[];
atau
namaKelas namaVariabelArray[];
E 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 :
namaKelas namaVariabel = new namaKelas [jumlahElemen];
atau
tipePrimitif namaVariabel = new tipePrimitif [jumlahElemen];
contoh :
40 | P a g e
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 :
int [ ] [ ] warna = new int [5] [3];
41 | P a g e
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
AUTOMATIC ARRAY
42 | P a g e
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++)
{
hitung+=y;
x[y]=hitung;
printf("%3d - %3d\n",y,x[y]);
43 | P a g e
}
}
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()
{
float bil [5] [5]
.......
dapat dituliskan dengan #define
44 | P a g e
#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];
int y,z;
int hitung=0;
for(y=0;y<3;y++)
{
printf("y = %d\n",y);
45 | P a g e
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
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
46 | P a g e
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;
}
4. Mencari nilai terbesar
besar()
float temp,nilai[10];
{
for(temp=nilai[0],i=1;i<=9;i++)
if(nilai[i] > temp)
47 | P a g e
temp=nilai[i];
}
return(temp)
48 | P a g e
BAB 5
49 | P a g e
Pemrograman
Berorientasi Objek
Konsep 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
Metode objeknya adalah cara_memukul_snare,
cara_memukul_tom, cara_memukul_floortom,
50 | P a g e
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
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.
54 | P a g e

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 6
KELAS,OBJEK,KONSTRUK
TOR dan OVERLOADING
57 | 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. Object-object
dari kelas yang sama mempunyai data sendiri tapi berbagi
58 | P a g e
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 manusia,
maka beberapa instances (wujud nyata) dari kelas manusia adalah
59 | P a g e
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
3. Metode (method) berupa fungsi-fungsi (functions) atau
prosedur-prosedur
60 | 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.comnama 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 1 kita
meletakkan baris import java.io.*;, artinya semua kelas yang
berada di dalam package java.io dapat kita panggil dalam kelas
61 | P a g e
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.
62 | 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 ini
berarti anggota public tampak dan dapat diakses oleh sembarang
objek lain.
63 | P a g e
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.
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
64 | P a g e
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.
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
65 | P a g e
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 ialah
tas, maka objek nya ialah tas ransel, tas koper, dll. Jadi objek itu
lebih khusus dibanding kelas.
66 | 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. Berikut adalah contoh-contoh
penciptaan suatu kelas dengan berbagai jenis konstruktor.
1. SuatuKelas kelasContoh = new SuatuKelas();
67 | P a g e
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.
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
68 | P a g e
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.
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 :
69 | P a g e
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(){
.......................
}
}
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
70 | P a g e
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.
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 :
71 | P a g e
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.
72 | P a g e
BAB 7
73 | P a g e
INHERITENCE,
POLIMORFISME dan
INTERFACE
Salah 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.
3. Dengan konsep inheritance, sebuah class dapat mempunyai
class turunan.
74 | P a g e
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 data dan
method yang memiliki modifier default, public dan protected.
Deklarasi Inheritance
75 | P a g e
Dengan menambahkan kata kunci extends
setelah deklarasi nama class, kemudian diikuti dengan nama
parent classnya
Kata kunci extends tersebut memberitahu
kompiler Java bahwa kita ingin melakukan perluasan class.
76 | 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
memiliki satu parent class. Konsep inheritance yang ada di java
memperkenankan adanya multilevel inheritance. Konsep multilevel
77 | P a g e
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 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
78 | P a g e
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.
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.
79 | P a g e
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 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)
80 | P a g e
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 kegunaannya 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 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
81 | P a g e
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.
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.
82 | P a g e
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>;
<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.
83 | P a g e
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
{
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++.
84 | P a g e
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();
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
}
85 | P a g e
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
}
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.
86 | P a g e
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 {
. . .
}
87 | P a g e
BAB 8
88 | P a g e
Exception
Handling
Exception
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
exception ke 3 keyword tersebut digunakan bersama-sama kecuali
keyword finally karena bersifat opsional.
89 | P a g e
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 :
90 | 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
91 | 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.
2. Bila dalam blok try terdapat exception, maka control flow
program akan meloncat ke blok catch yang sesuai dengan
92 | P a g e
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;
Instan Throwable harus merupakan obyek dengan tipe
Throwable atau subkelas dari Throwable. Terdapat dua cara untuk
memperoleh obyek Throwable, yaitu,
93 | P a g e
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;
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.
94 | P a g e
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.
95 | 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.
96 | 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
dapat menonaktifkan assertions. Dalam hal ini program tidak dapat
97 | P a g e
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.
Istilah exception digunakan untuk menunjukkan kesalahan
pada hardware, software, serta algoritma. Suatu exception adalah
98 | P a g e
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
UnsupportedOperationException Operasi yang tidak didukung
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.
99 | P a g e
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(PrintStream
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 println().
100 | P a g e
BAB 9
101 | P a g e
Database
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.
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.
102 | P a g e
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
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.
103 | P a g e
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,
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
104 | 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 :
DELETE FROM nama-tabel WHERE kondisi
105 | P a g e
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
Menampilkan Bantuan
Untuk mengaktifkan bantuan sederhana HELP dengan
mengetikan pada MySQL prompt help atau \h
106 | P a g e
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.
Memberikan catatan
Perintah
Awalan /* dan akhiran */ : Dapat digunakan lebih dari satu
baris
107 | P a g e
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
Contoh
mysql> use latihan1 ;
mysql> show tables ;
Empty set (0.00) sec
Membuat Tabel Baru
108 | P a g e
Tanda database latihan1
aktif
Tanda belum pernah membuat
tabel
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
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
109 | P a g e
SHOW COLUMNS FROM tabel atau 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
> drop kodepos2 ;
Mengisi Data
Perintah bentuk pertama
INSERT INTO tabel (kolom1, kolom2,...)
VALUES (data_kolom1, data_kolom2,...)
Perintah bentuk kedua
INSERT INTO tabel
110 | P a g e
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 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:
111 | P a g e
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.
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
112 | P a g e
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
(jdbc:mysql://localhost:3306/pulsa, root, root);
113 | 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 )
Tahapantahapan 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
Kebutuhankebutuhan yang detail dikumpulkan dengan
berinteraksi pada sekelompok pemakai atau pemakai
individu. Mengidentifikasikan masalah yang ada dan
114 | P a g e
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
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 filefile database yang kosong serta
implementasi aplikasi software.
4. Pengambilan dan Konversi Data
115 | P a g e
Database ditempatkan dengan baik, sehingga jika ingin
memanggil data secara langsung ataupun merubah filefile
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

116 | 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 aplikasiaplikasi
perangkat lunak.
Dua aktifitas ini saling berkaitan , misalnya mengidentifikasi
data item yang akan disimpan dalam database dengan cara
menganalisa aplikasiaplikasi 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
aplikasiaplikasi yang akan menggunakan file tersebut.
Penentuan perancangan aplikasiaplikasi 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
117 | P a g e
Gambar 2. Tahap perancangan database untuk database yang
berukuran besar
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,
kebutuhankebutuhan 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, laporanlaporan dan bagan-
bagan organisasi diuji dan ditinjau kembali untuk
mengetahui apakah dokumen tersebut berpengaruh
terhadap pengumpulan data dan proses spesifikasi
118 | P a g e
Analisa lingkungan operasi dan kebutuhan pemrosesan.
Lingkungan operasional yang sekarang dan informasi yang
direncanakan akan di gunakan dipelajari, termasuk
menganalisa jenisjenis 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 transaksitransaksi yang diketahui .
119 | 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
Kebutuhankebutuhan dari aplikasi atau kelompokkelompok
pemakai yang berbeda digabungkan menjadi satu set
kebutuhan pemakai kemudian dirancang menjadi satu skema
konseptual.
Integrasi viewview yang ada
Untuk masingmasing aplikasi atau kelompokkelompok
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
120 | P a g e
Transaksi
Merancangan karakteristik dari transaksitransaksi yang
akan di implementasikan tanpa tergantung dengan DBMS
yang telah dipilih. Transaksitransaksi 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
121 | 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
Hasil dari tahap ini dituliskan dengan perintah DDL ke dalam
bahasa sistem manajemen database terpilih. Tapi jika perintah
122 | P a g e
DDL tersebut termasuk dalam parameterparameter
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 bermacammacam 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 ratarata 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.
123 | 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 filefile
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.
E Jenis Atribut:
- Nilai Atribut :
Data actual atau informasi yang disimpan pada suatu atribut di
dalam suatu entity atau relationship
- Key
124 | P a g e
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
Suatu atribut yang terdiri dari beberapa atribut yang lebih kecil
yang mempunyai arti tertentu
Contoh:
125 | P a g e
nama
pegawai
Tgl Lahir Gelar NIP
Nama
PEGAWAI
Nama
Nama
Depan
Nama
Tengah
Nama
belakan
g
Pegawai
Tgl
Lahir
Umur
PEGAWAI
- Atribut Derivatif
Suatu atribut yang dihasilkan dari atribut yang lain.
Contoh:
3. Relationship
- Definisi
Hubungan yang terjadi antara satu atau lebih entity.
- Relationship Set
Kumpulan Relationship yang sejenis
126 | P a g e
PEGAWAI KERJA DEPARTEMEN
Contoh:
- Derajat dari Relationship
Menjelaskan jumlah Entity yang berpartisipasi dalam suatu
Relationship
Unary Degree (Derajat Satu)
Binary Degree (Derajat Dua)
Ternary Degree (Derajat Tiga)
127 | P a g e
PEGAWAI KERJA PROYEK
PEGAWAI LAPOR
P1
P2
P3
R1
R2
R3
K1
K2
K3
MILIK PEGAWAI KENDARAAN
4. Cardinality Ratio Constraint
- Definisi :
Menjelaskan batasan Jumlah keterhubungan satu Entity
dengan Entity lainnya.
+ Jenis-jenis Cardinality Ratio
1:1
Pegawai Milik Kendaraan
128 | P a g e
KERJA
PEGAWAI PROYEK
KOTA
1:M / N:1
Pegawai Kerja Departemen

M :
N
129 | P a g e
p1
p2
p3
p4
r1
r2
r3
r4
d1
d2
d3
KERJA
PEGAWAI DEPARTEMEN
Pegawai Kerja Proyek
5. Participation Constraint
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
130 | P a g e
p1
p2
p3
r1
r2
r3
r4
p1
p2
p3
KERJA
PROYEK PEGAWAI
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
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:
131 | P a g e
PUNY
A
PEGAWAI BAGIAN
KERJA PEGAWAI PROYEK
132 | P a g e
MILIK PEGAWAI TANGGUNGAN
NOPEG

...
NAM
A

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 baru
yang tidak diambil oelh mahasiswa ?. Penyisipan tidak bisa
133 | P a g e
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.
Apabila tabel yang diuji belum memenuhi persyaratan
tertentu,maka tabel tersebut perlu dipecah menjadi beberapa
134 | P a g e
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
135 | 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.
Setiap atribut dalam tabel tersebut harus bernilai atomic
(tidak dapat dibagi-bagi lagi)
136 | P a g e
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.
b. Atau A merupakan bagian dari primary key pada tabel
tsb.
4. Bentuk BCNF
137 | P a g e
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.
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 :
138 | P a g e
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 :
139 | P a g e
2. contoh one to many :
3. contoh many to many :
140 | P a g e

Anda mungkin juga menyukai