Overriding adalah suatu keadaan dimana method pada subclass menolak method pada parent class-nya.
Overriding mempunyai ciri-ciri sebagai berikut : 1. Nama method harus sama
2. Daftar parameter harus sama 3. Return type harus sama
Berikut ini contoh terjadinya overriding dimana
method Info() pada class Child meng-override methodInfo() pada classparent:
Method yang terkena override (overridden method) diharuskan tidak boleh mempunyai modifer yang lebih luas aksesnya dari method yang meng-override
Latihan
1. Buatlah kelas BEM (Badan Eksekutif Mahasiswa) yang merupakan kelas turunan dari Mahasiswa dan buatlah metodhmetodhnya.
2. Buatlah 1 objek untuk menginstantiasi kelas BEM (Badan Eksekutif Mahasiswa) dan
mengimplementasikan beberapa metodh yang telah Anda defnisikan dalam kelas BEM (Badan Eksekutif Mahasiswa).
3. Panggilllah objek yang telah Anda buat pada kelas Pecinta Alam dan BEM (Badan Eksekutif Mahasiswa) untuk bekerja sehingga tampil efek-efek polymorfsme
4. Buatlah Program seperti berikut :
Kompilasilah dan jalankan program tersebut. Apa hasil program tersebut? Analisalah hasil tersebut!
5. Salinlah program pada latihan 1 dengan nama KelasMobil2.java. Selanjutnya, ubahlah perintah
System.out.println("Warna : " + mobil_dia.warna);
System.out.println("Tahun : " + mobil_dia.tahun_produksi);
agar tidak menggunakan pemanggilan variabel instan untuk memperoleh warna dan tahun produksi. Sebagai pengganti, gunakan metode perolehWarna() dan
6. Salinlah program pada Latihan 1 dengan nama KelasMobil3. Modifkasilah program agar kelas Mobil memiliki variabel instan bernama merk (isinya seperti Suzuki, Honda, Mitsubishi, dsb). Selanjutnya, modifkasilah metode isiDataMobil sehingga secara berturut-turut dapat digunakan untuk mengisikan merk mobil, warna mobil, dan tahun produksi. Buatlah pula metode bernama
perolehMerk untuk mendapatkan merk mobil. Kemudian, dalam program utama, buatlah objek untuk mengisikan data berikut:
Merk : Honda Warna: Biru
Tahun produksi: 2003
Program juga bisa menampilkan ketiga informasi di atas dengan menggunakan metode.
7. Modifkasilah program pada latihan 4 sehingga data merk, warna, dan tahun produksi dapat dimasukkan dari
keyboard sewaktu program dieksekusi.
8. Memperlihatkan efek penggunakan private pada variabel instan. Modifkasilah kelas Mobil hasil Latihan 1 agar menjadi seperti berikut:
Perubahan sebenarnya hanya berupa tambahan dua kata private (dinyatakan dengan cetak tebal pada contoh di atas). Bila Anda menyimpan program ini dengan nama yang berbeda, jangan lupa mengubah nama kelas pada program utama!
Selanjutnya, cobalah untuk mengompilasi. Apa yang terjadi? Apa kesalahannya? Mengapa? Lalu, bagaimana kalau mau menampilkan informasi warna dan tahun produksi?
9. Latihan ini menunjukkan cara membuat konstruktor. Buatlah program berikut:
Kompilasilah dan jalankan. Perhatikan, apa bedanya dengan program pada Latihan 1?
10. Kembangkanlah agar program pada Latihan 6, memungkinkan overloading dengan bentuk:
mobil_ku = new Mobil("Honda","Hijau", 2004);
11. Modifkasilah program pada Latihan 7 agar kelas Mobil memiliki metode bernama infoMobil, yang digunakan untuk menampilkan data mobil. Atur pula agar variabel instan tidak bisa diakses di luar kelas Mobil.
12. Invoking parent class constructor (Employee1.java)
Coba compile program di bawah ini, jika terjadi error, jelaskan mengapa dan betulkan!
5
Exception Handling
Overview
Bab ini akan menjelaskan tentang Exception di Java, apa yang dimaksud dengan Exception, bagaimana menangkap
Exception. Serta akan dijelaskan throwing exception dan membuat user defne exception.
Tujuan
1. Mengetahui tentang Exception di Java. 2. Mengetahui kelas-kelas exception di Java
3. Mengetahui bagaimana Exception muncul dan cara menangkap Exception
4. Mengetahui cara melempar Exception
5. Mengetahui tentang User Defne Exception
Exception merupakan suatu kejadian yang tidak biasa atau event abnormal yang muncul ketika sedang menjalankan program. Exception merupakan runtime error. Ketika
Exception muncul maka akan melempar sebuah obyek
Exception, jika obyek yang dilempar ini tidak kitangani atau ditangkap maka akan mengakibatkan program diterminasi (berhenti), hal ini dapat menyebabkan program menjadi tidak handal. Untuk mengatasi hal ini dibutuhkan sesuatu untuk menangani Exception.
Exception mempunyai beberapa subclass. Tiap
subclassException akan dilempar dengan sebab sebab tertentu. Untuk menangani Exception dibutuhkan
Exception handling. Exception handling diimplementasikan di Java dengan keyword
o Try
Blok try digunakan untuk meletakkan code yang kemungkinan akan memunculkan Exception
o Catch
Blok catch digunakan sebagai Exception handler, blok ini akan menangkap Exception yang dilempar di dalam
blok try. Blok catch digunakan untuk
menspesifkasikan tipe Exception yang akan ditangani. Minimal 1 blok try mempunyai 1 blok catch, jadi 1 blok
try dapat mempunyai lebih dari 1 blok catch, hal ini dapat berlaku jika terdapat lebih dari 1 Exception yang akan dilempar didalam blok try.
o Finally
Blok fnally merupakan optional, boleh ada atau tidak. Satu blok try catch hanya 1 blok fnally. Blok fnally
diakses pada urutan terakir dalam blok try catch fnally, blok tetap diakses meskipun ada atau tidak ada
Exception.
o Throw
Statement throw digunakan untuk melempar
Exception secara eksplisit.
o Throws
Untuk mendaftar Exception-Exception yang akan dilempar statemen throw di dalam suatu method, jika
method tersebut tidak menyediakan Exception handling.
Contoh penggunaan Try Catch dan Finally public class ArrayException
{
public static void main (String[] args) { try { System.out.println("Your name is "+args[0]); }
catch (ArrayIndexOutOfBoundsException obj) {
System.out.println("Run the code with the argument"); } finally { System.out.println("Your school is TELKOM POLYTECHNIC"); } } }
Contoh penggunaan throw statement
public class ThrowingStatement {
static double root(double A,double B, double C) { double disc=0; try { if(A==0) { Exception Handling 65
throw new IllegalArgumentException("A can't be zero"); } else { disc = (B*B)-(4*A*C); if (disc<0) throw new IllegalArgumentException("Discriminant< 0"); } }//endtry catch(IllegalArgumentException obj) { System.out.println("Illegal Argument in : "+obj); } return ((-B + Math.sqrt(disc))/(2*A)); }
public static void main(String[] args) {
double Ans = root(0,2,4); }
}
User defned Exception merupakan Exception
yang didefnisikan oleh programmer sesuai dengan kebutuhan. User defned Exception yang dibuat harus menuruni (inheritance) method-method dari kelas
Exception.
Contoh UserdefnedException
class UserException extends Exception {
int num1,num2,sum;
UserException(int a,int b) {
num1 = a; num2 = b; sum = a + b; }
public String toString() {
return "UserException Caught: The sum of the numbers Exceeds 20.."; } } class UserExceptionDemo {
static void calculate(int a,int b) throws UserException { int sum; System.out.println("Calculate Method(" + a + "," + b +")"); sum=a+b; if(sum>20)
throws new UserException(a,b);
System.out.println("The Value of the sum of two numbers is:" + sum);
}
public static void main(String args[]) { try { calculate(15,7); calculate(12,1); }
catch (UserException Obja) { System.out.println("Caught:" + Obja); } } } Exception Handling 67
Latihan
1. Tipe Exception apa saja yang dapat ditangkap oleh handler
berikut?
catch (Exception e) { }
2. Modifkasi method cat dibawah agar bisa di compile public static void cat(File file) {
RandomAccessFile input = null; String line = null;
try {
input = new RandomAccessFile(file, "r"); while ((line = input.readLine()) != null)
{System.out.println(line); } return; } finally { if (input != null) { input.close(); } } }
3. Perhatikan kode berikut, lengkapi dan perbaiki kode berikut
import javax.swing.JOptionPane; public class Main {
public static void main(String[] args) {
// Enter the following values and see what Exception is caught.
// 0, 4, character, <no value> try {
String value = JOptionPane.showInputDialog(null, "Enter value:"); int divisor = Integer.parseInt(value);
System.out.println(3/divisor); }
System.out.println("After Exception."); }
}
Lengkapilah blok catch sehingga Exception yang mungkin muncul bisa ditangani.
4. Fungsi factorial biasanya didefnisikan untuk nilai yang tidak negatif, jika parameter bernilai negatif diterima oleh
method maka harus ada suatu reaksi. Hal ini bisa diatasi dengan mengembalikan hasil = 1, tetapi penanganan tersebut tidak sesuai karena yang salah adalah parameter inputannya. Maka diperlukan untuk melempar Exception
jika method menerima inputan berupa bilangan negatif.
public int factorial(int n) { int i=0; int result=1; while(i<n) { i=i+1; result*=i; } return result; }
Ubah method diatas sehingga method tersebut dapat
melempar sebuah Exception
java.lang.IllegalArgumentException. 5.
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...
6 Input/Output
Overview
Dalam bab ini akan dibahas tentang bagaimana cara melakukan pengaksesan data kedalam fle, baik melakukan proses pembacaan ataupun penulisan. Akan dibahas tentang pengaksesan data menggunakan stream dan random access fle.
Tujuan
1. Penggunaan file menggunakan kelas File. 2. Penggunaan byte stream.
3. Penggunaan character stream.
4. Pengaksesan dengan random-access file