Belajar Java
Belajar Java
Pengenalan Pemrograman 1
Pengenalan Pemrograman 1
J.E.N.I
Pengarang Joyce Avestro Team Joyce Avestro Florence Balagtas Rommel Feria Reginald Hutcherson Rebecca Ong John Paul Petines Sang Shin Raghavan Srinivas Matthew Thompson Team Translator Frans Thamura Eko Subiyantoro Cahya Kusuma Ratih Rizzatama N.S. Miratul Khusna Mufida Khansa Fitriannisa Sulistyaningtyas Allin Junikhah Bagus Chandra Badar Agung Nugroho Kadek 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
J.E.N.I
Sistem Operasi Microsoft Windows: o Prosesor: 1.4 GHz Intel Pentium III workstation atau setaranya o Memori: 1 GB o Disk space: 1 GB dari free disk space Sistem Operasi Linux: o Prosesor: 1.4 GHz Intel Pentium III atau setaranya o 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 o o
Prosesor: AMD Opteron 100 Series 1.8 GHz Memori: 1 GB 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
Pengenalan Pemrograman 1
J.E.N.I
Daftar Isi
1 Pengenalan Pemrograman Komputer 1.1 Tujuan 1.2 Pendahuluan 1.3 Komponen dasar komputer 1.3.1 Hardware 1.3.1.1 Central Processing Unit 1.3.1.2 Memori 1.3.1.3 Input dan Output Device 1.3.2 Software 1.4 Sekilas Bahasa Pemrograman 1.4.1 Apa yang Disebut Bahasa Pemrograman? 1.4.2 Kategori Bahasa Pemrograman 1.5 Alur pembuatan program 1.5.1 Definisi Permasalahan 1.5.2 Analisa Permasalahan 1.5.3 Desain Algorithma dan Representasi 1.5.3.1 Simbol flow chart dan Artinya 1.5.4 Pengkodean, Uji Coba, dan Pembuatan Dokumentasi 1.6 Sistem Numerik dan Konversi 1.6.1 Sistem Bilangan Desimal 1.6.2 Sistem Bilangan Biner 1.6.3 Sistem Bilangan Oktal 1.6.4 Sistem Bilangan Heksadesimal 1.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 Desimal 1.6.5.3 Biner ke Oktal dan Oktal ke Biner 1.6.5.4 Biner ke Heksadesimal dan Heksadesimal ke Biner 1.7 Latihan 1.7.1 Menyusun Algorithma 1.7.2 Konversi Sistem Bilangan 2 Pengenalan Bahasa Java 2.1 Tujuan 2.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 Environment 2.2.2.3 Sebuah Aplikasi 2.2.2.4 Sebuah Deployment environment 2.2.2.5 Mengapa Mempelajari JAVA?
Pengenalan Pemrograman 1
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 Pendahuluan 3.3 Program Java Pertama 3.4 Menggunakan Text Editor dan Console 3.4.1 Errors 3.4.1.1 Syntax Errors 3.4.1.2 Run-time Errors 3.5 Using NetBeans 3.6 Latihan 3.6.1 Hello World 3.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 Identifiers 4.6 Java Keywords 4.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 - boolean 4.8.2 Textual char 4.8.3 Integral byte, short, int & long 4.8.4 Floating Point float and double 4.9 Variabel 4.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
J.E.N.I
4.10 Operators 4.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 Latihan 4.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-else 6.2.3 Statement if-else-if 6.2.4 Kesalahan umum apabila menggunakan statement if-else 6.2.5 Contoh Statement if-else-else if 6.2.6 Statement switch 6.2.7 Contoh statement switch 6.3 Struktur Kontrol Perulangan 6.3.1 while loop 6.3.2 do-while loop 6.3.3 for loop 6.4 Branching Statements 6.4.1 break statement 6.4.1.1 Unlabeled break statement 6.4.1.2 Labeled break statement 6.4.2 continue statement 6.4.2.1 Unlabeled continue statement 6.4.2.2 Labeled continue statement 6.4.3 return statement
Pengenalan Pemrograman 1
J.E.N.I
6.5 Latihan 6.5.1 Nilai 6.5.2 Membaca Bilangan 6.5.3 Cetak Seratus Kali 6.5.4 Perpangkatan 7 Java Arrays 7.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 NetBeans 8.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 Object 9.3.2 Instansiasi Class 9.3.3 Variabel class dan Method 9.4 Methods 9.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-value 9.4.3.2 Pass-by-reference 9.4.4 Memanggil method Static 9.4.5 Lingkup variabel 9.5 Casting, Converting dan Comparing Objects 9.5.1 Casting Tipe Primitive 9.5.2 Casting Objects 9.5.3 Converting Tipe Primitive ke object dan sebaliknya 9.5.4 Comparing Objects 9.5.5 Menentukan class dari sebuah object
Pengenalan Pemrograman 1
J.E.N.I
9.6 Latihan 9.6.1 Mendefinisikan Istilah 9.6.2 Java Scavenger Hunt 10 Membuat Class Sendiri 10.1 Tujuan 10.2 Mendefinisikan Class Anda 10.3 Deklarasi Atribut 10.3.1 Instance Variable 10.3.2 Class Variable atau Static Variable 10.4 Deklarasi Methods 10.4.1 Accessor Methods 10.4.2 Mutator Methods 10.4.3 Multiple Return statements 10.4.4 Static Methods 10.4.5 Contoh Kode Program Dari Class StudentRecord 10.5 Referensi this 10.6 Overloading Methods 10.7 Deklarasi Construktor 10.7.1 Default Constructor 10.7.2 Overloading Constructor 10.7.3 Menggunakan Constructors 10.7.4 Pemanggilan Constructor Dengan this() 10.8 Packages 10.8.1 Mengimport Packages 10.8.2 Membuat Package 10.8.3 Pengaturan CLASSPATH 10.9 Access Modifiers 10.9.1 Akses Default(package accessibility) 10.9.2 Akses Public 10.9.3 Akses Protected 10.9.4 Akses Private 10.10 Latihan 10.10.1 Entry Buku Alamat 10.10.2 Buku Alamat 11 Pewarisan, Polimorfisme dan Interface 11.1 Tujuan 11.2 Pewarisan 11.2.1 Mendefinisikan Superclasses dan Subclasses 11.2.2 Kata Kunci Super 11.2.3 Overriding Method 11.2.4 Method Final dan Class Final 11.3 Polimorfisme 11.4 Abstract Class
Pengenalan Pemrograman 1
J.E.N.I
11.5 Interface 11.5.1 Kenapa Kita Memakai Interface? 11.5.2 Interface vs. Class Abstract 11.5.3 Interface vs. Class 11.5.4 Membuat Interface 11.5.5 Hubungan dari Interface ke Class 11.5.6 Pewarisan Antar Interface 11.6 Latihan 11.6.1 Extend StudentRecord 11.6.2 Bentuk Abstract Class 12 Dasar Exception Handling 12.1 Tujuan 12.2 Apa itu Exceptions? 12.3 Menangani Exceptions 12.4 Latihan 12.4.1 Menangkap Exception 1 12.4.2 Menangkap Exception 2
Pengenalan Pemrograman 1
J.E.N.I.
pada
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 :
Pengenalan Pemrograman 1
J.E.N.I.
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.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 o o Volatile (informasi ada selama komputer bekerja. Ketika komputer dipadamkan, informasi yang disimpannya juga hilang) Berkecepatan tinggi Akses random (acak)
b.
Secondary Memory Dipergunakan untuk menyimpan data atau program biner secara permanen. Karakteristik dari memori sekunder adalah o o o Non volatile atau persisten Kecepatan relatif rendah (dibandingkan memori primer) 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
Pengenalan Pemrograman 1
J.E.N.I.
Output Device (Piranti Keluaran) Berfungsi sebagai media komputer untuk memberikan keluaran. Beberapa contoh piranti keluaran : o o o o Monitor Printer Speaker 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.
Pengenalan Pemrograman 1
J.E.N.I.
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 o o o Pengolah kata /editor naskah : Wordstar, MS Word, Word Perfect, AmiPro Pengolah angka / lembar kerja : Lotus123, MS Excell, QuattroPro, dll Presentasi : MS PowerPoint 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.
Pengenalan Pemrograman 1
J.E.N.I.
J.E.N.I.
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
Input Terhadap Program : Daftar Nama, Nama yang akan dicari Output Dari Program : Jumlah kemunculan nama yang dicari
J.E.N.I.
1. 2. 3. 4.
Tentukan daftar nama Tentukan nama yang akan dicari, anggaplah ini merupakan sebuah kata kunci Bandingkan kata kunci terhadap setiap nama yang terdapat pada daftar 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 :
Mengekspresikan solusi melalui Pseudocode : listNama keyNama hitung = = = Daftar Nama Nama yang dicari 0
Untuk setiap nama pada Daftar Nama lakukan : Jika nama == keyNama Hitung = Hitung + 1 Tampilkan Hitung
Pengenalan Pemrograman 1
J.E.N.I.
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 simbolsimbol yang digunakan dalam menyusun flowchart, kegiatan yang diwakili serta aturan yang diterapkan dalam penggunaan simbol tersebut :
Simbol
Nama
Pengertian
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 Proses
Merepresentasikan fungsi I/O yang membuat diproses (input) atau sebuah data dapat ditampilkan (output) setelah mengalami eksekusi informasi. 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 putusputus dapat ditempatkan pada sisi kanan maupun kiri. 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
Simbol Percabangan
Pengenalan Pemrograman 1
J.E.N.I.
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.
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 Simbol Terminator 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.
J.E.N.I.
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 compiletime 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 berulangulang 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.
Pengenalan Pemrograman 1
10
J.E.N.I.
11111102 10112
1768 138
7E16 B16
Pengenalan Pemrograman 1
11
J.E.N.I.
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
14 15
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 langkahlangkah tersebut hingga hasil bagi akhir bernilai 0 atau 1. Kemudian susun nilainilai sisa dimulai dari nilai sisa terakhir sehingga diperoleh bentuk biner dari angka bilangan tersebut.
Pengenalan Pemrograman 1
12
J.E.N.I.
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.
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.
Nilai Sisa 6 7 1
Dengan menuliskan nilai sisa dari bawah ke atas, kita peroleh bilangan oktal 1768
Pengenalan Pemrograman 1
13
J.E.N.I.
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
2 1
1 7
0 6 6 x 80 = 6 7 x 81 = 56 1 x 82 = 64 TOTAL: 126
Pengenalan Pemrograman 1
14
J.E.N.I.
7E16 = ?
10
1 7
Pengenalan Pemrograman 1
15
J.E.N.I.
Mengubah sistem bilangan oktal menjadi bilangan biner dilakukan dengan cara kebalikan dari konversi biner ke oktal. Dalam hal ini masingmasing digit bilangan oktal diubah langsung menjadi bilangan biner dalam kelompok tiga bit, kemudian merangkai kelompok bit tersebut sesuai urutan semula. Sebagai contoh : 1768 = ?
2
Digit Heksadesimal 0 1 2 3 4
Pengenalan Pemrograman 1
J.E.N.I.
Digit Heksadesimal 5 6 7 8 9 A B C D E F
Representasi Biner 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
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 = ?
Pengenalan Pemrograman 1
17
J.E.N.I.
1.7 Latihan
1.7.1 Menyusun Algoritma
Dari permasalahanpermasalahan 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 ratarata dari 3 buah bilangan
Pengenalan Pemrograman 1
18
J.E.N.I.
J.E.N.I.
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 bahasabahasa 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 bentukanbentukan 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 hirarchie, dimana object adalah satu kesatuan hirarki pewarisan 8. Dari bahasa Eiffel, fasilitas assertion yang mulai diterapkan di sebagian JDK 1.4
Pengenalan Pemrograman 1
J.E.N.I.
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
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
Terdapat dua komponen utama dari Deployment Environment. Yang pertama adalah JRE, yang terdapat pada paket J2SDK, mengandung kelaskelas 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.
Pengenalan Pemrograman 1
J.E.N.I.
2.
3.
4.
5.
6.
7.
8.
9.
Pengenalan Pemrograman 1
J.E.N.I.
10.
Multithreaded Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus dan simultan. 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.
11.
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 objekobjek 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.
Pengenalan Pemrograman 1
J.E.N.I.
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 kelaskelas yang diambil dari jaringan. Hal ini membatasi aplikasi Trojan karena kelaskelas yang berasal dari local disk yang dimuat terlebih dahulu. 2. Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturanaturan 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.
Pengenalan Pemrograman 1
J.E.N.I.
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 Menulis kode program Kompilasi program Menjalankan program Text editor
Tool
Hasil Berkas berekstensi .java Berkas berekstensi .class (Java Bytecodes) Program Output
Pengenalan Pemrograman 1
J.E.N.I.
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.
J.E.N.I.
Sebelum menjelaskan apa arti dari program tersebut, cobalah untuk menulis program ini di dalam file dan kemudian menjalankannya.
Pengenalan Pemrograman I
J.E.N.I.
Langkah 2: Membuka Terminal Untuk membuka terminal di Linux, klik pada Applications-> Accessories-> Terminal.
Pengenalan Pemrograman I
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
Pengenalan Pemrograman I
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
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.
J.E.N.I.
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!''.
Pengenalan Pemrograman I
10
J.E.N.I.
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.
Pengenalan Pemrograman I
11
J.E.N.I.
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 titikkoma 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.
Pengenalan Pemrograman I
12
J.E.N.I.
Pengenalan Pemrograman I
13
J.E.N.I.
Cara kedua untuk menjalankan NetBeans, adalah dengan mengklik shortcut icon yang terdapat pada desktop Anda.
Pengenalan Pemrograman I
14
J.E.N.I.
Setelah Anda membuka NetBeans IDE, Anda akan melihat graphical user interface (GUI) seperti yang ditunjukkan dibawah ini.
Pengenalan Pemrograman I
15
J.E.N.I.
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.
Pengenalan Pemrograman I
16
J.E.N.I.
Pengenalan Pemrograman I
17
J.E.N.I.
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.
Pengenalan Pemrograman I
18
J.E.N.I.
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
Pengenalan Pemrograman I
19
J.E.N.I.
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 filefile yang dihasilkan NetBeans setelah membuat sebuah project. Semua ini dapat Anda temukan dalam folder MYJAVAPROGRAMS Anda, dimana Anda menetapkan lokasi project tersebut.
Pengenalan Pemrograman I
20
J.E.N.I.
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.
Pengenalan Pemrograman I
21
J.E.N.I.
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.
Pengenalan Pemrograman I
22
J.E.N.I.
Jika tidak terdapat error pada program Anda, Anda dapat melihat pesan sukses build pada jendela yang dihasilkan.
Pengenalan Pemrograman I
23
J.E.N.I.
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.
Pengenalan Pemrograman I
24
J.E.N.I.
Pengenalan Pemrograman I
25
J.E.N.I.
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]!!!
Pengenalan Pemrograman I
26
J.E.N.I.
J.E.N.I.
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,
Pengenalan Pemrograman I 2
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
Pengenalan Pemrograman I
J.E.N.I.
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"); }
Pengenalan Pemrograman I
J.E.N.I.
Pengenalan Pemrograman I
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
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 oleh0. 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.
J.E.N.I.
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!
Pengenalan Pemrograman I
J.E.N.I.
Integer Length
Name or Type
Range
-27 -215
to 27-1 to 215-1
Pengenalan Pemrograman I
10
J.E.N.I.
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 32 bits 64 bits Nama atau Tipe float double Range
Pengenalan Pemrograman I
11
J.E.N.I.
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.
Pengenalan Pemrograman I
12
J.E.N.I.
double grade = 0; Bentuk yang lebih disukai ketika melakukan deklarasi adalah, double exam=0, quiz=10, grade=0;
}
Program tersebut akan mengeluarkan teks berikut pada layar, 10 The value of x=A
J.E.N.I.
Pernyataan ini akan menghasilkan output sebagai berikut pada layar, Hello world!
Pengenalan Pemrograman I
14
J.E.N.I.
Data 10 : 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.
Pengenalan Pemrograman I
15
J.E.N.I.
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.
Operator + * / % -
Penggunaan op1 + op2 op1 * op2 op1 / op2 op1 % op2 op1 - op2
Keterangan Menambahkan op1 dengan op2 Mengalikan op1 dengan op2 Membagi op1 dengan op2 Menghitung dengan op2 sisa dari pembagian op1
Pengenalan Pemrograman I
16
J.E.N.I.
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 System.out.println(" x * y = " + (x //pembagian angka System.out.println("Dividing..."); System.out.println(" i / j = " + (i System.out.println(" x / y = " + (x
* j)); * y));
/ j)); / 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
Pengenalan Pemrograman I 17
J.E.N.I.
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.
Pengenalan Pemrograman I
18
J.E.N.I.
Operator
Penggunaan
Keterangan Menambahkan nilai 1 pada op; mengevaluasi nilai op sebelum diincrementasi/ditambahkan Menambahkan nilai 1 pada op; mengevaluasi nilai op setelah diincrementasi/ditambahkan Mengurangkan nilai 1 pada op; mengevaluasi nilai op sebelum didecrementasi/dikurangkan Mengurangkan nilai 1 pada op; mengevaluasi nilai op setelah didecrementasi/dikurangkan
++
op++
++
++op
--
op--
--
--op
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,
Pengenalan Pemrograman I 19
J.E.N.I.
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.
Penggunaan op1 > op2 op1 >= op2 op1 < op2 op1 <= op2 op1 == op2 op1 != op2
Keterangan op1 lebih besar dari op2 op1 lebih besar dari atau sama dengan op2 op1 kurang dari op2 op1 kurang dari atau sama dengan op2 op1 sama dengan op2 op1 tidak sama dengan op2
Pengenalan Pemrograman I
20
J.E.N.I.
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 System.out.println(" i System.out.println(" j System.out.println(" k //lebih besar atau sama dengan System.out.println("Lebih System.out.println(" i System.out.println(" j System.out.println(" k //lebih kecil dari System.out.println("Lebih System.out.println(" i System.out.println(" j System.out.println(" k //lebih kecil atau sama dengan System.out.println("Lebih System.out.println(" i System.out.println(" j System.out.println(" k
dari..."); " + (i > j)); //false " + (j > i)); //true " + (k > j)); //false
atau sama dengan..."); (i >= j)); //false (j >= i)); //true (k >= j)); //true
dari..."); " + (i < j)); //true " + (j < i)); //false " + (k < j)); //false atau sama dengan..."); (i <= j)); //true (j <= i)); //false (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 :
Pengenalan Pemrograman I
21
J.E.N.I.
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
Pengenalan Pemrograman I
22
J.E.N.I.
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.
Pengenalan Pemrograman I
23
J.E.N.I.
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); } }
Pengenalan Pemrograman I
24
J.E.N.I.
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.
Pengenalan Pemrograman I
25
J.E.N.I.
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); } }
Pengenalan Pemrograman I
26
J.E.N.I.
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.
Pengenalan Pemrograman I
27
J.E.N.I.
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
Pengenalan Pemrograman I
28
J.E.N.I.
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
Pengenalan Pemrograman I
29
J.E.N.I.
Pengenalan Pemrograman I
30
J.E.N.I.
Gambar 2: Flowchart
Berikut ini adalah program lain yang menggunakan operator ?: , class ConditionalOperator { public static void main( String[] args ){ int char score = 0; answer = 'a';
Pengenalan Pemrograman I
31
J.E.N.I.
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.
Pengenalan Pemrograman I
32
J.E.N.I.
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.
Berikut ini merupakan tampilan yang diharapkan sebagai hasil eksekusi program, Number = 10 letter = a result = true str = hello
Pengenalan Pemrograman I
33
J.E.N.I.
Pengenalan Pemrograman I
34
J.E.N.I.
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); }
Pengenalan Pemrograman I
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
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.
Pengenalan Pemrograman I
J.E.N.I.
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 + "!");
Pengenalan Pemrograman I
J.E.N.I.
Pengenalan Pemrograman I
J.E.N.I.
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);
Pengenalan Pemrograman I
J.E.N.I.
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
Pengenalan Pemrograman I
J.E.N.I.
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
J.E.N.I.
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
J.E.N.I.
Pengenalan Pemrograman 1
J.E.N.I.
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
J.E.N.I.
Pengenalan Pemrograman 1
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"); }
Pengenalan Pemrograman 1
J.E.N.I.
Pengenalan Pemrograman 1
J.E.N.I.
// //block 1 //
// //block 2 //
// //block n //
Pengenalan Pemrograman 1
J.E.N.I.
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
J.E.N.I.
Pengenalan Pemrograman 1
10
J.E.N.I.
Pengenalan Pemrograman 1
11
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
J.E.N.I.
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 kat a 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
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.
Pengenalan Pemrograman 1
14
J.E.N.I.
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
J.E.N.I.
6.4.1.2
P e rn y a ta a n 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 pern yataan yang diberi label; dan tidak menjalankan aliran kon trol apapun pada label. Aliran kontrol pada label akan diberikan secara otomatis pada pernyataan yang terletak dibawah label.
Pengenalan Pemrograman 1
16
J.E.N.I.
Pengenalan Pemrograman 1
17
J.E.N.I.
Pengenalan Pemrograman 1
18
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.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
J.E.N.I.
Pengenalan Pemrograman 1
J.E.N.I.
Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama didalam sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa ruang. A rray adalah sebuah variabel/sebuah lokasi tertentu yang memiliki satu nama sebagai identifier, namun identifier ini dapat menyimpan lebih dari sebuah nilai.
Pengenalan Pemrograman 1
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, //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
J.E.N.I.
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, arr ay 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 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.
setelah
Pengenalan Pemrograman 1
J.E.N.I.
Pengenalan Pemrograman 1
J.E.N.I.
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
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 dowhile dan for-loop)Using a while-loop.
Pengenalan Pemrograman 1
J.E.N.I.
Mengetahui dan menjelaskan mengenai argumen command-line Mendapatkan input dari user dengan menggunakan argumen command-line Mempelajari bagaimana memberikan argumen kedalam program pada NetBeans
Pengenalan Pemrograman 1
J.E.N.I.
Perlu diperhatikan bahwa sebuah argumen dapat dipisahkan oleh ruang spasi. Pada bahasa pemrogr aman 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
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, harusdiperiksaterlebih dahulu berapa jumlah argumen yang diperlukan sebelum mengakses sebuah array, sehingga tidak ada eksepsi yang terjadi.
Pengenalan Pemrograman 1
J.E.N.I.
Pengenalan Pemrograman 1
J.E.N.I.
Klik kanan icon CommanLineExample dan akan keluar sebuah pop-up menu. Lalu klik pada properties.
Pengenalan Pemrograman 1
J.E.N.I.
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
J.E.N.I.
Pengenalan Pemrograman 1
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.
Pengenalan Pemrograman 1
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
Pengenalan Pemrograman 1
J.E.N.I.
Singa
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.
Manufaktur Kecepatan
Method Instance
Pengenalan Pemrograman 1
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.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
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.
nameOfObject.nameOfMethod( parameters );
mari kita mengambil dua contoh method yang ditemukan dalam class String.
Deklarasi method public char charAt(int index) public boolean equalsIgnoreCase (String anotherString)
Definisi Mengambil karakter pada indeks tertentu. Membandingkan antar String, tidak case sensitive.
Menggunakan method :
String str1 = "Hello"; char x = str2.charAt(0); //will return the character H //simpan pada variabel x String str2 = "hello";
Pengenalan Pemrograman 1
J.E.N.I.
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 ); } 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
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] ); } test( ages );
Pass ages as parameter which is copied to variable arr
} public static void test( int[] arr ){ //merubah nilai array for( int i=0; i<arr.length; i++ ){ arr[i] = i + 50; } } }
Pengenalan Pemrograman 1
J.E.N.I.
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.
Classname.staticMethodName(params);
Pengenalan Pemrograman 1
J.E.N.I.
//mencetak data pada layar System.out.println(Hello world); //convert string menjadi integer int i = Integer.parseInt(10);
Pengenalan Pemrograman 1
J.E.N.I.
public class ScopeExample { public static void main( String[] args ){ int i = 0; int j = 0;
Pengenalan Pemrograman 1
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 Jangkauan Jangkauan Jangkauan Jangkauan variable i adalah A. variable j adalah B. variable k adalah C. variable m adalah D. 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++ ){ } test( ages ); //mencetak kembali nilai array for( int i=0; i<ages.length; i++ ){ System.out.println( ages[i] ); } } public static void test( int[] arr ){ //merubah nilai pada array for( int i=0; i<arr.length; i++ ){ arr[i] = i + 50; } } }
E A
ages[ ] i in B i in C
Pengenalan Pemrograman 1
J.E.N.I.
arr[ ] i in E
- scope D - 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 = 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.
Pengenalan Pemrograman 1
11
J.E.N.I.
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
12
Pengenalan Pemrograman 1
J.E.N.I.
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 a k a n d i d a p a t k a n method l e b i h b a n y a k d a r 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
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.
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
Pengenalan Pemrograman 1
14
J.E.N.I.
Java merepresentasikan tipe data pri mi ti 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 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);
setiap
tipe
primitif,
anda
dapat
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.
Pengenalan Pemrograman 1
15
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
J.E.N.I.
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.
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.
J.E.N.I.
Pengenalan Pemrograman 1
18
J.E.N.I.
9.6
Latihan
Pengenalan Pemrograman 1
19
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). 3. Perhatikan untuk method yang mengakhiri running Java Virtual Machine yang sedang berjalan 4. Perhatikan untuk method yang memperoleh lantai dari sebuah nilai double. Sebagai contoh, jika Saya input a 3.13, method harus mengembalikan nilai 3. 5. Perhatikan method yang mengenali jika character yang dipakai adalah sebuah digit. Sebagai contoh, jika Saya input '3', dia akan mengembalikan nilai true. untuk
Pengenalan Pemrograman 1
20
J.E.N.I.
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
Pengenalan Pemrograman 1
J.E.N.I.
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 :
dimana,
Public Class
Class ini dapat diakses dari luar package Keyword yang digunakan untuk pembuatan class dalam Java
Pengenalan Pemrograman 1
J.E.N.I.
Public StudentRecord
Class ini dapat diakses dari luar package 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 address age math grade english grade science grade average grade
Pengenalan Pemrograman 1
J.E.N.I.
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.
Pengenalan Pemrograman 1
J.E.N.I.
10.3.2
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 }
Pengenalan Pemrograman 1
J.E.N.I.
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; } }
Pengenalan Pemrograman 1
J.E.N.I.
dimana, public String getName () Menjelaskan bahwa method tersebut dapat diakses dari object luar class Tipe data return value dari method tersebut bertipe String 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
Method getAverage() menghitung rata rata dari 3 nilai siswa dan menghasilkan nilai return value dengan nama result.
Pengenalan Pemrograman 1
J.E.N.I.
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; } }
Menjelaskan bahwa method ini dapat dipanggil object luar class Method ini tidak menghasilkan return value Nama dari method Parameter yang akan digunakan pada method
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.
Pengenalan Pemrograman 1
J.E.N.I.
10.4.3
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
public class StudentRecord { private static int studentCount; public static int getStudentCount(){ return studentCount; } }
dimana, public static - Menjelaskan bahwa method ini dapat diakses dari object luar class - Method ini adalah static dan pemanggilannya menggunakan [namaclass].[namaMethod]. Sebagai contoh : studentRecord.getStudentCount - Tipe return dari method. Mengindikasikan method tersebut harus mempunyai return value berupa integer
Int
Pengenalan Pemrograman 1
J.E.N.I.
public getStudentCount ()
- Menjelaskan bahwa method ini dapat diakses dari object luar class - 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.
Pengenalan Pemrograman 1
10
J.E.N.I.
10.4.5
Pengenalan Pemrograman 1
11
J.E.N.I.
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() ); } }
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.
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 :
Pengenalan Pemrograman 1
12
J.E.N.I.
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.
Pengenalan Pemrograman 1
13
J.E.N.I.
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); }
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()); }
Pengenalan Pemrograman 1
14
J.E.N.I.
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.
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 :
Pengenalan Pemrograman 1
15
J.E.N.I.
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
Pengenalan Pemrograman 1
16
J.E.N.I.
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 }
J.E.N.I.
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 :
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 :
Pengenalan Pemrograman 1 18
J.E.N.I.
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 menandakan kejadian bila kita tidak mengatur classpath. contoh dibawah yang
Pengenalan Pemrograman 1
19
J.E.N.I.
at at at at at at at at at
java.net.URLClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.access$100(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) 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 :
dimana C:\ adalah direktori dimana kita menempatkan package. Setelah mengatur classpath, kita dapat menjalankan program di mana saja dengan mengetikkan :
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
Pengenalan Pemrograman 1
20
J.E.N.I.
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
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.
Pengenalan Pemrograman 1
21
J.E.N.I.
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.
Pengenalan Pemrograman 1
22
J.E.N.I.
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.
Pengenalan Pemrograman 1
23
J.E.N.I.
10.10. Latihan
Tugas Anda adalah membuat sebuah class yang memuat data-data pada buku alamat. Tabel berikut mendefinisikan informasi yang dimiliki oleh buku alamat.
Deskripsi Nama Lengkap perseorangan Alamat Lengkap Nomor telepon personal Alamat E-Mail personal
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
Pengenalan Pemrograman 1
24
J.E.N.I.
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
Pengenalan Pemrograman 1 1
J.E.N.I.
11.2.1
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 protected String
name; 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; } }
Pengenalan Pemrograman 1
J.E.N.I.
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
J.E.N.I.
11.2.2
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");
Pengenalan Pemrograman 1 4
J.E.N.I.
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; }
J.E.N.I.
return name; } : } Jadi, ketika kita meminta method getName dari object class Student, method overridde akan dipanggil, keluarannya akan menjadi, Student: getName
11.2.4
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.
Pengenalan Pemrograman 1
J.E.N.I.
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 Employee studentObject = new Student(); 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; } }
Pengenalan Pemrograman 1 7
J.E.N.I.
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 Employee studentObject = new Student(); 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 ); }
Pengenalan Pemrograman 1 8
J.E.N.I.
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();
Pengenalan Pemrograman 1
J.E.N.I.
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.
Pengenalan Pemrograman 1
10
J.E.N.I.
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
Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan mengimplementasikan method yang sama. Melalui interface-interface, kita dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya seolaholah class yang berhubungan. Mari kita ambil contoh class Line dimana berisi method yang menghitung panjang dari garis dan membandingkan object Line ke object dari class yang sama. Sekarang, misalkan kita punya class yang lain yaitu MyInteger dimana berisi method yang membandingkan object MyInteger ke object dari class yang sama. Seperti yang kita lihat disini, kedua class-class mempunyai method yang mirip dimana membandingkan mereka dari object lain dalam tipe yang sama, tetapi mereka tidak berhubungan sama sekali. Supaya dapat menjalankan cara untuk memastikan bahwa dua class-class ini mengimplementasikan beberapa method dengan tanda yang sama, kita dapat menggunakan sebuah interface untuk hal ini. Kita dapat membuat sebuah class interface, katakanlah interface Relation dimana mempunyai deklarasi method pembanding. Relasi interface dapat dideklarasikan sebagai, public interface Relation { 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++.
Pengenalan Pemrograman 1
11
J.E.N.I.
11.5.2
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
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 Person pi = new Person(); pc = new Person();
Bagaimanapun, Anda tidak dapat membuat instance dari sebuah interface. Contohnya: 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. PersonInterface
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); }
Pengenalan Pemrograman 1
12
J.E.N.I.
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); } }
Pengenalan Pemrograman 1
13
J.E.N.I.
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
Petunjuk penulisan program: Gunakan interface untuk mendefinisikan method standar yang sama dalam classclass berbeda yang memungkinkan. Sekali Anda telah membuat kumpulan definisi method standar, Anda dapat menulis method tunggal untuk memanipulasi semua classclass yang mengimplementasikan interface.
11.5.5
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.
Pengenalan Pemrograman 1
14
J.E.N.I.
11.5.6
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 { . . . }
Pengenalan Pemrograman 1
15
J.E.N.I.
11.6
11.6.1
Latihan
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
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.
Pengenalan Pemrograman 1
16
J.E.N.I.
12.2
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.
J.E.N.I.
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.
Pengenalan Pemrograman 1
J.E.N.I.
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.
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!
Pengenalan Pemrograman 1
J.E.N.I.
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...
Pengenalan Pemrograman 1