PENDAHULUAN
Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk
telepon genggam. Bahasa ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun
Microsystems saat ini merupakan bagian dari Oracle dan dirilis tahun 1995. Bahasa ini banyak
mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model objek yang
lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal. 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, java dikenal pula dengan
slogannya, "Tulis sekali, jalankan di mana pun". 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.
SEJARAH PERKEMBANGAN JAVA
Bahasa pemrograman Java terlahir dari The Green Project, yang berjalan selama 18
bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut belum menggunakan
versi yang dinamakan Oak. Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan, James
Gosling dan Bill Joy, beserta sembilan pemrogram lainnya dari Sun Microsystems. Salah satu
hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang.
Pertemuan proyek berlangsung di sebuah gedung perkantoran Sand Hill Road di Menlo
Park. Sekitar musim panas 1992 proyek ini ditutup dengan menghasilkan sebuah program Java
Oak pertama, yang ditujukan sebagai pengendali sebuah peralatan dengan teknologi layar
sentuh (touch screen), seperti pada PDA sekarang ini. Teknologi baru ini dinamai "*7" (Star
Seven).
Rangkuman Aplikasi dan Basis Data Page 1
Setelah era Star Seven selesai, sebuah anak perusahaan Tv kabel tertarik ditambah
beberapa orang dari proyek The Green Project. Mereka memusatkan kegiatannya pada sebuah
ruangan kantor di 100 Hamilton Avenue, Palo Alto.
Perusahaan baru ini bertambah maju: jumlah karyawan meningkat dalam waktu singkat
dari 13 menjadi 70 orang. Pada rentang waktu ini juga ditetapkan pemakaian Internet sebagai
medium yang menjembatani kerja dan ide di antara mereka. Pada awal tahun 1990-an, Internet
masih merupakan rintisan, yang dipakai hanya di kalangan akademisi dan militer.
Mereka menjadikan perambah (browser) Mosaic sebagai landasan awal untuk membuat
perambah Java pertama yang dinamai Web Runner, terinsipirasi dari film 1980-an, Blade
Runner. Pada perkembangan rilis pertama, Web Runner berganti nama menjadi Hot Java.Pada
sekitar bulan Maret 1995, untuk pertama kali kode sumber Java versi 1.0a2 dibuka. Kesuksesan
mereka diikuti dengan untuk pemberitaan pertama kali pada surat kabar San Jose Mercury
News pada tanggal 23 Mei 1995.
Sayangnya terjadi perpecahan di antara mereka suatu hari pada pukul 04.00 di sebuah
ruangan hotel Sheraton Palace. Tiga dari pimpinan utama proyek, Eric Schmidt dan George
Paolini dari Sun Microsystems bersama Marc Andreessen, membentuk Netscape.
Nama Oak, diambil dari pohon oak yang tumbuh di depan jendela ruangan kerja "Bapak
Java", James Gosling. Nama Oak ini tidak dipakai untuk versi release Java karena sebuah
perangkat lunak lain sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama
penggantinya menjadi "Java". Nama ini diambil dari kopi murni yang digiling langsung dari biji
(kopi tubruk) kesukaan Gosling. Konon kopi ini berasal dari Pulau Jawa. Jadi nama bahasa
pemrograman Java tidak lain berasal dari kata Jawa (bahasa Inggris untuk Jawa adalah Java).
Rangkuman Aplikasi dan Basis Data Page 2
BAB I
Latar Belakang Java
1. Platform Independent
Platform independent berarti program yang ditulis dalam bahasa Java dapat dengan
mudah dipindahkan antar berbagai jenis sistem operasi dan berbagai jenis arsitektur
komputer. Aspek ini sangat penting untuk dapat mencapai tujuan Java sebagai bahasa
pemrograman Internet di mana sebuah program akan dijalankan oleh berbagai jenis
komputer dengan berbagai jenis sistem operasi. Sifat ini berlaku untuk level source code
dan binary code dari program Java. Berbeda dengan bahasa C dan C++, semua tipe data
dalam bahasa Java mempunyai ukuran yang konsisten di semua jenis platform. Dengan
kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari
bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode) sekali lalu 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. Penyebanya adalah setiap sistem
operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java)
untuk meninterpretasikan bytecode tersebut. Source code program Java sendiri tidak perlu
dirubah sama sekali jika Anda ingin mengkompile ulang di platform lain. Hasil dari
mengkompile source code Java bukanlah kode mesin atau instruksi prosesor yang spesifik
terhadap mesin tertentu, melainkan berupa bytecode yang berupa file berekstensi .class.
Bytecode tersebut dapat langsung Anda eksekusi di tiap platform yang dengan
menggunakan Java Virtual Machine (JVM) sebagai interpreter terhadap bytecode tersebut.
JVM sendiri adalah sebuah aplikasi yang berjalan di atas sebuah sistem operasi dan
menerjemahkan bytecode program Java dan mengeksekusinya, sehingga secara konsep bisa
Rangkuman Aplikasi dan Basis Data Page 3
dianggap sebagai sebuah interpreter. Dengan cara ini, sebuah program Java yang telah
dikompilasi akan dapat berjalan di platform mana saja, asalkan ada JVM di sana.
Kompiler dan interpreter untuk program Java berbentuk Java Development Kit (JDK)
yang diproduksi oleh Sun Microsystems. JDK ini dapat didownload gratis dari situs
java.sun.com. Interpreter untuk program Java sendiri sering juga disebut Java Runtime atau
Java Virtual Machine. Interpreter Java, tanpa kompilernya, disebut Java Runtime
Environment (JRE) dapat didownload juga di situs yang sama. Untuk mengembangkan
program Java dibutuhkan JDK, sementara jika hanya ingin menjalankan bytecode Java cukup
dengan JRE saja. Namun untuk mengeksekusi applet (sebuah bytecode Java juga) Anda
biasanya tidak perlu lagi mendownload JRE karena browser yang Java-enabled telah
memiliki JVM sendiri.
2. OOP (Object Oriented Programming - Pemrogram Berorientasi Objek)
Java adalah bahasa pemrograman berorientasi objek. Pemrograman berorientasi
objek secara gamblang adalah teknik untuk mengorganisir program dan dapat dilakukan
dengan hampir semua bahasa pemrograman. Namun Java sendiri telah
mengimplementasikan berbagai fasilitas agar seorang programer dapat mengoptimalkan
teknik pemrograman berorientasi objek.
Sedikit perbandingan tambahan dengan bahasa C dan C++, Java banyak mewarisi
konsep orientasi objek dari C++ namun dengan menghilangkan aspek-aspek kerumitan
dalam bahasa C++ tanpa mengurangi kekuatannya. Hal ini mempermudah programer
pemula untuk mempelajari Java namun mengurangi keleluasaan programer berpengalaman
dalam mengutak-atik sebuah program. Di balik kemudahan yang ditawarkan Java, luasnya
fasilitas library Java sendiri membuat seorang programer membutuhkan waktu yang tidak
singkat untuk dapat menguasai penggunaan library-library tersebut.
3. Library
Rangkuman Aplikasi dan Basis Data Page 4
Selain kompiler dan interpreter, bahasa Java sendiri memiliki library yang cukup besar
yang dapat mempermudah Anda dalam membuat sebuah aplikasi dengan cepat. Library ini
sudah mencakup untuk grafik, desain user interface, kriptografi, jaringan, suara, database,
dan lain-lain. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java
yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk
melingkupi seluruh kebutuhan pembangunan aplikasi.
4. Bergaya C++
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.
5. Tulis sekali, jalankan 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.
6. 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.
Rangkuman Aplikasi dan Basis Data Page 5
7. 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.
1.1. TEKNOLOGI JAVA
Sebagai sebuah bahasa pemrograman, Java dapat membuat seluruh bentuk
aplikasi, desktop, web dan lainnya, sebagaimana dibuat dengan menggunakan bahasa
pemrograman konvensional yang lain. Java adalah bahasa pemrograman yang
berorientasi objek(OOP) dan dapat dijalankan pada berbagai platform sistem operasi.
Perkembangan Java tidak hanya terfokus pada satu sistem operasi, tetapi dikembangkan
untuk berbagai sistem operasi dan bersifat open source.
Sebuah Development Environment
Sebagai sebuah peralatan pembangun, teknologi Java menyediakan banyak
tools: compiler(penyusun/penghimpun), interpreter(penerjemah), documentation
generator(generator pendokumentasian), class file packaging tool(alat pengemasan file
class), dan sebagainya.
Sebuah Aplikasi
Aplikasi dengan teknologi Java secara umum adalah aplikas serba guna yang
dapat dijalankan pada seluruh mesin yang memiliki Java Runtime Environment(JRE).
Java Deployment Environment
Rangkuman Aplikasi dan Basis Data Page 6
Terdapat dua komponen utama dari Deployment Environment. Yang pertama
adalah JRE, yang terdapat pada paket J2SDK, mengandung kelas-kelas untuk semua
paket teknologi Java yang meliputin kelas dasar dari Java, komponen GUI dan
sebagainya. Komponen yang lain terdapat pada Web Browser. Hamper seluruh Web
Browser komersial menyediakan interpreter dan runtime environment dari teknologi
Java.
1.2. FITUR-FITUR JAVA
Beberapa fitur yang ditawarkan Java API antara lain sebagai berikut:
a. Java Virtual Machine (JVM)
JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai
aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan
platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat
aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi
diselesaikan oleh JVM. Aplikasi program Java diciptakan dengan file teks
berekstensi .java. Program ini dikompilasi menghasilkan satu berkas bytecode
berekstensi .class atau lebih.
Bytecode adalah serangkaian instruksi serupa instruksi kode mesin.
Perbedaannya adalah kode mesin harus dijalankan pada sistem komputer dimana
kompilasi ditujukan, sementara bytecode berjalan pada java interpreter yang
tersedia di semua platform sistem komputer dan sistem operasi.Java Networking
b. Garbage Collection
Banyak bahasa pemrogaman lain yang mengijinkan seorang programmer
mengalokasikan memori pada saat dijalankan. Namun, setelah menggunakan alokasi
memori tersebut, harus terdapat cara untuk menempatkan kembali blok memori
tersebut supaya program lain dapat menggunakannya. Dalam C, C++ dan bahasa
Rangkuman Aplikasi dan Basis Data Page 7
lainnya, adalah programmer yang mutlak bertanggung jawab akan hal ini. Hal ini dapat
menyulitkan bilamana programmer tersebut alpa untuk mengembalikan blok memori
sehingga 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. Fasilitas ini mengurangi beban pengelolaan
memori oleh programmer dan mengurangi atau mengeliminasi sumber kesalahan
terbesar yang terdapat pada bahasa yang memungkinkan alokasi dinamis.
c. Code Security
Code Security terimplementasi pada Java melalui penggunaan Java Runtime
Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi
sistem dari untrusted Java Code.
1. Pertama, class-loader menangani pemuatan kelas Java ke runtime interpreter.
Proses ini menyediakan pengamanan dengan memisahkan kelas–kelas yang
berasal dari local disk dengan kelas–kelas yang diambil dari jaringan. Hal ini
membatasi aplikasi Trojan karena kelas–kelas yang berasal dari local disk yang
dimuat terlebih dahulu.
2. Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan menjamin
bytecode memenuhi aturan–aturan dasar bahasa Java.
3. Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan
mengendalikan apakah program berhak mengakses sumber daya seperti sistem
file, port jaringan, proses eksternal dan sistem windowing. Setelah seluruh
proses tersebut selesai dijalankan, barulah kode program dieksekusi. Java juga
menyediakan beragam teknik pengamanan lain :
3.1. Bahasa dirancang untuk mempersulit eksekusi kode perusak. Peniadaan
pointer merupakan langkah besar pengamanan. Java tidak mengenal
operasi pointer. Di tangan programmer handal, operasi pointer merupakan
hal yang luar biasa untuk optimasi dan pembuatan program yang efisien
Rangkuman Aplikasi dan Basis Data Page 8
serta mengagumkan. Namun mode ini dapat menjadi petaka di hadapan
programmer jahat. Pointer merupakan sarana luar biasa untuk pengaksesan
tak diotorisasi. Dengan peniadaan operasi pointer, Java dapat menjadi
bahasa yang lebih aman.
3.2. Java memiliki beberapa pengaman terhadap applet. Untuk mencegah
program bertindak mengganggu media penyimpanan, maka applet tidak
diperbolehkan melakukan open, read ataupun write terhadap berkas secara
sembarangan. Karena Java applet dapat membuka jendela browser yang
baru, maka jendela mempunyai logo Java dan teks identifikasi terhadap
jendela yang dibuka. Hal ini mencegah jendela pop-up menipu sebagai
permintaan keterangan username dan password.
Java Security menyediakan sekumpulan API untuk mengatur security dari aplikasi
Java baik secara high level atau low level, seperti public/private key management dan
certificates. Java Security Technology mencakup seperangkat besar API, peralatan, dan
implementasi dari algoritma keamanan yang umum digunakan, mekanisme, dan
protokol. Java API keamanan rentang berbagai bidang, termasuk kriptografi,
infrastruktur kunci publik, komunikasi yang aman, otentikasi, dan kontrol akses. Java
Security Technology memberikan pengembang dengan kerangka keamanan
komprehensif untuk aplikasi penulisan dan juga menyediakan pengguna atau
administrator dengan satu set alat untuk aman mengelola aplikasi.
1.3. Fase-fase pemrograman Java
Tiap program berbasis Java biasanya melewati 5 fase dari tahap awal sampai
tahap akhir. Kelima tahap itu adalah :
1. Edit / build
2. Compile
3. Load
Rangkuman Aplikasi dan Basis Data Page 9
4. Verify
5. Execute
1. Fase Editing / Building
Tahap ini merupakan tahap awal dari pembuatan program, yaitu tahap
penulisan program pada teks editor dan disimpan di disk dengan akhiran
berekstensi .java. Program sumber harus berekstensi (berakhiran) .java untuk
identifikasi. Ekstensi .java mengindikasikan file merupakan kode sumber di bahasa
Java.
Editor teks apapun dapat digunakan asal menghasilkan teks ASCII/Unicode.
Editor teks di Unix/Linux adalah vi dan emace. Di Windows dapat digunakan edit (di
MSDOS), notepad, atau textpad. Kita juga dapat menggunakan teks editor di
lingkungan pengembangan terpadu (IDE) seperti NetBeans, Eclipse, JBuilder, dan
sebagainya.
2. Fase Compiling
Pada fase ini program yang kta tulis tadi dikompilasi oleh Kompulator.
Kompulator menciptakan bytecode dan menyimpannya di disk di file dengan
akhiran .class . Pada fase ini pemrograman memberikan perintah berupa teks :
javac <file kode sumber>
Perintah di atas memanggil kompilator javac untuk menerjemahkan program
sumber menjadi bytecode, yaitu serangkaian instruksi yang dipahami Java
Interpreter. Untuk mengkompilasi file program bernama maskalsaintek.java maka
kita akan mengetikkan perintah javac maskalsaintek.java pada MSDOS atau
Command Prompt pada Windows. Jika javac mengkompilasi dengan benar maka
Rangkuman Aplikasi dan Basis Data Page 10
kompilator javac tersebut menghasilkan file bernama maskalsaintek.class. File ini
berisikan bytecode yang akan diinterpretasikan selama fase eksekusi.
3. Fase Loading
Program yang dieksekusi (.class) harus lebih dahulu berada di memori
sebelum dieksekusi. Aktivitas pemuatan ke memori dilakukan class loader dengan
mengambil file .class yang berisi bytecode dan mentransfer ke memori utama.
File .class dapat dimuatkan dari disk sistem lokal atau jaringan.
4. Fase Verify
Begitu kelas di memori, bytecode diverifikasi bytecode verifier. Verifikasi ini
untuk menjamin bytecode sah dan tidak melanggar batasan keamanan Java. Java
memaksakan keamanan secara ketat agar program dari jaringan tidak merusak
sistem lokal milik kita (sebagaimana virus dapat melakukannya).
5. Execute
Pada fase ini interpreter membaca bytecode dan menerjemahkannya menjadi
bahasa yang dipahami komputer. Interpreter di bawah kendali sistem operasi
menginterpretasikan satu bytecode satu saat, dan melakukan aksi-aksi yang
disfesifikasi bytecode.
Rangkuman Aplikasi dan Basis Data Page 11
BAB II
Komentar Pada Java
Dasar pemrograman pada JAVA
Dasar pemrograman pada JAVA meliputi : Komentar pada Java, Pernyataan
dalam blok dan Java, Java indentifier, keyword dalam Java, Java literals, type data
primitive, variable, dan operator.
2.1 Komentar Pada Java
Komentar pada Java adalah catatan yang ditulis pada kode dengan tujuan
sebagai bahan dokumentasi. Teks tersebut bukan bagian dari program dan tidak
mempengaruhi jalannya program. Pada bahasa pemrograman manapun komentar
program biasa digunakan untuk memberikan penjelasan baris atau blok program
suapaya pembaca program atau programer lainnya supaya bisa mengerti bagian-
bagian program tersebut. Ada 3 (tiga) cara memberikan komentar program pada Java,
yaitu:
a. 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. Sebagai contoh:
b. Multiple Line Comment ( /* */)
Komentar dengan tanda slash dan asterik ( / * */) disebut dengan Multiple-
Line Comment, karena ini, perintah program, komentar-komentar atau
Rangkuman Aplikasi dan Basis Data Page 12
penjelasan program berada dalam apitan tanda slash dan asterik, semua
dianggap sebagai komentar, dan komentar bisa lebih dari satu baris.
Sebagai contoh :
c. Javadoc Comment ( /** */)
Komentar dengan tanda slash ganda didepan dan asterik ( /** */) disebut
dengan Javadoc Comment. Penggunaannya sama seperti Multiple Line
Comment, akan tetapi penggunaannya untuk dokumentasi-dokumentasi
didalam program. Sebagai contoh :
Semua komentar program atau penjelasan program pada saat program java
dicompile tidak ikut serta dicompile, karena tidak dianggap sebagai suatu
baris program.
Rangkuman Aplikasi dan Basis Data Page 13
2.2 Pernyataan dalam Blok
Pernyataan dalam Blok adalah satu atau lebih baris kode yang diakhiri oleh
semicolon. Contoh : System.out.println(“Hello World”); Sedangkan Blok adalah satu atau
lebih pernyataan yang terbentang antara kurung kurawal buka dan kurung kurawal
tutup yaitu sekumpulan pernyataan sebagai satu unit kesatuan. Blok adalah satu atau
lebih pernyataan yang terbentang antara kurung kurawal buka dan kurung kurawal
tutup yaitu sekumpulan pernyataan sebagai satu unit kesatuan. Blok pernyataan dapat
dikumpulkan akan tetapi tidak secara pasti mempunyai keterkaitan fungsi.Beberapa
jumlah spasi kosong diijinkan terdapat didalamnya, sebagai contoh dari suatu blok
adalah :
public static void main( String[] args ){
System.out.println("Hello");
System.out.println("world");
}
Petunjuk Penulisan Program:
1. Pada saat pembuatan blok, Anda dapat meletakkan kurung kurawal buka
pada baris dengan pernyataan seperti contoh sebagai berikut:
public static void main( String[] args ){
atau Anda dapat meletakkan kurung kurawal pada baris selanjutnya,
seperti,
public static void main( String[] args )
{
2. Anda harus memberi jarak (indent) pernyataan selanjutnya setelah awal dari
blok , seperti contoh berikut,
Rangkuman Aplikasi dan Basis Data Page 14
public static void main( String[] args ){
System.out.println("Hello");
System.out.println("world");
}
2.3 Java Indentifier
Java Identifier adalah suatu tanda yang mewakili nama – nama variable, method,
class, dll. Contoh : 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 tidak dapat menggunakan kata kunci dalam java
seperti class, public, void, dsb.
Pedoman Penulisan Program:
a. 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
b. Pada kasus untuk pengidentifikasi labih dari satu kata , menggunakan huruf
kapital untuk mengindikasikan awal dari kata kecuali kata pertama. Sebagai contoh,
charArray, fileNumber, ClassName.
c. Hindari menggunakan underscores pada awal pengidentifikasian seperti _read
atau _write.
Rangkuman Aplikasi dan Basis Data Page 15
2.4 Keyword dalam Java
Keyword dalam Java ( Kata Kunci ) adalah indentifier yang telah dipesan untuk
didefinisan sebelumnya oleh Java untuk tujuan tertentu. Keyword adalahpengidentifikasi 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
dari kata kunci dalam java (Java Keywords).
2.5 Java Literals
Java Literals adalah tanda bahwa tidak terjadi perubahan atau konstan.Macam –
macam literals dalam Java : integer literals, float-point literals, Boolean literals,
character literals dan string literals.
Rangkuman Aplikasi dan Basis Data Page 16
Abstract Continue For New Switch
Assert Default Goto Package Synchronized
Boolean Do If Private This
Break Double Implements Protected Throw
Byte Else Import Public throws
Case Enum Instanceof Return Transirnts
Catch Extends Int Short Try
Char Final Interface Static Void
Class Finally Long Strictfp Volatile
Const Float Native Super while
a. Integer Literals
Integer literals dibedakan dalam beberapa format yang berbeda: desimal
(berbasis 10), heksadesimal (berbasis 16), and oktal (berbasis 8). Dalam penggunaan
tipe data integer pada program, kita harus mengikuti aturan penggunaan beberapa
notasi khusus.
Untuk angka desimal, kita tidak memerlukan notasi khusus. Kita hanya menulis
angka desimal seperti apa adanya. untuk angka heksadesimal, hal itu harus ditandai oleh
“0x” atau “0X”. untuk oktal, ditandai oleh“0”. Sebagai contoh, mewakili angka 12.
Penulisan dalam bentuk desimalnya adalah 12, Sementara dalam heksadesimal, menjadi
0xC, dan dalam oktal, nilai tersebut sama dengan 014.
Default tipe data untuk integer literals adalah int. Int adalah signed 32-bit value.
Pada kasus-kasus tertentu Anda dapat berharap untuk memaksa integer iteral untuk
menjadi tipe data long dengan menambahkan karakter “l” or “L”. tipe data long ditandai
oleh ditampilkannya data dalam 64-bit. Kita akan membahas mengenai tipe data pada
kesempatan selanjutnya.
b. Floating-Point Literals
Floating point literals mewakili bentuk desimal dengan bagian yang terpisah.
Sebagai contoh adalah 3.1415. Floating point literals dapat dinyatakan dalam notasi
standard atau scientific. Sebagai contoh, 583.45 dinyatakan dalam notasi standard,
Sementara 5.8345e2 dinyatakan dalam notasi scientific. Default Floating point literals
mempunyai tipe data double yang dinyatakan dalam 64-bit. Untuk menggunakan
ketelitian yang lebih kecil (32-bit) float, hanya dengan menambahkan karakter “f” atau
“F”.
c. Boolean Literals
Boolean literals hanya memiliki dua nilai, true atau false.
d.Character Literals
Rangkuman Aplikasi dan Basis Data Page 17
Character Literals diwakili oleh karakter single Unicode. Karakter Unicode adalah
16-bit character set yang menggantikan 8-bit ASCII character set. Unicode
memungkinkan pengunaan simbol dan karakter khusus dari bahasa lain.
Untuk menggunakan character literals, karakter tersebut di dalam tanda single
pute (' ') (single quote delimiters). Sebagai contoh huruf a, diwakili sebagai ‘a’. Untuk
menggunakan karakter khusus seperti karakter baris baru, backslash digunakan diikuti
dengan karakter kode. Sebagai contoh, ‘\n’ untuk karakter baris baru atau ganti baris, ‘\
r’ untuk menyatakan nilai balik (carriage return), ‘\b’ untuk backspace.
e. String Literals
String literals mewakili beberapa karakter dan dinyatakan dalam tanda double
pute(“ ”) (double quotes). Sebagai contoh string literal adalah, “Hello World”.
2.6 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 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.
Rangkuman Aplikasi dan Basis Data Page 18
Karena bukan suatu class, untuk inisialisasi variabel tidak menggunakan
keyword new
Pada pemrograman Java didefinisikan menjadi 8 yaitu : Boolean ( untuk bentuk
logika ), char ( untuk bentuk tekstual ), byte, short, int, long ( integral ), double dan float
( floating point ).
Keterangan : Secara praktis, hampir semua penggunaan bilangan pecahan dapat
dilakukan dengan menggunakan float dan double. Untuk pada tipe data
char adalah merupakan nilai bertipe unicode
Rangkuman Aplikasi dan Basis Data Page 19
No Tipe Data Range Nilai dan Panjang Bit
1 byte -128 s/d 127 (8 bit)
2 short -32,768 s/d 32,767 (16 bit)
3 int -2,147,483,648 s/d 2,147,483,647 (32 bit)
4 long -9,223,372,036,854,775,808 s/d 9,223,372,036,854,775,807 (64 bit)
5 float Nilai pecahan (32 bit)
6 double Nilai pecahan (64 bit)
7 boolean true / false (1 bit)
8 char '\u0000' (0) s/d '\uffff' (65,535) (16 bit)
Nilai Default
Keterangan: 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.
Contoh Penggunaan Yang Benar
1. int nilai1 = 20;
Rangkuman Aplikasi dan Basis Data Page 20
No Tipe Data Nilai Default
1 byte 0
2 short 0
3 int 0
4 long 0L
5 float 0.0f
6 double 0.0d
7 boolean false
8 char '\u0000' (0)
2.
3. long nilai2 = 1000;
4.
5. long nilai3 = 23000L;
6.
7. float nilai4 = 90;
8.
9. float nilai5 = 1.24f;
10.
11. double nilai6 = 100;
12.
13. double nilai7 = 2010.9311;
14.
15. double nilai8 = 2.0109311e3; //sama dengan nilai7 (2.0109311 dikalikan 10 pangkat 3)
16.
17. double nilai9 = 11.2d;
18.
19. long nilai_maks_long = 9223372036854775807L;
20.
21. char nilai10 = 0;
22.
23. char nilai11 = 'b';
24.
25. char nilai12 = '\u0003';
26.
27. boolean kondisi = true;
Contoh Penggunaan Yang Salah
1. long nilai_maks_long = 9223372036854775807; //harus menggunakan suffix L karena sudah di luar range int
2.
3. float nilai13 = 0.03; //harus menggunakan suffix f
4.
5. char nilai14 = '\u01'; //harus menggunakan format '\u9999' (\u diikuti 4 digit hexadecimal)
Rangkuman Aplikasi dan Basis Data Page 21
2.7 Variabel
Variabel sebenarnya berarti lebih kompleks. Variabel bukan isi dari data, tapi
lokasi di memori yang menyimpan data tersebut. Variabel bisa diibaratkan sebagai kotak
penyimpanan data, bukan isi kotaknya. Karena data di dalam kotak bisa berubah,
variabel hanya dapat dipercaya pada satu saat saja, walaupun tempatnya selalu sama.
Dalam bahasa Java, satu-satunya cara untuk memasukkan data ke dalam variabel
adalah dengan menggunakan assignment statement, atau pernyataan pemberian nilai.
Pernyataan ini berbentuk:
variable = ekspresi;
Di mana ekspresi menyatakan apapun yang berhubungan dengan nilai suatu
data. Ketika komputer menjalankan instruksi ini, komputer akan menghitung dan
menyimpan hasilnya ke dalam variabel. Contoh:
kecepatan = 40;
Variable dalam pernyataan di atas adalah kecepatan dan ekspresinya adalah
angka 40. Komputer menghitung pernyataan ini dan menyimpan 40 ke dalam variabel
kecepatan, dan mengganti apapun yang telah disimpan sebelumnya.Sekarang misalnya
kita ingin melakukan perhitungan yang lebih kompleks:
jarak = kecepatan * waktu
Di sini, * merupakan operasi perkalian. Komputer mengambil data yang disimpan
dalam variabel kecepatan dan waktu, melakukan perkalian, dan menyimpan hasilnya
dalam jarak.Variabel dalam bahasa Java didesign untuk menyimpan hanya 1 jenis tipe
data. Kompiler akan menampilkan kesalahan sintax apabila variabel ini dicoba untuk
diberi tipe data jenis lain. Oleh karena itu Java disebut bahasa pemrograman bertipe
kuat atau strongly typed language.
Rangkuman Aplikasi dan Basis Data Page 22
2.8 Operator dalam Java
Operator dalam Java berfungsi untuk mengoperasikan (memanipulasi,
mengolah) satu atau lebih variabel. Variabel yang dioperasikan disebut operand.
Secara garis besar operator dalam java bisa dikelompokkan menjadi :
1. Operator assignment adalah tanda = (sama dengan), berguna untuk
memberi literal pada suatu variabel tertentu. Berikut contoh operator
assigment :
int testInt = 0;
2. Operator aritmatika adalah operator yang digunakan untuk melakukan
operasi aritmatika (perhitungan). Operator ini ada lima macam yaitu :
- Operator penambahan (+)
- Operator penguranan (-)
- Operator perkalian (*)
- Operator pembagian (/)
- Operator sisa – mod (%).
Berikut contoh penggunaan operator arimatika :
int hasil = 1 + 2; // hasil = 3
hasil = hasil – 1; // hasil = 2
hasil = hasil * 2; // hasil = 4
hasil = hasil / 2; //hasil = 2
hasil = hasil + 8; // hasil = 10
hasil = hasil % 7; //hasil = 3
Operator penjumlahan (+) bisa juga diterapkan pada objek string (seperti
pada contoh penjelasan kelas String).
3. Operator unary meliputi operator unary positif (+) untuk menandakan
suatu bilangan positif (setiap bilangan tanpa tanda negatif, berarti
termasuk bilangan positif). Operator unary negatif (-) untuk menandakan
suatu bilangan negatif. Operator unary increment (++), berguna
Rangkuman Aplikasi dan Basis Data Page 23
menambah menambah literal bilangan dengan literal bilangan satu.
Operator unary decrement (–), berguna mengurangi literal bilangan
dengan bilangan satu. Dan operator unary komplemen logika (!), berguna
untuk mengkomplemenkan suatu logika yang bernilai true atau false.
Berikut contoh penggunaan operator unary :
int hasil = +1; // hasil = 1
hasil–; //hasil = 0
hasil++; // hasil = 1
hasil = -hasil; // hasil = -1
boolean success = false; //success = false;
success = !success; //success =true;
4. Operator equality digunakan untuk membandingkan dua variabel, apakah
nilainya sama, lebih besar, lebih kecil, lebih besar atau sama dengan,
lebih kecil atau sama dengan dan tidak sama dengan. Operator-operator
tersebut adalah sebagai berikut :
== sama dengan
> lebih besar
< lebih kecil
>= lebih besar atau sama dengan
<= lebih kecil atau sama dengan
!= tidak sama dengan
Berikut contoh pemakaian operator equality :
class ComparisonDemo {
public static void main(String[] args){
int value1 = 1;
int value2 = 2;
if(value1 == value2) System.out.println(”value1 == value2″);
if(value1 != value2) System.out.println(”value1 != value2″);
if(value1 > value2) System.out.println(”value1 > value2″);
Rangkuman Aplikasi dan Basis Data Page 24
if(value1 <>
if(value1 <= value2) System.out.println(”value1 <= value2″);
}
}
Output program tersebut sbb:
value1 != value2
value1 < value2
value1 <= value2
5. Operator kondisional digunakan pada dua atau lebih ekspresi boolean.
Operator ini terdiri dari operator kondisional AND (&&) dan operator
kondisional OR (||). Selain itu ada juga operator kondisional and (&) dan
operator kondisional or (|). Bedanya pada operasional kondisional &&
dan || jika ekspresi sudah memenuhi syarat, ekspresi setelahnya tidak
dicek, sedangkan pada operator kondisional & dan | akan mengecek
seluruh ekspresi.
Berikut contoh penggunaan operator ini :
class ConditionalDemo {
public static void main(String[] args){
int value1 = 1;
int value2 = 2;
if((value1 == 1) && (value2 == 2))
System.out.println(”value1 is 1 AND value2 is 2″);
if((value1 == 1) || (value2 == 1))
System.out.println(”value1 is 1 OR value2 is 1″);
}
}
Rangkuman Aplikasi dan Basis Data Page 25
Output program di atas adalah :
value1 is 1 AND value2 is 2
value1 is 1 OR value2 is 1
6. Operator komparasi digunakan untuk mengecek apakah suatu objek
merupakan instance dari suatu kelas tertentu. Operator komparasi
adalah operator instanceof. Jika suatu objek yang kita tes merupakan
instance dari suatu kelas yang kita tentukan, ekspresi ini bernilai true,
false jika sebaliknya. Berikut contoh sederhana pemakaian operator
komparasi:
KelasA a = new KelasA();
KelasB b = new KelasB();
if(a instanceof KelasA)
Sytem.out.println(”objek adalah instance dari KelasA);
Karena a merupakan instance dari KelasA maka statement
System.out.println(”objek adalah instance dari KelasA”) dieksekusi.
7. Operator bitwise Digunakan untuk operasi bit per bit pada nilai integer.
Terdiri dari operator NOT, AND, OR, XOR, Shl, Shr. Type : int atau char
Bitwise operator, dari namanya sudah jelas diketahui pasti berhubungan
dgn bit. Biasanya digunakan utk memanipulasi data bertipe bit dari tipe
data integer atau byte. Bitwise ini sering dipakai dalam kasus
enkripsi,kompresi,formatfile,jaringan(protokol),processing,
audio/video,dll.
2.9 Blok
Blok adalah satu atau lebih pernyataan yang terbentang antara kurung kurawal
buka dan kurung kurawal tutup yaitu sekumpulan pernyataan sebagai satu unit
kesatuan. Tujuannya untuk mengelompokkan beberapa perintah sehingga lebih
dimengerti.
Rangkuman Aplikasi dan Basis Data Page 26
contoh penggunaan blok pada pemrograman java.
{
System.out.println("Hello");
System.out.println("Dunia");
}
{ // blok ini digunakan untuk menukar isi variable x dan y
int temp;
temp = x;
x = y;
y = temp;
}
BAB III
PEMILIHAN,PERULANGAN DAN PERCABANGAN
3.1. Struktur Kontrol Pemilihan
Rangkuman Aplikasi dan Basis Data Page 27
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. Pernyataan percangan memungkinkan suatu pernyataan
di eksekusi , hanya jika suatu kondisi terpenuhi atau tidak terpenuhi. Artinya tidak setiap
baris atau langkah dikerjakan. Suatu baris algoritma akan dikerjakan jika kondisinya
memenuhi syarat. Struktur pemilihan adalah struktur algoritma yang melakukan proses
pengujian untuk mengambil suatu keputusan atau tindakan mengenai di proses atau
tidaknya suatu baris intruksi atau blok intruksi.
a. Statement “If…”
Kontruksi ini untuk memeriksa sebuah kondisi dan mengeksekusi satu intruksi
atau blok intruksi, jika dan hanya jika kondisinya terpenuhi.
Bentuk pernyataan if
if([kondisi])
statement;
atau
if([kondisi])
{
statement1;
statement2;
Rangkuman Aplikasi dan Basis Data Page 28
. . .
}
Contoh pernyataan if
public class Lat07
{
public static void main(String[] args)
{
int a=1,b=10;
if (a<5)
{
System.out.println(“Nilai a lebih kecil dari 5″);
}
Rangkuman Aplikasi dan Basis Data Page 29
if (b<5)
{
System.out.println(“Nilai b lebih kecil dari 5″);
}
}
}
b.Statement “If-else …”.
Pernyataan if-else digunakan apabila kita ingin mengeksekusi beberapa
pernyataan dengan kondisi true dan pernyataan yang lain dengan kondisi false.
Bentuk dari pernyataan if-else
if([kondisi])
statement;
Rangkuman Aplikasi dan Basis Data Page 30
else
statement;
atau
if([kondisi])
{
statement1;
statement2;
. . .
}
else
{
statement1;
statement2;
. . .
Rangkuman Aplikasi dan Basis Data Page 31
}
Contoh pernyataan if-else
public class Lat08
{
public static void main(String[] args)
{
int a=1,b=10;
if (a<5)
{
System.out.println(a+” lebih kecil dari 5″);
}
else
{
System.out.println(a+” lebih besar dari 5″);
}
if (b<5)
Rangkuman Aplikasi dan Basis Data Page 32
{
System.out.println(b+” lebih kecil dari 5″);
}
else
{
System.out.println(b+” lebih besar dari 5″);
}
}
}
c.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.
Rangkuman Aplikasi dan Basis Data Page 33
Bentuk pernyataan if-else-if
if([kondisi])
statement1;
else if
statement2;
else
statement3;
atau
if([kondisi])
{
Rangkuman Aplikasi dan Basis Data Page 34
statement1;
statement2;
. . .
}
else if
{
statement1;
statement2;
. . .
}
else
{
statement1;
statement2;
Rangkuman Aplikasi dan Basis Data Page 35
. . .
}
Contoh pernyataan if-else-if
public class Lat09
{
public static void main(String[] args)
{
char nh;
double na=75.33;
if (na>=80)
{
nh=’A';
}
else if (na>=70)
{
Rangkuman Aplikasi dan Basis Data Page 36
nh=’B';
}
else if (na>=50)
{
nh=’C';
}
else if (na>=30)
{
nh=’D';
}
else
{
nh=’E';
}
System.out.println(“Nilai Akhir\t : “+na);
Rangkuman Aplikasi dan Basis Data Page 37
System.out.println(“Nilai Huruf\t : “+nh);
}
}
d.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. Bentuk dari Switch-case
merupakan pernyataan yang dirancangan khusus untuk menangani pengambilan
keputusan yang melibatkan sejumlah atau banyak alternatif penyelesaian. Pernyataan
switch - case ini memiliki kegunaan sama seperti if – else bertingkat.
Kontruksi If-Else yang bertingkat-tingkat seringkali membingungkan pembacaan
alur program. Java menyediakan intruksi Switch untuk memudahkan pembacaan alur
program bercabang yang sangat banyak. meskipun Switch didesain untuk mengganti If-
Else, akan tetapi Switch memiliki batasan:
1. Data yang diperiksa haruslah bertipe Integer (int) atau Karakter (char).
2. Range data yang diperiksa bernilai 0 s/d 255.
Rangkuman Aplikasi dan Basis Data Page 38
Bentuk pernyataan switch
switch ([nama_variable])
{
case [nilai1] :
perintah1;
perintah2;
. . .
break;
case [nilai2] :
Rangkuman Aplikasi dan Basis Data Page 39
perintah1;
perintah2;
. . .
break;
case [nilaiN] :
perintahN;
. . .
break;
default :
perintahDefault;
. . .
break;
}
Contoh pernyataan switch
public class Lat011
Rangkuman Aplikasi dan Basis Data Page 40
{
public static void main(String[] args)
{
int grade = 82;
switch(grade)
{
case 100:
System.out.println(“Excellent!”);
break;
case 90:
System.out.println(“Good Job!” );
break;
case 80:
System.out.println(“Study Harder!” );
break;
Rangkuman Aplikasi dan Basis Data Page 41
default:
System.out.println(“Sorry, You Failed!”);
}
}
}
3.2. Struktur Kontrol Pengulangan
Struktur kontrol pengulangan adalah berupa pernyataan dari Java yang
mengijinkan kita untuk mengeksekusi blok code berulang-ulang sesuai dengan jumlah
tertentu yang diinginkan. Ada tiga macam jenis dari struktur kontrol pengulangan yaitu :
1. While
2. Do-while
3. For loops
Pernyataan-pernyataan di atas menciptakan loop. Loop secara berulang
mengeksekusi sebarisan instruksi yang sama sampai kondisi akhir ditemui. Dengan kata
lain, looping atau loop artinya mengulangi eksekusi blok program tertentu sampai
tercapai kondisi untuk menghentikannya (terminasi). Setiap perulangan memiliki 4
bagian yaitu :
inisialisasi (initialization),
badan program (body) / statement,
iterasi (iteration), dan
termination
Rangkuman Aplikasi dan Basis Data Page 42
a.Struktur 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 dari struktur pengulangan while :
inisialisasi;
while(kondisi)
{
perintah_perintah yang akan diulang;
. . .
}
Contoh pernyataan while
class while1 {
public static void main (String[[] args] {
int i = 0;
while (i<10) {
System.out.println ( “ java”);
I++; }
}
}
Rangkuman Aplikasi dan Basis Data Page 43
b.Struktur 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 dari struktur
pengulangan do-while :
inisialisasi;
do
{
perintah_perintah yang akan diulang;
. . .
}
while(kondisi);
Contoh penyataan do-while
int x = 0;
do {
System.out,println(x);
X++;
} while (x<10);
c.Struktur for …
Struktur ini biasanya digunakan untuk melakukan pengulangan yang banyaknya
sudah pasti atau sudah diketahui sebelumnya.
Rangkuman Aplikasi dan Basis Data Page 44
Bentuk dari struktur pengulangan for :
for(inisialisasi; kondisi; iterasi)
{
perintah_perintah yang akan diulang;
. . .
}
Contoh pernyataan for
class for1 {
public static void main (String[] args) {
for ( int i = 0 ; i < 10 ; i++ ) {
System.out.println(“java”); }
}
}
Maka outputnya akan tercetak teks java sebanyak 10 kali.
3.3 Statement Peloncatan
Statement peloncatan digunakan untuk mengontrol jalannnya program. Lebih
tepatnya, untuk memindahkan eksekusi program ke baris kode yang kita kehendaki.
Dalam Java, terdapat 3 buah statement peloncatan, yaitu : break, continue dan return.
a.Menggunakan break.
Dalam Java, statement break memiliki 3 kegunaan yaitu :
1. Menghentikan runtunan pemilihan pada statement switch.
2. Menghentikan proses pengulangan (keluar dari blok pengulangan).
Rangkuman Aplikasi dan Basis Data Page 45
Dengan menggunakan statement break, kita dapat menghentikan proses
pengulangan tertentu tanpa memperdulikan lagi kondisi yang didefinisikan ataupun sisa
statement-statement yang terdapat pada blok pengulangan tersebut.
Contoh pernyataan break
public class Lat015
{
public static void main(String[] args)
{
for(int i=0;i<10;i++)
{
if(i==5)
{
break;
}
System.out.println(“Baris ke-“+i);
}
System.out.println(“Statement setelah blok pengulangan”);
Rangkuman Aplikasi dan Basis Data Page 46
}
}
Keluar dari blok label tertentu.
b.Menggunakan continue.
Statement continue berguna untuk memaksa program agar melanjutkan proses
pengulangan. Secara mudahnya, statement continue dapat dikatakan sebagai kebalikan
dari statement break.
Contoh pernyataan continue
public class Lat017
{
public static void main(String[] args)
{
for(int i=0;i<10;i++)
{
System.out.print(i+” “);
if(i%2==0)
{
Rangkuman Aplikasi dan Basis Data Page 47
continue;
}
System.out.println();
}
}
}
Statement continue diatas berguna untuk melanjutkan proses pengulangan
tanpa mengeksekusi statement-statement yang terdapat dibawahnya. Artinya, pada
saat i bernilai genap, program tidak akan mengeksekusi statement
System.out.println( );.Seperti halnya statement break, yang dapat digunakan untuk
keluar dari suatu blok label tertentu, statement continue juga dapat digunakan untuk
memaksa program agar kembali atau melanjutkan ke suatu label tertentu.
c.Menggunakan return.
Dalam Java, statement return digunakan untuk keluar dari eksekusi kode
program yang terdapat dalam sebuah method.
Contoh pernyataan return
public class Lat018
{
public static void main(String[] args)
Rangkuman Aplikasi dan Basis Data Page 48
{
int bnyk=3;
tulis(bnyk);
}
//Mendefinisikan method tulis()
private static void tulis(int n)
{
if(n<1)
{
System.out.println(“Nilai i tidak boleh lebih kecil dari 1″);
return; //keluar dari method tulis()
}
//Statement ini tidak akan dilakukan bila n < 1
for(int i=0;i<n;i++)
Rangkuman Aplikasi dan Basis Data Page 49
{
System.out.println(“Baris ke-”+i);
}
}
}
Karena nilai n yang dilewatkan kedalam method tersebut lebih kecil dari 1, maka
program pun akan memanggil statement return yang berarti program keluar dari
method tulis( ), dan statement-statement yang terdapat pada blok pengulangan pun
tidak akan dieksekusi.
Rangkuman Aplikasi dan Basis Data Page 50
BAB IV
ARRAY
4.1 Pengertian
Array merupakan objek yang dapat digunakan untuk menyimpan sejumlah data.
Data yang dapat ditampung pada array dapat berupa tipe data ataupun kelas (objek).
Data di sebuah program dapat tersusun berupa array. Array adalah sekumpulan data
yang mempunyai tipe data yang sama dan lebar field yang sama. Array di Java dapat
dideklarasikan a=new int[10] yang artinya dibuat array dengan tipe integer sebanyak 10
record. Untuk lebih detailnya silahkan dicoba program kecil ini dengan menggunakan
jendela editor JCreator.
Contoh :
import java.io.*;
class array1 {
public static void main(String[] args) throws IOException {
int[] a;
a=new int[10];
String str;
for (int b=0; b<10; b++) {
System.out.print(“Bilangan “+b+”=”);
BufferedReader m = new BufferedReader(new InputStreamReader(System.in));
str=m.readLine();
try {
a[b]=Integer.parseInt(str);
} catch(NumberFormatException nfe) {
System.out.println(“Input bukan bilangan bulat”);
System.exit(1);
Rangkuman Aplikasi dan Basis Data Page 51
}
}
System.out.println(“”);
for (int b=0;b<10;b++){
System.out.println(a[b]);
}
}
}
4.1.1 Membuat Array
Setelah mendeklarasikan Array, maka perlu dibuat arraynya terlebih dahulu,
sebelum array tersebut digunakan, caranya dengan menggunakan perintah new.
TipeArray namaArray [];
namaArray = new TipeArray [jumlah];
Dimana jumlah array merupakan jumlah data yang dapat ditampung oleh array.
Jika sekumpulan data digabungkan dalam satu unit, hasilnya adalah suatu
struktur data. Data struktur dapat berupa struktur yang sangat kompleks, akan tetapi
dalam banyak aplikasi, data struktur yang cocok hanya terdiri dari kumpulan data
berurutan. Struktur data sederhana seperti ini bisa berupa array atau record.
Istilah "record" sebetulnya tidak digunakan pada Java. Suatu record pada intinya mirip
dengan objek pada Java yang hanya memiliki variabel instansi tanpa metode instansi.
Beberapa bahasa pemrograman lain yang tidak mendukung objek biasanya mendukung
record. Dalam bahasa C yang bukan bahasa berorientasi objek, misalnya, memiliki tipe
data record, dimana pada C disebut "struct". Data pada record -- dalam Java, adalah
variabel instansi suatu objek -- disebut field suatu record. Masing-masing item disebut
nama field. Dalam Java, nama field adalah nama variabel instansi. Perbedaan sifat dari
Rangkuman Aplikasi dan Basis Data Page 52
suatu record adalah bahwa item pada record dipanggil berdasarkan namanya, dan field
yang berbeda dapat berupa tipe yang berbeda. Misalnya, kelas Orangdidefisikan sebagai
:
class Orang {
String nama;
int nomorID;
Date tanggalLahir;
int umur;
}
maka objek dari kelas Orang bisa disebut juga sebagai record dengan 4 field. Nama
fieldnya adalah nama, nomorID,tanggalLahir dan umur. Lihat bahwa tipe datanya
berbeda-beda yaitu String, int, dan Date.
Karena record hanya merupakan bagian lebih kecil dari objek, kita tidak akan bahas
lebih lanjut di sini.
Seperti record, suatu array adalah kumpulan item. Akan tetapi, item pada record
dipanggil dengan nama, sedangkan item pada array dinomori, dan masing-masing item
dipanggil besarkan nomor posisi pada array tersebut. Semua item pada array harus
bertipe sama. Definisi suatu array adalah : kumpulan item bernomor yang semuanya
bertipe sama. Jumlah item dalam suatu array disebut panjang array. Nomor posisi dari
array disebut indeks item tersebut dalam array. Tipe dari item tersebut disebut tipe
dasar dari array.
Tipe dasar suatu array bisa berupa tipe Java apa saja, baik berupa tipe primitif,
nama kelas, atau nama interface. Jika tipe dasar suatu array adalah int, maka array
tersebut disebut "array int". Suatu array bertipe String disebut "array String". Akan
tetapi array bukan urutan int atau urutan String atau urutan nilai bertipe apapun. Lebih
baik jika array adalah urutan variabelbertipe int atau String atau tipe lainnya.
Seperti biasa, ada dua kemungkinan kegunaan variabel : sebagai nama suatu
lokasi di memori, dan nama suatu nilai yang disimpan pada lokasi memori. Setiap posisi
Rangkuman Aplikasi dan Basis Data Page 53
pada array bersifat seperti variabel. Setiap posisi dapat menyimpan nilai dengan tipe
tertentu (yaitu tipe dasar array). Isinya bisa diganti kapanpun. Nilai tersebut disimpan di
dalam array. Array merupakan kontainer bukan kumpulan nilai.
Item pada array (maksudnya setiap anggota variabel dalam array tersebut)
sering juga disebut elemen array. Dalam Java, elemen array selalu dinomori mulai dari
nol. Yaitu, indeks dari elemen pertama suatu array adalah nol. Jika panjang array adalah
N, maka indeks elemen terakhir adalah N-1. Sekali array dibuat, maka panjangnya tidak
bisa diubah lagi.
Dalam Java, array adalah objek. Ada beberapa konsekuensi yang lahir dari fakta
ini. Array harus dibuat dengan operator new. Variabel tidak bisa menyimpan array;
variabel hanya bisa merujuk pada array. Variabel lain yang bisa merujuk array juga bisa
bernilainull yang berarti ia tidak merujuk pada lokasi memori apapun. Seperti objek lain,
array juga bagian dari suatu kelas, di mana seperti kelas lain adalah kelas turunan dari
kelas Object. Elemen array pada dasarnya adalah variabel instansi dalam objek array,
kecuali mereka dipanggil dalam indeksnya bukan namanya.
Meskipun array berupa objek, ada beberapa perbedaan antara array dan objek
lainnya, dan ada beberapa fitur khusus Java untuk membuat dan menggunakan array.
Misalnya A adalah variabel yang merujuk pada suatu array. Maka indeks k di dalam A
bisa dipanggil dengan A[k]. Item pertama adalah A[0], yang kedua adalah A[i], dan
seterusnya. A[k] adalah suatu variabel dan bisa digunakan seperti variabel lainnya. Kita
bisa memberinya nilai, bisa menggunakannya dalam ekspresi, dan bisa diberikan sebagai
parameter pada subrutin. Semuanya akan didiskusikan di bawah nanti. Untuk sekarang
ingat sintaks berikut
variabel_array [ekspresi_integer]
untuk merujuk pada suatu array.
Meskipun setiap array merupakan suatu objek, kelas array tidak harus
didefinisikan sebelumnya. Jika suatu tipe telah ada, maka kelas array dari tipe tersebut
otomatis ada. Jika nama suatu tipe adalah TipeDasar, maka nama kelas arraynya
adalahTipeDasar[]. Artinya, suatu objek yang diciptakan dari kelas TipeDasar[] adalah
Rangkuman Aplikasi dan Basis Data Page 54
array dari item yang tiap itemnya bertipeTipeDasar. Tanda kurung "[]" dimaksudkan
untuk mengingat sintaks untuk mengambil item di dalam suatu array. "TipeDasar[]"
dibaca seperti "array TipeDasar". Mungkin perlu juga dijelaskan bahwa jika KelasA
adalah kelas turunan dariKelasB maka KelasA[] otomatis menjadi kelas turunan KelasB[].
Tipe dasar suatu array dapat berupa tipe apapun yang ada atau sudah didefinisikan pada
Java. Misalnya tipe primitif int akan diturunkan kelas array int[]. Setiap elemen di dalam
array int[] adalah variabel yang memiliki tipe int dan bisa diisi dengan nilai dengan tipe
int. Dari kelas yang bernama String diturunkan tipe array String[]. Setiap elemen di
dalam array String[]adalah variabel dengan tipe String, yang bisa diisi dengan nilai
bertipe String. Nilai ini bisa null atau referensi ke objek yang bertipe String (dan juga
kelas turunan dari String)
Mari kita lihat contoh lebih konkrotnya menggunakan array bilangan bulat
sebagai contoh pertama kita. Karena int[] adalah sebuah kelas, maka kita bisa
menggunakannya untuk mendeklarasikan variabel. Misalnya,
int[] daftar;
yang membuat variabel bernama daftar dengan tipe int[]. Variabel ini bisa menunjuk
pada array int, akan tetapi nilai awalnya adalah null (jika merupakan variabel anggota
suatu kelas) atau tak tentu (jika merupakan variabel lokal di dalam suatu metode).
Operator new digunakan untuk membuat objek array baru, ayng kemudian bisa
diberikan kepada daftar. Sintaksnya sama seperti sintaks sebelumnya, yaitu :
daftar = new int[5];
membuat array 5 buah integer. Lebih umum lagi, konstruktor "new TipeDasar[N]"
digunakan untuk membuat array bertipeTipeDasar[]. Nilai N di dalam kurung
menyatakan panjang array, atau jumlah elemen yang bisa ditampung. Panjang array
adalah variabel instansi di dalam objek array, sehingga array tahu berapa panjangnya.
Kita bisa mendapatkan panjang suatu array, misalnya daftar menggunakan daftar.length
(akan tetapi kita tidak bisa mengubahnya)
Hasil dari pernyataan "daftar = new int[5];" dapat diilustrasikan sebagai berikut
Rangkuman Aplikasi dan Basis Data Page 55
Perlu dicatat bahwa array integer secara otomatis diisi dengan nol. Dalam Java,
array yang baru dibuat akan selalu diisi dengan nilai tertentu: nol untuk angka, false
untuk boolean, karakter dengan nilai Unicode 0 untuk char dan null untuk objek.
Elemen di dalam array daftar dapat dirujuk dengan daftar[0], daftar[1], daftar[2],
daftar[3], dan daftar[4] (ingat juga bahwa nilai indeks terbesar adalah panjangnya array
dikurang satu). Akan tetapi, referensi array sebetulnya lebih umum lagi. Tanda kurung di
dalam referensi array bisa berisi ekspresi apapun yang nilainya suatu integer. Misalnya
jika idks adalah variabel bertipe int, maka daftar[idks] dan daftar[2*idks+3] secara
sintaks benar.
Contoh berikut akan mencetak semua isi integer di dalam array daftar ke layar :
for (int i = 0; i < daftar.length; i++) {
System.out.println( daftar[i] );
}
Perulangan pertama adalah ketika i = 0, dan daftar[i] merujuk pada daftar[0].
Jadi nilai yang disimpan pada variabeldaftar[0] akan dicetak ke layar. Perulangan kedua
adalah i = 1, sehingga nilai daftar[i] dicetak. Perulangan berhenti setelah mencetak
daftar[4] dan i menjadi sama dengan 5, sehingga kondisi lanjutan "i < daftar.length"
tidak lagi benar. Ini adalah contoh umum dari menggunakan perulangan untuk
mengolah suatu array.
Penggunaan suatu variabel dalam suatu program menyatakan lokasi di memori.
Pikirkan sesaat tentang apa yang akan komputer lakukan ketika ia menemukan referensi
ke elemen suatu array daftar[k] ketika program berjalan. Komputer harus menentukan
Rangkuman Aplikasi dan Basis Data Page 56
lokasi memori di mana ia dijadikan referensi. Untuk komputer, daftar[k] berarti : "Ambil
pointer yang disimpan di dalam variabeldaftar. Ikuti pointer ini untuk mencari objek
array. Ambil nilai k. Pergi ke posisi ke-k dari array tersebut, dan di sanalah alamat
memori yang Anda ingin."
Untuk suatu variabel array, seperti variabel lainnya, kita bisa mendeklarasikan
dan mengisinya dengan satu langkah sekaligus, misalnya :
int[] daftar = new int[5];
Jika daftar merupakan variabel lokal dalam subrutin, maka perintah di atas akan
persis sama dengan dua perintah :
int[] daftar;
daftar = new int[5];
(Jika daftar adalah variabel instansi, tentukan kita tidak bisa mengganti "int[]
daftar = new int[5];" dengan "int[]daftar; daftar = new int[5];" karena ini hanya bisa
dilakukan di dalam subrutin)
Array yang baru dibuat akan diisi dengan nilai awal yang tergantung dari tipe
dasar array tersebut seperti dijelaskan sebelumnya. Akan tetapi Java juga menyediakan
cara untuk memberi isi array baru dengan daftar isinya. Dalam pernyataan yang untuk
membuat array, ini bisa dilakukan dengan menggunakan penginisialiasi array (array
initializer), misalny :
int[] daftar = { 1, 4, 9, 16, 25, 36, 49 };
akan membuat array baru yang berisi 7 nilai, yaitu 1, 4, 9, 16, 25, 36, dan 49, dan
mengisi daftar dengan referensi ke array baru tersebut. Nilai daftar[0] berisi 1, nilai
daftar[1] berisi 4, dan seterusnya. Panjang daftar adalah 7, karena kita memberikan 7
nilai awal kepada array ini.
Suatu penginisialisasi array memiliki bentuk daftar angka yang dipisahkan
dengan koma dan diapit dengan tanda kurung kurawal {}. Panjang array tersebut tidak
perlu diberikan, karena secara implisit sudah bisa ditentukan dari jumlah daftar
angkanya. Elemen di dalam penginisialisasi array tidak harus selalu berbentuk
konstanta. Juga bisa merupakan variabel atau ekspresi apa saja, asalkan nilainya bertipe
Rangkuman Aplikasi dan Basis Data Page 57
sama dengan tipe dasar array tersebut. Misalnya, deklarasi berikut membuat array dari
delapan jenis Colorbeberapa warna telah dibentuk dengan ekspresi "new Color(r,g,b);"
Color[] palette =
{
Color.black,
Color.red,
Color.pink,
new Color(0,180,0), // hijau gelap
Color.green,
Color.blue,
new Color(180,180,255), // biru muda
Color.white
};
Inisialisasi array bentuk seperti ini hanya bisa digunakan dalam deklarasi suatu
variabel baru, akan tetapi tidak bisa digunakan seperti operator pemberi nilai (=) di
tengah-tengah suatu program. Akan tetapi ada cara lain yang bisa digunakan sebagai
pernyataan pemberian nilai atau diberikan ke dalam subrutin. Yaitu menggunakan jenis
lain dari operator new untuk membuat atau menginisialisasi objek array baru. (Cara ini
agak kaku dengan sintaks aneh, seperti halnya sintaks kelas anonim yang telah
didiskusikan sebelumnya). Misalnya untuk memberi nilai kepada suatu variabel daftar,
kita bisa menggunakan :
daftar = new int[] { 1, 8, 27, 64, 125, 216, 343 };
Sintaks umum dari bentuk operator new seperti ini adalah
new TipeDasar [ ] { daftar_nilai_nilai }
Ini adalah suatu ekspresi yang isinya merupakan objek, dan bisa digunakan untuk
banyak situasi di mana suatu objek dengan tipeTipeDasar dipentingkan. Misalnya
buatTombol merupakan metode yang mengambil array String sebagai parameter, maka
kita bisa menuliskan
buatTombol( new String[] { "Stop", "Jalan", "Berikut", "Sebelum" } );
Rangkuman Aplikasi dan Basis Data Page 58
Catatan terakhir : untuk alasan sejarah, maka deklarasi
int[] daftar;
akan bernilai sama dengan
int daftar[];
di mana sintaks tersebut digunakan dalam bahasa C dan C++. Akan tetapi sintaks
alternatif ini tidak begitu masuk akan dalam Java, atau mungkin lebih baik dihindari.
Lagian, maksudnya adalah mendeklarasikan variabel dengan tipe tertentu dan namanya
adalah int[]. Akan lebih masuk akan untuk mengikuti siintaks "nama_tipe
nama_variabel" seperti pada bentuk bertama.
4.1.2 Array Multidimensi
Java mendukung pembuatan array multidimensi, maksudnya kita dapat
menambahkan data array ke dalam sebuah array, cara pembuatanya adalah sebagai
berikut :
TipeArray namaArray [] [] = new TipeArray [jumlah] [jumlah];
Tipe apapun bisa digunakan sebagai tipe dasar suatu array. Kita bisa membuat
array int, array String, array Object dan seterusnya. Terutama, karena array adalah tipe
Java kelas satu, kita bisa membuat array yang bertipe array.
Misalnya suatu array bertipe int[], juga otomatis memiliki array bertipe int[][],
yaitu "array bertipe array int". Array tersebut disebut array 2 dimensi. Tentunya, dengan
tipe int[][], kita juag bisa membuat arraynya dengan tipe int[][][], yang merupakan array
3 dimensi, dan seterusnya. Tidak ada batasan berapa dimensi array yang kita buat, akan
tetapi bukan sesuatu yang biasa dilakukan untuk membuat array lebih dari 3 dimensi.
Pembahasan kita akan lebih dikhususkan pada array 2 dimensi. Tipe TipeDasar[][]
biasanya dibaca "array 2 dimensi bertipe TipeDasar" atau "array dari array TipeDasar".
Deklarasi pernyataan "int[][] A;" adalah membuat variabel bernama A dengan tipe
int[][]. Variabel ini berisi objek yang bertipe int[][]. Pernyataan pemberian nilai "A = new
Rangkuman Aplikasi dan Basis Data Page 59
int[3][4];" akan membuat objek array 2 dimensi dan mengisi A ke objek yang baru dibuat
tersebut.
Seperti biasa, deklarasi dan pemberian nilai bisa digabung menjadi satu
pernyataan, seperti "int[][] A = new int[3][4];". Objek yang baru dibuat adalah objek
yang merupakan array dari array int. Bagian int[3][4] menyatakan bahwa ada 3 array int
di dalam array A, dan di setiap array int tersebut terdapat 4 int.
Cara seperti itu mungkin sedikit membingungkan, akan tetapi akan lebih mudah
apabila kita bayangkan array tersebut seperti matriks. Istilah "int[3][4]" bisa disebut
sebagai matriks dengan 3 baris dan 4 kolom, seperti pada ilustrasi berikut ini :
Untuk banyak hal, kita bisa mengabaikan kenyataan di atas, dan membayangkan
bentuk matriks seperti di atas. Kadang-kadang kita juga harus ingat bahwa setiap baris
sebenarnya juga merupakan suatu array. Array-array ini bisa dirujuk dengan A[0], A[1],
dan A[2]. Setiap baris bertipe int[].
Pernyataan A[1] merujuk pada salah satu baris pada array A. Karena A[1] itu
sendiri sebenarnya adalah array int, kita bisa menambah indeks lain untuk merujuk pada
Rangkuman Aplikasi dan Basis Data Page 60
posisi pada baris tersebut. Misalnya A[1][3] adalah elemen nomor 3 pada baris 1.
Seperti biasa, ingat bahwa posisi baris dan kolom dimulai dari 0. Jadi pada contoh di
atas, A[1][3] bernilai 5. Lebih umum lagi,A[i][j] adalah posisi pada baris i dan kolom j.
Seluruh elemen pada A bisa dinamakan seperti berikut :
A[0][0] A[0][1] A[0][2] A[0][3]
A[1][0] A[1][1] A[1][2] A[1][3]
A[2][0] A[2][1] A[2][2] A[2][3]
A[i][j] adalah variabel bertipe int. Kita bisa mengisi nilainya atau
menggunakannya seperti variabel bertipe int biasa.Perlu juga diketahui bahwa A.length
akan memberikan jumlah baris pada A. Untuk mendapatkan jumlah kolom pada A, kita
harus mencari jumlah int dalam setiap baris, yaitu yang disimpan pada A[0]. Jumlah
kolom ini bisa didapatkan dengan menggunakan A[0].length, atau A[1].length atau
A[2].length. (Tidak ada aturan baku yang menyatakan bahwa pada setiap baris suatu
array harus memiliki panjang yang sama, dan sebenarnya pada beberapa aplikasi, juga
digunakan array dengan panjang yang berbeda-beda pada setiap barisnya. Akan tetapi
apabila kita membuat array dengan perintah seperti di atas, maka kita akan selalu
mendapatkan array dengan panjang array yang sama.)
Array 3 dimensi juga dibuat dan diolah dengan cara yang sama. Misalnya, array 3
dimensi bertipe int bisa dibuat dengan pernyataan "int[][][] B = new int [7][5][11];". Kita
juga bisa mengilustrasikannya sebagai kubus 3-dimensi. Masing-masing bloknya bertipe
int yang bisa dipanggil dalam bentuk B[i][j][k]. Array dimensi lain yang lebih tinggi juga
mengikuti pola yang sama, akan tetapi akan sangat sulit untuk membuat visualisasi
struktur arraynya.
Kita bisa mengisi array multi dimensi sekaligus pada saat dideklarasikan. Ingat
sebelumnya bagaimana array 1 dimensi biasa dideklarasikan, dan bagaimana isinya
diinisialisasikan, yaitu seperti daftar nilai-nilainya yang dipisahkan dengan koma, dan
diletakkan di dalam tanda kurung kurawal { dan }.
Rangkuman Aplikasi dan Basis Data Page 61
Inisialisasi array bisa juga digunakan untuk array multi dimensi, yang terdiri dari
beberapa inisialisasi array 1 dimensi, masing-masing untuk setiap barisnya. Misalnya,
array A pada gambar di atas dapat dibuat dengan perintah :
int[][] A = { { 1, 0, 12, -1 },
{ 7, -3, 2, 5 },
{ -5, -2, 2, 9 }
};
Jika tidak ada inisialisasi yang diberikan untuk suatu array, maka nilainya akan
diisi dengan nilai awal tergantung pada tipenya : nol untuk bilangan, false untuk boolean
dan null untuk objek.
Seperti halnya array 1 dimensi, array 2 dimensi juga sering diolah dengan
menggunakan perulangan for. UNtuk mengolah semua elemen pada array 2 dimensi,
kita bisa menggunakan pernyataan for bertingkat. Jika array A dideklarasikan seperti
int[][] A = new int[3][4];
maka kita bisa mengisi 0 untuk semua elemen pada A dengan menggunakan
for (int baris = 0; baris < 3; baris++) {
for (int kolom = 0; kolom < 4; kolom++) {
A[baris][kolom] = 0;
}
}
Pertama kali perulangan for bagian luar akan memproses dengan baris = 0.
Bagian dalamnya akan mengisi keempat kolom pada baris pertama, yaitu A[0][0] = 0,
A[0][1] = 0, A[0][2] = 0, dan A[0][3] = 0. Kemudian perulangan for bagian luar akan
mengisi baris kedua, dan seterusnya.
Dan juga, kita bisa menjumlah semua elemen pada A dengan
int jml = 0;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; i++)
Rangkuman Aplikasi dan Basis Data Page 62
jml = jml + A[i][j];
Untuk mengolah array 3 dimensi, tentunya kita harus menggunakan perulangan
for bertingkat 3.
Suatu array 2 dimensi bisa digunakan untuk menyimpan data yang secara alami
memang tersusun sebagai baris dan kolom. Misalnya papan catur terdiri dari 8 baris dan
8 kolom. Jika suatu kelas dinamakan PapanCatur untuk merepresentasikan papan catur,
maka kita bisa deklarasikan dengan perintah
PapanCatur[][] papan = new PapanCatur[8][8];
Kadang-kadang array 2 dimensi juga digunakan untuk masalah yang tidak terlalu
jelas matriksnya. Misalnya perusahaan yang memiliki 25 toko. Anggap masing-masing
toko memiliki keuntungan yang didapat pada masing-masing toko tersebut setiap bulan
pada tahun 2009. Jika toko-toko tersebut memiliki nomor 0 hingga 24, dan 12 bulan dari
Januari 09 hingga Desember 09 dinomori 0 hingga 11, maka data keuntungan dapat
disimpan dalam array untung yang dideklarasikan seperti :
double[][] untung = new double[25][12];
untung[3][2] adalah keuntungan yang dibuat oleh toko nomor 3 di bulan Maret.
Atau secara umum,untung[noToko][noBulan] adalah keuntungan toko noToko pada
bulan noBulan. Dalam contoh ini array 1 dimensiuntung[noToko] memiliki arti : Data
keuntungan satu toko selama satu tahun.
Anggap array untung telah diisi dengan data. Data ini bisa diolah lebih lanjut.
Misalnya, total keuntungan seluruh perusahaan -- sepanjang tahun dari seluruh toko --
dapat dihitung dengan menjumlahkan semua elemen pada array :
double totalUntung; // Total keuntungan perusahaan tahun 2009
totalUntung = 0;
for (int toko = 0; toko < 25; toko++) {
for (int bulan = 0; bulan < 12; bulan++)
totalUntung += untung[toko][bulan];
}
Rangkuman Aplikasi dan Basis Data Page 63
Kadang-kadang kita juga perlu menghitung hanya satu baris atau satu kolom
saja, bukan keseluruhan array. Misalnya, kita ingin menghitung keuntungan total
perusahaan pada bulan Desember, yaitu bulan nomor 11, maka kita bisa gunakan
perulangan :
double untungDesember = 0.0;
for (noToko = 0; noToko < 25; noToko++)
untungDesember += untung[noToko][11];
Sekarang mari kita buat array 1 dimensi yang berisi total keuntungan seluruh
toko setiap bulan :
double[] untungBulanan; // Keuntungan setiap bulan
untungBulanan = new double[12];
for (int bulan = 0; bulan < 12; bulan++) {
// hitung total keuntungan semua toko bulan ini
untungBulanan[bulan] = 0.0;
for (int toko = 0; toko < 25; toko++) {
untungBulanan[bulan] += profit[toko][bulan];
}
}
Sebagai contoh terakhir untuk mengolah array keuntungan, misalnya kita ingin
tahu toko mana yang menghasilkan keuntungan terbesar sepanjang tahun. Untuk
menghitungnya, kita harus menjumlahkan keuntungan setiap toko sepanjang tahun.
Dalam istilah array, ini berarti kita ingin mengetahui jumlah setiap baris pada array. Kita
perlu mencatat hasil perhitungannya untuk mencari mana toko dengan keuntungan
terbesar.
double untungMaks; // Keuntungan terbesar suatu toko
int tokoTerbaik; // Nomor toko yang memiliki keuntungan terbesar
double total = 0.0; // Total keuntungan suatu toko
Rangkuman Aplikasi dan Basis Data Page 64
// Pertama-tama hitung keuntungan dari toko nomo 0
for (int bulan = 0; bulan < 12; bulan++)
total += untung[0][bulan];
tokoTerbaik = 0; // Mulai dengan anggapan toko nomor 0
untungMaks = total; // adalah toko paling menguntungkan
// Sekarang kita lihat seluruh toko, dan setiap kali
// kita melihat toko dengan keuntungan lebih besar dari
// untungMaks, kita ganti untungMaks dan tokoTerbaik
// dengan toko tersebut
for (toko = 1; toko < 25; toko++) {
// Hitung keuntungan toko tersebut sepanjang tahun
total = 0.0;
for (bulan = 0; bulan < 12; bulan++)
total += untung[toko][bulan];
// Bandingkan keuntungan toko ini dengan untungMaks
if (total > untungMaks) {
untungMaks = total; // keuntungan terbesar saat ini
tokoTerbaik = toko; // datang dari toko ini
}
} // akhir for
// Di sini, untungMaks adalah keuntungan terbesar dari 25 toko
// dan tokoTerbaik adalah toko dengan keuntung tersebut
Rangkuman Aplikasi dan Basis Data Page 65
// (Mungkin juga ada toko yang menghasilkan keuntungan
// yang persis sama.)
4.1.3 Memanipulasi Data dalam Array
Setelah membuat Array, maka untuk melakukan proses manipulasi seperti
menambahkan data ke Array, mengubah data di Array ataupun mengakses data dalam
Array, maka diperlukan sebuah indeks, dimana saat membuat sebuah array dengan
jumlah data 5, maka hasilnya akan terlihat seperti ini.
No Indeks
1 0
2 1
3 2
4 3
5 4
Artinya data ke 1 dapat diakses menggunakan indeks 0 dan seterusnya. Dan
untuk melakukan proses manipulasi data dalam array menggunakan indeks dapat
digunakan dengan perintah :
namaArray [indeks];
Misal :
int a[] = new int [5];
a[0] = 234;
a[1] = 6867;
a[2] = 4234;
a[3] = 564;
Rangkuman Aplikasi dan Basis Data Page 66
a[4] = 2423;
System.out.println (a[0]);
System.out.println (a[1]);
System.out.println (a[2]);
System.out.println (a[3]);
System.out.println (a[4]);
Array merupakan jenis struktur data yang sangat dasar dan sangat penting.
Teknik pengolahan array merupakan teknik pemrograman yang paling penting yang kita
harus kuasai. Dua jenis teknik pengolahan array -- pencarian dan pengurutan -- akan
dibahas kemudian. Bagian ini akan memperkenalkan beberapa ide dasar pengolahan
array secara umum.
Dalam banyak hal, pengolahan array berarti menggunakan operasi yang sama kepada
setiap elemen di dalam array. Biasanya sering dilakukan dengan perulangan for.
Perulangan untuk mengolah semua elemen dalam array A dapat ditulis dalam bentuk :
// lakukan inisialiasi yang diperlukan sebelumnya
for (int i = 0; i < A.length; i++) {
. . . // proses A[i]
}
Misalnya, A adalah array dengan tipe double[]. Misalnya kita ingin menjumlah semua
nilai dalam array tersebut. Algoritma umum untuk melakukannya adalah :
Mulai dengan 0;
Tambah A[0]; (proses elemen pertama di dalam A)
Tambah A[1]; (proses elemen kedua di dalam A)
.
.
Rangkuman Aplikasi dan Basis Data Page 67
.
Tambah A[ A.length - 1 ]; (proses elemen terakhir di dalam A)
Dengan menggunakan pengetahuan yang kita telah pelajari tentang perulangan, kita
bisa ubah algoritma di atas menjadi bentuk perulangan for seperti berikut:
double jumlah; // Jumlah nilai di dalam A
jumlah = 0; // Mulai dengan 0
for (int i = 0; i < A.length; i++)
jumlah += A[i]; // tambah A[i] ke dalam jumlah untuk i = 0, 1, ..., A.length - 1
Lihat bahwa kondisi kelanjutan "i < A.length" menyatakan bahwa nilai i terakhir yang
akan diolah adalah A.length - 1 yaitu elemen terakhir dalam array. Ingat bahwa kita
menggunakan "<" bukan "<=" karena dengan "<=" komputer akan memberikan
kesalahan indeks di luar batas.
Pada akhirnya, nanti Anda akan bisa membuat perulangan seperti di atas di luar kepala.
Kita akan lihat beberapa contohnya. Di sini perulangan akan menghitung banyaknya
elemen di dalam array A yang nilainya kurang dari nol :
int hitung; // Untuk menghitung elemen
hitung = 0; // Mulai dengan nol
for (int i = 0; i < A.length; i++) {
if (A[i] < 0.0) // Jika elemen ini kurang dari nol
hitung++; // tambah hitung dengan 1
}
// Di sini nilai "hitung" adalah banyaknya elemen yang kurang dari 0.
Kita bisa mengganti "A[i] < 0.0" jika kita ingin menghitung banyaknya elemen di dalam
array yang memiliki sifat tertentu. Variasinya akan memiliki tema yang sama. Misalnya
kita ingin menghitung banyaknya elemen di dalam array A yang sama dengan elemen
sesudahnya. Elemen setelah A[i] adalah A[i+1], sehingga kita bisa mengganti klausa if
dengan "if (A[i] ==A[i+1])". Akan tetapi tunggu dulu : Tes ini tidak bisa digunakan apabila
A[i] adalah elemen terakhir dalam array, karena tidak ada lagi array sesudahnya.
Rangkuman Aplikasi dan Basis Data Page 68
Komputer akan menolak pernyataan ini. Sehingga kita harus berhenti satu elemen
sebelum array terakhir, sehingga menjadi
int hitung = 0;
// lihat kondisi for berubah dibandingkan dengan contoh sebelumnya
for (int i = 0; i < A.length - 1; i++) {
if (A[i] == A[i+1])
hitung++;
}
Masalah umum lainnya adalah mencari nilai terbesar di dalam array A.
Strateginya adalah lihat semua isi array, catat nilai terbesar saat itu. Kita akan simpan
nilai terbesar yang kita temui dalam variabel maks. Pada saat kita melihat elemen array
satu per satu, kapanpun kita melihat nilai elemen tersebut lebih besar dari maks kita
akan mengganti nilai maks dengan nilai yang lebih besar tersebut. Setelah semua
elemen array diproses, maka maks merupakan nilai elemen terbesar di dalam array
tersebut. Pertanyaannya adalah, apa nilai awal maks? Salah satu kemungkinannya
adalah mulai dengan nilai maks sama dengan A[0], baru kemudian melihat isi elemen
array lainnya mulai dengan A[1]. Misalnya,
double maks = A[0]; // nilai maks berisi elemen array pertama
for (int i = 1; i < A.length; i++) { // i mulai dari elemen kedua
if (A[i] > maks)
max = A[i];
}
// Di sini maks berisi nilai elemen array yang paling besar
(Ada masalah yang lebih penting di sini. Java membolehkan array memiliki
panjang nol. Artinya bahkan A[0] pun tidak ada di dalam array, sehingga memanggil A[0]
akan menghasilkan kesalahan indeks keluar batas. Akan tetapi array biasanya array
dengan panjang nol biasanya sesuatu yang kita ingin hindarkan dalam kehidupan sehari-
hari. Lagian apa artinya mencari nilai terbesar di dalam suatu array yang panjangnya
nol?)
Rangkuman Aplikasi dan Basis Data Page 69
Contoh terakhir dari operasi array, misalnya kita ingin mengkopi suatu array. Untuk
mengkopi array A, tidak cukup untuk menggunakan perintah
double[] B = A;
karena perintah ini tidak membuat objek array baru. Yang dibuat di sini adalah variabel
baru yang merujuk pada objek yang sama dengan A. (Sehingga perubahan yang terjadi
pada A[i] akan juga menyebabkan B[i] berubah). Untuk membuat array baru yang
merupakan kopi dari array A, kita harus membuat objek array baru, dan mengkopi isinya
satu per satu dari array A ke array baru, sehingga
// Buat objek array baru, yang panjangnya sama dengan panjang A
double[] B = new double[A.length];
for (int i = 0; i < A.length; i++)
B[i] = A[i]; // Kopi setiap elemen dari A ke B
Mengkopi nilai dari satu array ke array yang lain adalah operasi umum sehingga
Java memiliki subrutin untuk melakukannya, yaituSystem.arraycopy(), yang merupakan
subrutin anggota statik dari kelas standar System. Deklarasinya memiliki bentuk seperti :
public static void arraycopy(Object arraySumber, int indeksAwalSumber,Object
arrayTujuan, int indeksAwalTujuan, int jumlah)di mana arraySumber dan arrayTujuan
bisa berbentuk array dengan tipe apapun. Nilai akan dikopi dari arraySumber
kearrayTujuan. jumlah adalah berapa banyak elemen yang akan dikopi. Nilai akan dikopi
dari arraySumber mulai dari posisiindeksAwalSumber dan akan disimpan pada
arrayTujuan mulai dari posisi indeksAwalTujuan. Misalnya kita akan mengkopi array A,
maka kita bisa menggunakan perintah double B = new double[A.length];
System.arraycopy( A, 0, B, 0, A.length );
Suatu tipe array, misalnya double[] adalah tipe Java biasa, sehingga kita bisa
menggunakannya seperti tipe-tipe Java lainnya. Termasuk juga digunakan sebagai
parameter formal di dalam suatu subrutin. Juga bisa digunakan sebagai tipe keluaran
Rangkuman Aplikasi dan Basis Data Page 70
suatu fungsi. Misalnya, kita bisa menulis fungsi yang membuat kopi array dengan tipe
double sebagai berikut :
double[] kopi( double[] sumber ) {
// Membuat dan mengembalikan kopi array sumber
// Jika sumber null, maka kembalikan null
if ( sumber == null )
return null;
double[] kpi; // Kopi array sumber
kpi = new double[sumber.length];
System.arraycopy( sumber, 0, kpi, 0, sumber.length );
return kpi;
}
Rutin main() memiliki parameter dengan tipe String[] yang merupakan array
String. Ketika sistem memanggil rutin main(), string di dalam array ini adalah parameter
dari baris perintah. Jika kita menggunakan konsol, user harus mengetikkan perintah
untuk menjalankan program. User bisa menambahkan input tambahan dalam perintah
ini setelah nama program yang akan dijalankan.
Misalnya, jika kelas yang memiliki rutin main() bernama programKu, maka user
bisa menjalankan kelas tersebut dengan perintah "java programKu" di konsol. Jika kita
tulis dengan "java programKu satu dua tiga", maka parameter dari baris perintahnya
adalah "satu", "dua", dan "tiga". Sistem akan memasukkan parameter-parameter ini ke
dalam array String[] dan memberikan array ini pada rutin main().
Berikut ini adalah contoh program sederhana yang hanya mencetak parameter
dari baris perintah yang dimasukkan oleh user.
public class CLDemo {
public static void main(String[] args) {
System.out.println("Anda memasukkan " + args.length
+ " parameter dari baris perintah");
if (args.length > 0) {
Rangkuman Aplikasi dan Basis Data Page 71
System.out.println("Parameter tersebut adaah :");
for (int i = 0; i < args.length; i++)
System.out.println(" " + args[i]);
}
} // akhir main()
} // akhir kelas CLDemo
Perhatikan bahwa parameter args tidak mungkin null meskipun tidak ada
parameter yang dimasukkan. Jika tidak ada parameter dari baris perintah yang
dimasukkan, maka panjang array ini adalah nol.
Hingga sekarang, contoh yang telah diberikan adalah bagaimana mengolah array
dengan mengakses elemennya secara berurutan (sequential access). Artinya elemen-
elemen array diproses satu per satu dalam urutan dari awal hingga akhir. Akan tetapi
salah satu keuntungan array adalah bahwa array bisa digunakan untuk mengakses
elemennya secara acak, yaitu setiap elemen bisa diakses kapan saja secara langsung.
Misalnya, kita ambil contoh suatu masalah yang disebut dengan masalah ulang tahun:
Misalnya ada N orang di dalam suatu ruangan. Berapa kemungkinan dua orang di dalam
ruangan tersebut memiliki ulang tahun yang sama (yang dilahirkan pada tanggal dan
bulan yang sama, meskipun tahunnya berbeda)? Kebanyakan orang salah menerka
jawabannya. Sekarang kita lihat dengan versi masalah yang berbeda: Misalnya kita
memilih orang secara acak dan menanyakan ulang tahunnya. Berapa orang yang Anda
harus tanya untuk mendapatkan hari ulang tahun yang sama dengan orang
sebelumnya?
Tentunya jawabannya akan tergantung pada faktor yang bersifat acak, akan
tetapi kita bisa simulasikan dengan program komputer dan menjalankan beberapa kali
hingga kita tahu berapa kira-kira orang harus dicek.
Untuk mensimulasikan percobaan ini, kita harus mencatat semua ulang tahun yang kita
sudah tanyakan. Ada 365 kemungkinan hari ulang tahun (Kita abaikan sementara tahun
kabisat). Untuk setiap kemungkinan hari ulang tahun, kita perlu tahu, apakah hari ulang
Rangkuman Aplikasi dan Basis Data Page 72
tahun tersebut telah digunakan? Jawabannya adalah nilai boolean true atau false. Untuk
menyimpan data ini, kita bisa gunakan array dari 365 nilai boolean:
boolean[] sudahDitanya;
sudahDitanya = new boolean[365];
Tanggal-tanggal pada satu tahun dinomori dari 0 hingga 364. Nilai
sudahDitanya[i] akan bernilai true jika orang yang kita tanya berulang tahun pada hari
tersebut. Pada awalnya semua nilai pada array sudahDitanya[i] bernilai false. Ketika kita
memilih satu orang dan menanyakan hari ulang tahunnya, misalnya i, kita akan
mengecek terlebih dahulu apakah sudahDitanya[i] bernilai true. Jika tidak maka orang
ini adalah orang kedua dengan ulang tahun yang sama. Artinya kita sudah selesai.
Jika sudahDitanya[i] bernilai false, maka belum ada orang sebelum ini yang memiliki hari
ulang tahun tersebut. Kita akan gantisudahDitanya[i] dengan true, kemudian kita akan
tanyakan lagi kepada orang lain, dan begitu seterusnya hingga semua orang di dalam
ruangan ditanyakan.
static void masalahUlangTahun() {
// Melakukan simulasi dengan memilih seseorang secara acak
// dan mengecek hari ulang tahunnya. Jika hari ulang tahunnya
// sama dengan orang yang pernah kita tanya sebelumnya,
// hentikan program dan laporkan berapa orang yang sudah dicek
boolean[] sudahDitanya;
// Untuk mencatat ulang tahun yang sudah ditanyakan
// Nilai true pada sudahDitanya[i] berarti orang lain
// sudah ada yang berulang tahun pada hari i
int hitung;
// Jumlah orang yang sudah pernah ditanya
sudahDitanya = new boolean[365];
// Awalnya, semua nilai adalah false
Rangkuman Aplikasi dan Basis Data Page 73
hitung = 0;
while (true) {
// Ambil ulang tahun secara acak dari 0 hingga 364
// Jika ulang tahun telah ditanya sebelumnya, keluar
// Jika tidak catat dalam array
int ultah; // Ulang tahun seseorang
ultah = (int)(Math.random()*365);
hitung++;
if ( sudahDitanya[ultah] )
break;
sudahDitanya[ultah] = true;
}
System.out.println("Ulang tahun yang sama ditemukan setelah menanyakan "
+ hitung + " orang.");
} // akhir masalahUlangTahun()
Subrutin ini menggunakan fakta bahwa array boolean yang baru dibuat memiliki
seluruh elemen yang bernilai false. Jika kita ingin menggunakan array yang sama untuk
simulasi kedua, kita harus mereset ulang semua elemen di dalamnya menjadi false
kembali dengan perulangan for
for (int i = 0; i < 365; i++)
sudahDitanya[i] = false;
Array paralel adalah menggunakan beberapa array dengan indeks yang sama.
Misalnya kita ingin membuat beberapa kolom secara paralel -- array x di kolom
pertama, array y di kolom kedua, array warna di kolom ketiga, dan seterusnya. Data
Rangkuman Aplikasi dan Basis Data Page 74
untuk baris ke-i bisa didapatkan dari masing-masing array ini. Tidak ada yang salah
dengan cara ini, akan tetapi cara ini berlawanan dengan filosofi berorientasi objek yang
mengumpulkan data yang berhubungan di dalam satu objek. Jika kita mengikuti aturan
seperti ini, amaka kita tidak harus membayangkan hubungan data yang satu dan yang
lainnya karena semua data akan dikelompokkan di dalam satu tempat.
Misalnya saya menulis kelas seperti
class DataString {
// Data dari salah satu pesan
int x,y; // Posisi pesan
Color warna; // Warna pesan
}
Untuk menyimpan data dalam beberapa pesan, kita bisa menggunakan array
bertipe DataString[], yang kemudian dideklarasikan sebagai variabel instansi dengan
nama data sehingga
DataString[] data;
Isi dari data bernilai null hingga kita membuat array baru, misalnya dengan
data = new DataString[JUMLAH_PESAN];
Setelah array ini dibuat, nilai setiap elemen array adalah null. Kita ingin
menyimpan data di dalam objek yang bertipeDataString, akan tetapi tidak ada objek
yang dibuat. Yang kita sudah buat hanyalah kontainernya saja. Elemen di dalamnya
berupa objek yang belum pernah kita buat. Untuk itu elemen di dalamnya bisa kita buat
dengan perulangan for seperti :
for (int i = 0; i < JUMLAH_PESAN; i++)
data[i] = new DataString();
Sekarang kita bisa mengambil data setiap pesan dengan data[i].x, data[i].y, dan
data[i].warna.Terakhir berkaitan dengan pernyataan switch. Misalnya kita memiliki nilai
bulan dari 0 hingga 11, yang melambangkan bulan dalam satu tahun dari Januari hingga
Desember. Kita ingin mencetaknya di layar, dengan perintah
switch (bulan) {
Rangkuman Aplikasi dan Basis Data Page 75
case 0:
bulanString = "Januari";
break;
case 1:
bulanString = "Februari";
break;
case 2:
bulanString = "Maret";
break;
case 3:
bulanString = "April";
break;
.
.
.
case 11:
bulanString = "Desember";
break;
default:
bulanString = "Salah bulan";
}
Kita bisa mengganti keseluruhan perintah switch tersebut dengan menggunakan
array, misalnya dengan array namaBulan yang dideklarasikan sebagai berikut :
static String[] namaBulan = { "Januari", "Februari", "Maret",
"April", "Mei", "Juni", "Juli", "Agustus", "September",
"Oktober", "November", "Desember" };
Kemudian kita bisa ganti keseluruhan switch di atas dengan
bulanString = namaBulan[bulan];
4.1.4 Mendeklarasikan Array
Rangkuman Aplikasi dan Basis Data Page 76
Untuk membuat variabel array pun berbeda dengan membuat variabel biasanya
yaitu sebagai berikut :
TipeArray namaArray [];
Dimana tipe array dapat berupa tipe data biasa seperti int, char, short atau juga
kelas seperti String dan yang lainya.
BAB V
PEMROGRAMAN BERORIENTASI OBJEK
Rangkuman Aplikasi dan Basis Data Page 77
Pemrograman berorientasi objek merupakan paradigma pemrograman yang
berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus
dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman
terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan
ke objek lainnya,
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih,
kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala
besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari
bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih
mudah dikembangkan dan dirawat.
Konsep dasar dari Pemrograman Berorientasi Objek Pemrograman orientasi-
objek menekankan konsep berikut:
1. Kelas
Kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu
tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-
definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan
dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam
pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali
oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang
ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan
independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP).
Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek
dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan
menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
2. Objek
Rangkuman Aplikasi dan Basis Data Page 78
Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah
program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah
program komputer berorientasi objek.
3. Abstraksi
Kemampuan sebuah program untuk melewati aspek informasi yang diproses
olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem
melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan
perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa
mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat
juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah
pengabstrakan.
4. Enkapsulasi
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari
sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang
diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang
menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya
tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
5. Polimorfisme
Melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin,
bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan
dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa
tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia
akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama,
dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang
sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme
Rangkuman Aplikasi dan Basis Data Page 79
karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek
yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil
beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama.
Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui
penggunaan fungsi kelas-pertama.
Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah
kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur)
tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai
contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris,
petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data
dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi
dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut
seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut
tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi.
Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada
karena setiap objek memiliki deskripsi tugasnya sendiri.
5.1 Objek, Metode Instansi dan Variable Instansi
Pada pemrograman berorientasi objek, kita membagi masalah pemrograman
berdasarkan objek atau "sesuatu" benda. Objek ini diibaratkan seperti makhluk hidup,
yaitu memiliki ciri-ciri fisik dan juga perilaku. Dalam pemrograman berorientasi objek,
ciri-ciri fisik ini disebut juga sebagai atribut, pada dasarnya berisi informasi tentang
objek tersebut. Sedangkan perilaku disebut sebagai metode, yaitu bagaimana suatu
objek bertindak atau melakukan sesuatu.
Dengan cara ini diharapkan pemrograman berorientasi objek merupakan
pemrograman yang lebih alami dibandingkan dengan pemrograman berorientasi
prosedur, karena cara fikir kita sudah terbiasa dengan bagaimana kita berinteraksi
Rangkuman Aplikasi dan Basis Data Page 80
dengan dunia.Objek dalam kaitannya dengan dasar pemrograman adalah gabungan dari
variabel (dalam hal ini atribut) dan subrutin (yaitu metode) yang berinteraksi dengan
variabel pada objek.
Seperti disebutkan sebelumnya bahwa kelas mendeskripsikan suatu objek, atau
lebih tepatnya, bagian non "static" mendeskripsikan suatu objek. Mungkin bahasa
biologi, kelas adalah species, sedangkan objek merupakan individu. Human sapiens
(nama biologi manusia) adalah kelas, sedangkan Anda, saya, ibu, bapak, pak hansip
adalah objek. Masing-masing dari kita memiliki "blueprint" atau cetak biru yang sama,
tetapi kita memiliki ciri-ciri yang berbeda, rambut, mata, telinga, tinggi badan, berat
badan, dan juga perilaku kita saat makan, minum, belajar, dan lain-lain.
Dalam sudut pandang pemrograman, kelas digunakan untuk menciptakan suatu
objek. Atau dengan kata lain, kelas adalah pabrik pembuat objek. Bagian non-statik dari
suatu kelas adalah bagian yang memuat detail suatu objek, yaitu apa isi variabel dan
metodenya. Perbedaan kelas dan objek adalah : Objek diciptakan dan dihancurkan
ketika program berjalan, sehingga kita bisa memiliki beberapa objek sekaligus.
Kita lihat contoh sederhana, dimana kelas sederhana digunakan untuk
menggabungkan beberapa variabel statik.
Misalnya
class DataPenduduk {
static String nama;
static int umur;
}
Dalam hal ini tidak ada lagi yang variabel DataPenduduk.nama dan
DataPenduduk.umur, karena nama dan umur bukan anggota statik kelas DataPenduduk.
Jadi, tidak ada yang bisa kita lakukan dengan kelas ini sama sekali, kecuali membuat
objek dari kelas ini.Sekarang kita gunakan contoh yang lebih real. Kita akan buat versi
sederhana dari kelas Murid, dimana kita akan menyimpan informasi tentang murid yang
terdaftar pada suatu sekolah.
class Murid {
Rangkuman Aplikasi dan Basis Data Page 81
String nama ; // nama murid
double nilai1, nilai2, nilai3; // nilai ulangan murid tersebut
double hitungRataRata() { // hitung rata-rata nilai ulangan
return (nilai1 + nilai2 + nilai3) / 3;
}
}
Kita lihat bahwa semua anggota kelas tersebut bukan anggota statik, artinya
kelas ini hanya bisa digunakan untuk membuat objek. Definisi kelas ini artinya bahwa di
dalam objek yang akan diciptakan, akan ada variabel instansi yang bernama nama,nilai1,
nilai2, dan nilai3, dan juga metode instansi yang bernama hitungRataRata(). Setiap
murid memiliki nilai rata-rata yang berbeda-beda. (Makanya ini disebut perilaku suatu
objek berbeda-beda).
Dalam Java, kelas merupakan tipe data, yaitu mirip dengan tipe data bawaan
seperti int atau boolean. Jadi nama kelas bisa digunakan untuk menentukan tipe suatu
variabel dalam deklarasi pernyataan,
Dalam Java, tidak ada variabel yang bisa menyimpan objek. Variabel hanya bisa
menyimpan referensi (alamat di memori) suatu objek. Komputer akan menggunakan
referensi ini untuk mencari objek di dalam memori.
Objek diciptakan dengan pernyataan new, yang bertugas menciptakan objek
kemudian mengembalikan referensi ke objek yang sudah diciptakan. Misalnya amir
adalah variabel dengan tipe Murid seperti dideklarasikan di atas, maka pernyataan
berikut :
amir = new Murid();
akan membuat objek yang merupakan instansi dari kelas Murid. Variabel amir
akan menyimpan referensi ke objek yang baru saja diciptakan.
Sekarang anggap variabel amir merujuk pada objek yang diciptakan dari kelas
Murid. Dalam objek tersebut terdapat variabelnama, nilai1, nilai2, dan nilai3. Variabel
instansi ini bisa dipanggil dengan amir.nama, amir.nilai1, amir.nilai2, danamir.nilai3.
(Ingat aturan penulisan nama lengkap, akan tetapi karena kelas ini tidak memiliki
Rangkuman Aplikasi dan Basis Data Page 82
anggota statik, dan hanya objek yang diciptakan dari kelas ini memiliki variabel atau
metode ini, maka nama lengkapnya diturunkan dari nama objek yang memilikinya).
Misalnya, program berikut :
System.out.println("Hai, " + amir.nama + " . Nilai Anda adalah : ");
System.out.println(amir.nilai1);
System.out.println(amir.nilai2);
System.out.println(amir.nilai3);
Program di atas akan mencetak nama dan nilai-nilai yang disimpan oleh objek
amir. Begitu juga kita bisa menghitung rata-rata pada suatu objek dengan menggunakan
amir.hitungRataRata(). Sehingga untuk menghitung rata-rata murid tersebut, bisa kita
perintahkan dengan:
System.out.println("Nilai rata-rata Anda adalah : " + amir.hitungRataRata());
Lebih umum lagi, kita bisa menggunakan amir.nama seperti layaknya variabel
bertipe String, artinya kita bisa menghitung jumlah karakter dengan menggunakan
amir.nama.length().
Kita juga bisa membuat variabel seperti amir untuk tidak menunjuk atau memiliki
referensi ke obek mana pun. Dalam hal ini kita sebut bahwa objek amir berisi referensi
kosong (null reference). Referensi kosong ini ditulis dalam Java dengan ekspresi "null".
Dan kita bisa menyimpan nilai "null" pada variabel amir dengan perintah :
amir = null;
Dan kita juga bisa uji apakah amir berisi referensi kosong dengan perintah
if (amir == null) . . .
Jika suatu variabel berisi referensi kosong, maka tentu saja, kita tidak bisa
mengambil variabel instansi dan menjalankan metode instansi, karena tidak ada objek
yang dirujuk pada variabel tersebut. Misalnya jika variabel amir berisi null, maka kita
tidak bisa mengambil variabel amir.nilai1. Jika program kita mencoba mengakses
referensi kosong secara ilegal, maka di tengah-tengah jalannya program, program akan
menampilkan pesan kesalahan "null pointer exception".
Mari kita lihat beberapa pernyataan yang bisa digunakan dengan objek :
Rangkuman Aplikasi dan Basis Data Page 83
Murid mrd1, mrd2, mrd3, mrd4; // mendeklarasikan 4 variabel yang bertipe
Murid
mrd1 = new Murid(); // membuat objek baru dari kelas Murid, kemudian
menyimpan referensinya pada variabel mrd1
mrd2 = new Murid(); // membuat objek baru dari kelas Murid, kemudian
menyimpan referensinya pada variabel mrd2
mrd3 = mrd1; // menkopi „referensi" yang disimpan pada mrd1 ke
mrd3
mrd4 = null; // menyimpan referensi kosong ke mrd4
mrd1.nama = "Ahmad Surahmat"; // mengisi nilai variabel instansi
mrd2.nama = "Hamid Samsudin";
Setelah komputer menjalankan program tersebut, maka kira-kira memori
komputer akan tampak seperti gambar berikut :
Rangkuman Aplikasi dan Basis Data Page 84
Gambar tersebut menunjukkan variabel dalam kotak-kotak kecil dengan nama
variabelnya. Objek ditunjukkan dalam kotak dengan pojok bulat. Ketika suatu variabel
berisi referensi ke suatu objek, maka nilainya adalah seperti panah yang menunjuk pada
objek tersebut.
Variabel mrd4 bernilai null, sehingga tidak menunjuk ke mana-mana. Panah dari
mrd1 dan mrd3 menjunjuk pada objek ang sama. Ini merupakan Hal Yang Sangat
Penting :
Jika isi variabel suatu objek diberikan kepada variabel yang lain, maka yang dikopi
hanya referensinya saja. Isi objek tidak pernah dikopi.
Ketika pernyataan "mrd3 = mrd1;" dieksekusi, tidak ada objek baru yang dibuat.
Akan tetapi mrd3 akan merujuk pada alamat yang sama seperti mrd1. Konsekuensinya
mungkin sedikit mengejutkan. Misalnya variabel mrd1.nama dan mrd3.nama menunjuk
pada variabel yang persis sama, maka apabila mrd1.nama disi dengan "Juju Juminten",
maka mrd3.nama juga berisi "Juju Juminten".
Sekali lagi, variabel tidak berisi objek, akan tetapi berisi referensi ke suatu objek.
Kita bisa menguji beberapa objek dengan operator == dan != untuk menguji
kesamaan dan ketidaksamaan. Akan tetapi yang dicek lagi-lagi bukan isi objek,
melainkan alamat memori dimana objek tersebut dijadikan referensi. Jika alamat
referensi di memori sama, artinya kedua objek tersebut merujuk pada alamat memori
yang sama. Ini berarti perubahan yang dilakukan pada variabel yang satu akan ikut
mempengaruhi variabel yang lain.
Untuk menguji isinya, maka isinya harus dibandingkan satu per satu, yaitu
misalnya dengan "mrd3.nilai1 == mrd1.nilai1 &&mrd3.nilai2 == mrd1.nilai2 &&
mrd3.nilai3 == mrd1.nilai3 && mrd3.nama.equals(mrd1.nama)"
Seperti telah disebutkan sebelumnya bahwa String juga merupakan objek.
Sehingga membandingkan String yang satu dengan String yang lain dengan
menggunakan tanda == adalah membandingkan apakah alamat memori yang ditunjuk
oleh String yang satu sama dengan alamat memori yang ditunjuk oleh String yang lain.
Ingat == pada objek bukan membandingkan isi objek, tetapi membandingkan alamat
Rangkuman Aplikasi dan Basis Data Page 85
memori yang ditunjuk oleh variabel tersebut. Untuk membandingkan isi String, kita
dapat menggunakan String.equals() di mana parameternya adalah objek String yang
akan dibandingkan. Metode ini akan membandingkan karakter per karakter dari kedua
String.
Misalnya, variabel salam berisi String "Selamat". Untuk menguji apakah variabel
salam berisi "Selamat", bisa kita gunakan perintah
salam.equals("Selamat")
Konsekuensi lainnya adalah apabila suatu variabel merujuk pada objek yang
dideklarasikan sebagai final. Ini berarti nilai variabel itu tidak bisa berubah setelah
diinisialisasi, sedangkan isi variabel itu adalah rujukan ke alamat memori tempat objek
berada. Dengan demikian variabel tersebut akan selalu menunjuk pada alamat memori
yang sama. Akan tetapi hal ini tidak berlaku untuk objek itu sendiri. Apabila ada variabel
lain yang tidak "final" tetapi menunjuk pada alamat memori yang sama, kemudian
variabel ini mengubah isi objek tersebut, maka isi objek tersebut bisa berubah.
Kita boleh saja untuk menulis perintah sebagai berikut.
final Murid mrd = new Murid();
murid.nama = "Ahmad Basir";
Perhatikan pada kode di atas bahwa isi objek bisa diubah. Akan tetapi jika kita
mencoba menulis seperti ini
Murid mrd99 = new Murid();
mrd = mrd99; // ILEGAL, karena mrd adalah variabel final
5.2 Konstruktor dan Inisialisasi Objek
Kelas pada Java memiliki sifat yang sama sekali berbeda dengan tipe data primitif
lainnya, seperti int atauboolean. Seperti disebutkan pada bagian sebelumnya,
mendeklarasikan suatu variabel dengan tipe suatu kelas tidak berarti membuat objek
dari kelas tersebut. Objek tersebut harus dibuat (constructed). Pada saat objek dibuat,
komputer akan mencari tempat yang tidak dipakai pada memori heap untuk
Rangkuman Aplikasi dan Basis Data Page 86
menempatkan objek tersebut, kemudian mengisi objek itu dengan variabel instansi.
Sebagai programmer, kita tidak peduli dengan bagaimana suatu objek disimpan, akan
tetapi kita ingin mengatur supaya nilai yang disimpan pada saat objek tersebut dibuat
sesuai dengan keinginan kita. Dalam beberapa kasus, kita bahkan ingin suatu objek
melakukan tugas tertentu untuk pertama kali begitu ia diciptakan.
Variabel instansi dapat diisi dengan nilai awal pada saat ia dideklarasikan, seperti
variabel lainnya. Misalnya, kelas berikut yang bernama PasanganDadu, yang
melambangkan sepasang dadu. Kelas ini memiliki dua variabel instansi yang
melambangkan nilai yang ditunjukkan oleh masing-masing dadu dan metode instansi
untuk mengocok dadu, yaitu :
class PasanganDadu {
public int dadu1 = 3; // Angka pada dadu pertama
public int dadu2 = 4; // Angka pada dadu kedua
public void kocok() {
// Kocok dadu dengan menggunakan bilangan acak antara 1 dan 6
dadu1 = (int)(Math.random()*6) + 1;
dadu2 = (int)(Math.random()*6) + 1;
}
} // akhir kelas PasanganDadu
Variabel instansi dadu1 dan dadu2 diisi dengan nilai awal 3 dan 4. Inisialisasi ini
dilakukan setiap kali objek PasanganDadu dibuat. Ingat bahwa kelas PasanganDadu
hanya 1, akan tetapi kita bisa membuat banyak objek dari kelas ini. Setiap kali objek
dibuat, objek tersebut memiliki tempat di memori sendiri, yang disebut dengan instansi
objek tersebut. Perintah "dadu1 = 3" dan "dadu2 = 4" akan dieksekusi setiap kali objek
dibuat.
Kita bisa memodifikasi kelas PasanganDadu dengan nilai awal acak, bukan 3 dan 4
misalnya, dengan potongan kode berikut :
class PasanganDadu {
Rangkuman Aplikasi dan Basis Data Page 87
public int dadu1 = (int)(Math.random()*6) + 1; // Angka pada dadu pertama
public int dadu2 = (int)(Math.random()*6) + 1; // Angka pada dadu kedua
public void kocok() {
// Kocok dadu dengan menggunakan bilangan acak antara 1 dan 6
dadu1 = (int)(Math.random()*6) + 1;
dadu2 = (int)(Math.random()*6) + 1;
}
} // akhir kelas PasanganDadu
5.3 Kata Kunci This
Meskipun ide dasar dari pemrograman berorientasi objek merupakan konsep
yang cukup sederhana dan jelas, akan tetapi untuk memahaminya dengan baik kita
membuthkan lebih banyak waktu. Sayangnya, banyak sekali detail yang harus diulas di
luar konsep dasarnya. Bagian ini dan bagian berikutnya akan berbicara tentang hal-hal
detail, yang tidak perlu dikuasai dalam waktu singkat, akan tetapi pengenalan tentang
hal detail ini sangat berguna paling tidak sebagai bahan referensi.
Anggota statik suatu kelas bisa digunakan langsung di dalam kelas tersebut.
Untuk digunakan di kelas lain, maka ia harus dipanggil dengan nama lengkapnya dalam
bentuk "namaKelas.namaAnggota", misalnya "System.out" adalah variabel anggota
statik dengan nama "out" di dalam kelas "System". Kita bisa menggunakan nama
lengkap kelas tersebut di manapun, bahkan dari dalam kelas yang sama, misalnya
karena nama anggota tersebut disembunyikan oleh variabel lokal yang namanya sama.
Variabel dan metode instansi juga bisa digunakan langsung di dalam kelas
tersebut, misalnya suatu variabel instansi bisa digunakan langsung oleh metode instansi
di kelas yang sama. Anggota instansi juga memiliki nama lengkap akan tetapi ingat
bahwa anggota instansi dimiliki oleh objek, bukan kelas. Sehingga untuk memanggil
Rangkuman Aplikasi dan Basis Data Page 88
suatu anggota instansi, kita harus menggunakan nama objek yang diciptakan dari kelas
tersebut, dalam bentuk namaObjek.namaAnggota.
Akan tetapi, misalnya kita sedang menulis metode instansi di suatu kelas. Bagaimana
caranya kita memanggil anggota instansi kelas yang sama jika kita belum tahu nama
objek apa yang diciptakan dari kelas ini?
Java memiliki variabel spesial yang dinamakan "this" yang bisa digunakan untuk kasus di
atas. Variabel ini digunakan pada suatu objek untuk memanggil metode atau variabel
instansi pada objek yang sama. Maksudnya, this, merujuk pada "objek ini" yaitu objek di
mana metode sedang dijalankan. Jika x adalah variabel instansi dalam suatu objek, maka
this.x adalah nama lengkap variabel tersebut jika dipanggil dari dalam objek yang sama.
Jika metode suatuMetode() adalah metode instansi pada suatu objek, maka
this.suatuMetode() bisa digunakan untuk memanggil metode tersebut dari objek yang
sama. Ketika komputer menjalankan perintah tersebut, komputer akan mengganti
variabel this dengan objek yang berjalan pada saat itu.
Salah satu kegunaaan this adalah pada konstruktor, misalnya :
public class Murid {
private String nama; // Nama murid
public Murid(String nama) {
// Konstruktor, membuat murid dengan nama yang diberikan
this.nama = nama;
}
.
. // Variabel dan metode lain.
.
}
Dalam konstruktor di atas, variabel instansi nama disembunyikan oleh parameter
formal yang bernama sama. Akan tetapi, variabel instansi masih tetap bisa dipanggil
dengan nama lengkapnya, this.nama. Cara ini merupakan cara yang lazim, artinya kita
Rangkuman Aplikasi dan Basis Data Page 89
tidak perlu mengganti nama parameter formal dengan nama lain agar namanya tidak
bentrok dengan nama salah satu variabel instansinya. Kita bisa menggunakan nama
parameter formal yang sama persis dengan variabel instansinya.
Ada lagi kegunaan lain dari this. Ketika kita sedang menulis metode instansi, kita
ingin memberikan objek sebagai parameter aktual. Dalam hal ini, kita bisa menggunakan
this sebagai parameter aktualnya. Misalnya, kita ingin mencetak suatu objek sebagai
string, kita bisa menggunakan perintah "System.out.println(this);". Atau kita ingin
mengisi nilai this ke dalam variabel lain. Pokoknya, kita bisa melakukan segala hal seperti
layaknya variabel kecuali mengganti isinya.
5.4 Kelas Bertingkat
Suatu kelas merupakan blok bangunan suatu program, yang melambangkan
suatu ide beserta data dan perilaku yang dimilikinya. Kadang-kadang kita mungkin
berasa sedikit aneh untuk membuat kelas kecil hanya untuk menggabungkan beberapa
data. Akan tetapi kadang-kadang kelas-kelas kecil ini sering bermanfaat dan penting.
Untungnya Java membolehkan kita untuk membuat kelas di dalam kelas lain, sehingga
kelas-kelas kecil ini tidak perlu berdiri sendiri. Kelas kecil ini menjadi bagian dari suatu
kelas besar yang bisa melakukan hal-hal kompleks lainnya. Kelas kecil ini misalnya
berguna untuk mendukung operasi yang akan dikerjakan oleh kelas besarnya.
Dalam Java, kelas bertingkat atau kelas bagian dalam adalah kelas yang ditulis di
dalam definisi kelas lain. Kelas bagian dalam ini bisamemiliki nama atau anonim (tanpa
nama). Kelas bagian dalam yang memiliki nama tampak seperti kelas biasa, tetapi ia
ditulis di dalam kelas lain. (Kelas bagian dalam ini juga bisa memiliki kelas bagian dalam
yang lain, akan tetapi ingat akan konsekuensi kerumitannya apabila kita membuat
terlalu banyak tingkatan).
Seperti komponen lain dalam suatu kelas, kelas bagian dalam yang memiliki
nama bisa berupa kelas statik atau kelas non-statik. Kelas bertingkat statik merupakan
bagian dari struktur statik dari kelas yang menaunginya. Kelas tersebut bisa digunakan di
dalam kelas induknya untuk membuat objek seperti biasa. Jika tidak dideklarasikan
Rangkuman Aplikasi dan Basis Data Page 90
sebagai private, makan kelas tersebut juga bisa digunakan dari luar kelas induknya. Jika
digunakan dari luar kelas induknya, namanya harus jelas mencantumkan nama kelas
induknya. Mirip seperti komponen statik dari suatu kelas : kelas bertingkat statik adalah
bagian kelas di mana kelas tersebut mirip dengan variabel anggota statik lainnya di
dalam kelas tersebut.
Misalnya, suatu kelas bernama ModelRangkaKawat melambangkan kumpulan
garis dalam ruang 3 dimensi. Misalnya kelasModelRangkaKawat memiliki kelas
bertingkat statik yang bernama Garis yaitu sebuah garis. Maka dari luar
kelasModelRangkaKawat, kelas Garis akan dipanggil sebagai ModelRangkaKawat.Garis.
Kelas ModelRangkaKawat dan kelas bagian dalamnya dapat dituliskan seperti
berikut :
public class ModelRangkaKawat {
. . . // anggota lain kelas ModelRangkaKawat
static public class Garis {
// Melambangkan garis dari titik (x1,y1,z1)
// ke titik (x2,y2,z2) dalam ruang 3-dimensi
double x1, y1, z1;
double x2, y2, z2;
} // akhir kelas Garis
. . . // anggota lain kelas ModelRangkaKawat
} // akhir kelas ModelRangkaKawat
Di dalam kelas ModelRangkaKawat, objek Garis bisa dibuat dengan konstruktor
"new Garis()". Di luar kelas, perintah "newModelRangkaKawat.Garis()" harus digunakan.
Kelas bertingkat statik memiliki akses penuh kepada anggota dari kelas induknya,
termasuk ke anggota private. Mungkin ini juga motivasi sebagian orang untuk membuat
Rangkuman Aplikasi dan Basis Data Page 91
kelas bertingkat, karena kelas bagian dalamnya bisa mengakses anggota private kelas
lain tanpa harus membuat variabel atau metode anggotanya menjadi public.
Ketika kita mengkompilasi definisi kelas di atas, dua file kelas akan dibuat.
Meskipun definisi kelas Garis berada di dalamModelRangkaKawat, akan tetapi kelas
Garis akan disimpan dalam file terpisah. Nama file kelas Garis akan
menjadiModelRangkaKawat$Garis.class
Kelas bertingkat yang tidak statik, pada prakteknya, tidak jauh berbeda dengan
kelas bertingkat statik, akan tetapi kelas bertingkat non-statik berkaitan dengan suatu
objek, bukan kelas induknya.
Anggota non-statik dari suatu kelas sebenarnya bukan merupakan bagian dari
kelas itu. Hal ini juga berlaku untuk kelas bertingkat non-statik seperti juga bagian kelas
non-statik lainnya. Anggota non-statik suatu kelas menjelaskan apa yang akan disimpan
dalam objek yang diciptakan dari kelas tersebut. Hal ini juga berlaku (secara logis) dari
kelas bertingkat non-statik.
Dengan kata lain, setiap objek yang diciptakan dari kelas induknya memiliki kopi
kelas bertingkat masing-masing. Kopi ini memiliki akses ke semua variabel dan metode
instansi objek tersebut. Dua objek kelas bagian dalam pada dua objek induk merupakan
objek berbeda karena metode dan variabel instansi yang bisa diakses berasal dari objek
yang berbeda.
Pada dasarnya, aturan untuk menentukan kapan suatu kelas bisa dimasukkan ke
dalam kelas lain sebagai kelas statik atau non-statik adalah : Jika kelas tersebut perlu
menggunakan variabel atau metode instansi suatu objek (bukan variabel atau metode
statik kelas), maka kelas tersebut harus dibuat non-statik, jika tidak maka harus dibuat
statik.
Dari luar kelas induknya, kelas bertingkat non-statik harus dipanggil dalam
bentuk namaVariabel.NamaKelasBertingkat, misalnya namaVariabel adalah variabel
yang merujuk pada objek yang memiliki kelas bertingkat tersebut. Sebetulnya cara ini
agak langka. Kelas bertingkat non-statik biasanya digunakan hanya di dalam kelas
induknya, sehingga bisa diakses dengan nama yang sederhana.
Rangkuman Aplikasi dan Basis Data Page 92
Untuk membuat objek yang merupakan kelas bertingkat non-statik, kita harus
membuat objek yang merupakan kelas induknya. (Ketika bekerja di dalam kelas, objek
"this" akan secara otomatis digunakan). Objek dari kelas bertingkat tersebut
dihubungkan secara permanen dengan objek dari kelas induknya, dan memiliki akses
penuh atas anggota kelas induknya.
Mari lihat contoh berikut, dan mungkin bisa memberi pemahaman lebih baik
bagaimana kelas bertingkat non-statik sebetulnya merupakan hal yang sangat alami.
Misalnya suatu kelas yang melambangkan permainan kartu. Kelas ini memiliki kelas
beringkat yang melambangkan para pemainnya. Struktur MainKartu bisa berbentuk
seperti :
class MainKartu { // Melambangkan permainan kartu
class Pemain { // Melambangkan salah satu pemain game ini
.
.
.
} // akhir kelas Pemain
private Tumpukan tumpukan; // Tumpukan kartu
} // akhir kelas MainKartu
Rangkuman Aplikasi dan Basis Data Page 93
BAB VI
Konstruktor dan Overloading
JAVA merupakan program yang berorientasi Object. Dalam program yang
beroirentasi object mempunya konsep sebagai berikut :
1. Pemrograman berorientasi pada objek secara prinsip menjadikan objek sebagai
komponen utama dalam program
2. Objek menggabungkan data dan fungsi dalam satu kesatuan, sedangkan program yang
non objek menjadikan fungsi sebagai fokus utama
Rangkuman Aplikasi dan Basis Data Page 94
3. Pendekatan pemrograman berorientasi pada objek membuat pengembangan program
dapat dilakukan dengan mudah, mengurangi duplikasi kode program serta mengurangi
kesalahan
Dengan konsep seperti yang dijelaskan di atas, kita bias melihat bahwasannya
dengan mengunakan program yang berorientasi dengan lebih baik karena object
merupakan pecahan dari kelas. Agar lebih jelasnya kita menguanakan contoh seperti
ini :
1. Dalam penuliasan program, kita mendeklarasikan kelas mobil, dan didalam kelas mobil,
di dalam kelas mobil ada variable warna, merk dan tahun pembuatan.
2. Untuk membuat object kelas, dengan menulis sintax seperti ini
NamaKelas NamaObjek = new NamaKelas();
Atau
NamaKelas NamaObjek = new NamaKelas(...,...);
3. Dalam main class kita ingin mengakses variable variable tersebut, dengan mengunakan
bantuan object, kita bias mengakses variable tersebut tanpa harus mendeklarasikan
ulang variable variable tersebut, sebagai contoh :
Rangkuman Aplikasi dan Basis Data Page 95
Dalam contoh di atas, object merupakan object dari kelas mobil, yang dimana
disana terdapat object merk, thn_pembuatan, dan warnanya. Hasil dari program itu
adalah sebagai berikut :
Object dalam java juga bias untuk metoda (fungsi ) sebagai contoh :
Rangkuman Aplikasi dan Basis Data Page 96
Jadi dalam contoh program di atas, object.masukanpanjang() merupakan object
untuk metoda masukanpanjang(), karena berbeda kelas, dibutuhkan object untuk
menjebatani hal tersebut , dah hasil program di atas ialah sebagai berikut :
1. Konstruktor
Konstruktor ialah metoda yang memiliki nama yang sama dengan nama kelasnya,
konstrutor tidak memiliki nilai return, biasanya di gunakan untuk menginisialisasi
variable variable yang nantinya akan dip roses dip roses proses berikutnya. Konstruktor
dapat digunakan apabila pada suatu kelas access modifier pada variabel ingin dibuat
private, karena tanpa konstruktor maka akses terhadap variabel tersebut hanya bisa
pada kelas yang sama (tidak untuk kelas lain di luar kelas tersebut)
Contoh contoh pengunaan konstruktor ialah :
Rangkuman Aplikasi dan Basis Data Page 97
Access modifier nama_konstruktor ( Int a, int b, dst)
{
Jumlah = a;
Hasil = b;
}
Contoh Kostruktor
Nama konstruktor harus sama dengan nama kelasnya. Jadi jika ingin
mengunakan konstruktor, harus sama dengan nama kelasnya.
2. Overloading
Ialah metoda untuk membuat nama metoda ataupun kostruktor dengan nama
yang sama tetapi berbeda fungsi. Tujuannya di buat teknik overloading ini ialah agar
lebih fleksibel dan nama konstruktor ataupun metoda bisa sama namun berbeda
fungsinya, jadi lebih mudah, tidak terlalu banya membuat nama metoda.
Contoh Overloading :
Acces modifier tambah (int a, int b){
Isi metoda atau konstruktor;
}
Acces modifier tambah (int a,int b, int c){
Rangkuman Aplikasi dan Basis Data Page 98
Isi metoda / konntruktor
}
Jadi sebenarnya bisa sama nama, namun berbeda fungsinya di karenakan
parameter acuan dari metoda ataupun konstruktor berbeda, itulah yang membedakan
dari fungsinya, tapi jika nama metoda sama dan parameter acuannya sama pula, itu
tidak akan bisa overloading, overloading terjadi apabila nama metoda sama namun
parameter acuannya berbeda.
BAB VII
Inheritance, Polimorfisme, Abstract, dan Packet
Rangkuman Aplikasi dan Basis Data Page 99
1. Inheritance
Inheritance ialah pewarisan, jadi anak kelas akan mewarisi sifat sifat dari induk
kelas, seperti variable, metoda, namun, harus diingat, pewarisan ini hanya mewarisi sifat
sifat variable, dan metodanya, jikailau data ataupun isi variable itu tidak termasuk ke
dalam inheritance, dan untuk mengaksesnya juga di butuhkan object, dan harus me
input ulang untung data dari variable dan metoda.
Contoh dari Inheritance ialah :
Rangkuman Aplikasi dan Basis Data Page 100
Dalam inheritance ada sintax yang harus ada yaitu :
1.1 Extend
hal ini menandakan bahwa anak kelas menginduk ke induk kelas, contoh :
Jadi jika ada kata kunci extends ini, akan menandakan bahwa kelas polban
menginduk ke kelas dikti.
1.2 Superclass
Super class ialah kelas induk, jadi kelas yang menjadi acuan dari anak anak
kelasnya. Jika melihat contoh 1 di atas, maka kelas dikti menjadi superclassnya.
1.3 Subclass
Subclass ialah kelas anak, jadi kelas yang menginduk ke superclass, jadi kalau
melihat contoh 1 diatas, yang menjadi subclass ialah polban, yang menginduk ke
superclassnya yaitu kelas dikti.
Rangkuman Aplikasi dan Basis Data Page 101
Class polban extends dikti{Isi kelas;}
Contoh 1
1.4 Super
Keyword ini digunakan untuk memanggil konstruktor dari superclass atau
menjadi variabel yang mengacu pada superclass.
2. Polimorfisme
Polimorfisme ialah kemampuan untuk object bisa mengakses banyak bentuk.
jadi Polimorfisme berarti kemampuan dari suatu variabel referensi objek untuk memiliki
aksi berbeda bila method yang sama dipanggil, dimana aksi method tergantung dari tipe
objeknya. contoh dari polimorfisme ialah :
Rangkuman Aplikasi dan Basis Data Page 102
Jadi di contoh di atas, metoda memiliki nama yang sama, dengan fungsi yang
berbeda, nama metoda dan parameternya juga sama, yang membedakan ialah object
yang mengaksesnya, jadi tiap metoda di akses oleh object yang berbeda untuk tiap
metoda, walaupun nama metoda dan parameter sama précis, karena berbeda metoda
yang yang mengakses berbeda, ini yang di sebut polimorfisme.
Kondisi yang harus di penuhi untuk polimorfisme ialah :
Method yang dipanggil harus melalui variabel dari basis class atau
superclass.
Method yang dipanggil harus juga menjadi method dari basis class.
Signature method harus sama baik pada superclass maupun subclass.
Method access attribute pada subclass tidak boleh lebih terbatas dari
basis class (superclass).
3. Abstract
Abstarc ialah suatu kelas yang tidak memiliki fungsi, tidak memiliki isi, jadi hanya
mendefinisikan nama kelasnya aja, tidak ada isi kelasnya juga tidak jadi masalah
4. Package dan Import
Package ialah kumpulan dari banyak kelas ke dalam satu paket, jadi sebenarnya
sama saja seperti inheritance atau pewarisan, tapi kalo pewarisan hanya mewarisi 1
kelas saja, jika mengunakan package seluruh kelas yang termasuk kedalam itu bisa di
warisi semuanya, jadi superclassnya paket itu.Untuk kata kunci import, jadi kalau di
inheritance mengunakan extends, maka disini digunakan import, hanya berbeda sintax
namun sebenarnya fungsinya sama saja.
Contoh dari package dan import ialah :
Package 1 yang mempunyai nama package nana
Rangkuman Aplikasi dan Basis Data Page 103
Lalu package 2 yang mempunyai nama package nana juga
Pengabungan dengan Importnya ialah
Rangkuman Aplikasi dan Basis Data Page 104
Jadi kelas tugas_package3 terintegrasi dengan tugas_package1 dan
tugas_package2 yang mana tugas_package2 dan tugas_package1 tergabung ke dalam 1
package yaitu package nana. Dan tugas_package itu mewarsi sifat sifat kelas yang ada di
dalam package nana.
BAB VIII
Exception
Rangkuman Aplikasi dan Basis Data Page 105
1. Pengertian
Exception ialah kesalahan yang bukan kesalah sintax, tetapi merupakan
kesalahan proses, seperti pembagian bilangan dengan 0, exception ini harus ditangani,
karena jika tidak di tangani, maka akan mempengaruhi kinerja program, jika ada
excepton, misalkan ada 25 line, terjadi exception di line 5, maka dari line ke 6 sampei ke
line 25 tidak akan di eksekusi oleh program, hal ini yang tidak boleh terjadi dalam
program, kejadian kejadian exception bisa saja terjadi apabila program di hadapkan
dengan user, karena user tidak tahu apa yang harus dilakukan dan yang tidak boleh di
lakukan.
Bisa saja misalkan program ini tidak boleh membagi bilangan dengan 0, tetapi
user melakukan hal ini, jika tidak di tangani, maka program akan hang, hal ini yang tidak
boleh dilakukan, maka di gunakan exception handling.
Dalam exception handling ada beberapa kata kunci, yaitu :
1.1 Try
Blok try digunakan untuk mencheck suatu sintax, apakah menimbulkan
exception aau tidak, jika tidak menimbulkan exception tidak akan berlakuk apa apa,,
namun jika memang ada exception, maka akan ditangani dengan blok selanjutnya.
1.2 Catch
Catch berguna untuk menangkap exception yang muncul, jadi jika di blok try
terdapat exception, maka akan di tangkap oleh cach ini dengan exception yang telah di
tentukan, jika tidak sesuai exceptionnya maka exception ini belum tertangani. Maka dari
ini block catch ini sangat penting, exceptionnya pun juga harus pas dengan exception
yang muncul.
1.3 Finally
Rangkuman Aplikasi dan Basis Data Page 106
Blok finally ini berguna untuk seakan akan menghentikan pencarian exception,
langsung di abaikan, jadi mau exception tertangani atau tidak, blok finally ini akan tetap
dijalankan.
Untuk lebih jelasnya akan di jelaskan dengan contoh :
Disana di blok try ada exceptionnya, exceptionya yaitu ArithmeticException, lalu
di blok catchnya di tangkap dengan ArrayIndexOutOfBound, pasti ini tidak akan
tertangani karena blok catchnya tidak sesuai dengan exceptionnya, si program akan
menjadi eror dan blok instruksi di bawahnya tidak akan di jalankan, namun dengan
finally seakan akan di lupakan terlebih, dan blok ke bawahnya bisa djilankan termasuk
blok finally. Sebenarnya dengan adanya finally membantu programmer untuk mengatasi
exception bilamana exception yang di tentukan di blok catch tidak tepat dengan
exception yang timbul.
Ada peraturan juga untuk meng-catch exception, ada peraturan jika
mengunakan exception bertingkat cacth teratas harus merupakan anak kelas exception,
dan yang paling akhir merupakan induk kelasnya. Sebagai contoh, Exception –
RuntimeException – ArrayIndexOutOfBound. Maka jika mengunakan exception
Rangkuman Aplikasi dan Basis Data Page 107
bertingkat maka catch yang pertama harus ArrayIndexOutOfBound, lalu baru
RuntimeException dan terkahir baru Exception. Jika aturan ini di langgar maka akan
terjadi error ketika di build. Akan di jelaskan sedikit tentang pengetagun dari induk kelas
dan anak kelas dalam exception.
Ada juga yang disebut yang disebut dengan throw, throw ini berfungsi untuk
melempar ke kelas exception, jadi jika ada blok ini maka yang ada di dalam blok ini
menjadi / menimbulkan exception. Contohnya ialah :
Jadi NegativeNumberException mejadi exception dan akan di tangkap di catchnya.
BAB IX
Database
Rangkuman Aplikasi dan Basis Data Page 108
1. Pengertian
Pengertian database ialah sekumpulan data yang bisa di akses, bisa ditambah,
bisa didelete dan bisa diganti, bukan hanya bisa untuk dilihat saja tetapi bisa juga untuk
diubah-ubah, dalam perancangan database ada aturan aturan yang harus dipenuhi.
Database Management System(DBMS) merupakan paket program (software) yang dibuat
agar memudahkan dan mengefisienkan pemasukan, pengeditan, penghapusan, dan
pengambilan informasi terhadap database. Software yang tergolong ke dalam DBMS antar
lain Microsoft SQL, MySQL, Oracle, MS. Access dan lain-lain
Pokok pemikiran dalam perancangan database adalah bagaimana merancang
database sehingga dapat memenuhi kebutuhan saat ini dan kemudahannya untuk
dikembangkan dimasa yang akan datang. Perancangan model konseptual perlu dilakukan
disamping perancangan secara fisik.
Pada perancangan konseptual, digunakan beberapa konsep pendekatan
relasional namun tidak berarti konsep ini harus diimplementasikan ke model relasional saja
tetapi juga dapat dengan model Hierarchi dan model Network. Pda perancangan
konseptual tinjauan dilakukan pada struktur data dan relasi antar file menggunakan model
dan relasional.
Untuk menjalankan MySQL cukup dengan mengetikan mysql pada system
prompt. Dalam penulisan di dalam MySQL tidak membedakan huruf besar dan huruf kecil,
yang membedakan adalah sistem operasi yang digunakan:
Sistem operasi Unix/Linux akan membedakan huruf besar dan huruf kecil
Sistem operasi Windows tidak membedakan
Untuk mengakhiri setiap perintah diakhiri oleh tanda titik koma “;”. Jika tidak
diakhiri oleh tanda “;”, MySQL menunggu perintah selanjutnya. Untuk membatalkan
perintah di prompt MySQL, tambahkan perintah backslas cancel atau “\c” diakhir
perintah.Dalam hal ini kina mengunakan software MySql, dan di sambungkan dengan
Java.
Rangkuman Aplikasi dan Basis Data Page 109
Perancangan database
Dalam merancang suatu database, harus dilakukan atau harus dipenuhi 3
parameter yaitu :
1. Delete anomaly
2. Insert anomaly
3. Update anomaly
Mari lihat pengertian dari ketiga anomaly tersebut :
1. Delete Anomaly
Delete anomaly ialah aturan untuk mengatur aturan database, karena di dalam
database jika mendelete satu data, maka akan berdampak satu row dalam satu table.
Maka harus di pisahkan data data yang kemungkinan besar sering di delete, di pisahkan
agar mudah dan ketika nanti ada proses delete tidak mempengaruhi data yang tidak
seharusnya di delete.
2. Insert anomaly
Insert anomaly sebenarnya sama dengan delete anomaly, jadi dalam menginsert
kedalam table harus disi satu row, jika ada kolom yang sering dalam menginsert data,
harus dipisahkan tabelnya, agar tidak repot ketika meng-insert datanya. Jadi misalkan
kita hanya ingin meng-insert satu data, namun di dalam table data ada 7 kolom, jika kita
ingin meng-insert hanya satu data saja, sedangkan harus 7 data yang di insert, maka
akan terjadi eror, maka dari itu, kolom kolom yang data sering di insert datanya, harus
dipisahkan agar kemudian harinya ketika meng-insert data tidak harus meng-insert
seluruh data.
3. Update anomaly
Sebenarnya prinsip anomaly ini sama saja dengan delete dan insert anomaly,
prisnsipnya data yang sering di-update harus di pisahkan. Dan juga dalam mendelete
Rangkuman Aplikasi dan Basis Data Page 110
ada aturan untuk melihat kondisi, maka harus dipisahkan juga apabila ada data acuan
yang sama.
Setelah 3 parameter ini di penuhi, ada normally normally dalam merancang data
base, disini yang kami jelaskan cukup 3 normally.
1. First normally
First normally adalah keadaan yang table dimana dalam satu table tidak boleh
ada nama kolom yang sama dan tidak boleh ada kolom yang kosong, untuk memenuhi
keadaan fisrt normally, hal di atas harus di penuhi.
Dalam keadaan first anomally, keadaan table harus dipenuhi seperti ini :
NIM Nama Matkul Nilai
101331001 Abdurrachman Elkom 90
101331001 Abdurrachman SisKomDig 80
2. Second Anomally
Second anomally adalah keadaan dimana parameter parameter seperti insert
anomally, delete anomally dan update anomally, jadi keadaan table harus dipisah
pisahkan, agar memenuhi 3 parameter tersebut.
Contohnya :
NIM Nama Matkul Nilai
Rangkuman Aplikasi dan Basis Data Page 111
NIM Nama Matkul Nilai
101331001 Abdurrachman Elkom 90
SisKomDig 80
101331001 Abdurrachman Elkom 90
101331001 Abdurrachman SisKomDig 80
Yang memenuhi keadaan second anomally :
NIM Nama
101331001 Abdurrachamn
3. Third Anomally
Keadaan table ini ialah dimana keadaan second anomally sudah terpenuhi dan
mulai di berikan hubungan antar tabelnya. Apakah itu many to many, one to many, one
to one, dan many to one.
Contoh :
Ket * ialah primary key dan ** adalah forein Key dan hubungan table
data_mahasiswa dan data_matkul hubungannya one to many.
Dalam pembuatan database pada MySQL terdapat banyak sekali instruksi yang
dapat digunakan, diantaranya
Rangkuman Aplikasi dan Basis Data Page 112
PK
Many
NIM Matkul Nilai
101331001 Elkom 90
101331001 SisKomDIg 80
Data_mahasiswa
NIM *
NamaOne
Data_Matkul
NIM **
Matkul
Nilai
1. Menampilkan isi database yang terdapat pada MySQL. Untuk menampilkan isi database yang terdapat pada MySQL, digunakan instruksi show databases;.
2. Menghubungkan prompt dengan database yang sudah dibuat sebelumnyaSebelum membuat sebuah database, penting untuk mengetahui database mana yang akan digunakan sebagai media penyimpanan data. Untuk itu digunkana instruksi use <nama database>.
3. Menampilkan salah satu tabel yang terdapat pada database yang sedang digunakan. Untuk itu digunakan instruksi select * from <nama tabel>;.
4. Menampilkan data spesifik sesuai dengan kebutuhan, dapat menggunakan instruksi select * from <nama tabel> where <nama kolom1 = data> and <nama kolom2 = data>;.
5. Mensorting data secara ascending order digunakan instruksi select <nama kolom1, nama kolom2> from <nama tabel> order by <nama kolom acuan>;.
Rangkuman Aplikasi dan Basis Data Page 113
6. Mensorting data secara descending order, istruksi yang digunakan sama seperti sorting secara ascending order hanya saja ditambahkan instruksi desc; di akhir instruksi yang dibuat.
7. Membuat tabel data lahir, untuk tanggal lahir gunakan tipe data date dengan urutan tahun, bulan dan tanggal. Untuk nama dan tempat lahir, tipe data yang digunakan adalah char dilengkapi dengan jumlah karakter yang diinginkan.
8. Membandingkan data tanggal lahir dengan tanggal hari ini (current date) untuk kemudian dilakukan dilakukan perhitungan umur.
Rangkuman Aplikasi dan Basis Data Page 114
9. Meng-update data pada tabel, hal ini penting dilakukan jika ada perubahan pada data yang terdapat pada database sebelumnya.
10. Menghapus data pada tabel merupakan salah satu contoh update tapi dengan menghapus data yang sudah tidak diperlukan pada database.
Rangkuman Aplikasi dan Basis Data Page 115
Proses-proses yang akan dilakukan pada database tidak hanya dapat dilakukan
pada MySQL, tapi juga menggunakan Java dalam hal ini JCreator.
1. Menghubungkan JCreator dengan database yang terdapat pada MySQL.
Untuk menghubungkan MySQL dengan JCreator diperlukan sebuah aplikasi khusus yang dinamakan MySQL connection. Saat menghubungkan JCreator dengan database diperlukan data-data yang sesuai dengan database yang akan diakses. Model program yang digunakan adalah exception agar indikator koneksinya dapat lebih mudah terlihat, sehingga ketika koneksi dengan database berhasil dilakukan akan muncul kalimat “koneksi berhasil” pada output.
Rangkuman Aplikasi dan Basis Data Page 116
2. Menampilkan data yang terdapat pada database menggunakan JCreator.
Rangkuman Aplikasi dan Basis Data Page 117
Program ini tidak hanya menghubungkan JCreator dengan data yang terdapat pada database tapi juga menampilkan salah satu datanya. Dengan men-select elemen tabel data pada database, maka data tersebut akan ditampilkan pada JCreator.
3. Menambahkan data ke dalam database yang telah ada.
Rangkuman Aplikasi dan Basis Data Page 118
Data sebelum
Data setelah ditambahkan
Program ini bertujuan untuk menambahkan data ke dalam tabel yang telah ada pada database sebelumnya. Untuk menambahkan data hanyalah dengan menggunakan instruksi insert into nama_tabel kemudian masukkan data yang akan dimasukkan sesuai dengan kolom-kolom yang tersedia pada tabel yang akan diakses.
Rangkuman Aplikasi dan Basis Data Page 119
4. Menghapus data yang ada pada database.
Data sebelum
Rangkuman Aplikasi dan Basis Data Page 120
Data setelah dihapus
Rangkuman Aplikasi dan Basis Data Page 121
DAFTAR PUSTAKA
1. http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek
2. http://catatan.desdrianton.net/scjp/content/ARRAY.htm
3. http://www.google.co.id/url?
sa=t&rct=j&q=fitur+yang+dimiliki+java&source=web&cd=1&ved=0CFEQFjAA&url=http%3A
%2F%2Fmafisamin.web.ugm.ac.id%2Fmateri%2Fbab-1-
pendahuluan.pdf&ei=cYrUT7inJ8uzrAfqyLT8Dw&usg=AFQjCNFbe87APHaQU4IXTf_t_q_Hl31r
uw
4. http://kampoeng-it.blogspot.com/2010/02/apa-itu-teknologi-java.html
5. http://whatjaxos.blogspot.com/2012/03/akses-java-applet-method-dari_24.html
6. http://en.wikipedia.org/wiki/Swing_(Java)
7. http://linkblog-ku.blogspot.com/2012/05/dasar-dasar-pemrograman-java.html
8. http://celutubgt.wordpress.com/2011/05/08/membuat-komentar-pada-java/
9. http://moszesaje.blogspot.com/2012/04/pernyataan-dalam-java-dan-blok.html
10. http://linkblog-ku.blogspot.com/2012/05/dasar-dasar-pemrograman-java.html
11. http://informaticunsil.blogspot.com/2012/04/macam-macam-java-literals.html
12. http://pintar-java.blogspot.com/2008/05/tipe-data-primitif.html
13. http://java.lyracc.com/belajar/java-untuk-pemula/variabel-dan-tipe-data
14. http://bersitrahmayang.wordpress.com/2010/11/09/operator-pada-java/
15. http://aldi-situmorang.blogspot.com/2010/11/contoh-program-blok-pada-java.html
16. http://www.kuliah.ningyung.com/struktur-kontrol-pemilihan/
17. http://javaprogramming26.blogspot.com/2009/09/swich-case.html
18. http://andinyoktariana.blogspot.com/2011/09/arraypercabangandan-perulangan-
dalam.html
19. http://www.kuliah.ningyung.com/struktur-kontrol-perulangan/
20. http://tiar-note.blogspot.com/2012/05/struktur-perulangan-pada-java.html
Rangkuman Aplikasi dan Basis Data Page 122