belajar java

201
J.E.N.I Pengenalan Pemrograman 1 Versi 1.2 Juni 2007 Sumber JEDI Pengenalan Pemrograman 1

Upload: dimas-rio

Post on 27-Oct-2015

322 views

Category:

Documents


2 download

DESCRIPTION

Belajar Java

TRANSCRIPT

Page 1: Belajar Java

J.E.N.I

Pengenalan Pemrograman 1

Versi 1.2Juni 2007Sumber JEDI

Pengenalan Pemrograman 1

Page 2: Belajar Java

J.E.N.I

PengarangJoyce Avestro

TeamJoyce AvestroFlorence BalagtasRommel FeriaReginald HutchersonRebecca OngJohn Paul PetinesSang ShinRaghavan SrinivasMatthew Thompson

Team TranslatorFrans ThamuraEko SubiyantoroCahya Kusuma RatihRizzatama N.S.Mir’atul Khusna MufidaKhansa FitriannisaSulistyaningtyasAllin JunikhahBagus Chandra Badar Agung NugrohoKadek Surya Pranata

Persyaratan-persyaratan untuk latihan laboratorium

Sistem Operasi yang mendukung

NetBeans IDE 5.5 berjalan pada sistem operasi yang mendukung Java VM. Dibawah ini merupakan daftar dari platform-platform yang digunakan:

• Microsoft Windows XP Professional SP2 atau yang terbaru

• Mac OS X 10.4.5 atau yang terbaru

• Red Hat Fedora Core 3

• Sistem Operasi Solaris™ 10 Update 1 (SPARC® and x86/x64 Platform Edition)

NetBeans Enterprise Pack juga dapat digunakan pada platform-platform berikut ini:

• Microsoft Windows 2000 Professional SP4

• Solaris™ 8 OS (SPARC and x86/x64 Platform Edition) and Solaris 9 OS (SPARC and x86/x64 Platform Edition)

• Berbagai macam distribusi LINUX

Minimum konfigurasi Hardware

Catatan: Minimum resolusi layar NetBeans IDE's adalah 1024x768 pixels.

• Sistem Operasi Microsoft Windows: o Prosesor: 500 MHz Intel Pentium III workstation atau

setaranya o Memori: 512 MB o Disk space: 850 MB dari free disk space

• Sistem operasi Linux: o Prosesor: 500 MHz Intel Pentium III workstation atau

setaranya o Memori: 512 MB o Disk space: 450 MB dari free disk space

• Solaris OS (SPARC): o Prosesor: UltraSPARC II 450 MHz o Memori: 512 MB o Disk space: 450 MB of free disk space

• Solaris OS (x86/x64 Platform Edition): o Prosesor: AMD Opteron 100 Series 1.8 GHz o Memori: 512 MB o Disk space: 450 MB dari free disk space

• Sistem Operasi Macintosh OS X: o Prosesor: PowerPC G4 o Memori: 512 MB o Disk space: 450 MB dari free disk space

Pengenalan Pemrograman 1

Page 3: Belajar Java

J.E.N.I

Konfigurasi Hardware yang direkomendasikan

• Sistem Operasi Microsoft Windows: o Prosesor: 1.4 GHz Intel Pentium III workstation atau

setaranyao Memori: 1 GB o Disk space: 1 GB dari free disk space

• Sistem Operasi Linux: o Prosesor: 1.4 GHz Intel Pentium III atau setaranyao Memori: 1 GB o Disk space: 850 MB dari free disk space

• Solaris™ OS (SPARC®): o Prosesor: UltraSPARC IIIi 1 GHz o Memori: 1 GB o Disk space: 850 MB dari free disk space

• Solaris™ OS (x86/x64 platform edition):

o Prosesor: AMD Opteron 100 Series 1.8 GHz o Memori: 1 GB o Disk space: 850 MB dari free disk space

• Sistem Operasi Macintosh OS X: o Prosesor: PowerPC G5 o Memori: 1 GB o Disk space: 850 MB dari free disk space

Software yang diperlukan

NetBeans Enterprise Pack 5.5 dapat diakses pada Java 2 Platform Standard Edition Development Kit 5.0 Update 1 atau diatasnya (JDK 5.0, versi 1.5.0_01 atau diatasnya), dimana berisi Java Runtime Environment plus developer tools untuk meng-compile, men-debug, and menjalankan aplikasi yang ditulis dengan bahasa Java. Sun Java System Application Server Platform Edisi 9 telah diuji dengan JDK 5.0 update 6.

• Untuk Solaris, Windows, dan Linux, Anda dapat mendownload JDK untuk platform Anda pada

http://java.sun.com/j2se/1.5.0/download.html • Untuk Mac OS X, memerlukan Java 2 Platform Standard Edition

(J2SE) 5.0 Release 4. Anda dapat mendownload JDK dari Apple's Developer Connection site. Pada:

http://developer.apple.com/java (untuk mendownload JDK Anda harus melakukan register terlebih dahulu).

Pengenalan Pemrograman 1

Page 4: Belajar Java

J.E.N.I

Daftar Isi

1 Pengenalan Pemrograman Komputer1.1 Tujuan 1.2 Pendahuluan1.3 Komponen dasar komputer 1.3.1 Hardware

1.3.1.1 Central Processing Unit1.3.1.2 Memori1.3.1.3 Input dan Output Device

1.3.2 Software1.4 Sekilas Bahasa Pemrograman

1.4.1 Apa yang Disebut Bahasa Pemrograman?1.4.2 Kategori Bahasa Pemrograman

1.5 Alur pembuatan program1.5.1 Definisi Permasalahan1.5.2 Analisa Permasalahan1.5.3 Desain Algorithma dan Representasi

1.5.3.1 Simbol flow chart dan Artinya1.5.4 Pengkodean, Uji Coba, dan Pembuatan Dokumentasi

1.6 Sistem Numerik dan Konversi1.6.1 Sistem Bilangan Desimal1.6.2 Sistem Bilangan Biner1.6.3 Sistem Bilangan Oktal1.6.4 Sistem Bilangan Heksadesimal1.6.5 Konversi

1.6.5.1 Desimal ke Biner dan Biner ke Desimal 1.6.5.2 Desimal ke Oktal/ Heksadesimal dan Oktal/Heksadesimal ke Desimal1.6.5.3 Biner ke Oktal dan Oktal ke Biner 1.6.5.4 Biner ke Heksadesimal dan Heksadesimal ke Biner

1.7 Latihan1.7.1 Menyusun Algorithma1.7.2 Konversi Sistem Bilangan

2 Pengenalan Bahasa Java2.1 Tujuan2.2 Latar Belakang Java

2.2.1 Sejarah Singkat Java 2.2.2 Apa itu Teknologi Java

2.2.2.1 Sebuah Bahasa Pemrograman 2.2.2.2 Sebuah Development Environment2.2.2.3 Sebuah Aplikasi 2.2.2.4 Sebuah Deployment environment2.2.2.5 Mengapa Mempelajari JAVA?

Pengenalan Pemrograman 1

Page 5: Belajar Java

J.E.N.I

2.2.3 Sebagian feature dari Java 2.2.3.1 Java Virtual Machine 2.2.3.2 Garbage Collection 2.2.3.3 Code Security

2.2.4 Fase-fase Pemrograman Java

3 Mengenali Lingkup Pemrograman Anda 3.1 Tujuan 3.2 Pendahuluan3.3 Program Java Pertama3.4 Menggunakan Text Editor dan Console

3.4.1 Errors 3.4.1.1 Syntax Errors3.4.1.2 Run-time Errors

3.5 Using NetBeans3.6 Latihan

3.6.1 Hello World3.6.2 The Tree

4 Dasar - dasar Pemrograman 4.1 Tujuan 4.2 Menganalisa program pertama saya 4.3 Komentar pada Java

4.3.1 Penulisan komentar pada C ++ 4.3.2 Penulisan komentar pada C 4.3.3 Komentar khusu Javadoc

4.4 Pernyataan dalam Java dan Blocks 4.5 Java Identifiers4.6 Java Keywords4.7 Java Literals

4.7.1 Integer Literals 4.7.2 Floating-Point Literals 4.7.3 Boolean Literals 4.7.4 Character Literals 4.7.5 String Literals

4.8 Tipe data primitive 4.8.1 Logika - boolean4.8.2 Textual – char4.8.3 Integral – byte, short, int & long4.8.4 Floating Point – float and double

4.9 Variabel4.9.1 Deklarasi dan Inisialisasi Variable 4.9.2 Menampilkan Data Variabel 4.9.3 System.out.println() vs. System.out.print() 4.9.4 Reference Variables vs. Primitive Variables

Pengenalan Pemrograman 1

Page 6: Belajar Java

J.E.N.I

4.10 Operators4.10.1 Operator Arithmetika 4.10.2 Operator Increment dan Decrement 4.10.3 Operator Relasi 4.10.4 Operator Logika

4.10.4.1 && (logika AND) and & (boolean logika AND)4.10.4.2 || (logika OR) and | (boolean logika inclusive OR)4.10.4.3 ^ (boolean logika exclusive OR)4.10.4.4 ! (logika NOT)

4.10.5 Operator Kondisi (?:)4.10.6 Operator Precedence

4.11 Latihan4.11.1 Mendeklarasikan dan Mencetak Variable 4.11.2 Mendapatkan nilai rata-rata dari tiga angka 4.11.3 Menampilkan nilai terbesar 4.11.4 Operator precedence

5 Mendapatkan Input dari Keyboard 5.1 Tujuan 5.2 Menggunakan BufferedReader untuk mendapatkan input 5.3 Menggunakan JoptionPane untuk mendapatkan input 5.4 Latihan

5.4.1 3 Kata Terakhir (versi BufferedReader)5.4.2 3 Kata Terakhir (versi JOptionPane)

6 Struktur Kontrol 6.1 Tujuan 6.2 Struktur Kontrol Keputusan

6.2.1 Statement if 6.2.2 Statement if-else6.2.3 Statement if-else-if 6.2.4 Kesalahan umum apabila menggunakan statement if-else 6.2.5 Contoh Statement if-else-else if6.2.6 Statement switch 6.2.7 Contoh statement switch

6.3 Struktur Kontrol Perulangan 6.3.1 while loop6.3.2 do-while loop6.3.3 for loop

6.4 Branching Statements6.4.1 break statement

6.4.1.1 Unlabeled break statement6.4.1.2 Labeled break statement

6.4.2 continue statement6.4.2.1 Unlabeled continue statement6.4.2.2 Labeled continue statement

6.4.3 return statement

Pengenalan Pemrograman 1

Page 7: Belajar Java

J.E.N.I

6.5 Latihan6.5.1 Nilai6.5.2 Membaca Bilangan6.5.3 Cetak Seratus Kali6.5.4 Perpangkatan

7 Java Arrays7.1 Tujuan 7.2 Penganalan array 7.3 Pendeklarasian array 7.4 Pengaksesan sebuah element array 7.5 Panjang Array 7.6 Array Multidimensi 7.7 Latihan

7.7.1 Hari dalam seminggu 7.7.2 Nomor Terbesar 7.7.3 Buku Alamat

8 Argumen dari Command-lin 8.1 Tujuan 8.2 Argumen Command-line 8.3 Argumen Command-line di NetBeans8.4 Latihan

8.4.1 Mencetak Argumen 8.4.2 Operasi Aritmatik

9 Bekerja dengan Pustaka Class Java 9.1 Tujuan 9.2 Pengenalan Pemrograman Berorientasi Object 9.3 Class dan Object

9.3.1 Perbedaan Class dan Object9.3.2 Instansiasi Class9.3.3 Variabel class dan Method

9.4 Methods9.4.1 Apakah method itu dan mengapa menggunakan method? 9.4.2 Memanggil instance dari Method dan Passing variabel 9.4.3 Passing Variabel dalam Method

9.4.3.1 Pass-by-value9.4.3.2 Pass-by-reference

9.4.4 Memanggil method Static9.4.5 Lingkup variabel

9.5 Casting, Converting dan Comparing Objects9.5.1 Casting Tipe Primitive 9.5.2 Casting Objects9.5.3 Converting Tipe Primitive ke object dan sebaliknya 9.5.4 Comparing Objects9.5.5 Menentukan class dari sebuah object

Pengenalan Pemrograman 1

Page 8: Belajar Java

J.E.N.I

9.6 Latihan9.6.1 Mendefinisikan Istilah9.6.2 Java Scavenger Hunt

10 Membuat Class Sendiri10.1 Tujuan10.2 Mendefinisikan Class Anda10.3 Deklarasi Atribut

10.3.1 Instance Variable10.3.2 Class Variable atau Static Variable

10.4 Deklarasi Methods10.4.1 Accessor Methods10.4.2 Mutator Methods10.4.3 Multiple Return statements10.4.4 Static Methods10.4.5 Contoh Kode Program Dari Class StudentRecord

10.5 Referensi this10.6 Overloading Methods10.7 Deklarasi Construktor

10.7.1 Default Constructor10.7.2 Overloading Constructor10.7.3 Menggunakan Constructors10.7.4 Pemanggilan Constructor Dengan this()

10.8 Packages10.8.1 Mengimport Packages10.8.2 Membuat Package10.8.3 Pengaturan CLASSPATH

10.9 Access Modifiers10.9.1 Akses Default(package accessibility)10.9.2 Akses Public10.9.3 Akses Protected10.9.4 Akses Private

10.10 Latihan10.10.1 Entry Buku Alamat10.10.2 Buku Alamat

11 Pewarisan, Polimorfisme dan Interface11.1 Tujuan11.2 Pewarisan

11.2.1 Mendefinisikan Superclasses dan Subclasses11.2.2 Kata Kunci Super11.2.3 Overriding Method11.2.4 Method Final dan Class Final

11.3 Polimorfisme11.4 Abstract Class

Pengenalan Pemrograman 1

Page 9: Belajar Java

J.E.N.I

11.5 Interface11.5.1 Kenapa Kita Memakai Interface?11.5.2 Interface vs. Class Abstract11.5.3 Interface vs. Class11.5.4 Membuat Interface11.5.5 Hubungan dari Interface ke Class11.5.6 Pewarisan Antar Interface

11.6 Latihan11.6.1 Extend StudentRecord11.6.2 Bentuk Abstract Class

12 Dasar Exception Handling12.1 Tujuan12.2 Apa itu Exceptions?12.3 Menangani Exceptions12.4 Latihan

12.4.1 Menangkap Exception 112.4.2 Menangkap Exception 2

Pengenalan Pemrograman 1

Page 10: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 1

BAB 1

Pengenalan Pemrograman Komputer

1.1 Tujuan Bagian ini akan membahas dasar – dasar komponen dari komputer meliputi hardware (perangkat keras) dan software (perangkat lunak). Kami juga akan menyertakan gambaran global tentang bahasa pemrograman dan sirkulasi pemrograman. Akan dibahas pula pada akhir pembahasan ini mengenai sistem dan konversi numerik. Pada akhir pembahasan, diharapkan pembaca dapat : Mengidentifikasi perbedaan komponen pada komputer Mengetahui tentang bahasa pemrograman komputer dan kategorinya Mengetahui alur kerja pembuatan program dan mengaplikasikannya pada

pemecahan masalah Mempelajari tentang berbagai sistem numerik dan metode konversinya.

1.2 Pendahuluan Kata komputer berasal dari bahasa Latin yaitu Computare yang artinya menghitung. Dalam bahasa Inggris disebut to compute. Secara definisi komputer diterjemahkan sebagai sekumpulan alat elektronik yang saling bekerja sama, dapat menerima data (input), mengolah data (proses) dan memberikan informasi (output) serta terkoordinasi dibawah kontrol program yang tersimpan di memorinya. Jadi cara kerja komputer dapat kita gambarkan sebagai berikut :

Gambar 1: Skema IO Komputer

Page 11: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 2

Komputer memiliki dua komponen utama. Yang pertama adalah hardware (perangkat keras) yang tersusun atas komponen elektronik dan mekanik. Komponen utama yang lain yaitu software (perangkat lunak). Komponen ini terdiri atas data dan aplikasi – aplikasi komputer.

1.3 Komponen Dasar Komputer 1.3.1 HARDWARE 1.3.1.1 Central Processing Unit (CPU) Processor, merupakan bagian dari perangkat keras komputer yang melakukan pemprosesan aritmatika dan logika serta pengendalian operasi komputer secara keseluruhan. Prosesor terdiri atas dua bagian utama, yaitu ALU (Arithmetic Logic Unit) dan Control Unit. Kecepatan kerja prosesor biasanya ditentukan oleh kecepatan clock dari Control Unit-nya.

Contoh : jika prosesor memiliki frekuensi clock 350 MHz, berarti kecepatan pemprosesan satu instruksinya = T = 1/f = 1/(350 x 106 Hz), = 0,286 x 10-8 detik.

1.3.1.2 Memori Memori adalah media penyimpan data pada komputer. Memori, berdasarkan fungsinya dibagi menjadi dua yaitu :

a. Primary Memory

Dipergunakan untuk menyimpan data dan instruksi dari program yang sedang dijalankan. Seringkali disebut juga sebagai RAM. Karakteristik dari memori primer adalah :

o Volatile (informasi ada selama komputer bekerja. Ketika komputer dipadamkan, informasi yang disimpannya juga hilang)

o Berkecepatan tinggi o Akses random (acak)

b. Secondary Memory

Dipergunakan untuk menyimpan data atau program biner secara permanen. Karakteristik dari memori sekunder adalah

o Non volatile atau persisten o Kecepatan relatif rendah (dibandingkan memori primer) o Akses random atau sekuensial

Contoh memori sekunder : floppy, harddisk, CD ROM, magnetic tape, optical disk, dll. Dari seluruh contoh tersebut, yang memiliki mekanisme akses sekuensial adalah magnetic tape

Page 12: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 3

Memori Utama (RAM)

Memori Sekunder (ROM)

Kategori

Cepat Lambat Kecepatan

Mahal Murah Harga

Kecil Besar Kapasitas

Ya Tidak Volatile

Tabel 1: Perbandingan antara memori utama dan memori sekunder

1.3.1.3 Input Dan Output Device Input-Output Device, merupakan bagian yang berfungsi sebagai penghubung antara komputer dengan lingkungan di luarnya. Dapat dibagi menjadi dua kelompok, yaitu :

a. Input Device (Piranti Masukan)

Berfungsi sebagai media komputer untuk menerima masukan dari luar. Beberapa contoh piranti masukan :

o Keyboard o Mouse o Touch screen o Scanner o Camera

b. Output Device (Piranti Keluaran)

Berfungsi sebagai media komputer untuk memberikan keluaran. Beberapa contoh piranti keluaran :

o Monitor o Printer o Speaker o Plotter

1.3.2 Software Merupakan program-program komputer yang berguna untuk menjalankan suatu pekerjaan sesuai dengan yang dikehendaki. Program tersebut ditulis dengan bahasa khusus yang dimengerti oleh komputer. Program dapat dianalogikan sebagai instruksi yang akan dijalankan oleh prosessor. Software terdiri dari beberapa jenis, yaitu : 1. Sistem Operasi, seperti DOS, Unix, Novell, OS/2, Windows.

Adalah software yang berfungsi untuk mengaktifkan seluruh perangkat yang terpasang pada komputer sehingga masing-masing dapat saling berkomunikasi. Tanpa ada sistem operasi maka komputer tidak dapat difungsikan sama sekali.

Page 13: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 4

2. Program Utility, seperti Norton Utility, Scandisk, PC Tools.

Program utility berfungsi untuk membantu atau mengisi kekurangan/kelemahan dari sistem operasi, misalnya PC Tools dapat melakukan perintah format sebagaimana DOS, tapi PC Tools mampu memberikan keterangan dan animasi yang bagus dalam proses pemformatan. File yang telah dihapus oleh DOS tidak dapat dikembalikan lagi tapi dengan program bantu hal ini dapat dilakukan.

3. Program Aplikasi, seperti GL, MYOB, Payroll.

Merupakan program yang khusus melakukan suatu pekerjaan tertentu, seperti program gaji pada suatu perusahaan. Maka program ini hanya digunakan oleh bagian keuangan saja tidak dapat digunakan oleh departemen yang lain. Umumnya program aplikasi ini dibuat oleh seorang programmer komputer sesuai dengan permintaan/kebutuhan seseorang/lembaga/perusahaan guna keperluan interennya.

4. Program Paket

Merupakan program yang dikembangkan untuk kebutuhan umum, seperti :

o Pengolah kata /editor naskah : Wordstar, MS Word, Word Perfect, AmiPro o Pengolah angka / lembar kerja : Lotus123, MS Excell, QuattroPro, dll o Presentasi : MS PowerPoint o Desain grafis : CorelDraw, PhotoShop

5. Compiler.

Komputer hanya memahami satu bahasa, yaitu bahasa mesin. Bahasa mesin adalah terdiri dari nilai 0 dan 1. Sangatlah tidak praktis dan efisien bagi manusia untuk membuat program yang terdiri dari nilai 0 dan 1, maka dicarilah suatu cara untuk menterjemahkan sebuah bahasa yang dipahami oleh manusia menjadi bahasa mesin. Dengan tujuan inilah, diciptakan compiler.

1.4 Sekilas Bahasa Pemrograman 1.4.1 Apa yang Disebut Bahasa Pemrograman? Bahasa pemrograman adalah teknik komunikasi standar untuk mengekspresikan instruksi kepada komputer. Layaknya bahasa manusia, setiap bahasa memiliki tata tulis dan aturan tertentu. Bahasa pemrograman memfasilitasi seorang programmer secara tepat menetapkan data apa yang sedang dilakukan oleh komputer selanjutnya, bagaimana data tersebut disimpan dan dikirim, dan apa yang akan dilakukan apabila terjadi kondisi yang variatif. Bahasa pemrograman dapat diklasifikasikan menjadi tingkat rendah, menengah, dan tingkat tinggi. Pergeseran tingkat dari rendah menuju tinggi menunjukkan kedekatan terhadap ”bahasa manusia”.

Page 14: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 5

1.4.2 Kategori Bahasa Pemrograman 1. Bahasa Pemrograman Tingkat Tinggi

Merupakan bahasa tingkat tinggi yang mempunyai ciri-ciri mudah dimengerti karena kedekatannya terhadap bahasa sehari – hari. Sebuah pernyataan program diterjemahkan kepada sebuah atau beberapa mesin dengan menggunakan compiler. Sebagai contoh adalah : JAVA, C++, .NET

2. Bahasa Pemrograman Tingkat Rendah

Bahasa pemrograman generasi pertama. Bahasa jenis ini sangat sulit dimengerti karena instruksinya menggunakan bahasa mesin. Disebut juga dengan bahasa assembly merupakan bahasa dengan pemetaan satu – persatu terhadap instruksi komputer. Setiap intruksi assembly diterjemahkan dengan menggunakan assembler.

3. Bahasa Pemrograman Tingkat Menengah

Dimana penggunaan instruksi telah mendekati bahasa sehari – hari, walaupun masih cukup sulit untuk dimengerti karena menggunakan singkatan – singkatan seperti STO yang berarti simpan (STORE) dan MOV yang artinya pindah (MOVE). Yang tergolong dalam bahasa ini adalah Fortran.

1.5 Alur Pembuatan Program Seorang programmer tidak melakukan pembuatan dan pengkodean program secara begitu saja, namun mengikuti perencanaan dan metodologi yang terstruktur yang memisahkan proses suatu aplikasi menjadi beberapa bagian. Berikut ini langkah – langkah sistematis dasar dalam menyelesaikan permasalahan pemrograman :

1. Mendefinisikan masalah 2. Menganalisa dan membuat rumusan pemecahan masalah 3. Desain Algoritma dan Representasi 4. Pengkodean, Uji Coba dan pembuatan dokumentasi

Untuk memahami langkah dasar dalam pemecahan masalah dalam sebuah komputer mari kita mendefinisikan sebuah permasalahan yang akan diselesaikan langkah demi langkah sebagaimana metodologi pemecahan masalah yang akan dibahas selanjutnya. Masalah yang akan kita selesaikan akan didefinisikan pada bagian selanjutnya. 1.5.1 Definisi Permasalahan Seorang programmer umumnya mendapatkan tugas berdasarkan sebuah permasalahan. Sebelum sebuah program dapat terdesain dengan baik untuk menyelesaikan beberapa permasalahan, masalah–masalah yang terjadi harus dapat diketahui dan terdefinisi

Page 15: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 6

dengan baik untuk mendapatkan detail persyaratan input dan output. Sebuah pendefinisan yang jelas adalah sebagian dari penyelesaian masalah. Pemrograman komputer mempersyaratkan untuk mendefiniskan program terlebih dahulu sebelum membuat suatu penyelesaian masalah. Mari kita definisikan sebuah contoh permasalahan :

”Buatlah sebuah program yang akan menampilkan berapa kali sebuah nama tampil pada sebuah daftar”

1.5.2 Analisa Permasalahan Setelah sebuah permasalahan terdefinisi secara memadai, langkah paling ringkas dan efisien dalam penyelesaian harus dirumuskan. Umumnya, langkah berikutnya meliputi memecahkan masalah tersebut menjadi beberapa bagian kecil dan ringkas. Contoh masalah : Menampilkan jumlah kemunculan sebuah nama pada daftar Input Terhadap Program : Daftar Nama, Nama yang akan dicari Output Dari Program : Jumlah kemunculan nama yang dicari 1.5.3 Desain Algoritma dan Representasi Setelah kita mengetahui dengan baik dan jelas mengenai permasalahan yang ingin diselesaikan, langkah selanjutnya yaitu membuat rumusan algoritma untuk menyelesaikan permasalahan. Dalam pemrograman komputer penyelesaian masalah didefinisikan dalam langkah demi langkah. Algoritma adalah urutan langkah – langkah logis penyelesaian masalah yang disusun secara sistematis dan logis. Logis merupakan kunci dari sebuah algoritma. Langkah-langkah dalam algoritma harus logis dan bernilai benar atau salah. Algoritma dapat diekpresikan dalam bahasa manusia, menggunakan presentasi grafik melalui sebuah FlowChart (diagram alir) ataupun melalui PseudoCode yang menjembatani antara bahasa manusia dengan bahasa pemrograman. Berdasarkan permasalahan yang terjadi pada bagian sebelumnya, bagaimanakah kita dapat memberikan solusi penyelesaian secara umum dalam sebuah alur yang dapat dengan mudah dimengerti? Mengekspresikan cara penyelesaian melalui bahasa manusia :

Page 16: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 7

1. Tentukan daftar nama 2. Tentukan nama yang akan dicari, anggaplah ini merupakan sebuah kata kunci 3. Bandingkan kata kunci terhadap setiap nama yang terdapat pada daftar 4. Jika kata kunci tersebut sama dengan nama yang terdapat pada daftar,

tambahkan nilai 1 pada hasil perhitungan 5. Jika seluruh nama telah dibandingkan, tampilkan hasil perhitungan (output)

Mengekspresikan cara penyelesaian melalui FlowChart :

Gambar 2: Contoh Flowchart

Mengekspresikan solusi melalui Pseudocode :

listNama = Daftar Nama keyNama = Nama yang dicari hitung = 0 Untuk setiap nama pada Daftar Nama lakukan : Jika nama == keyNama Hitung = Hitung + 1 Tampilkan Hitung

1.5.3.1 Simbol Flowchart dan Artinya

Page 17: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 8

Flowchart adalah representasi grafis dari langkah – langkah yang harus diikuti dalam menyelesaikan suatu permasalahan yang terdiri atas sekumpulan simbol, dimana masing – masing simbol merepresentasikan kegiatan tertentu. Flowchart diawali dengan penerimaan input dan diakhiri dengan penampilan output. Sebuah flowchart pada umumnya tidak menampilkan instruksi bahasa pemrograman, namun menetapkan konsep solusi dalam bahasa manusia ataupun notasi matematis. Berikut ini akan dibahas tentang simbol–simbol yang digunakan dalam menyusun flowchart, kegiatan yang diwakili serta aturan yang diterapkan dalam penggunaan simbol tersebut :

Simbol Nama Pengertian

Simbol Proses

Simbol ini digunakan untuk melambangkan kegiatan pemprosesan input. Dalam simbol ini, kita dapat menuliskan operasi-operasi yang dikenakan pada input, maupun operasi lainnya. Sama seperti aturan pada simbol input, penulisan dapat dilakukan secara satu per satu maupun secara keseluruhan.

Simbol Input – Output (IO)

Merepresentasikan fungsi I/O yang membuat sebuah data dapat diproses (input) atau ditampilkan (output) setelah mengalami eksekusi informasi.

Simbol Garis Alir

Simbol ini digunakan untuk menghubungkan setiap langkah dalam flowchart dan menunjukkan kemana arah aliran diagram. Anak panah ini harus mempunyai arah dari kiri ke kanan atau dari atas ke bawah. Anak panah ini juga dapat diberi label, khususnya jika keluar dari symbol percabangan.

Simbol Anotasi

Merepresentasikan informasi deskriptif tambahan, komentar atau catatan penjelasan. Dalam simbol ini, kita dapat menuliskan komentar apapun dan sebanyak apapun, hal ini berguna untuk memperjelas langkah-langkah dalam flowchart. Garis vertical dan garis putus–putus dapat ditempatkan pada sisi kanan maupun kiri.

Simbol Percabangan

Simbol ini digunakan untuk melambangkan percabangan, yaitu pemeriksaan terhadap suatu kondisi. Dalam simbol ini, kita menuliskan keadaan yang harus dipenuhi. Hasil dari pemeriksaan dalam simbol ini adalah YES atau NO. Jika pemeriksaan menghasilkan keadaan benar, maka jalur yang

Page 18: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 9

Simbol Nama Pengertian

harus dipilih adalah jalur yang berlabel Yes, sedangkan jika pemeriksaan menghasilkan keadaan salah, maka jalur yang harus dipilih adalah jalur yang berlabel No.

Simbol Terminator

Terminator berfungsi untuk menandai awal dan akhir dari suatu flowchart. Simbol ini biasanya diberi label START untuk menandai awal dari flowchart, dan label STOP untuk menandai akhir dari flowchart. Jadi dalam sebuah flowchart pasti terdapat sepasang terminator yaitu terminator start dan stop.

Simbol Konektor

Simbol konektor digunakan pada waktu menghubungkan suatu langkah dengan langkah lain dalam sebuah flowchart dengan keadaan on page atau off page. Konektor on page digunakan untuk menghubungkan suatu langkah dengan langkah lain dari flowchart dalam satu halaman, sedangkan konektor off page digunakan untuk menghubungkan suatu langkah dengan langkah lain dari flowchart dalam halaman yang berbeda. Konektor ini biasanya dipakai saat media yang kita gunakan untuk menggambar flowchart tidak cukup luas untuk memuat gambar secara utuh, jadi perlu dipisah-pisahkan. Dalam sepasang konektor biasanya diberi label tertentu yang sama agar lebih mudah diketahui pasangannya.

Simbol Prosedur

Simbol ini berperan sebagai blok pembangun dari suatu program. Prosedur memiliki suatu flowchart yang berdiri sendiri diluar flowchart utama. Jadi dalam simbol ini, kita cukup menuliskan nama prosedurnya saja, jadi sama seperti jika kita melakukan pemanggilan suatu prosedur pada program utama (main program). Sama dengan aturan pada simbol percabangan, penulisan nama prosedur dilakukan secara satu per satu.

Tabel 2: Simbol dari Flowchart

1.5.4 Pengkodean, Uji Coba dan Pembuatan Dokumentasi Setelah membentuk algoritma, maka proses penulisan program dapat dimulai. Menggunakan algoritma sebagai pedoman, maka kode program dapat ditulis sesuai bahasa pemrograman yang dipilih.

Page 19: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 10

Setelah menyelesaikan seluruh kode program, langkah selanjutnya yaitu menguji program tersebut apakah telah berfungsi sesuai tujuannya untuk memberikan suatu solusi untuk menyelesaikan suatu masalah. Bilamana terjadi kesalahan – kesalahan logika atas program, disebut juga sebagai bugs, maka kita perlu untuk mengkaji ulang rumusan/algoritma yang telah dibuat, kemudian memperbaiki implementasi kode program yang mungkin keliru. Proses ini disebut dengan debugging. Terdapat dua tipe kesalahan (errors) yang akan dihadapi seorang programmer. Yang pertama adalah compile-time error, dan yang kedua adalah runtime error. Compile-time errors muncul jika terdapat kesalahan penulisan kode program. Compiler akan mendeteksi kesalahan yang terjadi sehingga kode tersebut tidak akan bisa dikompilasi. Terlupakannya penulisan semi-colon (;) pada akhir sebuah pernyataan program atau kesalahan ejaan pada beberapa perintah dapat disebut juga sebagai compile–time error. Compiler tidaklah sempurna sehingga tidak dapat mengidentifikasi seluruh kemungkinan kesalahan pada waktu kompilasi. Umumnya kesalahan yang terjadi adalah kesalahan logika seperti perulangan tanpa akhir. Tipe kesalahan ini disebut dengan runtime error. Sebagai contoh, penulisan kode pada program terlihat tanpa kesalahan, namun pada saat anda menelusuri struktur logika kode tersebut, bagian yang sama pada kode tereksekusi berulang–ulang tanpa akhir. Pada kasus tersebut compiler tidak cukup cerdas untuk menangkap kesalahan tipe ini pada saat proses kompilasi. Sehingga saat program dijalankan, aplikasi atau bahkan keseluruhan komputer mengalami hang karena mengalami proses perulangan yang tidak berakhir. Contoh lain dari run-time error adalah perhitungan atas nilai yang salah, kesalahan penetapan kondisi dan lain sebagainya. Untuk memudahkan dalam memeriksa suatu kesalahan suatu program ataupun memahami jalannya program, kita juga perlu membuat suatu dokumentasi dari program yang dibuat. Dokumentasi tersebut berisi informasi mulai dari tujuan dan fungsi program, algoritma, serta cara penggunaannya.

1.6 Sistem Numerik dan Konversi Bilangan dapat disajikan dalam beberapa cara. Cara penyajiannya tergantung pada Basis (BASE) bilangan tersebut. Terdapat 4 cara utama dalam penyajian bilangan.

Page 20: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 11

1.6.1 Sistem Bilangan Desimal Manusia umumnya menggunakan bilangan pada bentuk desimal. Bilangan desimal adalah sistem bilangan yang berbasis 10. Hal ini berarti bilangan – bilangan pada sistem ini terdiri dari 0 sampai dengan 9. Berikut ini beberapa contoh bilangan dalam bentuk desimal :

12610 (umumnya hanya ditulis 126) 1110 (umumnya hanya ditulis 11)

1.6.2 Sistem Bilangan Biner

Bilangan dalam bentuk biner adalah bilangan berbasis 2. Ini menyatakan bahwa bilangan yang terdapat dalam sistem ini hanya 0 dan 1. Berikut ini contoh penulisan dari bilangan biner :

11111102

10112

1.6.3 Sistem Bilangan Oktal

Bilangan dalam bentuk oktal adalah sistem bilangan yang berbasis 8. Hal ini berarti bilangan–bilangan yang diperbolehkan hanya berkisar antara 0 – 7. Berikut ini contoh penulisan dari bilangan oktal :

1768

138

1.6.4 Sistem Bilangan Heksadesimal

Bilangan dalam sistem heksadesimal adalah sistem bilangan berbasis 16. Sistem ini hanya memperbolehkan penggunaan bilangan dalam skala 0 – 9, dan menggunaan huruf A – F, atau a – f karena perbedaan kapital huruf tidak memiliki efek apapun. Berikut ini contoh penulisan bilangan pada sistem heksadesimal :

7E16

B16

Page 21: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 12

Tabel 3: Bilangan heksadesimal dan perbandingannya terhadap desimal

Berikut adalah perbandingan keseluruhan sistem penulisan bilangan :

Desimal Biner Oktal Heksadesimal

12610 11111102 1768 7E16

1110 10112 138 B16

Tabel 4: Contoh Konversi Antar Sistem Bilangan

1.6.5 Konversi 1.6.5.1 Desimal ke Biner / Biner ke Desimal Untuk mengubah angka desimal menjadi angka biner digunakan metode pembagian dengan angka 2 sambil memperhatikan sisanya. Ambil hasil bagi dari proses pembagian sebelumnya, dan bagi kembali bilangan tersebut dengan angka 2. Ulangi langkah-langkah tersebut hingga hasil bagi akhir bernilai 0 atau 1. Kemudian susun nilai–nilai sisa dimulai dari nilai sisa terakhir sehingga diperoleh bentuk biner dari angka bilangan tersebut.

Sebagai Contoh :

12610 = ? 2

Hasil Bagi Nilai Sisa

126 / 2 = 63 0

63 / 2 = 31 1

31 / 2 =15 1

15 / 2 = 7 1

7 / 2 = 3 1

3 / 2 = 1 1

1 / 2 = 1

Heksadesimal 0 1 2 3 4 5 6 7 8 9 A B C D E F

Nilai Dalam Desimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Urutkan

Page 22: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 13

Dengan menuliskan nilai sisa mulai dari bawah ke atas, didapatkan angka biner 11111102.

Konversi bilangan biner ke desimal didapatkan dengan menjumlahkan perkalian semua bit biner dengan perpangkatan 2 sesuai dengan posisi bit tersebut. Sebagai Contoh :

110011012 = ? 10

Angka desimal 205 diperoleh dari penjumlahan angka yang diarsir. Setiap biner yang bernilai 1 akan mengalami perhitungan, sedangkan yang bernilai 0 tidak akan dihitung karena hanya akan menghasilkan nilai 0. 1.6.5.2 Desimal ke Oktal/Heksadesimal dan Oktal/Heksadesimal ke

Desimal Pengubahan bilangan desimal ke bilangan oktal atau bilangan heksadesimal pada dasarnya sama dengan konversi bilangan desimal ke biner. Perbedaannya terletak pada bilangan pembagi. Jika pada konversi biner pembaginya adalah angka 2, maka pada konversi oktal pembaginya adalah angka 8, sedangkan pada konversi heksadesimal pembaginya adalah 16. Contoh konversi Oktal :

12610 = ? 8

Dengan menuliskan nilai sisa dari bawah ke atas, kita peroleh bilangan oktal 1768

Hasil Bagi Nilai Sisa

126 / 8 = 15 6

15 / 8 = 1 7

1 / 8 = ` 1

Page 23: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 14

Contoh konversi Heksadesimal :

12610 = ? 16

Dengan menuliskan nilai sisa dari bawah ke atas, kita peroleh bilangan Heksadesimal 7E16

Konversi bilangan Oktal dan Heksadesimal sama dengan konversi bilangan Biner ke Desimal. Perbedaanya hanya terdapat pada penggunaan angka basis. Jika sistem Biner menggunakan basis 2, maka pada bilangan Oktal, basis yang digunakan adalah 8 dan pada bilangan Heksadesimal adalah angka 16. Contoh konversi Oktal :

1768 = ? 10

Hasil Bagi Nilai Sisa

126 / 16 = 7 14 (E)

7 / 16 = 7

Posisi 2 1 0

Digit Oktal 1 7 6

6 x 80 = 6

7 x 81 = 56

1 x 82 = 64

TOTAL: 126

Page 24: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 15

Contoh konversi Heksadesimal :

7E16 = ? 10

Posisi 1 0

Digit Heksadesimal 7 E

14 x 160 = 14

7 x 161 = 112

TOTAL: 126

1.6.5.3 Biner ke Oktal dan Oktal ke Biner Untuk mengubah bilangan biner ke oktal, kita pilah bilangan tersebut menjadi 3 bit bilangan biner dari kanan ke kiri. Tabel berikut ini menunjukkan representasi bilangan biner terhadap bilangan oktal :

Digit Oktal Representasi Biner

0 000

1 001

2 010

3 011

4 100

5 101

6 110

7 111

Tabel 5: Bilangan oktal dan perbandingannya dalam sistem biner

Page 25: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 16

Sebagai contoh :

11111102 = ? 8

0 0 1 1 1 1 1 1 0

1 7 6

Mengubah sistem bilangan oktal menjadi bilangan biner dilakukan dengan cara kebalikan dari konversi biner ke oktal. Dalam hal ini masing–masing digit bilangan oktal diubah langsung menjadi bilangan biner dalam kelompok tiga bit, kemudian merangkai kelompok bit tersebut sesuai urutan semula. Sebagai contoh :

1768 = ? 2

1 7 6

0 0 1 1 1 1 1 1 0

1.6.5.4 Biner ke Heksadesimal dan Heksadesimal ke Biner Pengubahan bilangan Biner ke Heksadesimal dilakukan dengan pengelompokan setiap empat bit Biner dimulai dari bit paling kanan. Kemudian konversikan setiap kelompok menjadi satu digit Heksadesimal. Tabel berikut menunjukkan representasi bilangan Biner terhadap digit Heksadesimal :

Digit Heksadesimal Representasi Biner

0 0000

1 0001

2 0010

3 0011

4 0100

Page 26: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 17

Digit Heksadesimal Representasi Biner

5 0101

6 0110

7 0111

8 1000

9 1001

A 1010

B 1011

C 1100

D 1101

E 1110

F 1111

Tabel 6: Bilangan heksadesimal dan konversinya dalam biner

Sebagai contoh :

11111102 = ? 16

0 1 1 1 1 1 1 0

7 E

Konversi bilangan Heksadesimal ke Biner dilakukan dengan membalik urutan dari proses pengubahan Biner ke Heksadesimal. Satu digit Heksadesimal dikonversi menjadi 4 bit Biner. Sebagai contoh :

7E16 = ? 2

7 E

0 1 1 1 1 1 1 0

Page 27: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 18

1.7 Latihan 1.7.1 Menyusun Algoritma Dari permasalahan–permasalahan di bawah ini, susunlah sebuah algoritma untuk menyelesaikannya. Anda dapat menyusunnya dengan menggunakan pseudocode ataupun flowchart.

1. Memasak Roti 2. Menggunakan Komputer di Laboratorium 3. Menghitung rata–rata dari 3 buah bilangan

1.7.2 Konversi Sistem Bilangan Konversikan bilangan – bilangan berikut ini :

1. 198010 ke sistem bilangan Biner, Heksadesimal dan Oktal

2. 10010011012 ke sistem bilangan Desimal, Heksadesimal dan Oktal

3. 768 ke sistem bilangan Biner, Heksadesimal dan Desimal

4. 43F16 ke sistem bilangan Biner, Desimal dan Oktal

Page 28: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 1

BAB 2

Pengenalan Bahasa JAVA

2.1 Tujuan Pada bab ini akan dibahas secara singkat tentang sejarah JAVA dan definisi teknologi JAVA. Bab ini juga akan sedikit menyinggung tentang fase–fase dalam program JAVA. Pada akhir pembahasan, diharapkan pembaca dapat :

1. Menjelaskan fitur–fitur teknologi dari Java meliputi Java Virtual Machine (JVM), garbage collection, dan code security.

2. Menjelaskan perbedaan fase pada pemrograman JAVA

2.2 Latar Belakang Bahasa JAVA 2.2.1 Sejarah Singkat JAVA Pada 1991, sekelompok insinyur Sun dipimpin oleh Patrick Naughton dan James Gosling ingin merancang bahasa komputer untuk perangkat konsumer seperti cable TV Box. Dikarenakan perangkat tersebut tidak memiliki banyak memori, bahasa harus berukuran kecil dan mengandung kode yang liat. Juga karena manufaktur-manufaktur berbeda memilih processor yang berbeda pula, maka bahasa harus bebas dari manufaktur manapun. Proyek diberi nama kode ”Green”. Kebutuhan untuk fleksibilitas, kecil, liat dan kode yang netral terhadap platform mengantar tim mempelajari implementasi Pascal yang pernah dicoba. Niklaus Wirth, pencipta bahasa Pascal telah merancang bahasa portabel yang menghasilkan intermediate code untuk mesin hipotesis. Mesin ini sering disebut dengan mesin maya (virtual machine). Kode ini kemudian dapat digunakan di sembarang mesin yang memiliki interpreter. Proyek Green menggunakan mesin maya untuk mengatasi isu utama tentang netral terhadap arsitektur mesin. Karena orang–orang di proyek Green berbasis C++ dan bukan Pascal maka kebanyakan sintaks diambil dari C++, serta mengadopsi orientasi objek dan bukan prosedural. Mulanya bahasa yang diciptakan diberi nama ”Oak” oleh James Gosling yang mendapat inspirasi dari sebuah pohon yang berada pada seberang kantornya, namun dikarenakan nama Oak sendiri merupakan nama bahasa pemrograman yang telah ada sebelumnya, kemudian SUN menggantinya dengan JAVA. Nama JAVA sendiri terinspirasi pada saat mereka sedang menikmati secangkir kopi di sebuah kedai kopi yang kemudian dengan tidak sengaja salah satu dari mereka menyebutkan kata JAVA yang mengandung arti asal bijih kopi. Akhirnya mereka sepakat untuk memberikan nama bahasa pemrograman tersebut dengan nama Java.

Page 29: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 2

Produk pertama proyek Green adalah Star 7 (*7), sebuah kendali jarak jauh yang sangat cerdas. Dikarenakan pasar masih belum tertarik dengan produk konsumer cerdas maka proyek Green harus menemukan pasar lain dari teknologi yang diciptakan. Pada saat yang sama, implementasi WWW dan Internet sedang mengalami perkembangan pesat. Di lain pihak, anggota dari proyek Green juga menyadari bahwa Java dapat digunakan pada pemrograman internet, sehingga penerapan selanjutnya mengarah menjadi teknologi yang berperan di web.

Java telah mengakomodasi hampir seluruh fitur penting bahasa–bahasa pemrograman yang ada semenjak perkembangan komputasi modern manusia :

1. Dari SIMULA, bahasa pada tahun 65-an, bahasa yang paling mempengaruhi Java sekaligus C++. Dari bahasa ini diadopsi bentukan–bentukan dasar dari pemrograman berorientasi objek.

2. Dari LISP – bahasa tahun 55-an. Diadopsi fasilitas garbage collection, serta kemampuan untuk meniru generic list processing, meski fasilitas ini jarang yang memanfaatkannya.

3. Dari Algol – bahasa pada tahun 60-an, diambil struktur kendali yang dimilikinya.

4. Dari C++, diadopsi sintaks, sebagian semantiks dan exception handling 5. Dari bahasa Ada, diambil strongly type, dan exception handling. 6. Dari Objective C, diambil fasilitas interface. 7. Dari bahasa SmallTalk, diambil pendekatan single-root class hiérarchie,

dimana object adalah satu kesatuan hirarki pewarisan 8. Dari bahasa Eiffel, fasilitas assertion yang mulai diterapkan di sebagian JDK

1.4

Page 30: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 3

2.2.2 Apa itu Teknologi JAVA? 2.2.2.1 Sebuah Bahasa Pemrograman 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. 2.2.2.2 Sebuah Development Environment Sebagai sebuah peralatan pembangun, teknologi Java menyediakan banyak tools : compiler, interpreter, penyusun dokumentasi, paket kelas dan sebagainya. 2.2.2.3 Sebuah Aplikasi Aplikasi dengan teknologi Java secara umum adalah aplikasi serba guna yang dapat dijalankan pada seluruh mesin yang memiliki Java Runtime Environment (JRE). 2.2.2.4 Sebuah Deployment Environment 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 meliputi kelas dasar dari Java, komponen GUI dan sebagainya. Komponen yang lain terdapat pada Web Browser. Hampir seluruh Web Browser komersial menyediakan interpreter dan runtime environment dari teknologi Java.

Page 31: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 4

2.2.5 Mengapa Mempelajari JAVA? Berdasarkan white paper resmi dari SUN, Java memiliki karakteristik berikut : 1. Sederhana

Bahasa pemrograman Java menggunakan sintaks mirip dengan C++ namun sintaks pada Java telah banyak diperbaiki terutama menghilangkan penggunaan pointer yang rumit dan multiple inheritance. Java juga menggunakan automatic memory allocation dan memory garbage collection.

2. Berorientasi objek (Object Oriented)

Java mengunakan pemrograman berorientasi objek yang membuat program dapat dibuat secara modular dan dapat dipergunakan kembali. Pemrograman berorientasi objek memodelkan dunia nyata kedalam objek dan melakukan interaksi antar objek-objek tersebut.

3. Dapat didistribusi dengan mudah Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya libraries networking yang terintegrasi pada Java.

4. Interpreter

Program Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda.

5. Robust

Java mempuyai reliabilitas yang tinggi. Compiler pada Java mempunyai kemampuan mendeteksi error secara lebih teliti dibandingkan bahasa pemrograman lain. Java mempunyai runtime-Exception handling untuk membantu mengatasi error pada pemrograman.

6. Aman

Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak sistem komputer yang menjalankan aplikasi tersebut.

7. Architecture Neutral Program Java merupakan platform independent. Program cukup mempunyai satu buah versi yang dapat dijalankan pada platform yang berbeda dengan Java Virtual Machine.

8. Portabel Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang.

9. Performance Performance pada Java sering dikatakan kurang tinggi. Namun performance Java dapat ditingkatkan menggunakan kompilasi Java lain seperti buatan Inprise, Microsoft ataupun Symantec yang menggunakan Just In Time Compilers (JIT).

Page 32: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 5

10. Multithreaded

Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus dan simultan.

11. Dinamis

Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada suatu class dengan menambahkan properties ataupun method dapat dilakukan tanpa menggangu program yang menggunakan class tersebut.

2.2.4 Sebagian Fitur dari JAVA 2.2.4.1 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. 2.2.4.2 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 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.

Page 33: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 6

2.2.4.3 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 di eksekusi. Java juga menyediakan beragam teknik pengamanan lain :

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

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.

Page 34: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 7

2.2.5 Fase – fase Pemrograman JAVA Gambar dibawah ini menjelaskan aliran proses kompilasi dan eksekusi sebuah program Java :

Gambar 2.1: Fase dari sebuah Program Java

Langkah pertama dalam pembuatan sebuah program berbasis Java adalah menuliskan kode program pada text editor. Contoh text editor yang dapat digunakan antara lain : notepad, vi, emacs dan lain sebagainya. Kode program yang dibuat kemudian tersimpan dalam sebuah berkas berekstensi .java. Setelah membuat dan menyimpan kode program, kompilasi file yang berisi kode program tersebut dengan menggunakan Java Compiler. Hasil dari kompilasi berupa berkas bytecode dengan ekstensi .class. Berkas yang mengandung bytecode tersebut kemudian akan dikonversikan oleh Java Interpreter menjadi bahasa mesin sesuai dengan jenis dan platform yang digunakan.

Proses Tool Hasil

Menulis kode program Text editor Berkas berekstensi .java

Kompilasi program Java Compiler Berkas berekstensi .class (Java Bytecodes)

Menjalankan program Java Interpreter Program Output

Tabel 1: Ringkasan Fase dari sebuah Program Java

Page 35: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 1

BAB 3

Mengenali Lingkup Pemrograman Anda

3.1 Tujuan Dalam bagian ini, kita akan membahas tentang bagaimana menulis, mengkompilasi dan menjalankan program Java. Terdapat dua cara dalam melakukannya, yang pertama menggunakan console dan text editor. Sedangkan cara kedua adalah dengan menggunakan NetBeans yang merupakan Integrated Development Environment atau yang disebut IDE. Pada akhir pembahasan, diharapkan pembaca dapat : Membuat program Java menggunakan text editor dan console dalam Linux (Ubuntu

Dapper) Membedakan antara syntax-errors dan runtime-errors Membuat program Java menggunakan NetBeans

3.2 Pendahuluan IDE adalah sebuah peralatan dalam pemrograman yang diintegrasikan ke dalam aplikasi software yang mendukung pembangunan GUI, teks atau penulisan kode, compiler dan debugger. Tutorial ini menggunakan Ubuntu Dapper sebagai sistem operasinya. Sebelum menggunakan tutorial ini, pastikan bahwa telah menginstal Java dan NetBeans dalam sistem yang Anda gunakan. Untuk instruksi bagaimana cara menginstal Java dan NetBeans, dapat dilihat pada Appendix A. Untuk versi Windows XP dalam bagian ini, dapat dilihat pada Appendix B. Sebelum membahas lebih terperinci, pada awalnya akan kita lihat program Java pertama yang akan Anda tulis.

3.3 Program Java Pertama

public class Hello { /** * My first java program */ public static void main(String[] args) { //Menampilkan kata "Hello world" dilayar System.out.println("Hello world!"); } }

Page 36: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 2

Sebelum menjelaskan apa arti dari program tersebut, cobalah untuk menulis program ini di dalam file dan kemudian menjalankannya.

3.4 Menggunakan Text Editor dan Console Dalam contoh ini, kita akan menggunakan text editor untuk mengedit program Java. Anda juga akan membuka terminal window untuk mengkompilasi dan mengeksekusi program Java Anda. Langkah 1: Memulai Text Editor Untuk memulai text editor di Linux , klik pada Applications->Accessories->Text Editor.

Gambar 1: Aplikasi Text Editor di Linux

Page 37: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 3

Langkah 2: Membuka Terminal Untuk membuka terminal di Linux, klik pada Applications-> Accessories-> Terminal.

Langkah 3: Tulislah listing program Java Anda dalam text editor.

Figure 2: Terminal pada Linux

Gambar 3: Menulis Kode Program Menggunakan Text Editor

Page 38: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 4

Langkah 4: Simpanlah program Java Anda Program ini akan disimpan dalam file yang bernama ''Hello.java'', dan disimpan dalam sebuah folder yang bernama MYJAVAPROGRAMS. Untuk membuka Save dialog box, klik pada File menu yang terdapat pada menubar dan kemudian klik save. Setelah melakukan instruksi tersebut, dialog box akan tampil seperti gambar dibawah ini.

Gambar 4: Menyimpan File

Page 39: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 5

Klik pada tombol browse, kemudian klik tombol Create Folder.

Page 40: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 6

Nama folder baru, MYJAVAPROGRAMS. Sekarang, klik pada folder MYJAVAPROGRAMS untuk mengetahui isi folder yang ada didalamnya. Setelah Anda klik pada folder tersebut, Anda akan melihat gambar yang ditampilkan seperti berikut ini. Untuk saat ini folder tersebut harus kosong sampai terbuatnya folder baru dan kita akan menyimpan semuanya didalam folder tersebut.

Sekarang, dalam textbox Selection, ketiklah nama file dari program Anda, yaitu ''Hello.java'', kemudian klik pada tombol SAVE.

Page 41: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 7

Sekarang Anda telah menyimpan file Anda, ingatlah cara bagaimana nama frame dapat berubah dari ''Untitled Document 1 (modified) – gedit'' menjadi "Hello.java (~/MYJAVAPROGRAMS) – gedit". Jika Anda ingin melakukan perubahan pada file Anda, Anda hanya perlu mengeditnya, kemudian menyimpannya kembali dengan mengklik pada File->Save.

Gambar 5: Jendela Baru setelah Penyimpanan

Page 42: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 8

Langkah 5: Mengkompilasi program Anda Langkah berikut ini adalah mengkompilasi program Anda. Masuklah ke Terminal Window yang telah kita buka sebelumnya. Ketika Anda membuka terminal window, terminal tersebut menampilkan jendela yang disebut sebagai home folder Anda. Untuk melihat isi dari folder tersebut, ketik ls dan kemudian tekan ENTER. Apa yang akan Anda temukan adalah daftar file-file dan folder di dalamnya. Disinilah Anda dapat melihat folder dengan nama "MYJAVAPROGRAMS" yang telah kita buat sebelumnya, dan merupakan tempat dimana kita menyimpan program Hello.java kita. Kemudian masuklah ke dalam direktori tersebut. Untuk masuk ke dalam sebuah direktori, ketiklah perintah : cd [directory name]. Perintah ''cd'' digunakan untuk merubah direktori. Dalam hal ini, nama dari direktori kita adalah MYJAVAPROGRAM, maka Anda harus mengetik : cd MYJAVAPROGRAMS.

Gambar 6: Merubah Direktori

Page 43: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 9

Setelah berada di dalam folder yang berisi program Java Anda, sudah saatnya untuk memulai meng-compile program Java tersebut. Sebagai catatan, bahwa file yang Anda maksud harus ada didalam folder yang Anda pilih. Periksalah dengan menjalankan perintah ''ls'' lagi untuk melihat bahwa file Anda ada didalam folder tersebut.

Untuk mengkompilasi program Java, gunakanlah perintah : javac [filename]. Dalam hal ini, Anda mengetikan perintah : javac Hello.Java.

Gambar 7: Daftar File didalam Direktori yang Baru

Gambar 8: Mengkompilasi File Java

Page 44: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 10

Selama pengkompilasian, javac menambah file ke dalam disk yang disebut [filename].class, atau dalam hal ini, Hello.class, yang merupakan kode sebenarnya. Langkah 6 : Menjalakan Program Selama proses pengkompilasian, javac menambah file baru kedalam disk yang disebut [filename].class, dalam hal ini, Hello.class, yang merupakan kode sebenarnya saat ini, dengan perkiraan tidak ada permasalahan pada saat proses compile (kita akan menyelidiki dan membahas permasalahan yang ditemukan selama proses compile, pada bagian berikutnya), berarti telah siap untuk menjalankan program Anda. Untuk menjalankan program Java Anda, dengan mengetikkan perintah : java [filename without the extension], maka dalam hal ini, Anda mengetikkan perintah : java Hello. Sekarang Anda dapat melihat di layar bahwa Anda telah menjalankan program Java pertama Anda, yang menampilkan pesan, ''Hello world!''.

Gambar 9: Menjalankan File Class

Page 45: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 11

3.4.1 Errors Apa yang telah ditunjukan sejauh ini adalah program Java dimana kita tidak menemukan berbagai masalah dalam proses kompilasi maupun pada saat menjalankannya. Bagaimanapun juga, hal ini tidak selalu terjadi. Seperti yang telah kita diskusikan pada bagian pertama dari latihan ini, biasanya kita juga akan menemukan permasalahan selama proses berlangsung. Seperti yang telah didiskusikan sebelumnya, ada 2 macam error. Pertama adalah compile-time error atau yang disebut juga sebagai syntax error. Kedua adalah runtime errors. 3.4.1.1 Syntax Errors Syntax errors biasanya terjadi karena kesalahan penulisan. Mungkin Anda kekurangan sebuah perintah di Java atau lupa untuk menulis tanda titik-koma pada akhir pernyataan. Java mencoba untuk mengisolasi error tersebut dengan cara menunjukkan baris dari kode dan terlebih dahulu menunjuk karakter yang salah dalam baris tersebut. Bagaimanapun juga, error belum tentu berada pada titik yang ditunjuk. Kesalahan umum lainnya adalah dalam kapitalisasi, ejaan, penggunaan dari karakter khusus yang tidak benar, dan penghilangan dari pemberian tanda baca yang sebenarnya. Mari kita mengambil contoh, pada program Hello.java, dimana dengan sengaja kita menghilangkan titik-koma pada akhir pernyataan dan juga mencoba untuk mengetikkan ejaan yang salah pada sebuah perintah.

Gambar 10: Listing Program yang Memiliki Error

Page 46: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 12

Lihatlah pesan error yang ditampilkan setelah peng-compile-an program dijalankan. Pesan error yang pertama memberitahu bahwa di program Anda terdapat error pada baris 6. Hal itu menunjuk pada kata setelah statict, dimana seharusnya dieja sebagai static. Pesan error yang kedua memberitahukan bahwa pada program tersebut kehilangan titik-koma setelah pernyataan Anda.

Jika Anda menemukan banyak pesan error, cobalah untuk mengoreksi kesalahan yang pertama pada daftar error satu per satu, dan mencoba untuk mengkompilasinya kembali. Dengan melakukan hal tersebut maka, dapat mengurangi total error yang ada. 3.4.1.2 Run-time Errors Run-time error merupakan error yang tidak akan ditampilkan sampai Anda menjalankan program Anda. Bahkan program yang dikompilasi dengan sukses dapat menampilkan jawaban yang salah jika programmer belum berpikir sampai struktur dan proses logis dari program tersebut.

Gambar 11: Pengkompilasian Llisting Program yang Memiliki Error

Page 47: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 13

3.5 Menggunakan NetBeans Sekarang kita mencoba mengerjakan program kita dengan jalan yang lebih rumit, mari kita lihat bagaimana mengerjakan semua proses yang telah dijelaskan pada bagian sebelumnya dengan menggunakan sebuah aplikasi. Pada bagian pelajaran ini, kita akan menggunakan NetBeans, yang merupakan Integrated Development Environment atau IDE. Suatu IDE adalah lingkup pemrograman yang diintegrasikan kedalam suatu aplikasi perangkat lunak yang menyediakan pembangun GUI, suatu text atau kode editor, suatu compiler atau interpreter dan suatu debugger. Langkah 1 : NetBeans Ada dua cara untuk menjalankan NetBeans. Pertama menulis perintah menggunakan terminal, atau hanya dengan mengklik pada tombol shortcut yang dapat ditemukan di desktop. Untuk menjalankan NetBeans menggunakan command-line. Bukalah terminal (lihat langkahnya pada bagaimana menjalankan terminal didiskusi sebelumnya), dan ketiklah : netbeans.

Gambar 12: Menjalankan NetBeans Menggunakan Command-Line

Page 48: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 14

Cara kedua untuk menjalankan NetBeans, adalah dengan mengklik shortcut icon yang terdapat pada desktop Anda.

Gambar 13: Menjalankan NetBeans Menggunakan Shortcut Icon di Desktop

Page 49: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 15

Setelah Anda membuka NetBeans IDE, Anda akan melihat graphical user interface (GUI) seperti yang ditunjukkan dibawah ini.

Gambar 14: Window Setelah Membuka NetBeans

Page 50: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 16

Langkah 2: Membuat sebuah Project Pertama, mari kita buat sebuah project. Klik pada File->New Project. Setelah melakukannya, akan ditampilkan kotak dialog project yang baru. Kemudian klik pada Java Application dan klik tombol NEXT.

Gambar 15: Memilih Tipe Project

Page 51: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 17

Sekarang, dialog aplikasi yang baru akan ditampilkan.

Gambar 16: Mengatur Informasi Project

Page 52: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 18

Cobalah untuk mengubah lokasi aplikasi, dengan mengklik pada tombol BROWSE. Kemudian dialog lokasi project akan muncul. Klik dua kali pada home folder Anda.

Kemudian isi dari folder root akan ditampilkan. Lalu klik dua kali pada folder MYJAVAPROGRAMS dan klik tombol OPEN.

Gambar 17: Mengatur Lokasi Project

Page 53: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 19

Lihatlah Project Location dan Project Folder telah berubah menjadi /home/florence/MYJAVAPROGRAMS. Yang terakhir, pada textfield Create Main Class, tulislah Hello sebagai nama kelas utama, dan kemudian klik tombol FINISH.

Gambar 18: Window setelah Mengatur Lokasi Project ke MYJAVAPROGRAMS/Mengatur kelas utama project menjadi Hello

Page 54: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 20

Langkah 3 : Menulis dalam Program Anda Sebelum menulis program Anda, pertama akan dijelaskan mengenai jendela utama setelah membuat project. Seperti ditunjukkan di bawah, secara otomatis NetBeans membuat kode dasar untuk program Java Anda. Anda dapat menambah pernyataan-pernyataan Anda pada kode yang telah di-generate. Pada sisi kiri jendela, Anda dapat melihat daftar folder dan file-file yang dihasilkan NetBeans setelah membuat sebuah project. Semua ini dapat Anda temukan dalam folder MYJAVAPROGRAMS Anda, dimana Anda menetapkan lokasi project tersebut.

Gambar 19: Tampilan dari Project yang telah Dibuat

Page 55: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 21

Sekarang, cobalah memodifikasi kode yang dihasilkan oleh NetBeans. Untuk saat ini abaikan bagian-bagian lain dari program, detail dari kode tersebut akan dijelaskan pada bagian berikutnya. Masukkan kode :

System.out.println("Hello world!");

Setelah pernyataan, //TODO code application logic here.

Gambar20: Memasukkan Kode

Page 56: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 22

Langkah 4 : Mengkompilasi Program Anda Sekarang, untuk mengkompilasi program Anda, klik pada Build->Buid Main Project. Atau, Anda juga dapat menggunakan tombol shortcut untuk mengkompilasi kode Anda.

Page 57: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 23

Jika tidak terdapat error pada program Anda, Anda dapat melihat pesan sukses build pada jendela yang dihasilkan.

Gambar 21: Tampilan Setelah sukses melakukan compile

Page 58: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 24

Langkah 5 : Menjalankan Program Anda Untuk menjalankan program Anda, klik pada Run->Run Main Project. Atau Anda juga dapat menggunakan tombol shortcut untuk menjalankan program Anda.

Gambar 22: Menjalankan dengan NetBeans

Page 59: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 25

Hasil dari program Anda ditampilkan pada jendela.

Gambar 23: Tampilan Setelah Sukses Menjalankan Program

Page 60: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 26

3.6 Latihan 3.6.1 Hello World! Menggunakan NetBeans, membuat class dengan nama : [NamaAnda]. Hasil dari program yang harus tampil di layar :

Welcome to Java Programming [NamaAnda]!!! 3.6.2 The Tree Menggunakan NetBeans, membuat class dengan nama : TheTree. Hasil dari program yang harus tampil dilayar :

I think that I shall never see, a poem as lovely as a tree. A tree whose hungry mouth is pressed Against the Earth’s sweet flowing breast.

Page 61: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 1

BAB 4

Dasar-Dasar Pemrograman

4.1 Tujuan Pada bagian ini, kita akan mendiskusikan mengenai bagian dasar pemrograman Java. Kita akan memulai dengan mencoba menjelaskan bagian dasar dari program Hello.java yang telah diperkenalkan pada bab sebelumnya. Kita juga akan mendiskusikan beberapa pedoman cara menulis script atau petunjuk penulisan kode dalam penulisan program yang lebih efektif dan mudah dibaca.

Pada akhir pembahasan, diharapkan pembaca dapat :

Mengidentifikasi bagian dasar dari program Java

Membedakan mana yang termasuk ke dalam Java literals, tipe data dasar, tipe variabel, pengidentifikasian dan operator

Mengembangkan program Java sederhana menggunakan konsep yang dipelajari pada

bab ini

4.2 Menganalisa program Java Pertama

Sekarang, kita akan mencoba untuk menganalisa program Java pertama :

public class Hello { /** * My first java program */ public static void main(String[] args) { //menampilkan string ”Hello world” pada layar System.out.println("Hello world!"); } }

Baris pertama kode :

public class Hello menandakan nama class yaitu Hello. Dalam Java, semua kode seharusnya ditempatkan di dalam deklarasi class. kita melakukannya dengan menggunakan kata kunci class. Sebagai tambahan, class menggunakan access specifier public, yang mengindikasikan bahwa class kita mempunyai akses bebas ke class yang lain dari package yang lain pula (package

Page 62: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 2

merupakan kumpulan class-class). Kita akan membahas lebih dalam mengenai package dan access specifier pada pembahasan selanjutnya. Baris berikutnya yaitu yang terdiri atas kurung kurawal { menandakan awal blok. Pada kode ini, kita menempatkan kurung kurawal pada baris selanjutnya setelah deklarasi class, bagaimanapun, kita dapat juga meletakkan kurung kurawal ini setelah baris pertama dari kode yang kita tulis. Jadi, kita dapat menulis kode kita sebagai berikut :

public class Hello {

atau public class Hello { Tiga baris selanjutnya menandakan adanya komentar Java. Komentar adalah sesuatu yang digunakan untuk mendokumentasikan setiap bagian dari kode yang ditulis. Komentar bukan merupakan bagian dari program itu sendiri, tetapi digunakan untuk tujuan dokumentasi. Komentar itu sendiri dapat ditambahkan pada kode yang Anda tulis sebagai petunjuk yang dapat membantu proses pembelajaran pemrograman yang baik.

/** * My first java program */

Komentar dinyatakan dengan tanda “/*” dan “*/”. Segala sesuatu yang ada diantara tanda tersebut diabaikan oleh compiler Java, dan mereka hanya dianggap sebagai komentar. Baris selanjutnya,

public static void main(String[] args) { atau dapat juga ditulis sebagai berikut,

public static void main(String[] args) {

mengindikasikan nama suatu method dalam class Hello yang bertindak sebagai method utama. Method utama adalah titik awal dari suatu program Java. Semua program kecuali applet yang ditulis dalam bahasa Java dimulai dengan method utama. Yakinkan untuk mengikuti kaidah penulisan tanda yang benar. Baris selanjutnya juga merupakan komentar,

//Menampilkan string "Hello world" pada layar

Sekarang kita mempelajari 2 cara untuk membuat komentar. Cara pertama adalah dengan menempatkan komentar dalam /* dan */, dan cara yang lain adalah dengan menuliskan tanda // pada awal komentar Baris selanjutnya,

Page 63: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 3

System.out.println("Hello world!");

menampilkan teks “Hello World!” pada layar. Perintah System.out.println(), menampilkan teks yang diapit oleh tanda double pute (“ ”) pada layar. Dua baris terakhir yang terdiri atas dua kurung kurawal digunakan untuk menutup method utama dan masing-masing class secara berurutan. Petunjuk Penulisan Program: 1. Program Java yang Anda buat harus selalu diakhiri dengan ekstensi file .java. 2. Nama File seharusnya sesuai/sama dengan nama class public nya. Sebagai contoh, jika

nama class public Anda adalah Hello, Anda harus menyimpan file tersebut dengan nama Hello.java.

3. Anda harus menulis komentar sebagai penjelasan pada kode yang Anda tulis, yaitu komentar yang berisi keterangan mengenai baris perintah pada class atau apa yang dijalankan oleh method yang Anda tulis tersebut.

Page 64: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 4

4.3. Komentar pada Java Komentar adalah catatan yang ditulis pada kode dengan tujuan sebagai bahan dokumentasi. Teks tersebut bukan bagian dari program dan tidak mempengaruhi jalannya program.

Java mendukung tiga jenis komentar : C++ style komentar satu baris, C style beberapa baris, dan komentar javadoc khusus

4.3.1. Penulisan Komentar C++ Style

Komentar C++ style diawali dengan //. Semua teks setelah // dianggap sebagai komentar. Sebagi contoh,

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

4.3.2. Penulisan Komentar C Style

Komentar C-style atau juga disebut komentar beberapa baris diawali dengan /* dan diakhiri dengan */. Semua teks yang ada diantara dua tanda tersebut dianggap sebagai komentar. Tidak seperti komentar C++ style, komentar ini dapat menjangkau beberapa baris. Sebagai contoh,

/* this is an example of a C style or multiline comments */

4.3.3. Komentar Khusus javadoc

Komentar javadoc khusus digunakan untuk men-generate dokumentasi HTML untuk program Java Anda. Anda dapat menciptakan komentar javadoc dengan memulai baris dengan /** dan mengakhirinya dengan */. Seperti Komentar C_style, dapat juga menjangkau beberapa baris. Komentar ini juga dapat terdiri atas tag-tag untuk menambahkan lebih banyak informasi pada komentar Anda. Sebagai contoh,

/** This is an example of special java doc comments used for \n generating an html documentation. It uses tags like: @author Florence Balagtas @version 1.2 */

Page 65: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 5

4.4. Pernyataan dalam Java dan Blok Pernyataan adalah satu atau lebih baris kode yang diakhiri dengan semicolon. Sebagai contoh untuk pernyataan tunggal adalah

System.out.println(“Hello world”); Blok adalah satu atau lebih pernyataan yang terbentang antara kurung kurawal buka dan kurung kurawal tutup yaitu sekumpulan pernyataan sebagai satu unit kesatuan. 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, public static void main( String[] args ){ System.out.println("Hello"); System.out.println("world"); }

Page 66: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 6

4.5. Java Identifier Java Identifier adalah suatu tanda yang mewakili nama-nama variabel, method, class, dsb. Contoh dari Identifier adalah : Hello, main, System, out. Pendeklarasian Java adalah case-sensitive. Hal ini berarti bahwa Identifier : Hello tidak sama dengan hello. Identifier 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. Identifier tidak dapat menggunakan kata kunci dalam Java seperti class, public, void, dsb. Selanjutnya kita akan berdiskusi lebih banyak tentang kata kunci dalam Java. Petunjuk Penulisan Program: 1. Untuk pemberian nama dari class Java, diberikan huruf kapital untuk huruf pertama pada

nama class. Untuk nama method dan variabel, huruf pertama dari kata harus dimulai dengan huruf kecil. Sebagi contoh:

ThisIsAnExampleOfClassName thisIsAnExampleOfMethodName 2. Pada kasus untuk identifier lebih dari satu kata, menggunakan huruf kapital untuk

mengindikasikan awal dari kata kecuali kata pertama. Sebagai contoh, charArray, fileNumber, ClassName.

3. Hindari menggunakan underscores pada awal identifier seperti _read atau _write.

Page 67: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 7

4.6. Keyword dalam Java

Kata kunci adalah identifier yang telah dipesan untuk didefinisikan sebelumnya oleh Java untuk tujuan tertentu. Anda tidak dapat menggunakan keyword sebagai nama variabel, class, method Anda, dsb. Berikut ini adalah daftar dari kata kunci dalam Java (Java Keywords).

Kita akan berdiskusi tentang semua arti dari masing-masing kata kunci dan bagaimana mereka digunakan dalam proses penulisan program Java. Catatan: true, false, dan null bukan termasuk kata kunci akan tetapi mereka termasuk kata-kata khusus, jadi Anda tidak dapat menggunakan mereka sebagai nama variabel pada program Anda.

4.7. Java Literals Literals adalah tanda bahwa tidak terjadi perubahan atau konstan. Macam-macam literals dalam Java adalah : Integer Literals, Floating-Point Literals, Boolean Literals, Character Literals dan String Literals.

4.7.1. 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.

Gambar1: Java Key Word

Page 68: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 8

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 literal 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.

4.7.2. 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”.

4.7.3. Boolean Literals

Boolean literals hanya memiliki dua nilai, true atau false.

4.7.4. Character Literals

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.

4.7.5. String Literals

String literals mewakili beberapa karakter dan dinyatakan dalam tanda double pute(“ ”)( double quotes). Sebagai contoh string literal adalah, “Hello World”.

Page 69: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 9

4.8. Tipe Data Primitif Bahasa pemrograman Java mendefinisikan delapan tipe data primitif. Mereka diantaranya adalah boolean (untuk bentuk logika), char (untuk bentuk tekstual), byte, short, int, long (integral), double and float (floating point).

4.8.1. logika - boolean

Tipe data boolean diwakili oleh dua pernyataan : true dan false. Sebagai contoh adalah,

boolean result = true;

Contoh yang ditunjukkan diatas, mendeklarasikan variabel yang dinamai result sebagai tipe data boolean dan memberinya nilai true.

4.8.2. teksual – char

Tipe data character (char), diwakili oleh karakter single Unicode. Tipe data ini harus memiliki ciri berada dalam tanda single quotes(’ ’). Sebagai contoh,

‘a’ //Huruf a ‘\t’ //A tab

Untuk menampilkan karakter khusus seperti ' (single quotes) atau " (double quotes), menggunakan karakter escape \. Sebagai contoh,

'\'' //untuk single quotes '\"' //untuk double quotes

Meskipun String bukan merupakan tipe data primitif (namun merupakan suatu Class),kita akan memperkenalkan mengenai pada bagian ini. String mewakili tipe data yang terdiri atas beberapa karakter. Mereka tidak termasuk tipe data primitif, melainkan suatu class. Mereka memiliki literal yang terdapat diantara tanda double quotes(“”). Sebagai contoh,

String message=“Hello world!”

Page 70: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 10

4.8.3. Integral – byte, short, int & long

Tipe data integral dalam Java menggunakan tiga bentuk- yaitu desimal, oktal atau heksadesimal. Contohnya,

2 //nilai desimal 2 077 //angka 0 pada awal pernyataan mengindikasikan nilai oktal 0xBACC //karakter 0x mengindikasikan nilai heksadesimal

Tipe-tipe integral memiliki default tipe data yaitu int. Anda dapat merubahnya ke bentuk long dengan menambahkan huruf l atau L. Tipe data integral memiliki range sebagai berikut:

Integer Length Name or Type Range

8 bits byte -27 to 27-1

16 bits short -215 to 215-1

32 bits int -231 to 231-1

64 bits long -263 to 263-1

Tabel 1: Tipe-tipe integral dan range-nya

Petunjuk Penulisan Program: Dalam mendefinisikan suatu nilai long, lowercase L tidak dianjurkan karena sangat sulit untuk membedakan dari digit 1.

Page 71: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 11

4.8.4. Floating Point – float dan double

Tipe Floating point memiliki double sebagai default tipe datanya. Floating-point literal termasuk salah satunya desimal point atau salah satu dari pilihan berikut ini,

E or e //(add exponential value) F or f //(float) D or d //(double)

Contohnya adalah,

3.14 //nilai floating-point sederhana (a double) 6.02E23 //A nilai floating-point yang besar 2.718F //A nilai float size sederhana 123.4E+306D //A nilai double yang besar dengan nilai redundant D

Pada contoh yang ditunjukkan diatas, 23 setelah E pada contoh kedua bernilai positif. Contoh tersebut sama dengan 6.02E+23. Tipe data Floating-point memiliki range sebagai berikut:

Panjang Float Nama atau Tipe Range

32 bits float -231 to 231-1

64 bits double -263 to 263-1

Table 2: Tipe Floating point dan range nya

Page 72: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 12

4.9. Variabel Variabel adalah item yang digunakan data untuk menyimpan pernyataan objek. Variabel memiliki tipe data dan nama. Tipe data menandakan tipe nilai yang dapat dibentuk oleh variabel itu sendiri. Nama variabel harus mengikuti aturan untuk identifier.

4.9.1. Deklarasi dan Inisialisasi Variabel

Untuk deklarasi variabel adalah sebagai berikut,

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

Catatan: Nilainya berada diantara <> adalah nilai yang disyaratkan, sementara nilai dalam tanda [] bersifat optional. Berikut ini adalah contoh program yang mendeklarasikan dan menginisialisasi beberapa variabel,

public class VariableSamples { public static void main( String[] args ){ //deklarasi tipe data dengan nama variable // result dan tipe data boolean boolean result; //deklarasi tipe data dengan nama variabel // option dan tipe data char char option; option = 'C'; //menandai 'C' sebagai option //deklarasi tipe data dengan nama variabel //grade, double tipe data dan telah di inisialisasi //to 0.0 double grade = 0.0; } }

Petunjuk Penulisan Program: 1. Sangat baik untuk menginisialisasi variabel yang Anda buat seperti Anda

mendeklarasikannya. 2. Gunakan nama yang bersifat menggambarkan deskriptif untuk variabel yang Anda buat,

jika Anda ingin mempunyai variabel yang terdiri atas nilai siswa, beri nama dengan nama grade dan jangan hanya beberapa huruf random yang Anda pilih.

3. Deklarasikan satu variabel tiap baris kode. Sebagai contoh , deklarasi variabel adalah sebagai berikut,

double exam=0; double quiz=10;

Page 73: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 13

double grade = 0; Bentuk yang lebih disukai ketika melakukan deklarasi adalah,

double exam=0, quiz=10, grade=0;

4.9.2. Menampilkan Data Variabel

Untuk mengeluarkan nilai dari variabel yang diinginkan, kita dapat menggunakan perintah sebagai berikut,

System.out.println() System.out.print()

Berikut ini adalah contoh program,

public class OutputVariable { public static void main( String[] args ){ int value = 10; char x; x = ‘A’; System.out.println( value ); System.out.println( “The value of x=” + x ); } }

Program tersebut akan mengeluarkan teks berikut pada layar,

10 The value of x=A

4.9.3. System.out.println() vs. System.out.print()

Apa yang membedakan diantara perintah System.out.println() and System.out.print()? Yang pertama menambahkan baris baru pada akhir data untuk dikeluarkan, sementara selanjutnya tidak. Perhatikan pernyataan tersebut,

System.out.print("Hello "); System.out.print("world!");

Pernyataan tersebut akan menghasilkan output berikut ini pada layar,

Hello world! Sekarang perthatikan pernyataan berikut,

System.out.println("Hello "); System.out.println("world!");

Page 74: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 14

Pernyataan ini akan menghasilkan output sebagai berikut pada layar,

Hello world!

Page 75: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 15

4.9.4. Variabel Reference dan Variabel Primitif

Sekarang kita akan membedakan dua tipe variabel yang dimiliki oleh program Java. Ada variabel reference dan variabel primitif . Variabel primitif adalah variabel dengan tipe data primitif. Mereka menyimpan data dalam lokasi memori yang sebenarnya dimana variabel tersebut berada. Variabel Reference adalah variabel yang menyimpan alamat dalam lokasi memori. Yang menunjuk ke lokasi memori dimana data sebenarnya berada. Ketika Anda mendeklarasikan variabel pada class tertentu, Anda sebenarnya mendeklarasikan reference variable dalam bentuk objek dalam classnya tersebut. Sebagai contoh, Apabila kita mempunyai dua variabel dengan tipe data int dan String.

int num = 10; String name = "Hello"

Dimisalkan ilustrasi yang ditunjukkan dibawah ini adalah memori yang ada pada komputer Anda, dimana Anda memiliki alamat dari setiap sel memorinya, nama variabel dan datanya terbentuk sebagai berikut.

Memory Address

Variable Name

Data

1001 num 10 : : 1563 name Address(2000)

:

:

: :

2000 "Hello"

Seperti yang dapat Anda lihat, untuk variable primitif num, datanya berada dalam lokasi dimana variabel berada. Untuk reference variable name, variabel hanya menunjuk alamat dimana data tersebut benar-benar ada.

Page 76: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 16

4.10 Operator Dalam Java, ada beberapa tipe operator. Ada operator aritmatika, operator relasi, operator logika, dan operator kondisi. Operator ini mengikuti bermacam-macam prioritas yang pasti sehingga compilernya akan tahu yang mana operator untuk dijalankan lebih dulu dalam kasus beberapa operator yang dipakai bersama-sama dalam satu pernyataan.

4.10.1 Operator Aritmatika

Berikut ini adalah dasar operator aritmatika yang dapat digunakan untuk membuat suatu program Java,

Operator Penggunaan Keterangan

+ op1 + op2 Menambahkan op1 dengan op2

* op1 * op2 Mengalikan op1 dengan op2

/ op1 / op2 Membagi op1 dengan op2

% op1 % op2 Menghitung sisa dari pembagian op1 dengan op2

- op1 - op2 Mengurangkan op2 dari op1

Tabel 3: Operator Aritmatika dan fungsi-fungsinya

Page 77: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 17

Berikut ini adalah contoh program dalam penggunaan operator-operator ini :

public class aritmatikaDemo { public static void main(String[] args) { //sedikit angka int i = 37; int j = 42; double x = 27.475; double y = 7.22; System.out.println("Variable values..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); //penjumlahan angka System.out.println("Adding..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); //pengurangan angka System.out.println("Subtracting..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); //perkalian angka System.out.println("Multiplying..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); //pembagian angka System.out.println("Dividing..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); //menghitung hasil modulus dari pembagian System.out.println("Computing the remainder..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //tipe penggabungan System.out.println("Mixing tipes..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x)); } }

Berikut ini adalah output program,

Variable values... i = 37 j = 42

Page 78: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 18

x = 27.475 y = 7.22 i + j = 79 Adding... x + y = 34.695 Subtracting... i - j = -5 x - y = 20.255 Multiplying... i * j = 1554 x * y = 198.37 Dividing... i / j = 0 x / y = 3.8054 Computing the remainder... i % j = 37 x % y = 5.815 Mixing tipes... j + y = 49.22 i * x = 1016.58

Catatan: Ketika integer dan floating-point number digunakan sebagai operand untuk operasi aritmatika tunggal, hasilnya berupa floating point. Integer adalah converter secara implisit ke bentuk angka floating-point sebelum operasi berperan mengambil tempat.

Page 79: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 19

4.10.2. Operator Increment dan Decrement

Dari sisi operator dasar aritmatika, Java juga terdiri atas operator unary increment (++) dan operator unary decrement (--). operator increment dan decrement menambah dan mengurangi nilai yang tersimpan dalam bentuk variabel angka terhadap nilai 1. Sebagai contoh, pernyataan,

count = count + 1; //increment nilai count dengan nilai 1 pernyataan tersebut sama dengan,

count++;

Operator Penggunaan Keterangan

++ op++ Menambahkan nilai 1 pada op; mengevaluasi nilai op sebelum diincrementasi/ditambahkan

++ ++op Menambahkan nilai 1 pada op; mengevaluasi nilai op setelah diincrementasi/ditambahkan

-- op-- Mengurangkan nilai 1 pada op; mengevaluasi nilai op sebelum didecrementasi/dikurangkan

-- --op Mengurangkan nilai 1 pada op; mengevaluasi nilai op setelah didecrementasi/dikurangkan

Tabel 4: operator Increment dan Decrement

Operator increment dan decrement dapat ditempatkan sebelum atau sesudah operand. Ketika digunakan sebelum operand, akan menyebabkan variabel diincrement atau didecrement dengan nilai 1, dan kemudian nilai baru digunakan dalam pernyataan dimana dia ditambahkan. Sebagai contoh,

int i = 10, int j = 3; int k = 0; k = ++j + i; //akan menghasilkan k = 4+10 = 14

Ketika operator increment dan decrement ditempatkan setelah operand, nilai variabel yang lama akan digunakan lebih dulu dioperasikan lebih dulu terhadap pernyataan dimana dia ditambahkan. Sebagai contoh,

Page 80: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 20

int i = 10, int j = 3; int k = 0; k = j++ + i; //akan menghasilkan k = 3+10 = 13

Petunjuk Penulisan Program: Selalu membuat pernyataan yang mengandung operator increment dan decrement untuk tetap dipahami secara mudah dan sederhana.

4.10.3 Operator Relasi

Operator Relasi membandingkan dua nilai dan menentukan keterhubungan diantara nilai-nilai tersebut. Hasil keluarannya berupa nilai boolean yaitu true atau false.

Operator Penggunaan Keterangan

> op1 > op2 op1 lebih besar dari op2

>= op1 >= op2 op1 lebih besar dari atau sama dengan op2

< op1 < op2 op1 kurang dari op2

<= op1 <= op2 op1 kurang dari atau sama dengan op2

== op1 == op2 op1 sama dengan op2

!= op1 != op2 op1 tidak sama dengan op2

Table 5: Operator Relasi

Page 81: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 21

Berikut ini adalah contoh program yang menggunakan operator Relasi, public class RelasiDemo { public static void main(String[] args) { //beberapa nilai int i = 37; int j = 42; int k = 42; System.out.println("Nilai variabel..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" k = " + k); //lebih besar dari System.out.println("Lebih besar dari..."); System.out.println(" i > j = " + (i > j)); //false System.out.println(" j > i = " + (j > i)); //true System.out.println(" k > j = " + (k > j)); //false //lebih besar atau sama dengan System.out.println("Lebih besar dari atau sama dengan..."); System.out.println(" i >= j = " + (i >= j)); //false System.out.println(" j >= i = " + (j >= i)); //true System.out.println(" k >= j = " + (k >= j)); //true //lebih kecil dari System.out.println("Lebih kecil dari..."); System.out.println(" i < j = " + (i < j)); //true System.out.println(" j < i = " + (j < i)); //false System.out.println(" k < j = " + (k < j)); //false //lebih kecil atau sama dengan System.out.println("Lebih kecil dari atau sama dengan..."); System.out.println(" i <= j = " + (i <= j)); //true System.out.println(" j <= i = " + (j <= i)); //false System.out.println(" k <= j = " + (k <= j)); //true //sama dengan System.out.println("Sama dengan..."); System.out.println(" i == j = " + (i == j)); //false System.out.println(" k == j = " + (k == j)); //true //tidak sama dengan System.out.println("Tidak sama dengan..."); System.out.println(" i != j = " + (i != j)); //true System.out.println(" k != j = " + (k != j)); //false } } Berikut adalah hasil keluaran dari program ini :

Page 82: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 22

Nilai variabel... i = 37 j = 42 k = 42 Lebih besar dari... i > j = false j > i = true k > j = false Lebih besar dari atau sama dengan... i >= j = false j >= i = true k >= j = true Lebih kecil dari... i < j = true j < i = false k < j = false Lebih kecil dari atau sama dengan... i <= j = true j <= i = false k <= j = true Sama dengan... i == j = false k == j = true Tidak sama dengan... i != j = true k != j = false

Page 83: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 23

4.10.4 Operator logika

Operator logika memiliki satu atau lebih operand boolean yang menghasilkan nilai boolean. Terdapat enam operator logika yaitu: && (logika AND), & (boolean logika AND), || (logika OR), | (boolean logika inclusive OR), ^ (boolean logika exclusive OR), dan ! (logika NOT). Pernyataan dasar untuk operasi logika adalah,

x1 op x2 Dimana x1, x2 dapat menjadi pernyataan boolean. Variabel atau konstanta, dan op adalah salah satu dari operator &&, &, ||, | atau ^. Tabel kebenaran yang akan ditunjukkan selanjutnya, merupakan kesimpulan dari hasil dari setiap operasi untuk semua kombinasi yang mungkin dari x1 dan x2.

Page 84: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 24

4.10.4.1 && (logika AND) dan & (boolean logika AND)

Berikut ini adalah tabel kebenaran untuk && dan &,

x1 x2 Hasil

TRUE TRUE TRUE

TRUE FALSE FALSE

FALSE TRUE FALSE

FALSE FALSE FALSE

Tabel 6: Tabel Kebenaran untuk & dan &&

Perbedaan dasar antara operator && dan & adalah bahwa && mensupports short-circuit evaluations (atau evaluasi perbagian), sementara operator & tidak. Apa arti dari pernyataan tersebut? Diberikan suatu pernyataan,

exp1 && exp2

&& akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai false dan menyatakan bahwa exp1 bernilai false. Jika exp1 bernilai false, operator tidak akan pernah mengevaluasi exp2 karena hasil operasi operator akan menjadi false tanpa memperhatikan nilai dari exp2. Sebaliknya, operator & selalu mengevaluasi kedua nilai dari exp1 dan exp2 sebelum mengembalikan suatu nilai jawaban. Berikut ini adalah suatu contoh source code yang menggunakan logika dan boolean AND,

public class TestAND { public static void main( String[] args ){ int i = 0; int j = 10; boolean test= false; //demonstrasi && test = (i > 10) && (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); //demonstrasi & test = (i > 10) & (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); } }

Page 85: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 25

The output of the program is,

0 10 false 0 11 false

Catatan, bahwa j++ pada baris yang mengandung operator && tidak dievaluasi sejak pernyataan pertama (i>10) yaitu telah bernilai sama dengan false.

Page 86: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 26

4.10.4.2 || (logika OR) dan | (boolean logika inclusive OR)

Berikut ini adalah tabel kebenaran untuk || dan |,

x1 x2 Hasil

TRUE TRUE TRUE

TRUE FALSE TRUE

FALSE TRUE TRUE

FALSE FALSE FALSE

Tabel 7: Table Kebenaran untuk | dan ||

Perbedaan dasar antara operator || dan | adalah bahwa || mendukung short-circuit evaluations (atau proses evaluasi sebagian), sementara | tidak. Apa maksud dari pernyataan tersebut? diberikan suatu pernyataan,

exp1 || exp2 || akan mengevaluasi pernyataan exp1, dan segera mengembalikan nilai true dan menyatakan bahwa exp1 bernilai true. Jika exp1 bernilai true, operator tidak akan pernah mengevaluasi exp2 karena hasil dari operasi operator akan bernilai true tanpa memperhatikan nilai dari exp2. Sebaliknya,operator | selalu mengevaluasi kedua nilai dari exp1 and exp2 sebelum mengembalikan suatu jawaban suatu nilai. Berikut ini sebuah contoh source code yang menggunakan operator logika dan boolean OR,

public class TestOR { public static void main( String[] args ){ int i = 0; int j = 10; boolean test= false; //demonstrasi || test = (i < 10) || (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); //demonstrasi | test = (i < 10) | (j++ > 9); System.out.println(i); System.out.println(j); System.out.println(test); } }

Page 87: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 27

Hasil keluaran dari program ini adalah,

0 10 true 0 11 true

Catatan, bahwa j++ pada baris yang terdiri atas operator || tidak dievaluasi sejak pernyataan pertama (i<10) yaitu telah bernilai sama dengan true.

Page 88: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 28

4.10.4.3 ^ (boolean logika ExclusiveOR )

Berikut ini adalah tabel kebenaran untuk ^,

x1 x2 Hasil

TRUE TRUE FALSE

TRUE FALSE TRUE

FALSE TRUE TRUE

FALSE FALSE FALSE

Tabel 8: Tabel kebenaran untuk ^

Hasil operasi operator exclusive OR adalah TRUE, jika dan hanya jika satu operand bernilai TRUE dan yang lain bernilai False. Catatan jika kedua operand harus selalu dievaluasi untuk menjumlahkan hasil dari suatu exclusive OR. Berikut ini adalah contoh source code yang menggunakan operator logika exclusive OR,

public class TestXOR { public static void main( String[] args ){ boolean val1 = true; boolean val2 = true; System.out.println(val1 ^ val2); val1 = false; val2 = true; System.out.println(val1 ^ val2); val1 = false; val2 = false; System.out.println(val1 ^ val2); val1 = true; val2 = false; System.out.println(val1 ^ val2); } }

Hasil keluaran program tersebut adalah, false true false true

Page 89: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 29

4.10.4.4 ! (logika NOT)

Logika NOT digunakan dalam satu argumen, dimana argumen tersebut dapat menjadi suatu pernyataan, variabel atau konstanta. Berikut ini adalah tabel kebenaran untuk operator not!,

x1 Hasil

TRUE FALSE

FALSE TRUE

Tabel 9: Tabel Kebenaran untuk !

Berikut ini adalah contoh source code yang menggunakan operator logika NOT,

public class TestNOT { public static void main( String[] args ){ boolean val1 = true; boolean val2 = false; System.out.println(!val1); System.out.println(!val2); } }

Hasil keluaran program adalah sebagai berikut,

false true

Page 90: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 30

4.10.5 Operator Kondisi(?:)

Operator kondisi ?: adalah operator ternary. Berarti bahwa operator ini membawa tiga argumen yang membentuk suatu ekspresi bersyarat. Struktur pernyataan yang menggunakan operator kondisi adalah,

exp1?exp2:exp3 Dimana nilai exp1 adalah suatu pernyataan boolean yang memiliki hasil yang salah satunya harus berupa nilai true atau false. Jika exp1 bernilai true, exp2 merupakan hasil operasi. Jika bernilai false, kemudian exp3 merupakan hasil operasinya. Sebagai contoh, diberikan code sebagai berikut,

public class ConditionalOperator { public static void main( String[] args ){ String status = ""; int grade = 80; //mendapatkan status pelajar status = (grade >= 60)?"Passed":"Fail"; //print status System.out.println( status ); } }

Hasil keluaran dari program ini akan menjadi,

Passed

Berikut ini adalah flowchart yang menggambarkan bagaimana operator ?: bekerja,

Page 91: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 31

Berikut ini adalah program lain yang menggunakan operator ?: ,

class ConditionalOperator { public static void main( String[] args ){ int score = 0; char answer = 'a'; score = (answer == 'a') ? 10 : 0; System.out.println("Score = " + score ); } }

Hasil keluaran program adalah,

Score = 10

Gambar 2: Flowchart

Page 92: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 32

4.10.6 Operator Precedence

Operator precedence didefinisikan sebagai perintah yang dilakukan compiler ketika melakukan evaluasi terhadap operator, untuk mengajukan perintah dengan hasil yang tidak ambigu/ hasil yag jelas.

Diberikan pernyataan yang membingungkan,

6%2*5+4/2+88-10

Kita dapat menuliskan kembali pernyataan diatas dan menambahkan beberapa tanda kurung terhadap operator precedence,

((6%2)*5)+(4/2)+88-10;

Petunjuk Penulisan Program: Untuk menghindari kebingungan dalam evaluasi operasi matematika, buatlah pernyataan sesederhana mungkin dan gunakan bantuan tanda kurung.

Gambar3: Operator Precedence

Page 93: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 33

4.11 Latihan

4.11.1 Mendeklarasikan dan mencetak variabel

Diberikan tabel dibawah ini, deklarasikan variabel yang terdapat didalamnya dengan tipe data yang sesuai dan berikan nilai inisialisasi. Tampilkan hasil outputnya yaitu nama variabel dan nilainya.

Nama Variabel Tipe Data Nilai Awal number integer 10 letter character a result boolean true str String hello

Berikut ini merupakan tampilan yang diharapkan sebagai hasil eksekusi program,

Number = 10 letter = a result = true str = hello

4.11.2. Mendapatkan nilai rata-rata dari tiga angka

Buatlah program yang menghasilkan output nilai rata-rata dari tiga angka. Nilai dari masing-masing tiga angka tersebut adalah 10, 20 dan 45. Tampilan Output yang diharapkan adalah,

number 1 = 10 number 2 = 20 number 3 = 45 Rata-rata = 25

4.11.3. Menampilkan nilai terbesar

Diberikan tiga angka, tuliskan program yang menghasilkan output angka dengan nilai terbesar diantara tiga angka tersebut. Gunakan operator kondisi ?: yang telah kita pelajari sebelumnya (PETUNJUK: Anda akan perlu menggunakan dua set operator ?: untuk memecahkan permasalahan ini). Sebagai contoh, diberikan angka 10, 23 dan 5, Program Anda akan menghasilkan output,

number 1 = 10 number 2 = 23 number 3 = 5 Nilai tertingginya adalah angka = 23

Page 94: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 34

4.11.4. Operator precedence

Diberikan pernyataan berikut ini, tulis kembali soal tersebut dengan menambahkan tanda kurung pada urutan sesuai dengan bagaimana pernyataan tersebut akan dievaluasi. 1. a / b ^ c ^ d – e + f – g * h + i 2. 3 * 10 *2 / 15 – 2 + 4 ^ 2 ^ 2 3. r ^ s * t / u – v + w ^ x – y++

Page 95: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 1

BAB 5

Mendapatkan Input dari Keyboard

5.1 Tujuan Kita telah mempelajari konsep dasar pada Java dan menulis beberapa program sederhana. Sekarang kita akan mencoba membuat program kita lebih interaktif dengan menggunakan input dari keyboard. Pada bab ini, kita akan mempelajari dua cara memberikan input, yang pertama adalah menggunakan class BufferedReader dan melalui GUI (Graphical User Interface) dengan menggunakan class JOptionPane. Pada akhir pembahasan, diharapkan pembaca dapat :

Membuat program Java yang interaktif yang bisa mendapatkan input dari keyboard Menggunakan class BufferedReader untuk mendapatkan input dari keyboard

melalui layar console Menggunakan class JOptionPane untuk mendapatkan input dari keyboard

menggunakan GUI

5.2 Menggunakan BufferedReader untuk

mendapatkan input Pada bagian ini, kita akan menggunakan class BufferedReader yang berada di package java.io untuk mendapatkan input dari keyboard. Berikut ini adalah langkah-langkah yang diperlukan untuk mendapatkan input dari keyboard: 1. Tambahkan di bagian paling atas code Anda:

import java.io.*;

2. Tambahkan statement berikut:

BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) );

3. Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan

fungsi readLine() untuk mendapatkan input dari keyboard. Anda harus mengetikkannya di dalam blok try-catch:

try{ String temp = dataIn.readLine();

} catch( IOException e ){ System.out.println(“Error in getting input”); }

Page 96: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 2

Berikut ini adalah source code lengkapnya:

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class GetInputFromKeyboard { public static void main( String[] args ){ BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) ); String name = ""; System.out.print("Please Enter Your Name:"); try{ name = dataIn.readLine(); }catch( IOException e ){ System.out.println("Error!"); } System.out.println("Hello " + name +"!"); } }

Berikutnya akan penjelasan setiap baris dari code tersebut: Statement,

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException;

menjelaskan bahwa kita akan menggunakan class BufferedReader, InputStreamReader dan IOException yang berada di java.io package. Java Application Programming Interface (API) berisi ratusan class yang sudah didefinisikan sebelumnya yang dapat digunakan untuk program Anda. Class-class tersebut dikumpulkan di dalam packages. Packages berisi class yang mempunyai fungsi yang saling berhubungan. Seperti pada contoh di atas, java.io package mengandung class-class yang memungkinkan program untuk melakukan input dan output data. Pernyataan di atas juga dapat ditulis sebagai berikut,

import java.io.*; yang akan mengeluarkan semua class yang berada dalam package, dan selanjutnya kita bisa menggunakan class-class tersebut dalam program kita.

Page 97: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 3

Dua statement selanjutnya,

public class GetInputFromKeyboard { public static void main( String[] args ){

kita sudah mempelajari pada pelajaran sebelumnya. Pernyataan ini mendeklarasikan class bernama GetInputFromKeyboard dan kita mendeklarasikan method main. Dalam statement,

BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) );

kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe class BufferedReader. Jangan mengkhawatirkan tentang maksud dari syntax saat ini. Kita akan menjelaskannya pada akhir pembahasan. Sekarang, kita akan mendeklarasikan variabel String dengan identifier name,

String name = ""; Pernyataan di atas merupakan tempat untuk menyimpan input dari user. Nama variabel diinisialisasi sebagai String kosong "". Sebaiknya kita selalu menginisialisasi sebuah variabel setelah kita mendeklarasikannya. Baris berikutnya adalah memberikan output sebuah String pada layar yang menanyakan nama user.

System.out.print("Please Enter Your Name:"); Sekarang, blok di bawah ini merupakan try-catch block,

try{ name = dataIn.readLine(); }catch( IOException e ){ System.out.println("Error!"); }

Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada pernyataan,

name = dataIn.readLine(); akan ditangkap. Kita akan membahas tentang penanganan exception pada bab selanjutnya dari pembahasan ini, tetapi untuk sekarang, Anda cukup mencatat bahwa Anda perlu menambahkan kode ini untuk menggunakan method readLine() dari BufferedReader untuk mendapatkan input dari user.

Page 98: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 4

Selanjutnya kembali ke pernyataan, name = dataIn.readLine();

method diatas memanggil dataIn.readLine(), mendapatkan input dari user dan memberikan sebuah nilai String. Nilai ini akan disimpan ke dalam variabel name, yang akan kita gunakan pada statement akhir untuk menyambut user,

System.out.println("Hello " + name + "!");

Page 99: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 5

5.1 Menggunakan JOptionPane untuk mendapatkan input Cara lain untuk mendapatkan input dari user adalah dengan menggunakan class JoptionPane yang didapatkan dari javax.swing package. JoptionPane memudahkan memunculkan dialog box standard yang memberikan kepada user sebuah nilai atau menginformasikan sesuatu. Diberikan kode berikut ini,

import javax.swing.JOptionPane; public class GetInputFromKeyboard { public static void main( String[] args ){ String name = ""; name = JoptionPane.showInputDialog("Please enter your name"); String msg = "Hello " + name + "!"; JOptionPane.showMessageDialog(null, msg); } }

Akan menghasilkan output,

Gambar 1: Mendapatkan Input menggunakan JOptionPane

Gambar 2: Input florence pada JOptionPane

Gambar 3: Menunjukkan Pesan Menggunakan JOptionPane

Page 100: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 6

Statement pertama,

import javax.swing.JOptionPane; Menjelaskan bahwa kita mengimpor class JoptionPane dari package javax.swing. Bisa juga ditulis seperti,

import javax.swing.*; Pernyataan,

name = JOptionPane.showInputDialog("Please enter your name"); membuat sebuah input dialog JOptionPane, yang akan menampilkan dialog dengan sebuah pesan, sebuah textfield dan tombol OK seperti pada gambar. Hasil dari dialog tersebut adalah String dan disimpan ke dalam variabel name. Sekarang kita membuat pesan selamat datang, yang akan disimpan ke dalam variabe msg,

String msg = "Hello " + name + "!"; Baris selanjutnya adalah menampilkan sebuah dialog yang berisi sebuah pesan dan tombol OK,

JOptionPane.showMessageDialog(null, msg);

Page 101: Belajar Java

J.E.N.I.

Pengenalan Pemrograman I 7

5.1 Latihan

5.1.1 Kata Terakhir (versi BufferedReader)

Menggunakan BufferedReader, tanyakan tiga kata dari user dan tampilkan output dari input user tersebut ke layar. Contoh,

Enter word1:Goodbye Enter word2:and Enter word3:Hello Goodbye and Hello

5.1.2 Kata Terakhir (versi JOptionPane)

Menggunakan JOptionPane, tanyakan tiga kata dari user dan tampilkan output dari input user tersebut ke layar. Contoh

Gambar 1: Input Pertama

Gambar 3: Menampilkan Pesan

Gambar 2: Input Kedua

Page 102: Belajar Java

J.E.N.I.

BAB 6 Struktur Kontrol

6.1 Tujuan

Pada bab sebelumnya, kita sudah mendapatkan contoh dari program terstruktur, dimana setiap pernyataan dieksekusi setelah pernyataan sebelumnya sesuai dengan urutannya. Pada bagian ini, kita akan mempelajari tentang struktur kontrol dimana kita dapat mengubah cara eksekusi pada pernyataan yang dibuat di program kita.

Pada akhir pembahasan, diharapkan pembaca dapat :

Menggunakan struktur kontrol pemilihan (if, else, switch) yang digunakan

untuk memilih blok kode yang akan dieksekusi

Menggunakan struktur kontrol pengulangan (while, do-while, for) untuk mengeksekusi blok tertentu pada program beberapa kali.

Menggunakan pernyataan-pernyataan percabangan (break, continue, return)

yang digunakan untuk mengatur arah dari aliran program.

6.2 Struktur Kontrol Pemilihan

Struktur kontrol pemilihan adalah pernyataan dari Java yang mengijinkan user untuk memilih dan mengeksekusi blok kode spesifik dan mengabaikan blok kode yang lain.

6.2.1 Statement if

Pernyataan if akan menentukan sebuah pernyataan (atau blok kode) yang akan eksekusi jika dan hanya jika persyaratan bernilai benar(true).

Bentuk dari pernyataan if,

if( boolean_expression )

statement; atau

if( boolean_expression ){

statement1; statement2; . . .

} dimana, boolean_expression adalah sebuah penyataan logika (true/false) atau variabel bertipe boolean.

Pengenalan Pemrograman 1 1

Page 103: Belajar Java

J.E.N.I.

Gambar 1: Flowchart Statement If Berikut ini adalah potongan kode dari pernyataan if:

int grade = 68;

if( grade > 60 ) System.out.println("Congratulations!");

atau

int grade = 68;

if( grade > 60 ){

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

} Petunjuk Penulisan Program :

1. Boolean_expression pada pernyataan i f harus merupakan nilai boolean).Hal ini

berarti persyaratan harus bernilai true atau false. 2. Masukkan statement di dalam blok if. Contohnya,

if( boolean_expression ){ //statement1; //statement2; }

Pengenalan Pemrograman 1 2

Page 104: Belajar Java

J.E.N.I. 6.2.2 Statement if-else

Pernyataan if-else digunakan apabila kita ingin mengeksekusi beberapa pernyataan dengan kondisi true dan pernyataan yang lain dengan kondisi false.

Bentuk statement if-else,

if( boolean_expression )

statement; else

statement; dapat juga ditulis seperti,

if( boolean_expression ){

statement1; statement2; . . .

} else{

}

statement1; statement2; . . .

Berikut ini contoh code statement if-else,

int grade = 68;

if( grade > 60 ) System.out.println("Congratulations!"); else System.out.println("Sorry you failed");

atau

int grade = 68;

if( grade > 60 ){

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

} else{

}

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

Pengenalan Pemrograman 1 3

Page 105: Belajar Java

J.E.N.I.

Gambar 2: Flowchart Statement If-Else

Petunjuk Penulisan Program :

1. Untuk menghindari kebingungan, selalu letakkan sebuah pernyataan atau beberapa

pernyataan di dalam blok if-else didalam tanda kurawal {}, 2. Anda dapat memiliki blok if-else yang bersarang. Ini berarti anda dapat memiliki blok

if-else yang lain di dalam blok if-else. Contohnya, if( boolean_expression ){

if( boolean_expression ){ . . .

} } else{ . . .

} Pengenalan Pemrograman 1 4

Page 106: Belajar Java

J.E.N.I. 6.2.3 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.

Bentuk statement if-else if,

if( boolean_expression1 )

statement1; else if( boolean_expression2 )

statement2; else

statement3; Sebagai catatan : anda dapat memiliki banyak blok else-if sesudah pernyataan if. Blok else bersifat opsional dan dapat dihilangkan. Pada contoh yang ditampilkan di atas, jika boolean_expression1 bernilai true, maka program akan mengeksekusi statement1 dan melewati pernyataan yang lain. Jika boolean_expression2 bernilai true, maka program akan mengeksekusi statement2 dan melewati statement3.

Gambar 3: Flowchart Statement If-Else-If

Pengenalan Pemrograman 1 5

Page 107: Belajar Java

J.E.N.I. Berikut ini contoh code statement if-else-if

int grade = 68;

if( grade > 90 ){

System.out.println("Very good!"); } else if( grade > 60 ){

System.out.println("Very good!"); } else{

}

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

6.2.4 Kesalahan umum ketika menggunakan statement if-else:

1. Kondisi pada statement if tidak mengevaluasi nilai logika boolean. Contohnya :

//SALAH int number = 0; if( number ){

//some statements here }

Variabel number tidak memiliki nilai Boolean.

2. Menggunakan operator = sebagai operator perbandingan yang seharusnya adalah

operator == . Contohnya,

//SALAH int number = 0; if( number = 0 ){

//Beberapa pernyataan }

Seharusnya kode tersebut ditulis,

//BENAR int number = 0; if( number == 0 ){

//beberapa pernyataan }

3. Penulisan elseif yang seharusnya ditulis sebagai else if.

Pengenalan Pemrograman 1 6

Page 108: Belajar Java

J.E.N.I. 6.2.5 Contoh statement if-else-else if

public class Grade {

public static void main( String[] args ) {

double grade = 92.0;

if( grade >= 90 ){ System.out.println( "Excellent!" );

} else if( (grade < 90) && (grade >= 80)){

System.out.println("Good job!" ); } else if( (grade < 80) && (grade >= 60)){

System.out.println("Study harder!" ); } else{

}

} }

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

Pengenalan Pemrograman 1 7

Page 109: Belajar Java

J.E.N.I. 6.2.6 Statement switch

Cara lain untuk membuat cabang adalah dengan menggunakan kata kunci switch. Switch mengkonstruksikan cabang untuk beberapa kondisi dari nilai.

Bentuk statement switch,

switch( switch_expression ){

case case_selector1: statement1; // statement2; //block 1 . . . // break;

case case_selector2:

statement1; // statement2; //block 2 . . . // break;

. . . default:

}

statement1; // statement2; //block n . . . // break;

switch_expression adalah ekspresi integer atau karakter dan case_selector1, case_selector2 dan seterusnya adalah konstanta unik dari nilai integer atau karakter.

Ketika pernyataan switch ditemukan pada potongan kode program, java pertama kali akan memeriksa switch_expression, dan menuju ke case yang akan menyamakan nilai yang dimiliki oleh switch_expression. Selanjutnya program akan mengeksekusi pernyataan pada dari kode setelah case yang ditemukan sampai menemui pernyataan break, selanjutnya akan mengabaikan pernyataan yang lainnya hingga akhir dari struktur dari pernyataan switch.

Jika tidak ditemui case yang cocok, maka program akan mengeksekusi blok default. Sebagai catatan, bahwa bagian blok default adalah opsional. Sebuah pernyataan switch bisa jadi tidak memiliki blok kode default.

CATATAN: Tidak seperti pada pernyataan if, beberapa pernyataan pada struktur pernyataan switch

akan dieksekusi tanpa memerlukan tanda kurung kurawal ({}). Ketika sebuah case pada pernyataan switch menemui kecocokan, semua pernyataan

pada case tersebut akan dieksekusi. Tidak hanya demikian, pernyataan lain yang berada pada case yang sesuai juga akan dieksekusi.

Untuk menghindari program mengeksekusi pernyataan pada case berikutnya, kita menggunakan pernyataan break sebagai pernyataan akhir pada setiap blok case.

Pengenalan Pemrograman 1 8

Page 110: Belajar Java

J.E.N.I.

Gambar 4: Flowchart Statement Switch Petunjuk Penulisan Program :

1. Menentukan penggunaan pernyataan if atau pernyataan switch adalah sebuah

keputusan programmer. Programmer dapat menentukan pernyataan yang mana yang akan dipakai berdasarkan kemudahan membaca program dan faktor-faktor yang lain.

2. Pernyataan if dapat digunakan untuk membuat keputusan berdasarkan rentang nilai tertentu atau kondisi tertentu, sedangkan pernyataan switch membuat keputusan hanya berdasarkan nilai unik dari tipe integer atau karakter.

Pengenalan Pemrograman 1 9

Page 111: Belajar Java

J.E.N.I. 6.2.7 Contoh statement switch

public class Grade {

public static void main( String[] args ) {

int grade = 92;

switch(grade){ case 100:

System.out.println( "Excellent!" ); break;

case 90:

case 80:

default:

} }

}

System.out.println("Good job!" ); break; System.out.println("Study harder!" ); break; System.out.println("Sorry, you failed.");

Pengenalan Pemrograman 1 10

Page 112: Belajar Java

J.E.N.I. 6.3 Struktur Kontrol Perulangan

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 while, do-while, dan for-loops.

6.3.1 while loop

Pernyataan while loop adalah pernyataan atau blok pernyataan yang diulang-ulang sampai mencapai kondisi yang cocok.

Bentuk pernyataan while,

while( boolean_expression ){

statement1; statement2; . . .

} Pernyataan di dalam while loop akan dieksekusi berulang-ulang selama kondisi boolean_expression bernilai benar (true).

Contoh, pada kode dibawah ini,

int i = 4; while ( i > 0 ){

System.out.print(i); i--;

} Contoh diatas akan mencetak angka 4321 pada layar. Perlu dicatat jika bagian i--; dihilangkan, akan menghasilkan pengulangan yang terus menerus (infinite loop). Sehingga, ketika menggunakan while loop atau bentuk pengulangan yang lain, pastikan Anda memberikan pernyataan yang membuat pengulangan berhenti pada suatu kondisi.

Pengenalan Pemrograman 1 11

Page 113: Belajar Java

J.E.N.I. Berikut ini adalah beberapa contoh while loop,

Contoh 1:

int x = 0; while (x<10) {

System.out.println(x); x++;

} Contoh 2:

//infinite loop while(true)

System.out.println(“hello”);

Contoh 3:

//no loops // statement is not even executed while (false)

System.out.println(“hello”); Pengenalan Pemrograman 1 12

Page 114: Belajar Java

J.E.N.I. 6.3.2 do-while loop

Do-while loop mirip dengan while-loop. Pernyataan di dalam do-while loop akan dieksekusi beberapa kali selama kondisi bernilai benar(true).

Perbedaan antara while dan do-while loop adalah dimana pernyataan di dalam do-while loop akan dieksekusi sedikitnya satu kali.

Bentuk pernyataan do-while,

do{

statement1; statement2; . . .

}while( boolean_expression ); Pernyataan di dalam do-while loop akan dieksekusi pertama kali, dan akan dievaluasi kondisi dari boolean_expression. Jika nilai pada boolean_expression tersebut bernilai true, pernyataan di dalam do-while loop akan dieksekusi lagi.

Berikut ini beberapa contoh do-while loop:

Contoh 1:

int x = 0; do {

System.out.println(x); x++;

}while (x<10); Contoh ini akan memberikan output 0123456789 pada layar.

Contoh 2:

//infinite loop do{

System.out.println(“hello”); } while (true);

Contoh di atas akan melakukan pengulangan terus menerus yang menulis kata “hello” pada layar.

Contoh 3:

//one loop // statement is executed once do System.out.println(“hello”);

while (false); Contoh di atas akan memberikan output hello pada layar.

Pengenalan Pemrograman 1 13

Page 115: Belajar Java

J.E.N.I. Panduan pemrograman:

1. Kesalahan pemrograman yang biasa terjadi ketika menggunakan do-while loop adalah

lupa untuk menulis titik koma (;) setelah ekspresi while.

do{ ...

}while(boolean_expression)//- salah>tidak ada titik koma(;) 2. Seperti pada while loop, pastikan do-while loop anda berhenti pada suatu kondisi.

6.3.3 for loop

Pernyataan for loop memiliki kondisi hampir mirip seperti struktur pengulangan sebelumnya yaitu melakukan pengulangan untuk mengeksekusi kode yang sama sebanyak jumlah yang telah ditentukan.

Bentuk dari for loop,

for (InitializationExpression; LoopCondition; StepExpression){

statement1; statement2; . . .

} dimana,

InitializationExpression – inisialisasi dari variabel loop. LoopCondition - membandingkan variabel loop pada nilai batas tertentu . StepExpression - melakukan update pada variabel loop.

Berikut ini adalah contoh dari for loop,

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

System.out.print(i); }

Pada contoh ini, pernyataan i=0 merupakan inisialisasi dari variabel. Selanjutnya, kondisi i<10 diperiksa. Jika kondisi bernilai true, pernyataan di dalam for loop dieksekusi. Kemudian, ekspresi i++ dieksekusi, lalu akan kembali pada bagian pemeriksaan terhadap kondisi i<10 lagi. Kondisi ini akan dilakukan berulang-ulang sampai mencapai nilai yang salah (false).

Contoh tadi, adalah contoh yang sama dari while loop,

int i = 0; while( i < 10 ){

System.out.print(i); i++;

} Pengenalan Pemrograman 1 14

Page 116: Belajar Java

J.E.N.I. 6.4 Pernyataan Percabangan

Pernyataan percabangan mengijinkan kita untuk mengatur aliran eksekusi program. Java memberikan tiga bentuk pernyataan percabangan: break, continue dan return.

6.4.1 Pernyataan break

Pernyataan break memiliki dua bentuk: tidak berlabel (unlabeled) dan berlabel (labeled). 6.4.1.1 Pernyataan break tidak berlabel (unlabeled)

Pernyataan break tidak berlabel (unlabeled) digunakan untuk menghentikan jalannya pernyataan switch. Selain itu pernyataan break unlabeled juga bisa digunakan untuk menghentikan pernyataan-pernyataan for, while atau do-while loop.

Contohnya,

String names[] = {"Beah", "Bianca", "Lance", "Belle",

"Nico", "Yza", "Gem", "Ethan"};

String searchName = "Yza"; boolean foundName = false;

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

if( names[i].equals( searchName )){ foundName = true; break;

} }

if( foundName ){

System.out.println( searchName + " found!" ); } else{

}

System.out.println( searchName + " not found." );

Pada contoh diatas, jika string “Yza” ditemukan, pengulangan pada for loop akan dihentikan dan akan dilanjutkan ke pernyataan berikutnya yang terletak setelah pernyataan for.

Pengenalan Pemrograman 1 15

Page 117: Belajar Java

J.E.N.I. 6.4.1.2 Pernyataan break berlabel

Bentuk label dari pernyataan break akan menghentikan pernyataan d i luarnya, dimana sebelumnya harus diberikan label yang sudah di spesifikasikan pada program pada pernyataan break. Program berikut ini akan mencari nilai dalam array dua dimensi. Terdapat dua pengulangan bersarang (nested loop). Ketika sebuah nilai ditemukan, brea akan menghentikan pernyataan yang diberi label searchLabel yang terletak di luar pernyataan for loop.

int[][] numbers = {{1, 2, 3},

{4, 5, 6}, {7, 8, 9}};

int searchNum = 5; boolean foundNum = false;

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

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

foundNum = true; break searchLabel;

} }

}

if( foundNum ){ System.out.println( searchNum + " found!" );

} else{

}

System.out.println( searchNum + " not found!" );

Pernyataan break menghentikan pernyataan yang diberi label; dan tidak menjalankan aliran kontrol apapun pada label. Aliran kontrol pada label akan diberikan secara otomatis pada pernyataan yang terletak dibawah label.

Pengenalan Pemrograman 1 16

Page 118: Belajar Java

J.E.N.I. 6.4.2 Pernyataan Continue

Pernyataan continue memiliki dua bentuk: berlabel dan tidak berlabel. Anda dapat menggunakan pernyataan continue untuk melanjutkan pengulangan yang sedang dijalankan oleh pernyataan for, while, atau do- while loop.

6.4.2.1 Pernyataan continue tidak berlabel (unlabeled)

Bentuk pernyataan continue tidak berlabel (unlabeled) akan melewati bagian pernyataan setelah pernyataan ini dituliskan dan memeriksa eksepresi logika (boolean) yang mengkontrol pengulangan. Jika ekspresi logika (boolean) masih bernilai true, maka pengulangan tetap dilanjutkan. Pada dasarnya pernyataan ini akan melanjutkan bagian pengulangan pada pernyataan loop.

Berikut ini adalah contoh dari penghitungan angka dari “Beah” dalam suatu array.

String names[] = {"Beah", "Bianca", "Lance", "Beah"}; int count = 0;

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

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

continue; //skip next statement }

count++;

}

System.out.println("There are " + count + " Beahs in the list");

6.4.2.2 Labeled continue statement

Bentuk pernyataan continue berlabel (labeled) akan melanjutkan pengulangan yang sedang terjadi dan dilanjuti ke pengulangan berikutnya dari pernyataan pengulangan yang diberi label (tanda).

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

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

System.out.println("Inside for(j) loop"); //message1 if( j == 2 ) continue outerLoop;

}

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

Pada contoh ini, bagian message2 tidak pernah akan dicetak, karena pernyataan continue akan melewati pengulangan.

Pengenalan Pemrograman 1 17

Page 119: Belajar Java

J.E.N.I. 6.4.3 Pernyataan Return

Pernyataan return digunakan untuk keluar dari sebuah method. Pernyataan return memiliki dua bentuk: memberikan sebuah nilai, dan tidak memberikan nilai.

Untuk memberikan sebuah nilai, cukup berikan nilai (atau ekspresi yang menghasilkan sebuah nilai) sesudah kata return. Contohnya,

atau

return ++count; return "Hello";

Tipe data dari nilai yang diberikan harus sama dengan tipe dari method yang dibuat. Ketika sebuah method void dideklariskan, gunakan bentuk return yang tidak memberikan nilai. Contohnya,

return;

Kita akan membahas lebih lanjut tentang pernyataan return ketika mempelajari tentang method.

Pengenalan Pemrograman 1 18

Page 120: Belajar Java

J.E.N.I. 6.5 Latihan

6.5.1 Nilai

Ambil tiga nilai ujian dari user dan hitung nilai rata-rata dari nilai tersebut. Berikan output rata-rata dari tiga ujian. Berikan juga smiley face pada output jika nilai rata-rata lebih besar atau sama dengan 60, selain itu beri output :-(. 1. Gunakan BufferedReader untuk mendapat input dari user, dan System.out untuk

output hasilnya. 2. Gunakan JOptionPane untuk mendapat input dari user dan output hasilnya.

6.5.2 Membaca Bilangan

Ambil sebuah angka sebagai input dari user, dan outputnya berupa kata yang sesuai dengan angka. Angka yang dimasukkan antara 1-10. Jika user memasukkan nilai yang tidak sesuai berikan output “Invalid number”. 1. Gunakan statement if-else untuk menyelesaikan 2. Gunakan statement switch untuk menyelesaikan

6.5.3 Cetak Seratus Kali

Buat sebuah program yang mencetak nama Anda selama seratus kali. Buat tiga versi program ini menggunakan while loop, do while dan for-loop.

6.5.4 Perpangkatan

Hitung pangkat sebuah nilai berdasarkan angka dan nilai pangkatnya. Buat tiga versi dari program ini menggunakan while loop, do-while dan for-loop.

Pengenalan Pemrograman 1 19

Page 121: Belajar Java

J.E.N.I.

7.1 Tujuan

BAB 7 Java Array

Dalam bab ini, kita akan mendiskusikan mengenai array dalam Java. Pertama, kita akan mendefinisikan apa yang dimaksud dengan array, kemudian kita juga akan mendiskusikan bagaimana mendeklarasikannya dan menggunakannya dalam Java.

Pada akhir pembahasan, diharapkan pembaca dapat :

- Mendeklarasikan dan membuat array - Mengakses elemen-elemen didalam array - Menentukan jumlah element didalam sebuah array - Mendeklarasikan dan membuat array multidimensi

7.2 Pengenalan Array

Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian variabel, kita sering menggunakan sebuah tipe data beserta nama variabel atau identifier yang unik. Apabila kita ingin menggunakan variabel tersebut, kita akan memanggil dengan nama identifier-nya.

Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier berbeda untuk tiap variabel.

int number1; int number2; int number3;

number1 = 1; number2 = 2; number3 = 3;

Seperti yang dapat Anda perhatikan pada contoh diatas, kode tersebut akan sia-sia karena harus menginisialisasi dan menggunakan setiap variabel padahal sebenarnya variabel-variabel tersebut digunakan untuk tujuan yang sama. Pada bahasa pemrograman Java maupun di bahasa pemrograman yang lain, terdapat sebuah kemampuan untuk menggunakan satu variabel yang dapat menyimpan beberapa data dan memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut sebagai array.

Pengenalan Pemrograman 1 1

Page 122: Belajar Java

J.E.N.I.

Gambar 1: Contoh dari Integer Array

Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama didalam sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa ruang. Array adalah sebuah variabel/sebuah lokasi tertentu yang memiliki satu nama sebagai identifier, namun identifier ini dapat menyimpan lebih dari sebuah nilai.

7.3 Pendeklarasian Array Array harus dideklarasikan seperti layaknya sebuah variabel. Pada saat mendeklarasikan array, anda harus membuat sebuah daftar dari tipe data, yang diikuti oleh sepasang tanda kurung [], lalu diikuti oleh nama identifier-nya. Sebagai contoh,

int []ages; atau Anda dapat menempatkan sepasang tanda kurung [] sesudah nama identifier. Sebagai contoh,

int ages[];

Pengenalan Pemrograman 1 2

Page 123: Belajar Java

J.E.N.I. Setelah pendeklarasian array , kita harus membuat array dan menentukan berapa panjangnya dengan sebuah konstruktor. Proses ini di Java disebut sebagai instantiation (istilah dalam Java yang berarti membuat). Untuk meng-instantiate sebuah obyek, kita membutuhkan sebuah konstruktor. Kita akan membicarakan lagi mengenai instantiate obyek dan pembuatan konstruktor pada bagian selanjutnya. Sebagai catatan bahwa ukuran dari array tidak dapat diubah setelah anda menginisialisasinya. Sebagai contoh,

//deklarasi int ages[];

//instantiate obyek ages = new int[100];

atau bisa juga ditulis dengan,

//deklarasi dan instantiate obyek int ages[] = new int[100];

Pada contoh diatas, pendeklarasian tersebut akan memberitahukan kepada compiler Java, bahwa identifier ages akan digunakan sebagai nama array yang berisi data bertipe integer, dan dilanjutkan dengan membuat atau meng-instantiate sebuah array baru yang terdiri dari 100 elemen.

Selain menggunakan sebuah pernyataan new untuk meng-instantiate array, Anda juga dapat mendeklarasikan, membangun, kemudian memberikan sebuah nilai pada array sekaligus dalam sebuah pernyataan.

Sebagai contoh,

Gambar 2: Inisialisasi Arrays

//membuat sebuah array yang berisi variabel-variabel //boolean pada sebuah identifier. Array ini terdiri dari 4 //elemen yang diinisilisasikan sebagai value //{true,false,true,false} boolean results[] ={ true, false, true, false };

//Membuat sebuah array yang terdiri dari penginisialisasian //4variabel double bagi value {100,90,80,75} double []grades = {100, 90, 80, 75};

//Membuat sebuah array String dengan identifier days. Array //ini terdiri dari 7 elemen. String days[] = { “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”, “Sun”};

Pengenalan Pemrograman 1 3

Page 124: Belajar Java

J.E.N.I. 7.4 Pengaksesan sebuah elemen array

Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian dari array, Anda harus menggunakan sebuah angka atau yang disebut sebagai indeks atau subscript. Pada saat memasukkan nilai ke dalam array, sebuah nomor indeks atau subscript telah diberikan kepada tiap anggota array, sehingga program dan programmer dapat mengakses setiap nilai pada array apabila dibutuhkan. Nilai indeks selalu dalam tipe integer, dimulai dari angka nol dan dilanjutkan ke angka berikutnya sampai akhir array. Sebagai catatan bahwa indeks didalam array dimulai dari 0 sampai dengan (ukuranArray-1).

Sebagai contoh, pada array yang kita deklarasikan tadi, kita mempunyai,

//memberikan nilai 10 kepada elemen pertama array ages[0] = 10;

//mencetak elemen array yang terakhir System.out.print(ages[99]);

Perlu diperhatikan bahwa sekali array dideklarasikan dan dikonstruksi, nilai yang disimpan dalam setiap anggota array akan diinisialisasi sebagai nol. Oleh karena itu, apabila Anda menggunakan tipe data seperti String, array tidak akan diinisalisasi menjadi string kosong “”. Untuk itu Anda tetap harus membuat String array secara eksplisit.

Berikut ini adalah contoh kode untuk mencetak seluruh elemen didalam array. Dalam contoh ini digunakanlah pernyataan for loop, sehingga kode kita menjadi lebih pendek.

public class ArraySample{

public static void main( String[] args ){

int[] ages = new int[100];

for( int i=0; i<100; i++ ){ System.out.print( ages[i] );

} }

}

Petunjuk penulisan program: 1. Biasanya, lebih baik menginisialisasi atau meng-instantiate array setelah

Anda mendeklarasikannya. Sebagai contoh pendeklarasiannya int []arr = new int[100];

lebih disarankan daripada, int []arr; arr = new int[100];

2. Elemen-elemen dalam n-elemen array memiliki indeks dari 0 sampai n-1.

Perhatikan disini bahwa tidak ada elemen array arr[n]. Hal ini akan menyebabkan array-index out-of-bounds exception.

3. Anda tidak dapat mengubah ukuran dari sebuah array

Pengenalan Pemrograman 1 4

Page 125: Belajar Java

J.E.N.I. 7.5 Panjang Array

Untuk mengetahui berapa banyak elemen didalam sebuah array, Anda dapat menggunakan atribut length dari array. Atribut ini akan mengembalikan ukuran dari array itu sendiri. Sebagai contoh,

arrayName.length

Pada contoh sebelumnya, kita dapat menuliskannya kembali seperti berikut ini,

public class ArraySample {

public static void main( String[] args ){

int[] ages = new int[100];

for( int i=0; i<ages.length; i++ ){ System.out.print( ages[i] );

} }

}

Petunjuk penulisan program:

1. Pada saat pembuatan for loop untuk memproses elemen-elemen dalam array,

gunakanlah at r i bu t length yang d i l etakkan di dalam bag ian pengkondisian dar i fo r loop. Hal ini akan menyebabkan loop secara otomatis menyesuaikan diri terhada ukuran array yang berbeda-beda.

2. Pendeklarasian ukuran array di program Java, biasanya menggunakan sebuah konstanta untuk mempermudah. Sebagai contoh,

final int ARRAY_SIZE = 1000; //pendeklarasian constant . . .

int[] ages = new int[ARRAY_SIZE];

Pengenalan Pemrograman 1 5

Page 126: Belajar Java

J.E.N.I. 7.6 Array Multidimensi

Array multidimensi diimplementasikan sebagai array yang terl etak di dalam array. Array multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array. Sebagai contoh,

// Elemen 512 x 128 dari integer array int[][] twoD = new int[512][128];

// karakter array 8 x 16 x 24 char[][][] threeD = new char[8][16][24];

// String array 4 baris x 2 kolom String[][] dogs = {{ "terry", "brown" },

{ "Kristin", "white" }, { "toby", "gray"}, { "fido", "black"} };

Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses elemen pertama dari baris pertama didalam array dogs, kita akan menulis,

System.out.print( dogs[0][0] );

Kode diatas akan mencetak String “terry” di layar.

Pengenalan Pemrograman 1 6

Page 127: Belajar Java

J.E.N.I. 7.7 Latihan

7.7.1 Hari dalam seminggu

Buatlah sebuah String array yang akan menginisialisasi 7 hari dalam seminggu. Sebagai contoh,

String days[] = {“Monday”, “Tuesday”….};

Gunakan while-loop, kemudian print semua nilai dari array (Gunakan juga untuk do- while dan for-loop)Using a while-loop.

7.7.2 Nomor terbesar

Gunakanlah BufferedReader dan JoptionPane, tanyakan kepada user untuk 10 nomor. Kemudian gunakan array untuk menyimpan 10 nomor tersebut. Tampilkan kepada user, input terbesar yang telah diberikan user.

7.7.3 Buku Alamat

Berikut ini adalah array multidimensi yang menyatakan isi dari sebuah buku alamat:

String entry = {{"Florence", "735-1234", "Manila"}, {"Joyce", "983-3333", "Quezon City"}, {"Becca", "456-3322", "Manila"}};

Cetak buku alamat tersebut dalam format berikut ini:

Name : Florence Tel. # : 735-1234 Address : Manila

Name : Joyce Tel. # : 983-3333 Address : Quezon City

Name : Becca Tel. # : 456-3322 Address : Manila

Pengenalan Pemrograman 1 7

Page 128: Belajar Java

J.E.N.I.

BAB 8 Argumen dari Command-line

8.1 Tujuan Pada bab ini, kita akan mempelajari bagaimana untuk memproses sebuah input dari command-line dengan menggunakan argumen yang diberikan kepada program Java.

Pada akhir pembahasan, diharapkan pembaca dapat :

Mengetahui dan menjelaskan mengenai argumen command-line

Mendapatkan input dari user dengan menggunakan argumen command-line

Mempelajari bagaimana memberikan argumen kedalam program pada NetBeans

8.2 Argumen Command-line Sebuah aplikasi Java dapat menerima sejumlah argumen dari command-line. Argumen dari command line memberikan kesempatan bagi user untuk mengatur operasi dari sebuah aplikasi dalam sekali pemanggilan program. User memasukkan argumen command line pada saat memanggil aplikasi dan menspesifikasikan argumen tersebut setelah nama dari class yang akan dijalankan.

Sebagai contoh, apabila Anda memiliki sebuah aplikasi Java dengan nama Sort, yang akan mengurutkan lima nomor, Anda dapat menjalankannya seperti berikut ini:

Pengenalan Pemrograman 1 1

Page 129: Belajar Java

J.E.N.I.

Gambar 1:Menjalankan argument dari Command-line

Perlu diperhatikan bahwa sebuah argumen dapat dipisahkan oleh ruang spasi. Pada bahasa pemrograman Java, jika kita akan memanggil sebuah aplikasi, sistem runtime akan memberikan argumen command-line ke method main yang dimiliki oleh aplikasi menggunakan sebuah array dari String. Lalu, setiap String di dalam array mewakili sebuah argumen commmand-line. Perhatikan deklarasi dari main method,

public static void main( String[] args )

Argumen yang diberikan kepada program Anda akan disimpan kedalam sebuah array String dengan identifier args.

Pada contoh sebelumnya, argumen dari command-line yang akan diberikan kepada aplikasi sort command adalah sebuah array dengan lima buah String yaitu “5”,”4”,”3”,”2”, dan “1”. Anda dapat mengetahaui berapa banyak argumen dari command-line dengan cara melihat panjang dari attribute array. Sebagai contoh,

int numberOfArgs = args.length;

Jika program Anda membutuhkan argumen command-line yang bertipe angka. Anda harus mengkonversi argumen String tersebut untuk merepresantasikan sebuah angka, misalnya “34” menjadi sebuah angka 34. Kode dibawah ini adalah sebuah potongan program untuk mengkonversi sebuah argumen command-line menjadi tipe integer.

int firstArg = 0; if (args.length > 0){

Pengenalan Pemrograman 1 2

Page 130: Belajar Java

J.E.N.I.

firstArg = Integer.parseInt(args[0]); }

parseInt akan melempar eksepsi NumberFormatException (ERROR) jika format args[0] tidak valid (bukan sebuah angka).

Petunjuk penulisan program: Sebelum menggunakan argumen command line, harus di periksa terlebih dahulu berapa jumlah argumen yang diperlukan sebelum mengakses sebuah array, sehingga tidak ada eksepsi yang terjadi.

Pengenalan Pemrograman 1 3

Page 131: Belajar Java

J.E.N.I.

8.3 Argument Command-line di NetBeans

Untuk mengilustrasikan sebuah argumen yang diberikan dengan menggunakan NetBeans, marilah kita membuat sebuah program Java yang akan mencetak jumlah argumen dan argumen pertama diberikan pada program tersebut.

public class CommandLineExample {

public static void main( String[] args ){

System.out.println("Number of arguments=" + args.length);

System.out.println("First Argument="+ args[0]); }

} Sekarang, jalankan NetBeans, buat sebuah project yang baru, dan beri nama project ini CommanLineExample. Salin kode yang telah dituliskan diatas, kemudian dilakukan proses compile. Selanjutnya, ikutilah langkah-langkah berikut untuk memberikan argumen kepada program Anda dengan menggunakan NetBeans.

Klik di Projects (dilingkari dibawah)

Gambar 2: Membuka file project

Pengenalan Pemrograman 1 4

Page 132: Belajar Java

J.E.N.I.

Klik kanan icon CommanLineExample dan akan keluar sebuah pop-up menu. Lalu klik pada properties.

Gambar 3: Membuka Properties Dialog mengenai project properties akan tampil

Gambar 4: Properties Dialog Pengenalan Pemrograman 1 5

Page 133: Belajar Java

J.E.N.I.

Kemudian, klik Run -> Running Project

Gambar 5: Klik untuk menjalankan project

Pada kolom bernama Arguments, tuliskan argumen yang Anda ingin masukkan kedalam program. Dalam kasus ini kita akan mengetikkan 5 4 3 2 1. Kemudian, klik pada tombol OK.

Pengenalan Pemrograman 1 6

Page 134: Belajar Java

J.E.N.I.

Gambar 6: Set argument pada Command-line

Gambar 7: Jalankan program dengan tombol shortcut Kemudian, cobalah untuk menjalankan (RUN) progam Anda

Pengenalan Pemrograman 1 7

Page 135: Belajar Java

J.E.N.I.

Seperti yang dapat Anda lihat, keluaran dari program Anda adalah jumlah dari argumen yaitu 5, dimana argumen pertama juga memiliki nilai 5.

Gambar 8: Program Keluaran Pengenalan Pemrograman 1 8

Page 136: Belajar Java

J.E.N.I.

8.4 Latihan

8.4.1 Mencetak Argumen

Dapatkan input dari user dengan menggunakan argumen command line dan cetak semua argumen ke layar. Sebagai contoh, jika user memasukkan

java Hello world that is all

program Anda haruslah mencetak

Hello world that is all

8.4.2 Operasi Aritmatik

Dapatkan dua buah bilangan yang diinputkan user dari command line dengan argumen command line, kemudian cetak hasil penjumlahannya, hasil pengurangannya, hasil perkalian, dan juga hasil pembagiannya.

java ArithmeticOperation 20 4

program anda akan mencetak

sum = 24 difference = 16 product = 80 quotient = 5

Pengenalan Pemrograman 1 9

Page 137: Belajar Java

J.E.N.I.

BAB 9

Bekerja dengan Java Class Library

9.1 Tujuan Pada bab ini, kita akan mengantarkan beberapa konsep dasar dari Pemrograman berorientasi obyek (Object Oriented Porgramming). Selanjutnya, kita akan membahas konsep dari class dan obyek, serta penggunaan class dan anggota-anggotanya termasuk perbandingan, konversi dan pengubahan obyek. Untuk saat ini, kita memfokuskan dalam penggunaan class yang telah dijabarkan dalam Java Class library, lalu akan kita lanjutkan tentang pembuatan class anda sendiri.

Pada akhir pembahasan, diharapkan pembaca dapat :

1. Menjelaskan mengenai Pemrograman berorientasi Obyek dan beberapa konsepnya 2. Perbedaan antara class dan obyek 3. Pebedaan antara variabel/method yang diturunkan dan variable/method class (static) 4. Menjelaskan mengenai method, serta cara pemanggilan dan pemberian parameter ke

dalam method 5. Mengidentifikasi beberapa jangkauan dari sebuah variabel 6. Mengubah tipe data dan obyek primitif 7. Membandingkan obyek dan menjabarkan class dari obyek.

9.2 Pengenalan Pemrograman Berorientasi Obyek OOP berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa obyek disekitar kita seperti mobil, singa, manusia dan seterusnya. Obyek ini dikarakterisasi oleh atribut dan tingkah lakunya.

Contohnya, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa. Coba perhatikan tabel dibawah ini sebagai contoh perbandingan :

Obyek Atribut Tingkah Laku

Mobil Tipe dari transmisi manufaktur Warna

Berbelok Mengerem Mempercepat

Singa Berat Warna Lapar atau tidak lapar Jinak atau liar

roaring Tidur Berburu

Table 1: Example of Real-life Objects

Pengenalan Pemrograman 1 1

Page 138: Belajar Java

J.E.N.I. Dengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku sebagai method. Data dan method dapat digunakan dalam pemrograman game atau perangkat lunak interaktif untuk membuat simulasi obyek pada dunia nyata. Contohnya adalah perangkat lunak obyek mobil dalam permainan balap mobil atau perangkat lunak obyek singa dalam sebuah perangkat lunak pendidikan interaktif pada kebun binatang untuk anak anak.

9.3 Class dan Object

9.3.1 Perbedaan Class dan Object

Pada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat lunak yang stukturnya mirip dengan obyek pada dunia nyata. Setiap obyek dibangun dari sekumpulan data (atribut) yang disebut variabel untuk menjabarkan karakteristik khusus dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari obyek. Bisa dikatakan bahwa obyek adalah sebuah perangkat lunak yang berisi sekumpulan variabel dan method yg berhubungan. Variabel dan method dalam obyek Java secara formal diketahui sebagai variabel instance dan method instance. Hal ini dilakukan untuk membedakan dari variabel class dan method class, dimana akan dibahas kemudian.

Class adalah sturktur dasar dari OOP. Class terdiri dari dua tipe dari anggota dimana disebut dengan field (attribut/properti) dan method. Field merupakan tipe data yang didefinisikan oleh class, sementara method merupakan operasi. Sebuah obyek adalah sebuah instance (keturunan) dari class.

Untuk dapat membedakanantara class dan obyek, mari kita mendiskusikan beberapa contoh berikut ini. Kita memiliki sebuah class mobil dimana dapat digunakan untuk medefinisikan beberapa obyek mobil. Pada tabel dibawah, mobil A dan mobil B adalah obyek dari class mobil. Class memiliki field nomor, plat, warna, manufaktur dan kecepatan yang diisi dengan nilai pada obyek mobil A dan mobil B. Mobil juga dapat berakselerasi, berbelok dan melakukan rem.

Class mobil Obyek mobil A Obyek Mobil B

Nomor Plat ABC 111 XYZ 123

Warna Biru Merah

Manufaktur Mitsubishi Toyota

Variabel Intsance

Kecepatan 50 km/h 100 km/h Method Akselerasi

Method Belok

Method Instance

Method Rem

Table 2: Contoh class car dan object-object nya

Pengenalan Pemrograman 1 2

Page 139: Belajar Java

J.E.N.I.

Ketika diinisialisi, setiap obyek mendapat satu set variabel yang baru. Bagaimanapun, implementasi dari method dibagi diantara objek pada class yang sama.

Class menyediakan keuntungan dari reusability. Programmer perangkat lunak dapat menggunakan sebuah kelas beberapa kali untuk membuat banyak objek.

9.3.2 Instansiasi Class

Untuk membuat sebuah objek atau sebuah instance pada sebuah class. Kita menggunakan operator new. Sebagai contoh, jika anda ingin membuat instance dari class string, kita menggunakan kode berikut :

String str2 = new String(“Hello world!”); Ini juga sama dengan,

String str2 = "Hello";

Gambar 1: Instanstiasi Class

9.3.3 Variabel Class dan Variabel Method

Selain dari variabel instance, kita juga memungkinkan untuk mendefinisikan variabel dari class, yang nantinya variabel ini dimiliki oleh class. Ini berarti variabel ini dapat memiliki nilai yang sama untuk semua objek pada class yang sama. Mereka juga disebut static member variables.

9.4 Method 9.4.1 Apakah Method itu dan mengapa menggunakan Method?

Pada contoh yang telah kita diskusikan sebelumnya, kita hanya memiliki satu method, dan itu adalah method main(). Di dalam Java, kita dapat mendefinisikan banyak method yang akan kita panggil dari method yang berbeda. Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau dari method lainnya untuk menjalankan fungsi yang spesifik. Berikut adalah karakteristik dari method :

1. dapat mengembalikan satu nilai atau tidak sama sekali 2. dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama

sekali. Parameter bisa juga disebut sebagai argumen dari fungsi 3. setelah method telah selesai dieksekusi, dia akan kembali pada method yang

memanggilnya.

Pengenalan Pemrograman 1 3

Page 140: Belajar Java

J.E.N.I.

Sekarang mengapa kita butuh untuk membuat banyak method? Mengapa kita tidak menuliskan semua kode pada sebuah method? Hal ini karena penyelesaian masalah yang sangat efektif adalah memecah masalah-masalah tersebut menjadi beberapa bagian. Kita juga dapat melakukan hal ini di Java dengan membuat method untuk mengatasi bagian tertentu dari masalah. Sebuah permasalahan dapat dipecah-pecah menjadi beberapa bagian kecil. Hal ini sangat baik sekali untuk membuat program yang sangat besar.

9.4.2 Memanggil Instance dan memberikan Variabel dari Method

Sekarang, untuk mengilustrasikan bagaimana memanggil method, mari kita menggunakan class string sebagai contoh. Anda dapat menggunakan the dokumentasi dari Java API untuk melihat semua method yang tersedia dalam class string. Selanjutnya, kita akan membuat method, kita sendiri. Tapi untuk saat ini, mari terlebih dahulu kita gunakan method yang sudah disediakan oleh Java.

Untuk memanggil sebuah instance method, kita dapat menuliskan :

nameOfObject.nameOfMethod( parameters );

mari kita mengambil dua contoh method yang ditemukan dalam class String.

Deklarasi method Definisi public char charAt(int index) Mengambil karakter pada indeks tertentu. public boolean equalsIgnoreCase

(String anotherString) Membandingkan antar String, tidak case sensitive.

Table 3: Method dari Class String

Menggunakan method :

String str1 = "Hello"; char x = str2.charAt(0); //will return the character H

//simpan pada variabel x

String str2 = "hello";

//return boolean boolean result = str1.equalsIgnoreCase( str1 );

Pengenalan Pemrograman 1 4

Page 141: Belajar Java

J.E.N.I. 9.4.3 Pemberian Variabel Dalam Method

Pada contoh kita sebelumnya , kita sudah pernah mecoba melewati variabel pada method. Walaupun kita belumdapat membedakan antara perbedaan tipe variabel yang diberikan (passing) ke method dalam Java. Ada dua tipe data variabel passing pada method, yang pertama adalah pass-by-value dan yang kedua adalah pass-by-reference.

9.4.3.1 Pass-by-Value

Ketika pass-by-values terjadi, method membuat sebuah salinan dari nilai variable yang dikirimkan ke method. Walaupun demikian, method tidak dapat secara langsung memodifikasi nilai variabel pengirimnya meskipun parameter salinannya sudah dimodifikasi nilainya di dalam method.

Contoh :

public class TestPassByValue {

public static void main( String[] args ){ int i = 10; //mencetak nilai i System.out.println( i );

//memanggil method test //passing i pada method test test( i );

//Mencetak nilai i System.out.println( i ); }

Pass i as parameter which is copied to j

public static void test( int j ){ //merubah nilai parameter j j = 33;

} }

Pada contoh diatas, kita memanggil method tes dan melewatkan nilai variabel i sebagai parameter. Nilai pada i disalinkan ke variable j pada method. Pada kondisi ini variabel j adalah merupakan variabel pengganti pada method tes, jika nilai j berubah maka nilai variabel i yang terletak pada main tidak akan ikut berubah walaupun awalnya variabel j merupakan salinan dari variabel i.

Secara default, semua tipe data primitif ketika dilewatkan pada sebuah method adalah pass-by-value.

Pengenalan Pemrograman 1 5

Page 142: Belajar Java

J.E.N.I.

9.4.3.2 Pass-by-reference

Ketika sebuah pass-by-reference terjadi, alamat memori dari nilai pada sebuah variabel dilewatkan pada saat pemanggilan method. Hal ini berarti bahwa method menyalin alamat memori dari variabel yang dilewatkan pada method. Ini tidak seperti pada pass-by-value, method dapat memodifikasi variabel asli dengan menggunakan alamat memori tersebut, meskipun berbeda nama variabel yang digunakan dalam method dengan variabel aslinya, kedua variabel ini menunjukkan lokasi dari data yang sama.

contoh :

class TestPassByReference {

public static void main( String[] args ){ //membuat array integer int []ages = {10, 11, 12};

//mencetak nilai array for( int i=0; i<ages.length; i++ ){

System.out.println( ages[i] ); }

Pass ages as parameter which is copied to variable arr

}

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

System.out.println( ages[i] ); }

public static void test( int[] arr ){

//merubah nilai array for( int i=0; i<arr.length; i++ ){

arr[i] = i + 50; }

} }

Pengenalan Pemrograman 1 6

Page 143: Belajar Java

J.E.N.I. Gambar 2 : Contoh Pass By Reference

Petunjuk Penulisan Program :

Kesalahan konsep mengenai pass-by-reference pada Java adalah pada saat membuat method untuk menukar nilai variabel menggunakan pengalamatan java. Perlu diingat bahwa java memanipulasi obyek-obyek dengan cara ‘by reference’, akan tetapi java mengirimkan alamat obyek ke dalam method dengan cara ‘by value’. Untuk itu, anda tidak dapat menuliskan method penukaran standar ke dalam obyek.

9.4.4 Memanggil Method Static

Method Static adalah method yang dapat dipakai tanpa harus menginisialisasi suatu class (maksudnya tanpa menggunakan variabel terlebih dahulu). Method static hanya dimiliki oleh class dan tidak dapat digunakan oleh instance (atau objek) dari suatu class. Method static dibedakan dari method yang dapat instance di dalam suatu class oleh kata kunci static.

Untuk memanggil method static, ketik :

Classname.staticMethodName(params);

Pengenalan Pemrograman 1 7

Page 144: Belajar Java

J.E.N.I.

Contoh dari static method yang digunakan :

//mencetak data pada layar System.out.println(“Hello world”);

//convert string menjadi integer int i = Integer.parseInt(“10”);

String hexEquivalent = Integer.toHexString( 10 ); 9.4.5 Lingkup Variabel

Selain nama dan tipe data yang dimiliki oleh variabel, suatu variablejuga mempunyai jangkauan. Jangkauan ini menentukan kemampuan program dalam mengakses variable. Jangkauan ini juga menentukan siklus hidup dari suatu variable atau berapa lama variable itu berada dalam memori. Jangkauan ini ditentukan oleh letak pendeklarasian variabel di dalam program.

Untuk memudahkan anda mengenai jangkauan variabel, kita bedakan variabel yang terletak di dalam kurawal {.....}. Blok kode yang terdapat di luar kurung kurawal bisa disebut juga dengan blok luar, dan blok kode yang terletak di dalam kurung kurawal disebut dengan blok dalam.

Jika kamu mendeklarasikan variabel di blok luar, variabel akan dapat dipakai oleh blok bagian dalam. Lain halnya jika kamu mendeklarasikan variabel di blok dalam, kamu tidak bisa harapkan blok terluar untuk menggunakan variabel tersebut.

Jadi dapat disimpulkan, suatu jangkauan variable dapat terletak di dalam blok dimana variabel tersebut sudah di deklarasikan, dimulai dari tempat dimana variable itu di dklarasikan dan di blok-blok bagian dalam.

Pengenalan Pemrograman 1 8

Page 145: Belajar Java

J.E.N.I. Sebagai Contoh, perhatikan potongan kode berikut:

public class ScopeExample

{

public static void main( String[] args ){

int i = 0;

int j = 0;

//... some code here

{

int k = 0;

int m = 0;

int n = 0;

}

}

Pengenalan Pemrograman 1 9

A B

E

C D

Page 146: Belajar Java

J.E.N.I. Kode yang kita miliki disini mempunyai lima jangkauan yang ditandai oleh baris dan keterangan yang mewakili jangkauan itu, dengan variable i,j,k,m dan n, dan 5 jangkauan A,B,C,D dan E, kita mempunyai beberapa jangkauan variable berikut:

Jangkauan variable i adalah A. Jangkauan variable j adalah B. Jangkauan variable k adalah C. Jangkauan variable m adalah D. Jangkauan variable n adalah E.

Contoh lain, jika terdapat dua method, yaitu main dan test,

class TestPassByReference {

public static void main( String[] args ){ //membuat array integer int []ages = {10, 11, 12};

//mencetak nilai array for( int i=0; i<ages.length; i++ ){

A }

test( ages );

//mencetak kembali nilai array for( int i=0; i<ages.length; i++ ){

C System.out.println( ages[i] ); } }

public static void test( int[] arr ){ //merubah nilai pada array D for( int i=0; i<arr.length; i++ ){

arr[i] = i + 50; } }

} Pada method main Jangkauan variabel adalah,

ages[ ] - scope A i in B - scope B i in C – scope C

Pengenalan Pemrograman 1 10

E

E

Page 147: Belajar Java

J.E.N.I. Pada method test, Jangkauan variabel adalah,

arr[ ] - scope D i in E - scope E

Pada saat variabel di deklarasikan, hanya boleh terdapat sebuah variabel dengan identifier/nama dapat di deklarasikan di dalam sebuah jangkauan. Hal ini maksudnya jika kamu mempunyai deklarasi berikut,

{

int test = 10; int test = 20;

}

Compiler akan menghasilkan error karena compiler mendeteksi nama yang lain dari variabel di satu blok, namun compiler tidak akan menghasilkan error jika menumukan dua variabel dengan nama yang sama jika kedua variabel tersebut tidak dideklarasikan pada blok yang sama, Contoh :

int test = 0; System.out.print( test ); //..some code here {

int test = 20; System.out.print( test );

} Manakala System.out.print (baris 2) pertama dipanggil, dia mencetak nilai dari variabel test pertama (nilai 0) pada saat variabel terlihat pada jangkauan. Pernyataan System.out.print yang kedua (baris6), nilai 20 dicetak mengambil nilai variabel test terdekat (baris 6)pada jangkauan blok kode tersebut.

Petunjuk Penulisan program :

Hindari pemberian nama yang sama kepada variabel supaya Anda tidak kebingungan.

9.5 Casting, Converting dan Comparing Objects

Pada bagian ini, kita akan belajar bagaimana mengunakan typecasting. Typecasting atau casting adalah proses konversi data dari tipe data tertentu ke tipe data yang lain. Kita juga akan belajar bagaimana mengkonversi tipe data primitif ke obyek dan sebaliknya. Kemudian, pada akhirnya kita akan belajar bagaimana membandingkan sebuah obyek.

Pengenalan Pemrograman 1 11

Page 148: Belajar Java

J.E.N.I. 9.5.1 Casting Tipe data Primitif

Casting antara tipe primitif dapat mengijinkan Anda untuk mengkonversikan sebuah nilai dari sebuah tipe data tertentu kepada tipe primitif yang lain. Hal ini biasanya terjadi diantara tipe data angka.

Ada sebuah tipe data primitif yang tidak dapat kita casting, yaitu tipe data boolean.

Sebagai contoh dari typecasting adalah pada saat Anda menyimpan sebuah variabel dengan tipe data integer kepada sebuah variabel dengan tipe data double. Sebagai contoh:

int numInt = 10; double numDouble = numInt; //implicit cast

Pada contoh ini dapat kita lihat bahwa, walaupun variabel yang dituju (double) memiliki ukuran yang lebih besar daripada nilai yang akan kita tempatkan didalamnya, data tersebut secara implisit dapat kita casting ke tipe data double.

Contoh yang lain adalah apabila kita ingin untuk melakukan typecasting sebuah int ke char atau sebaliknya. Sebuah karakter akan dapat digunakan sebagai nilai integer karena setiap karakter memiliki sebuah nilai numerik yang merepresentasikan posisinya dalam satu set karakter. Jika sebuah variable memiliki nilai 65, maka cast (char) i akan menghasilkan nilai 'A'. Kode numerik yang merepresentasikan huruf kapital A adalah 65, berdasarkan set karakter ASCII, dan Java telah mengadopsi bagian ini untuk mendukung karakter.

char valChar = 'A'; int valInt = valChar; System.out.print( valInt ); //casting explisit: keluaran 65

Ketika kita mengkonversi data yang bertipe besar ke tipe data yang lebih kecil, kita harus menggunakan explicit cast. Explicit casts mengikuti bentuk sebagai berikut :

(dataType)value

dimana, dataType, adalah nama dari tipe data yang Anda konversi value, adalah pernyataan yang dihasilkan pada nilai dari the source type.

Sebagai contoh,

double valDouble = 10.12; int valInt = (int)valDouble; //men-convert valDouble ke tipe int

double x = 10.2; int y = 2;

int result = (int)(x/y); //hasil typecast operasi ke int

Pengenalan Pemrograman 1 12

Page 149: Belajar Java

J.E.N.I. 9.5.2 Casting Obyek

Instances dari class-class juga dapat di ubah ke instance-instance dari class-class yang lain dengan satu batasan: class-class sumber dan tujuan harus terhubung dengan mekanisme inheritance; satu class harus menjadi sebuah subclass terhadap class yang lain. Kita akan menjelaskan mengenai inheritance pada bab selanjutnya.

Sejalan dengan konversi nilai primitif ke tipe yang lebih besar ukurannya, beberapa object mungkin tidak membutuhkan untuk ubah secara explisit. Faktanya karena semua subclass terdiri atas informasi yang sama seperti class induknya.

Sebagai contoh, jika terdapat method yang memiliki dua argumen, satu tipe object dan tipe window yang lain. Anda dapat melewatkan instance dari class apapun untuk argumen object karena semua class java adalah subclass dari object. Untuk argumen window, anda dapat melewatkannya subclassnya, seperti dialog, FileDialog, dan frame. Hal ini dapat dituliskan dalam program dan bukan hanya dalam memanggil method. Jika anda mempunyai variabel yang didefinisikan sebagai class window, anda dapat memberikan obyek dari class tersebut atau dari subclassnya untuk dijadikan variabel tanpa konversi.

Figure 2: Contoh Hierarchy Class

Untuk kebalikannya pun bisa dilakukan, Anda dapat menggunakan superclass ketika sebuah subclass dibentuk. Akan tetapi error akan ditemukan karena subclass kemungkinan memiliki lebih banyak tingkah laku daripada superclassnya, maka mungkin akan terjadi hilangnya kendali dari superclass untuk method tertentu. Superclass object mungkin tidak memiliki semua kemungkinan tingkah laku yang dapat dilakukan subclass object. Sebagai contoh jika anda memiliki operasi yang memanggil method dalam obyek dari class integer, mengunakan object dari class Number tidak akan didapatkan method lebih banyak dar i yang dispesifikasikan dalam integer. E rror akan terjadi jika Anda mencoba untuk memanggil method yang tidak dimiliki oleh obyek tujuan.

Untuk mengunakan obyek-obyek superclass dimana obyek-obyek subclass ditentukan terlebih dahulu, anda harus mengkonversi mereka secara eksplisit. Anda tidak akan kehilangan informasi sebelumnya setelah proses konversi, tapi anda mendapatkan semua method dan

Pengenalan Pemrograman 1 13

Page 150: Belajar Java

J.E.N.I.

variabel yang didefinisikan oleh subclass. Untuk konversi sebuah obyek ke class yang lain, Anda dapat menggunakan operasi yang sama seperti konversi untuk tipe-tipe primitif : Untuk memilih,

(classname)object dimana,

classname, adalah nama dari class tujuan. object, adalah sesuatu yang mengarah pada obyek sumber.

Catatan: casting akan membuat pengalamatan ke obyek yang lama dari classname yang dituliskan; obyek yang lama akan dapat tetap dipakai seperti sebelumnya.

Figure 3: Class Hierarchy untuk superclass Employee Contoh berikut konversi sebuah instance dari class VicePresident ke sabuah instance dari class Employee; VicePresident adalah sebuah subclass dari Employee dengan lebih banyak informasi, disini didefinisikan bahwa VicePresident memiliki akses menuju executive washroom,

Employee emp = new Employee(); VicePresident veep = new VicePresident(); emp = veep; // tidak adah konversi yang diperlukan untuk penggunaan yang cenderung naik veep = (VicePresident)emp; // Harus memilih dengan pemilihan secara eksplisit

9.5.3 Convert Tipe Primitive ke Object Dan Sebaliknya

Satu hal yang tidak dapat Anda lakukan pada beberapa keadaan yaitu konversi dari sebuah obyek ke sebuah tipe data primitif, atau sebaliknya. Tipe-tipe data primitif dan obyek adalah sesuatu yang sangat berbeda dalam Java, dan Anda tidak bisa secara langsung konversi diantara keduanya.

Sebagai sebuah alternatif, package java.lang yang terdiri atas class-class yang berhubungan untuk setiap tipe data primitif yaitu : Float, Boolean, Byte, dan sebagainya. Kebanyakan dari class-class ini memiliki nama yang sama seperti tipe datanya, kecuali jika nama classnya diawali dengan huruf besar (Short -> sort, Double -> double dan sebagainya). Selain itu terdapat dua class yang memiliki nama berbeda dari tipe data primitifnya yaitu: Character digunakan untuk variabel char dan Integer untuk variabel int. (Disebut dengan Wrapper Classes)

Pengenalan Pemrograman 1 14

Page 151: Belajar Java

J.E.N.I.

Java merepresentasikan tipe data primiti f dan versi classnya dengan sangat berbeda. Sebuah program tidak akan berhasil tercompile jika Anda menggunakan hanya satu ketika yang lain juga diperlukan.

Menggunakan class-class yang berhubungan untuk setiap tipe primitif, anda dapat membuat sebuah obyek yang memiliki nilai yang sama.

Contoh :

//Pernyataan berikut membentuk sebuah instance bertipe Integer // class dengan nilai integer 7801 (primitif -> Object) Integer dataCount = new Integer(7801);

//Pernyataan berikut meng-konversi sebuah obyek Integer ke //tipe data primitif int nya. Hasilnya adalah sebuah int //dengan nilai 7801

int newCount = dataCount.intValue();

// Anda perlu suatu translasi biasa pada program // yang mengkonversi sebuah String ke sebuah tipe numeric, //seperti suatu int // Obyek->primitif String pennsylvania = "65000"; int penn = Integer.parseInt(pennsylvania);

PERHATIAN: class Void tidak mewakili apapun dalam Java, jadi class ini tidak akan

digunakan ketika melakukan konversi antara nilai primitif dan obyek. Kata void digunakan dalam definisi method untuk mengindikasikan bahwa method tidak memiliki sebuah nilai yang dihasilkan.

9.5.3 Membandingkan dua Obyek

Dalam diskusi kita sebelumnya, kita mempelajari tentang operator untuk membandingkan nilai — sama dengan, tidak sama dengan, lebih kecil daripada, dan sebagainya. Operator ini hanya bekerja pada tipe primitif, bukan pada obyek. Jika Anda berusaha untuk menggunakan nilai selain tipe data primitif sebagai operand, compiler Java akan menghasilkan error.

Salah satu contoh untuk aturan ini adalah operator untuk persamaan : == (sama dengan) dan != (tidak samadengan), ketika operator ini dimasukkan ke sebuah obyek, operator ini tidak akan melakukan apa yang sebenarnya diinginkan. Penggunaan operator ini akan memeriksa kesamaan antara satu obyek ke obyek lain, bukan nilainya.

Untuk membandingkan instance dari sebuah, Anda harus mengimplementasikan method khusus dalam class anda dan memanggil method tersebut. Sebuah contoh yang baik untuk ini adalah class String.

Sangat mungkin memiliki dua object String yang memiliki nilai yang sama. Namun, jika Anda menggunakan operator == untuk membandingkan obyek ini, kedua obyek tersebut akan

Pengenalan Pemrograman 1 15

Page 152: Belajar Java

J.E.N.I.

menghasilkan hasil yang tidak sama. Walaupun isinya ternyata sama akan tetapi pada kenyataannya mereka bukan merupakan obyek yang sama. Untuk melihat jika dua object String memiliki nilai yang sama, sebuah method dari class yaitu equals() digunakan. Method ini akan memeriksa setiap karakter dalam string dan mengembalikan nilai true jika dua obyek string memiliki nilai yang sama.

Kode berikut mengilustrasikan hal tersebut,

class EqualsTest { public static void main(String[] arguments) { String str1, str2; str1 = "Free the bound periodicals."; str2 = str1;

System.out.println("String1: " + str1); System.out.println("String2: " + str2); System.out.println("Same object? " + (str1 == str2));

str2 = new String(str1);

System.out.println("String1: " + str1); System.out.println("String2: " + str2); System.out.println("Same object? " + (str1 == str2)); System.out.println("Same value? " + str1.equals(str2));

} }

Output program ini adalah sebagai berikut ,

OUTPUT:

String1: Free the bound periodicals. String2: Free the bound periodicals. Same object? true String1: Free the bound periodicals. String2: Free the bound periodicals. Same object? false Same value? True

Sekarang mari mendiskusikan tentang dua baris kode dari program sebagai berikut.

String str1, str2; str1 = "Free the bound periodicals.";

Pengenalan Pemrograman 1 16

Page 153: Belajar Java

J.E.N.I.

Gambar 4: Keduanya mengarah ke object yang sama

Page 154: Belajar Java

Bagian pertama dari program mendeklarasikan dua variabel (str1 dan str2), memberikan kalimat "Free the bound periodicals." untuk str1, dan kemudian memberi nilai tersebut untuk str2. Seperti yang Anda pelajari sebelumnya, str1 dan str2 sekarang menunjuk ke alamat obyek yang sama, dan uji kesamaan membuktikan hal tersebut.

str2 = new String(str1);

Pada bagian yang kedua dari program ini, anda membuat obyek String baru dengan nilai yang sama dari str1 dan memberikkanya ke str2. Sekarang Anda memiliki dua obyek string yang berbeda yaitu str1 dan str2, keduanya memilki nilai yang sama. Ketika dilakukan pengujian untuk melihat jika mereka obyek yang sama dengan menggunakan operator ==, akan dihasilkan nilai: false — kedua obyek bukan obyek yang sama dalam memory. ketika dilakukan pengujian menggunakan method equals() maka akan dihasilkan : true – kedua obyek tersebut memiliki nilai yang sama.

Gambar 5: Alamat sekarang mengarah pada object yang berbeda Catatan: Mengapa kita tidak dapat hanya menggunakan literal yang lain ketika ingin

mengubah str2, selain menggunakan new? String literals sudah dioptimasi dalam Java; jika Anda membuat sebuah string menggunakan literal dan kemudian menggunakan literal yang lain dengan character yang sama, Java cukup memberikan Anda obyek String yang pertama kembali. Jadi kedua String tadi adalah obyek yang sama; Anda harus menghidari langkah anda untuk membuat dua obyek terpisah.

Page 155: Belajar Java

J.E.N.I. 9.5.5 Menentukan Class dari sebuah Object

Jika kita ingin mengetahui class dari sebuah obyek dapat dilakukan dengan cara : 1. Method getClass() mengembalikan sebuah obyek Class (dimana Class itu

sendiri merupakan sebuah class) yang memilki sebuah method getName(). Selanjutnya getName() akan mengembalikan sebuah string yang mewakili nama class.

Sebagai contoh,

String name = key.getClass().getName();

2. operator InstanceOf

instanceOf memiliki dua operand: obyek pada sebelah kiri dan nama class pada sebelah kanan. Pernyataan ini mengembalikan nilai true atau false tergantung pada benar/salah obyek adalah sebuah instance dari penamaan class atau beberapa subclass milik class tersebut.

Sebagai contoh,

boolean ex1 = "Texas" instanceof String; // true Object pt = new Point(10, 10); boolean ex2 = pt instanceof String; // false

Pengenalan Pemrograman 1 18

Page 156: Belajar Java

J.E.N.I. 9.6 Latihan

9.6.1 Mendefinisikan Istilah

Dengan kata-kata Anda sendiri, definisikan istilah-istilah berikut ini :

1. Class 2. Object 3. Instantiate 4. Instance Variable 5. Instance Method 6. Class Variables atau static member variables 7. Constructor

9.6.2 Java Scavanger Hunt

Pipoy adalah suatu anggota baru dalam bahasa pemrograman Java. Dia hanya memperdengarkan bahwa telah ada APIs siap pakai dalam Java yang salah satunya dapat digunakan dalam program mereka, dan ia ingin sekali untuk mengusahakan mereka keluar. Masalahnya adalah, Pipoy tidak memiliki copy dari dokumentasi Java, dan dia juga tidak memiliki acces internet, jadi tidak ada jalan untuknya untuk menunjukkan Java APIs.

Tugas Anda adalah untuk membantu Pipoy memperhatikan APIs (Application Programming Interface). Anda harus menyebutkan class dimana seharusnya method berada, deklarasi method dan penggunaan contoh yang dinyatakan method. Sebagai contoh, jika Pipoy ingin untuk mengetahui method yang mengknversisebuah String ke integer,jawaban Anda seharusnya menjadi:

Class: Integer Method Declaration: public static int parseInt( String value ) Sample Usage:

String strValue = "100"; int value = Integer.parseInt( strValue );

yakinkan bahwa snippet dari kode yang Anda tulis dalam contoh Anda menggunakan compiles dan memberi output jawaban yang benar, jadi tidak membingungkan Pipoy. (Hint: Semua methods adalah dalam java.lang package). Dalam kasus dimana Anda dapat menemukan lebih banyak methods yang dapat menyelesaikan tugas, berikan hanya satu.

Pengenalan Pemrograman 1 19

Page 157: Belajar Java

3. Perhatikan untuk method yangberjalan

4. Perhatikan untuk method yangcontoh, jika Saya

5. Perhatikan untuk

input a 3method

.13, myang

J.E.N.I. Sekarang mari memulai pencarian! 1. Perhatikan sebuah method yang diuji jika String pasti diakhiri suffix yang pasti. Sebagai

contoh, jika diberikan string "Hello", Method harus mengembalikan nilai true suffix yang diberikan adalah "lo", dan false jika suffix yang diberikan adalah "alp".

2. Perhatikan untuk method yang mengenali character yang mewakili sebuah digit yang spesifik dalam radix khusus. Sebagai contoh, jika input digit adalah 15, dan the radix adalah 16, method akan mengembalikan Character F, sejak F adalah representasi hexadecimal untuk angka 15 (berbasis 10).

mengakhiri running Java Virtual Machine yang sedang

memperoleh lantai dari sebuah nilai double. Sebagai ethod harus mengembalikan nilai 3. mengenali jika character yang dipakai adalah sebuah

digit. Sebagai contoh, jika Saya input '3', dia akan mengembalikan nilai true. Pengenalan Pemrograman 1 20

Page 158: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 1

BAB 10

Membuat Class Sendiri

Tujuan Setelah kita mempelajari penggunaan class dari Java Class Library, kita akan mempelajari bagaimana menuliskan sebuah class sendiri. Pada bagian ini, untuk mempermudah pemahaman pembuatan class, kita akan membuat contoh class dimana akan ditambahkan beberapa data dan fungsi–fungsi lain. Kita akan membuat class yang mengandung informasi dari Siswa dan operasi–operasi yang dibutuhkan pada record siswa. Beberapa hal yang perlu diperhatikan pada syntax yang digunakan pada bab ini dan bagian lainnya : * - Menandakan bahwa terjadi lebih dari satu kejadian dimana elemen tersebut

diimplementasikan <description> - Menandakan bahwa Anda harus memberikan nilai pasti pada bagian ini [] - Indikasi bagian optional Pada akhir pembahasan, diharapkan pembaca dapat :

Membuat class mereka sendiri Mendeklarasikan atribut dan method pada class Menggunakan referensi this untuk mengakses instance data Membuat dan memanggil overloaded method Mengimport dan membuat package Menggunakan access modifiers untuk mengendalikan akses terhadap class member

Page 159: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 2

Mendefinisikan Class Anda Sebelum menulis class Anda, pertama pertimbangkan dimana Anda akan menggunakan class dan bagaimana class tersebut akan digunakan. Pertimbangkan pula nama yang tepat dan tuliskan seluruh informasi atau properti yang ingin Anda isi pada class. Jangan sampai terlupa untuk menuliskan secara urut method yang akan Anda gunakan dalam class. Dalam pendefinisian class, dituliskan :

<modifier> class <name> { <attributeDeclaration>* <constructorDeclaration>* <methodDeclaration>*

} dimana : <modifier> adalah sebuah access modifier, yang dapat dikombinasikan dengan tipe modifier lain.

Petunjuk Penulisan Program : Perhatikan bahwa pada class teratas, access modifier yang diperbolehkan adalah public dan package (bila tidak terdapat penulisan keyword access modifier pada class)

Pada bagian ini, kita akan membuat sebuah class yang berisi record dari siswa. Jika kita telah mengidentifikasikan tujuan dari pembuatan class, maka dapat dilakukan pemberian nama yang sesuai. Nama yang tepat pada class ini adalah StudentRecord.

Untuk mendefinisikan class, kita tuliskan :

public class StudentRecord {

//area penulisan kode selanjutnya }

dimana,

Public - Class ini dapat diakses dari luar package Class - Keyword yang digunakan untuk pembuatan class dalam Java

Page 160: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 3

Public - Class ini dapat diakses dari luar package StudentRecord - Identifier yang menjelaskan class

Petunjuk Penulisan Program : 1. Pertimbangkan nama yang tepat untuk class. Jangan gunakan nama acak dan singkat seperti XYZ. 2. Nama class harus dimulai dengan huruf KAPITAL 3. Nama file dari class harus sama dengan nama public class

Deklarasi Atribut

Dalam pendeklarasian atribut, kita tuliskan :

<modifier> <type> <name> [= <default_value>];

Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class. Untuk setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan. Contohnya, Anda tidak mungkin menginginkan untuk menggunakan tipe data integer untuk nama siswa, atau tipe data string pada nilai siswa.

Berikut ini adalah contoh informasi yang akan diisikan pada class StudentRecord :

name - String address - String age - Int math grade - double english grade - double science grade - double average grade - double

Anda dapat menambahkan informasi lain jika diperlukan.

Page 161: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 4

10.3.1 Instance Variable Jika kita telah menuliskan seluruh atribut yang akan diisikan pada class, selanjutnya kita akan menuliskannya pada kode. Jika kita menginginkan bahwa atribut – atribut tersebut adalah unik untuk setiap object (dalam hal ini untuk setiap siswa), maka kita harus mendeklarasikannya sebagai instance variable : Sebagai contoh :

public class StudentRecord {

private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average; //area penulisan kode selanjutnya

} dimana, private disini menjelaskan bahwa variabel tersebut hanya dapat diakses oleh class itu sendiri. Object lain tidak dapat menggunakan variabel tersebut secara langsung. Kita akan membahas tentang kemampuan akses pada pembahasan selanjutnya. Petunjuk Penulisan Program : 1. Deklarasikan seluruh instance variable pada awal penulisan class 2. Deklarasikan variable per baris 3. Penulisan instance variable, termasuk juga variabel lain harus dimulai dengan huruf kecil 4. Gunakan tipe data yang tepat pada setiap variabel 5. Deklarasikan instance variable sebagai private supaya hanya method pada class itu sendiri yang dapat mengaksesnya.

Page 162: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 5

10.3.2 Class Variable atau Static Variables Disamping instance variable, kita juga dapat mendeklarasikan class variable atau variabel yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua object di class yang sama. Anggaplah kita menginginkan jumlah dari siswa yang dimiliki dari seluruh class, kita dapat mendeklarasikan satu static variable yang akan menampung nilai tersebut. Kita beri nama variabel tersebut dengan nama studentCount. Berikut penulisan static variable :

public class StudentRecord {

//area deklarasi instance variables private static int studentCount; //area penulisan kode selanjutnya

} Kita gunakan keyword : ’static’ untuk mendeklarasikan bahwa variabel tersebut adalah static. Maka keseluruhan kode yang dibuat terlihat sebagai berikut :

public class StudentRecord {

private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average; private static int studentCount; //area penulisan kode selanjutnya

}

Page 163: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 6

10.4. Deklarasi Methods Sebelum kita membahas method apa yang akan dipakai pada class, mari kita perhatikan penulisan method secara umum. Dalam pendeklarasian method, kita tuliskan :

<modifier> <returnType> <name>(<parameter>*) { <statement>* }

dimana, <modifier> dapat menggunakan beberapa modifier yang berbeda <returnType> dapat berupa seluruh tipe data, termasuk void <name> identifier atas class <parameter> ::= <tipe_parameter> <nama_parameter>[,] 10.4.1 Accessor Methods Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class sebagai private. Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses data private. Dalam hal ini kita gunakan accessor methods. Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get<namaInstanceVariable>. Method ini juga mempunyai sebuah return value. Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca nama, alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa. Mari kita perhatikan salah satu contoh implementasi accessor method.

public class StudentRecord {

private String name; : :

public String getName(){ return name;

} }

Page 164: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 7

dimana, public - Menjelaskan bahwa method tersebut dapat diakses dari object luar class String - Tipe data return value dari method tersebut bertipe String getName - Nama dari method () - Menjelaskan bahwa method tidak memiliki parameter apapun Pernyataan berikut,

return name; dalam program kita menandakan akan ada pengembalian nilai dari nama instance variable ke pemanggilan method. Perhatikan bahwa return type dari method harus sama dengan tipe data seperti data pada pernyataan return. Anda akan mendapatkan pesan kesalahan sebagai berikut bila tipe data yang digunakan tidak sama :

StudentRecord.java:14: incompatible types found : int required: java.lang.String

return age; ^

1 error

Contoh lain dari penggunaan accessor method adalah getAverage,

public class StudentRecord {

private String name; : : public double getAverage(){

double result = 0; result = ( mathGrade+englishGrade+scienceGrade )/3; return result;

} }

Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan nilai return value dengan nama result.

Page 165: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 8

10.4.2 Mutator Methods Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable dalam class, baik itu berupa instance maupun static. Method semacam ini disebut dengan mutator methods. Sebuah mutator method umumnya tertulis set<namaInstanceVariabel>. Mari kita perhatikan salah satu dari implementasi mutator method :

public class StudentRecord {

private String name; : : public void setName( String temp ){

name = temp; }

}

dimana,

public - Menjelaskan bahwa method ini dapat dipanggil object luar class void - Method ini tidak menghasilkan return value setName - Nama dari method (String temp) - Parameter yang akan digunakan pada method

Pernyataan berikut :

name = temp; mengidentifikasi nilai dari temp sama dengan name dan mengubah data pada instance variable name. Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun berisi beberapa argumen dari program yang akan digunakan oleh method.

Page 166: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 9

10.4.3 Multiple Return Statements Anda dapat mempunyai banyak return values pada sebuah method selama mereka tidak pada blok program yang sama. Anda juga dapat menggunakan konstanta disamping variabel sebagai return value. Sebagai contoh, perhatikan method berikut ini :

public String getNumberInWords( int num ){

String defaultNum = "zero"; if( num == 1 ){

return "one"; //mengembalikan sebuah konstanta } else if( num == 2){

return "two"; //mengembalikan sebuah konstanta }

// mengembalikan sebuah variabel return defaultNum;

} 10.4.4 Static Methods Kita menggunakan static method untuk mengakses static variable studentCount.

public class StudentRecord {

private static int studentCount; public static int getStudentCount(){

return studentCount; }

} dimana, public - Menjelaskan bahwa method ini dapat diakses dari object luar class static - Method ini adalah static dan pemanggilannya menggunakan

[namaclass].[namaMethod]. Sebagai contoh : studentRecord.getStudentCount

Int - Tipe return dari method. Mengindikasikan method tersebut harus mempunyai return value berupa integer

Page 167: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 10

public - Menjelaskan bahwa method ini dapat diakses dari object luar class getStudentCount - Nama dari method () - Method ini tidak memiliki parameter apapun Pada deklarasi di atas, method getStudentCount() akan selalu menghasilkan return value 0 jika kita tidak mengubah apapun pada kode program untuk mengatur nilainya. Kita akan membahas pengubahan nilai dari studentCount pada pembahasan constructor. Petunjuk Penulisan Program : 1. Nama method harus dimulai dengan huruf kecil 2. Nama method harus berupa kata kerja 3. Gunakan dokumentasi sebelum mendeklarasikan sebuah method. Anda dapat Menggunakan JavaDoc.

Page 168: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 11

10.4.5 Contoh Kode Program dari class StudentRecord Berikut ini adalah kode untuk class StudentRecord :

public class StudentRecord {

private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average; private static int studentCount; /** * Menghasilkan nama dari Siswa */ public String getName(){

return name; } /** * Mengubah nama siswa */ public void setName( String temp ){

name = temp; } // area penulisan kode lain /** * Menghitung rata – rata nilai Matematik, Bahasa Inggris, * * Ilmu Pasti */ public double getAverage(){

double result = 0; result = ( mathGrade+englishGrade+scienceGrade )/3;

return result;

} /** * Menghasilkan jumlah instance StudentRecord */ public static int getStudentCount(){

return studentCount; }

}

Page 169: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 12

Berikut ini contoh kode dari class yang mengimplementasikan class StudentRecord :

public class StudentRecordExample {

public static void main( String[] args ){

//membuat 3 object StudentRecord StudentRecord annaRecord = new StudentRecord(); StudentRecord beahRecord = new StudentRecord(); StudentRecord crisRecord = new StudentRecord(); //Memberi nama siswa annaRecord.setName("Anna"); beahRecord.setName("Beah"); crisRecord.setName("Cris"); //Menampilkan nama siswa “Anna” System.out.println( annaRecord.getName() ); //Menampilkan jumlah siswa System.out.println("Count="+StudentRecord.getStudentCount());

} }

Output dari program adalah sebagai berikut :

Anna Student Count = 0

10.5. Reference this Reference this digunakan untuk mengakses instance variable yang dibiaskan oleh parameter. Untuk pemahaman lebih lanjut, mari kita perhatikan contoh pada method setAge. Dimisalkan kita mempunyai kode deklarasi berikut pada method setAge.

public void setAge( int age ){

age = age; //SALAH!!! }

Nama parameter pada deklarasi ini adalah age, yang memiliki penamaan yang sama dengan instance variable age. Parameter age adalah deklarasi terdekat dari method, sehingga nilai dari parameter tersebut akan digunakan. Maka pada pernyataan :

Page 170: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 13

age = age; kita telah menentukan nilai dari parameter age kepada parameter itu sendiri. Hal ini sangat tidak kita kehendaki pada kode program kita. Untuk menghindari kesalahan semacam ini, kita gunakan metode referensi this. Untuk menggunakan tipe referensi ini, kita tuliskan :

this.<namaInstanceVariable> Sebagai contoh, kita dapat menulis ulang kode hingga tampak sebagai berikut :

public void setAge( int age ){ this.age = age;

}

Method ini akan mereferensikan nilai dari parameter age kepada instance variable dari object StudentRecord. CATATAN : Anda hanya dapat menggunakan referensi this terhadap instance variable dan BUKAN static ataupun class variabel.

10.6. Overloading Methods Dalam class yang kita buat, kadangkala kita menginginkan untuk membuat method dengan nama yang sama namun mempunyai fungsi yang berbeda menurut parameter yang digunakan. Kemampuan ini dimungkinkan dalam pemrograman Java, dan dikenal sebagai overloading method. Overloading method mengijinkan sebuah method dengan nama yang sama namun memiliki parameter yang berbeda sehingga mempunyai implementasi dan return value yang berbeda pula. Daripada memberikan nama yang berbeda pada setiap pembuatan method, overloading method dapat digunakan pada operasi yang sama namun berbeda dalam implementasinya. Sebagai contoh, pada class StudentRecord kita menginginkan sebuah method yang akan menampilkan informasi tentang siswa. Namun kita juga menginginkan operasi penampilan data tersebut menghasilkan output yang berbeda menurut parameter yang digunakan. Jika pada saat kita memberikan sebuah parameter berupa string, hasil yang ditampilkan adalah nama, alamat dan umur dari siswa, sedang pada saat kita memberikan 3 nilai dengan tipe double, kita menginginkan method tersebut untuk menampilkan nama dan nilai dari siswa. Untuk mendapatkan hasil yang sesuai, kita gunakan overloading method di dalam deklarasi class StudentRecord.

Page 171: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 14

public void print( String temp ){ System.out.println("Name:" + name); System.out.println("Address:" + address); System.out.println("Age:" + age);

} public void print(double eGrade, double mGrade, double sGrade)

System.out.println("Name:" + name); System.out.println("Math Grade:" + mGrade); System.out.println("English Grade:" + eGrade); System.out.println("Science Grade:" + sGrade);

} Jika kita panggil pada method utama (main) :

public static void main( String[] args ) {

StudentRecord annaRecord = new StudentRecord(); annaRecord.setName("Anna"); annaRecord.setAddress("Philippines"); annaRecord.setAge(15); annaRecord.setMathGrade(80); annaRecord.setEnglishGrade(95.5); annaRecord.setScienceGrade(100); //overloaded methods annaRecord.print( annaRecord.getName() ); annaRecord.print( annaRecord.getEnglishGrade(),

annaRecord.getMathGrade(), annaRecord.getScienceGrade());

} Kita akan mendapatkan output pada panggilan pertama sebagai berikut :

Name:Anna Address:Philippines Age:15

Kemudian akan dihasilkan output sebagai berikut pada panggilan kedua :

Name:Anna Math Grade:80.0 English Grade:95.5 Science Grade:100.0

Page 172: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 15

Jangan lupakan bahwa overloaded method memiliki property sebagai berikut :

1. Nama yang sama 2. Parameter yang berbeda 3. Nilai kembalian (return) bisa sama ataupun berbeda

10.7. Deklarasi Constructor Telah tersirat pada pembahasan sebelumnya, Constructor sangatlah penting pada pembentukan sebuah object. Constructor adalah method dimana seluruh inisialisasi object ditempatkan. Berikut ini adalah property dari Constructor :

1. Constructor memiliki nama yang sama dengan class 2. Sebuah Constructor mirip dengan method pada umumnya, namun hanya informasi –

informasi berikut yang dapat ditempatkan pada header sebuah constructor, scope atau identifikasi pengaksesan (misal: public), nama dari konstuktor dan parameter.

3. Constructor tidak memiliki return value 4. Constructor tidak dapat dipanggil secara langsung, namun harus dipanggil dengan

menggunakan operator new pada pembentukan sebuah class. Untuk mendeklarasikan constructor, kita tulis,

<modifier> <className> (<parameter>*) { <statement>*

} Default Constructor Setiap class memiliki default constructor. Sebuah default constructor adalah constructor yang tidak memiliki parameter apapun. Jika sebuah class tidak memiliki constructor apapun, maka sebuah default constructor akan dibentuk secara implisit : Sebagai contoh, pada class StudentRecord, bentuk default constructor akan terlihat seperti dibawah ini :

public StudentRecord() {

//area penulisan kode }

Page 173: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 16

Overloading Constructor Seperti telah kita bahas sebelumnya, sebuah constructor juga dapat dibentuk menjadi overloaded. Dapat dilihat pada 4 contoh sebagai berikut :

public StudentRecord(){

//area inisialisasi kode; } public StudentRecord(String temp){

this.name = temp; } public StudentRecord(String name, String address){

this.name = name; this.address = address;

} public StudentRecord(double mGrade, double eGrade, double sGrade){

mathGrade = mGrade; englishGrade = eGrade; scienceGrade = sGrade;

} Menggunakan Constructor Untuk menggunakan constructor, kita gunakan kode – kode sebagai berikut :

public static void main( String[] args ) {

//membuat 3 objek StudentRecord annaRecord=new StudentRecord("Anna"); StudentRecord beahRecord=new StudentRecord("Beah","Philippines"); StudentRecord crisRecord=new StudentRecord(80,90,100); //area penulisan kode selanjtunya

}

Sebelum kita lanjutkan, mari kita perhatikan kembali deklarasi variabel static studentCount yang telah dibuat sebelumnya. Tujuan deklarasi studentCount adalah untuk menghitung jumlah object yang dibentuk pada class StudentRecord. Jadi, apa yang akan kita lakukan selanjutnya adalah menambahkan nilai dari studentCount setiap kali setiap pembentukan object pada class StudentRecord. Lokasi yang tepat untuk memodifikasi dan menambahkan

Page 174: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 17

nilai studentCount terletak pada constructor-nya, karena selalu dipanggil setiap kali objek terbentuk. Sebagai contoh :

public StudentRecord(){

//letak kode inisialisasi studentCount++; //menambah student

} public StudentRecord(String temp){

this.name = temp; studentCount++; //menambah student

} public StudentRecord(String name, String address){

this.name = name; this.address = address; studentCount++; //menambah student

}

public StudentRecord(double mGrade, double eGrade, double sGrade){

mathGrade = mGrade; englishGrade = eGrade; scienceGrade = sGrade; studentCount++; //menambah student

} Pemanggilan Constructor Dengan this() Pemanggilan constructor dapat dilakukan secara berangkai, dalam arti Anda dapat memanggil constructor di dalam constructor lain. Pemanggilan dapat dilakukan dengan referensi this(). Perhatikan contoh kode sebagai berikut :

1: public StudentRecord(){ 2: this("some string"); 3: 4: } 5: 6: public StudentRecord(String temp){ 7: this.name = temp; 8: } 9: 10: public static void main( String[] args ) 11: { 12: 13: StudentRecord annaRecord = new StudentRecord(); 14: }

Page 175: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 18

Dari contoh kode diatas, pada saat baris ke 13 dipanggil akan memanggil constructor dasar pada baris pertama. Pada saat baris kedua dijalankan, baris tersebut akan menjalankan constructor yang memiliki parameter String pada baris ke-6. Beberapa hal yang patut diperhatikan pada penggunaan this() :

1. Harus dituliskan pada baris pertama pada sebuah constructor 2. Hanya dapat digunakan pada satu definisi constructor. Kemudian metode ini dapat

diikuti dengan kode – kode berikutnya yang relevan

10.8. Packages Packages dalam JAVA berarti pengelompokan beberapa class dan interface dalam satu unit. Fitur ini menyediakan mekanisme untuk mengatur class dan interface dalam jumlah banyak dan menghindari konflik pada penamaan. Mengimport Packages Supaya dapat meggunakan class yang berada diluar package yang sedang dikerjakan, Anda harus mengimport package dimana class tersebut berada. Pada dasarnya, seluruh program JAVA mengimport package java.lang.*, sehingga Anda dapat menggunakan class seperti String dan Integer dalam program meskipun belum mengimport package sama sekali. Penulisan import package dapat dilakukan seperti dibawah ini :

import <namaPaket>; Sebagai contoh, bila Anda ingin menggunakan class Color dalam package awt, Anda harus menuliskan import package sebagai berikut :

import java.awt.Color; import java.awt.*;

Baris pertama menyatakan untuk mengimport class Color secara spesifik pada package, sedangkan baris kedua menyatakan mengimport seluruh class yang terkandung dalam package java.awt. Cara lain dalam mengimport package adalah dengan menuliskan referensi package secara eksplisit. Hal ini dilakukan dengan menggunakan nama package untuk mendeklarasikan object sebuah class :

Page 176: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 19

java.awt.Color color;

Membuat Package Untuk membuat package, dapat dilakukan dengan menuliskan :

package <packageName>; Anggaplah kita ingin membuat package dimana class StudentRecord akan ditempatkan bersama dengan class – class yang lain dengan nama package schoolClasses. Langkah pertama yang harus dilakukan adalah membuat folder dengan nama schoolClasses. Salin seluruh class yang ingin diletakkan pada package dalam folder ini. Kemudian tambahkan kode deklarasi package pada awal file. Sebagai contoh :

package schoolClasses; public class StudentRecord {

private String name; private String address; private int age;

} Package juga dapat dibuat secara bersarang. Dalam hal ini Java Interpreter menghendaki struktur direktori yang mengandung class eksekusi untuk disesuaikan dengan struktur package. Pengaturan CLASSPATH Diasumsikan package schoolClasses terdapat pada direktori C:\. Langkah selanjutnya adalah mengatur classpath untuk menunjuk direktori tersebut sehingga pada saat akan dijalankan, JVM dapat mengetahui dimana class tersebut tersimpan. Sebelum membahas cara mengatur classpath, perhatikan contoh dibawah yang menandakan kejadian bila kita tidak mengatur classpath. Asumsikan kita mengkompilasi dan menjalankan class StudentRecord :

C:\schoolClasses>javac StudentRecord.java C:\schoolClasses>java StudentRecord Exception in thread "main" java.lang.NoClassDefFoundError: StudentRecord (wrong name: schoolClasses/StudentRecord) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source)

Page 177: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 20

at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Kita akan mendapatkan pesan kesalahan berupa NoClassDefFoundError yang berarti JAVA tidak mengetahui dimana posisi class. Hal tersebut disebabkan oleh karena class StudentRecord berada pada package dengan nama studentClasses. Jika kita ingin menjalankan class tersebut, kita harus memberi informasi pada JAVA bahwa nama lengkap dari class tersebut adalah schoolClasses.StudentRecord. Kita juga harus menginformasikan kepada JVM dimana posisi pencarian package, yang dalam hal ini berada pada direktori C:\. Untuk melakukan langkah – langkah tersebut, kita harus mengatur classpath. Pengaturan classpath pada Windows dilakukan pada command prompt :

C:\schoolClasses> set classpath=C:\ dimana C:\ adalah direktori dimana kita menempatkan package. Setelah mengatur classpath, kita dapat menjalankan program di mana saja dengan mengetikkan :

C:\schoolClasses> java schoolClasses.StudentRecord Pada UNIX, asumsikan bahwa kita memiliki class - class yang terdapat dalam direktori /usr/local/myClasses, ketikkan :

export classpath=/usr/local/myClasses Perhatikan bahwa Anda dapat mengatur classpath dimana saja. Anda juga dapat mengatur lebih dari satu classpath, kita hanya perlu memisahkannya dengan menggunakan ; (Windows), dan : (UNIX). Sebagai contoh :

set classpath=C:\myClasses;D:\;E:\MyPrograms\Java dan untuk sistem UNIX :

export classpath=/usr/local/java:/usr/myClasses

Page 178: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 21

10.9. Access Modifiers Pada saat membuat, mengatur properties dan class methods, kita ingin untuk mengimplementasikan beberapa macam larangan untuk mengakses data. Sebagai contoh, jika Anda ingin beberapa atribut hanya dapat diubah hanya dengan method tertentu, tentu Anda ingin menyembunyikannya dari object lain pada class. Di JAVA, implementasi tersebut disebut dengan access modifiers. Terdapat 4 macam access modifiers di JAVA, yaitu : public, private, protected dan default. 3 tipe akses pertama tertulis secara ekplisit pada kode untuk mengindikasikan tipe akses, sedangkan yang keempat yang merupakan tipe default, tidak diperlukan penulisan keyword atas tipe. 10.9.1 Akses Default (Package Accessibility) Tipe ini mensyaratkan bahwa hanya class dalam package yang sama yang memiliki hak akses terhadap variabel dan methods dalam class. Tidak terdapat keyword pada tipe ini. Sebagai contoh :

public class StudentRecord {

//akses dasar terhadap variabel int name;

//akses dasar terhadap metode String getName(){

return name; }

} Pada contoh diatas, variabel nama dan method getName() dapat diakses dari object lain selama object tersebut berada pada package yang sama dengan letak dari file StudentRecord.

Page 179: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 22

10.9.2 Akses Public Tipe ini mengijinkan seluruh class member untuk diakses baik dari dalam dan luar class. Object apapun yang memiliki interaksi pada class memiliki akses penuh terhadap member dari tipe ini. Sebagai contoh :

public class StudentRecord {

//akses dasar terhadap variabel public int name;

//akses dasar terhadap metode public String getName(){

return name; }

} Dalam contoh ini, variabel name dan method getName() dapat diakses dari object lain. 10.9.3 Akses Protected Tipe ini hanya mengijinkan class member untuk diakses oleh method dalam class tersebut dan elemen – elemen subclass. Sebagai contoh :

public class StudentRecord {

//akses pada variabel protected int name;

//akses pada metode protected String getName(){

return name; }

} Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh method internal class dan subclass dari class StudentRecord. Definisi subclass akan dibahas pada bab selanjutnya.

Page 180: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 23

10.9.4 Akses Private Tipe ini mengijinkan pengaksesan class hanya dapat diakses oleh class dimana tipe ini dibuat. Sebagai contoh :

public class StudentRecord {

//akses dasar terhadap variabel private int name;

//akses dasar terhadap metode private String getName(){

return name; }

} Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh method internal class tersebut. Petunjuk Penulisan Program : Instance variable dari class secara default akan bertipe private sehingga class tersebut hanya akan menyediakan accessor dan mutator methods terhadap variabel ini.

Page 181: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 24

10.10. Latihan Entry Buku Alamat Tugas Anda adalah membuat sebuah class yang memuat data-data pada buku alamat. Tabel berikut mendefinisikan informasi yang dimiliki oleh buku alamat.

Attribut Deskripsi

Nama Nama Lengkap perseorangan

Alamat Alamat Lengkap

Nomor Telepon Nomor telepon personal

Alamat E-Mail Alamat E-Mail personal

Tabel 1: Atribut dan Deskripsi Atribut

Buat implementasi dari method sebagai berikut :

1. Menyediakan accessor dan mutator method terhadap seluruh atribut 2. Constructor

Buku Alamat Buat sebuah class buku alamat yang dapat menampung 100 data. Gunakan class yang telah dibuat pada nomor pertama. Anda harus mengimplementasikan method berikut pada buku alamat :

1. Memasukkan data 2. Menghapus data 3. Menampilkan seluruh data 4. Update data

Page 182: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 1

BAB 11

Pewarisan, Polimorfisme, dan Interface

11.1 Tujuan Dalam bagian ini, kita akan membicarakan bagaimana suatu class dapat mewariskan sifat dari class yang sudah ada. Class ini dinamakan subclass dan induk class dinamakan superclass. Kita juga akan membicarakan sifat khusus dari Java dimana kita dapat secara otomatis memakai method yand tepat untuk setiap object tanpa memperhatikan asal dari subclass object. Sifat ini dinamakan polimorfisme. Pada akhirnya, kita akan mendiskusikan tentang interface yang membantu mengurangi penulisan program. Pada akhir pembahasan, diharapkan pembaca dapat :

Mendefinisikan superclasses dan subclasses

Override method dari superclasses

Membuat method final dan class final

11.2 Pewarisan Dalam Java, semua class, termasuk class yang membangun Java API, adalah subclasses dari superclass Object. Contoh hirarki class diperlihatkan di bawah ini. Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. Sementara beberapa class di bawah class pokok dalam hirarki class dikenal sebagai subclass dari class tersebut.

Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya perlu mengimplementasikan

Gambar 1: Hirarki class

Page 183: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 2

perbedaannya sendiri dan induknya.

11.2.1 Mendefinisikan Superclass dan Subclass Untuk memperoleh suatu class, kita menggunakan kata kunci extend. Untuk mengilustrasikan ini, kita akan membuat contoh class induk. Dimisalkan kita mempunyai class induk yang dinamakan Person.

public class Person { protected String name; protected String address; /** * Default constructor */ public Person(){ System.out.println(“Inside Person:Constructor”); name = ""; address = ""; } /** * Constructor dengan dua parameter */ public Person( String name, String address ){ this.name = name; this.address = address; } /** * Method accessor */ public String getName(){ return name; } public String getAddress(){ return address; } public void setName( String name ){ this.name = name; } public void setAddress( String add ){ this.address = add; } }

Page 184: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 3

Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected. Alasannya kita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa diakses oleh subclasses dari superclassess. Jika kita mendeklarasikannya sebagai private, subclasses tidak dapat menggunakannya. Catatan bahwa semua properti dari superclass yang dideklarasikan sebagai public, protected dan default dapat diakses oleh subclasses-nya. Sekarang, kita ingin membuat class lain bernama Student. Karena Student juga sebagai Person, kita putuskan hanya meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada. Untuk melakukan ini, kita tulis,

public class Student extends Person { public Student(){ System.out.println(“Inside Student:Constructor”); //beberapa kode di sini } // beberapa kode di sini

} Ketika object Student di-instantiate, default constructor dari superclass secara mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu, pernyataan di dalam subclass dieksekusi. Untuk mengilustrasikannya, perhatikan kode berikut,

public static void main( String[] args ){ Student anna = new Student();

} Dalam kode ini, kita membuat sebuah object dari class Student. Keluaran dari program adalah,

Inside Person:Constructor

Inside Student:Constructor

Alur program ditunjukkan sebagai berikut.

Page 185: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 4

11.2.2 Kata Kunci Super Subclass juga dapat memanggil constructor secara eksplisit dari superclass terdekat. Hal ini dilakukan dengan pemanggil construktor super. Pemanggil constructor super dalam constructor dari subclass akan menghasilkan eksekusi dari superclass constructor yang bersangkutan, berdasar dari argumen sebelumnya. Sebagai contoh, pada contoh class sebelumnya. Person dan Student, kita tunjukkan contoh dari pemanggil constructor super. Diberikan kode berikut untuk Student,

public Student(){

super( "SomeName", "SomeAddress" ); System.out.println("Inside Student:Constructor");

}

Kode ini memanggil constructor kedua dari superclass terdekat (yaitu Person) dan mengeksekusinya. Contoh kode lain ditunjukkan sebagai berikut,

public Student(){ super(); System.out.println("Inside Student:Constructor");

Gambar 2: Alur Program

Page 186: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 5

}

Kode ini memanggil default constructor dari superclass terdekat (yaitu Person) dan mengeksekusinya. Ada beberapa hal yang harus diingat ketika menggunakan pemanggil constuktor super: 1. Pemanggil super() HARUS DIJADIKAN PERNYATAAN PERTAMA DALAM constructor. 2. Pemanggil super() hanya dapat digunakan dalam definisi constructor. 3. Termasuk constructor this() dan pemanggil super() TIDAK BOLEH TERJADI DALAM

constructor YANG SAMA. Pemakaian lain dari super adalah untuk menunjuk anggota dari superclass(seperti reference this). Sebagai contoh,

public Student() { super.name = “somename”; super.address = “some address”;

}

11.2.3 Overriding Method Untuk beberapa pertimbangan, terkadang class asal perlu mempunyai implementasi berbeda dari method yang khusus dari superclass tersebut. Oleh karena itulah, method overriding digunakan. Subclass dapat mengesampingkan method yang didefinisikan dalam superclass dengan menyediakan implementasi baru dari method tersebut. Misalnya kita mempunyai implementasi berikut untuk method getName dalam superclass Person,

public class Person { : : public String getName(){ System.out.println("Parent: getName"); return name; } : }

Untuk override, method getName dalam subclass Student, kita tulis, public class Student extends Person

{ : : public String getName(){ System.out.println("Student: getName");

Page 187: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 6

return name; } : }

Jadi, ketika kita meminta method getName dari object class Student, method overridde akan dipanggil, keluarannya akan menjadi,

Student: getName

11.2.4 Method final dan class final

Dalam Java, juga memungkinkan untuk mendeklarasikan class-class yang tidak lama menjadi subclass. Class ini dinamakan class final. Untuk mendeklarasikan class untuk menjadi final kita hanya menambahkan kata kunci final dalam deklarasi class. Sebagai contoh, jika kita ingin class Person untuk dideklarasikan final, kita tulis,

public final class Person

{ //area kode

} Beberapa class dalam Java API dideklarasikan secara final untuk memastikan sifatnya tidak dapat di-override. Contoh-contoh dari class ini adalah Integer, Double, dan String. Ini memungkinkan dalam Java membuat method yang tidak dapat di-override. Method ini dapat kita panggil method final. Untuk mendeklarasikan method untuk menjadi final, kita tambahkan kata kunci final ke dalam deklarasi method. Contohnya, jika kita ingin method getName dalam class Person untuk dideklarasikan final, kita tulis, public final String getName(){

return name; }

Method static juga secara otomatis final. Ini artinya Anda tidak dapat membuatnya override.

Page 188: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 7

11.3 Polimorfisme Sekarang, class induk Person dan subclass Student dari contoh sebelumnya, kita tambahkan subclass lain dari Person yaitu Employee. Di bawah ini adalah hierarkinya,

Person

Student Employee

Dalam Java, kita dapat membuat referensi yang merupakan tipe dari superclass ke sebuah object dari subclass tersebut. Sebagai contohnya,

public static main( String[] args ) { Person ref; Student studentObject = new Student(); Employee employeeObject = new Employee(); ref = studentObject; //Person menunjuk kepada // object Student //beberapa kode di sini

}

Sekarang dimisalkan kita punya method getName dalam superclass Person kita, dan kita override method ini dalam kedua subclasses Student dan Employee,

public class Person { public String getName(){ System.out.println(“Person Name:” + name); return name; } } public class Student extends Person { public String getName(){ System.out.println(“Student Name:” + name); return name; } }

Gambar 3: Hirarki dari class induk Person

Page 189: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 8

public class Employee extends Person { public String getName(){ System.out.println(“Employee Name:” + name);

return name; } Kembali ke method utama kita, ketika kita mencoba memanggil method getName dari reference Person ref, method getName dari object Student akan dipanggil. Sekarang, jika kita berikan ref ke object Employee, method getName dari Employee akan dipanggil.

public static main( String[] args ) { Person ref; Student studentObject = new Student(); Employee employeeObject = new Employee(); ref = studentObject; //Person menunjuk kepada // object Student String temp = ref.getName(); //getName dari Student //class dipanggil System.out.println( temp ); ref = employeeObject; //Person menunjuk kepada // object Employee String temp = ref.getName(); //getName dari Employee //class dipanggil System.out.println( temp );

}

Kemampuan dari reference untuk mengubah sifat menurut object apa yang dijadikan acuan dinamakan polimorfisme. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya. Contoh lain yang menunjukkan properti polimorfisme adalah ketika kita mencoba melalui reference ke method. Misalkan kita punya method static printInformation yang mengakibatkan object Person sebagai reference, kita dapat me-reference dari tipe Employee dan tipe Student ke method ini selama itu masih subclass dari class Person.

public static main( String[] args ) { Student studentObject = new Student(); Employee employeeObject = new Employee(); printInformation( studentObject ); printInformation( employeeObject ); }

Page 190: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 9

public static printInformation( Person p ){ . . . . }

11.4 Abstract Class Misalnya kita ingin membuat superclass yang mempunyai method tertentu yang berisi implementasi, dan juga beberapa method yang akan di-overridden oleh subclasses nya. Sebagai contoh, kita akan membuat superclass bernama LivingThing. class ini mempunyai method tertentu seperti breath, eat, sleep, dan walk. Akan tetapi, ada beberapa method di dalam superclass yang sifatnya tidak dapat digeneralisasi. Kita ambil contoh, method walk. Tidak semua kehidupan berjalan(walk) dalam cara yang sama. Ambil manusia sebagai misal, kita manusia berjalan dengan dua kaki, dimana kehidupan lainnya seperti anjing berjalan dengan empat kaki. Akan tetapi, beberapa ciri umum dalam kehidupan sudah biasa, itulah kenapa kita inginkan membuat superclass umum dalam hal ini.

Kita dapat membuat superclass yang mempunyai beberapa method dengan implementasi sedangkan yang lain tidak. Class jenis ini yang disebut dengan class abstract. Sebuah class abstract adalah class yang tidak dapat di-instantiate. Seringkali muncul di atas hirarki class pemrograman berbasis object, dan mendefinisikan keseluruhan aksi yang mungkin pada object dari seluruh subclasses dalam class. Method ini dalam class abstract yang tidak mempunyai implementasi dinamakan method abstract. Untuk membuat method abstract, tinggal menulis deklarasi method tanpa tubuh class dan digunakan menggunakan kata kunci abstract. Contohnya,

public abstract void someMethod();

Gambar 4: Class abstract

Page 191: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 10

Sekarang mari membuat contoh class abstract. public abstract class LivingThing

{ public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); } /** * abstract method walk * Kita ingin method ini di-overridden oleh subclasses */ public abstract void walk();

}

Ketika class meng-extend class abstract LivingThing, dibutuhkan untuk override method abstract walk(), atau lainnya, juga subclass akan menjadi class abstract, oleh karena itu tidak dapat di-instantiate. Contohnya,

public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); }

} Jika class Human tidak dapat overridde method walk, kita akan menemui pesan error berikut ini,

Human.java:1: Human is not abstract and does not override abstract method walk() in LivingThing public class Human extends LivingThing ^

1 error

Petunjuk penulisan program: Gunakan class abstract untuk mendefinisikan secara luas sifat-sifat dari class tertinggi pada hirarki pemrograman berbasis object, dan gunakan subclassesnya untuk menyediakan rincian dari class abstract.

Page 192: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 11

11.5 Interface Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau constant ). Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface.

11.5.1 Kenapa Kita Memakai Interface? Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan mengimplementasikan method yang sama. Melalui interface-interface, kita dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya seolah-olah class yang berhubungan. Mari kita ambil contoh class Line dimana berisi method yang menghitung panjang dari garis dan membandingkan object Line ke object dari class yang sama. Sekarang, misalkan kita punya class yang lain yaitu MyInteger dimana berisi method yang membandingkan object MyInteger ke object dari class yang sama. Seperti yang kita lihat disini, kedua class-class mempunyai method yang mirip dimana membandingkan mereka dari object lain dalam tipe yang sama, tetapi mereka tidak berhubungan sama sekali. Supaya dapat menjalankan cara untuk memastikan bahwa dua class-class ini mengimplementasikan beberapa method dengan tanda yang sama, kita dapat menggunakan sebuah interface untuk hal ini. Kita dapat membuat sebuah class interface, katakanlah interface Relation dimana mempunyai deklarasi method pembanding. Relasi interface dapat dideklarasikan sebagai,

public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }

Alasan lain dalam menggunakan interface pemrograman object adalah untuk menyatakan sebuah interface pemrograman object tanpa menyatakan classnya. Seperti yang dapat kita lihat nanti dalam bagian Interface vs class, kita dapat benar-benar menggunakan interface sebagai tipe data. Pada akhirnya, kita perlu menggunakan interface untuk pewarisan model jamak dimana menyediakan class untuk mempunyai lebih dari satu superclass. Pewarisan jamak tidak ditunjukkan di Java, tetapi ditunjukkan di bahasa berorientasi object lain seperti C++.

Page 193: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 12

11.5.2 Interface vs. Class Abstract Berikut ini adalah perbedaan utama antara sebuah interface dan sebuah class abstract: method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka didefinisikan secara independent. 11.5.3 Interface vs. Class Satu ciri umum dari sebuah interface dan class adalah pada tipe mereka berdua. Ini artinya bahwa sebuah interface dapat digunakan dalam tempat-tempat dimana sebuah class dapat digunakan. Sebagai contoh, diberikan class Person dan interface PersonInterface, berikut deklarasi yang benar:

PersonInterface pi = new Person(); Person pc = new Person();

Bagaimanapun, Anda tidak dapat membuat instance dari sebuah interface. Contohnya:

PersonInterface pi = new PersonInterface(); //COMPILE

//ERROR!!! Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method. Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class memiliki salah satunya.

11.5.4 Membuat Interface Untuk membuat interface, kita tulis,

public interface [InterfaceName] { //beberapa method tanpa isi

}

Sebagai contoh, mari kita membuat sebuah interface yang mendefinisikan hubungan antara dua object menurut urutan asli dari object.

public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b);

}

Page 194: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 13

Sekarang, penggunaan interface, kita gunakan kata kunci implements. Contohnya,

/** * Class ini mendefinisikan segmen garis */ public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; }

public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) +

(y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); } public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen); } public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen); }

}

Page 195: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 14

Ketika class Anda mencoba mengimplementasikan sebuah interface, selalu pastikan bahwa Anda mengimplementasikan semua method dari interface, jika tidak, Anda akan menemukan kesalahan ini,

Line.java:4: Line is not abstract and does not override abstract method isGreater(java.lang.Object,java.lang.Object) in Relation public class Line implements Relation ^ 1 error

11.5.5 Hubungan dari Interface ke Class Seperti yang telah kita lihat dalam bagian sebelumnya, class dapat mengimplementasikan sebuah interface selama kode implementasi untuk semua method yang didefinisikan dalam interface tersedia. Hal lain yang perlu dicatat tentang hubungan antara interface ke class-class yaitu, class hanya dapat mengEXTEND SATU superclass, tetapi dapat mengIMPLEMENTASIkan BANYAK interface. Sebuah contoh dari sebuah class yang mengimplementasikan interface adalah,

public class Person implements PersonInterface, LivingThing, WhateverInterface { //beberapa kode di sini

}

Contoh lain dari class yang meng-extend satu superclass dan mengimplementasikan sebuah interface adalah,

public class ComputerScienceStudent extends Student implements PersonInterface, LivingThing { //beberapa kode di sini

} Catatan bahwa sebuah interface bukan bagian dari hirarki pewarisan class. Class yang tidak berhubungan dapat mengimplementasikan interface yang sama.

Petunjuk penulisan program:

Gunakan interface untuk mendefinisikan method standar yang sama dalam class-class berbeda yang memungkinkan. Sekali Anda telah membuat kumpulan definisi method standar, Anda dapat menulis method tunggal untuk memanipulasi semua class-class yang mengimplementasikan interface.

Page 196: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 15

11.5.6 Pewarisan Antar Interface Interface bukan bagian dari hirarki class. Bagaimanapun, interface dapat mempunyai hubungan pewarisan antara mereka sendiri. Contohnya, misal kita punya dua interface StudentInterface dan PersonInterface. Jika StudentInterface meng-extend PersonInterface, maka ia akan mewariskan semua deklarasi method dalam PersonInterface.

public interface PersonInterface { . . . } public interface StudentInterface extends PersonInterface { . . .

}

Page 197: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 16

11.6 Latihan 11.6.1 Extend StudentRecord

Dalam latihan ini, kita ingin untuk membuat catatan siswa yang lebih khusus yang berisi informasi tambahan tentang pengetahuan komputer siswa. Tugasnya adalah meng-extend class StudentRecord yang mengimplementasikan pelajaran sebelumnya. Cobalah untuk meng-override beberapa method yang ada dalam superclass StudentRecord, jika Anda benar-benar membutuhkannya. 11.6.2 Bentuk Abstract Class Cobalah untuk membuat class abstract yang dinamai Shape dengan method abstract getArea() dan getName(). Tulis dua subclasses-nya yaitu Circle dan Square. Anda dapat menambahkan method tambahan ke dalam subclasses jika diinginkan.

Page 198: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 1

BAB 12

Dasar Exception Handling

12.1 Tujuan Dalam bagian ini, kita akan mempelajari teknik yang dipakai dalam Java dalam menangani kondisi yang tidak biasa dalam menjalankan operasi normal dalam program. Teknik ini dinamakan exception handling. Pada akhir pembahasan, diharapkan pembaca dapat :

Mendefinisikan exception Menangani exception menggunakan blok try-catch-finally

12.2 Apa itu Exception? Exception adalah sebuah peristiwa yang menjalankan alur proses normal pada program. Peristiwa ini biasanya berupa kesalahan(error) dari beberapa bentuk. Ini disebabkan program kita berakhir tidak normal. Beberapa contoh dari exception yang Anda mungkin jumpai pada latihan-latihan sebelumnya adalah: exception ArrayIndexOutOfBounds, yang terjadi jika kita mencoba mengakses elemen array yang tidak ada, atau NumberFormatException, yang terjadi ketika kita mencoba melalui parameter bukan angka dalam method Integer.parseInt.

12.3 Menangani Exception Untuk menangani exception dalam Java, kita gunakan blok try-catch-finally. Apa yang kita lakukan dalam program kita adalah kita menempatkan pernyataan yang mungkin menghasilkan exception dalam blok ini. Bentuk umum dari blok try-catch-finally adalah,

try{ //tulis pernyataan yang dapat mengakibatkan exception //dalam blok ini } catch( <exceptionType1> <varName1> ){ //tulis aksi apa dari program Anda yang dijalankan jika ada //exception tipe tertentu terjadi } . . .

Page 199: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 2

catch( <exceptionTypen> <varNamen> ){ //tulis aksi apa dari program Anda yang dijalankan jika ada //exception tipe tertentu terjadi } finally{ //tambahkan kode terakhir di sini }

Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan ditangani dalam blok catch. Kode dalam blok finally selalu di-eksekusi. Berikut ini adalah aspek kunci tentang sintak dari konstruksi try-catch-finally:

Notasi blok bersifat perintah Setiap blok try, terdapat satu atau lebih blok catch, tetapi hanya satu blok finally. Blok catch dan blok finally harus selalu muncul dalam konjungsi dengan blok try, dan diatas

urutan Blok try harus diikuti oleh paling sedikit satu blok catch ATAU satu blok finally, atau

keduanya. Setiap blok catch mendefinisikan sebuah penanganan exception. Header dari blok catch

harus membawa satu argumen, dimana exception pada blok tersebut akan ditangani. Exception harus menjadi class pelempar atau satu dari subclassesnya.

Gambar 1: Alur kejadian blok try-catch-finally

Page 200: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 3

Marilah mengambil contoh kode yang mencetak argumen kedua ketika kita mencoba menjalankan kode menggunakan argumen command-line. Perkirakan, tidak ada pengecekan dalam kode Anda untuk angka dari argumen dan kita hanya mengakses argumen kedua args[1] segera, kita akan mendapatkan exception berikut.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at ExceptionExample.main(ExceptionExample.java:5)

Untuk mencegah kejadian ini, kita dapat menempatkan kode ke dalam blok try-catch. Blok finally hanya sebagai pilihan lain saja. Sebagai contoh, kita tidak akan menggunakan blok finally.

public class ExceptionExample { public static void main( String[] args ){ try{ System.out.println( args[1] ); }catch( ArrayIndexOutOfBoundsException exp ){ System.out.println("Exception caught!"); } }

} Jadi kita akan menjalankan program lagi tanpa argumen, keluarannya akan menjadi,

Exception caught!

Page 201: Belajar Java

J.E.N.I.

Pengenalan Pemrograman 1 4

12.4 Latihan

12.4.1 Menangkap Exception 1

Diberikan kode berikut:

public class TestExceptions{

public static void main( String[] args ){ for( int i=0; true; i++ ){ System.out.println("args["+i+"]="+ args[i]); } }

}

Compile dan jalankan program TestExceptions. Keluarannya akan tampak seperti ini:

javac TestExceptions one two three args[0]=one args[1]=two args[2]=three Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

at TestExceptions.main(1.java:4)

Ubah program TestExceptions untuk menangani exception, keluaran program setelah ditangkap exception-nya akan seperti ini:

javac TestExceptions one two three args[0]=one args[1]=two args[2]=three Exception caught: java.lang.ArrayIndexOutOfBoundsException: 3

Quiting...

12.4.2 Menangkap Exception 2

Melakukan percobaan pada beberapa program yang telah Anda tulis adalah hal yang baik sebelum menghadapi exception. Karena pada program di atas Anda tidak menangkap exception, maka eksekusi dengan mudahnya berhenti mengeksekusi program Anda. Kembali kepada program diatas dan gunakan penanganan exception.