Rangkuman Fix

159
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 Rangkuman Aplikasi dan Basis DataPage 1

Transcript of Rangkuman Fix

Page 1: Rangkuman Fix

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

Page 2: Rangkuman Fix

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

Page 3: Rangkuman Fix

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

Page 4: Rangkuman Fix

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

Page 5: Rangkuman Fix

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

Page 6: Rangkuman Fix

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

Page 7: Rangkuman Fix

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

Page 8: Rangkuman Fix

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

Page 9: Rangkuman Fix

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

Page 10: Rangkuman Fix

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

Page 11: Rangkuman Fix

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

Page 12: Rangkuman Fix

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

Page 13: Rangkuman Fix

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

Page 14: Rangkuman Fix

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

Page 15: Rangkuman Fix

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

Page 16: Rangkuman Fix

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

Page 17: Rangkuman Fix

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

Page 18: Rangkuman Fix

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

Page 19: Rangkuman Fix

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)

Page 20: Rangkuman Fix

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)

Page 21: Rangkuman Fix

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

Page 22: Rangkuman Fix

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

Page 23: Rangkuman Fix

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

Page 24: Rangkuman Fix

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

Page 25: Rangkuman Fix

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

Page 26: Rangkuman Fix

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

Page 27: Rangkuman Fix

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

Page 28: Rangkuman Fix

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

Page 29: Rangkuman Fix

. . .

}

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

Page 30: Rangkuman Fix

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

Page 31: Rangkuman Fix

else

statement;

atau

if([kondisi])

{

statement1;

statement2;

. . .

}

else

{

statement1;

statement2;

. . .

Rangkuman Aplikasi dan Basis Data Page 31

Page 32: Rangkuman Fix

}

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

Page 33: Rangkuman Fix

{

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

Page 34: Rangkuman Fix

Bentuk pernyataan if-else-if

if([kondisi])

statement1;

else if

statement2;

else

statement3;

atau

if([kondisi])

{

Rangkuman Aplikasi dan Basis Data Page 34

Page 35: Rangkuman Fix

statement1;

statement2;

. . .

}

else if

{

statement1;

statement2;

. . .

}

else

{

statement1;

statement2;

Rangkuman Aplikasi dan Basis Data Page 35

Page 36: Rangkuman Fix

. . .

}

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

Page 37: Rangkuman Fix

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

Page 38: Rangkuman Fix

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

Page 39: Rangkuman Fix

Bentuk pernyataan switch

switch ([nama_variable])

{

case [nilai1] :

perintah1;

perintah2;

. . .

break;

case [nilai2] :

Rangkuman Aplikasi dan Basis Data Page 39

Page 40: Rangkuman Fix

perintah1;

perintah2;

. . .

break;

case [nilaiN] :

perintahN;

. . .

break;

default :

perintahDefault;

. . .

break;

}

Contoh pernyataan switch

public class Lat011

Rangkuman Aplikasi dan Basis Data Page 40

Page 41: Rangkuman Fix

{

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

Page 42: Rangkuman Fix

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

Page 43: Rangkuman Fix

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

Page 44: Rangkuman Fix

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

Page 45: Rangkuman Fix

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

Page 46: Rangkuman Fix

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

Page 47: Rangkuman Fix

}

}

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

Page 48: Rangkuman Fix

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

Page 49: Rangkuman Fix

{

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

Page 50: Rangkuman Fix

{

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

Page 51: Rangkuman Fix

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

Page 52: Rangkuman Fix

}

}

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

Page 53: Rangkuman Fix

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

Page 54: Rangkuman Fix

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

Page 55: Rangkuman Fix

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

Page 56: Rangkuman Fix

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

Page 57: Rangkuman Fix

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

Page 58: Rangkuman Fix

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

Page 59: Rangkuman Fix

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

Page 60: Rangkuman Fix

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

Page 61: Rangkuman Fix

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

Page 62: Rangkuman Fix

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

Page 63: Rangkuman Fix

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

Page 64: Rangkuman Fix

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

Page 65: Rangkuman Fix

// 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

Page 66: Rangkuman Fix

// (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

Page 67: Rangkuman Fix

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

Page 68: Rangkuman Fix

.

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

Page 69: Rangkuman Fix

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

Page 70: Rangkuman Fix

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

Page 71: Rangkuman Fix

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

Page 72: Rangkuman Fix

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

Page 73: Rangkuman Fix

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

Page 74: Rangkuman Fix

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

Page 75: Rangkuman Fix

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

Page 76: Rangkuman Fix

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

Page 77: Rangkuman Fix

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

Page 78: Rangkuman Fix

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

Page 79: Rangkuman Fix

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

Page 80: Rangkuman Fix

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

Page 81: Rangkuman Fix

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

Page 82: Rangkuman Fix

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

Page 83: Rangkuman Fix

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

Page 84: Rangkuman Fix

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

Page 85: Rangkuman Fix

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

Page 86: Rangkuman Fix

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

Page 87: Rangkuman Fix

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

Page 88: Rangkuman Fix

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

Page 89: Rangkuman Fix

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

Page 90: Rangkuman Fix

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

Page 91: Rangkuman Fix

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

Page 92: Rangkuman Fix

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

Page 93: Rangkuman Fix

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

Page 94: Rangkuman Fix

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

Page 95: Rangkuman Fix

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

Page 96: Rangkuman Fix

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

Page 97: Rangkuman Fix

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

Page 98: Rangkuman Fix

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

Page 99: Rangkuman Fix

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

Page 100: Rangkuman Fix

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

Page 101: Rangkuman Fix

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

Page 102: Rangkuman Fix

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

Page 103: Rangkuman Fix

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

Page 104: Rangkuman Fix

Lalu package 2 yang mempunyai nama package nana juga

Pengabungan dengan Importnya ialah

Rangkuman Aplikasi dan Basis Data Page 104

Page 105: Rangkuman Fix

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

Page 106: Rangkuman Fix

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

Page 107: Rangkuman Fix

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

Page 108: Rangkuman Fix

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

Page 109: Rangkuman Fix

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

Page 110: Rangkuman Fix

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

Page 111: Rangkuman Fix

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

Page 112: Rangkuman Fix

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

Page 113: Rangkuman Fix

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

Page 114: Rangkuman Fix

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

Page 115: Rangkuman Fix

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

Page 116: Rangkuman Fix

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

Page 117: Rangkuman Fix

2. Menampilkan data yang terdapat pada database menggunakan JCreator.

Rangkuman Aplikasi dan Basis Data Page 117

Page 118: Rangkuman Fix

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

Page 119: Rangkuman Fix

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

Page 120: Rangkuman Fix

4. Menghapus data yang ada pada database.

Data sebelum

Rangkuman Aplikasi dan Basis Data Page 120

Page 121: Rangkuman Fix

Data setelah dihapus

Rangkuman Aplikasi dan Basis Data Page 121

Page 122: Rangkuman Fix

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