Sabtu, 15 Januari 2011


EXCEPTION
Exception merupakan suatu objek error khusus yang dibuat ketika terjadi kesalahan pada suatu program. Setleh suatu objek exception dibuat oleh java, objek tersebut dikirimkan ke program, proses ini disebut throwing an exception. Objek exception tersebut kemudian diterima oleh program, dan penganganan exception selanjutnya terserah pada program.

Penanganan exception dalam java dibuat dengan menuliskan kode program exception-handling pada source code. Exception-handling berguan utnuk mencegah program menjai ‘Hang’. Code program exception handling secara umum terdiri dari tiga bagian yaitu try, catch, dan finally.
ü  Try
Adalah kode-kode program yang mungkin dapat menimbulkan exception.
ü  Catch
Adalah kode-kode program yang harus dilakukan apabila terjadi exceprion.
ü  Finally
Adalah bersifat optional (boleh tidak menggunakan blok finally) kode-kode yang tetap dilakukan baik terjadi exception maupun tidak terjadi exception.


Kategori error dalam pemrograman adalah:
1.      Syntax error
Error yang terjadi apabila java compiler menemukan kesalahan syntax atau aturan-aturan lainnya dalam program.
2.     Runtime Error
Error yang terjadi karena faktor external, seperti adanya pembagian dengan nol, input yang tidak sesuai dengan type yang idminta, dan sebagainya. Kondisis ini dikenal sebagai exception (pengecualian pada eksepsi).
3.     Logic Error
Error yang terjadi karena kesalahan logika pemrogram. Misalnya hasil pembagian dua bilangna diberi tipe data int. hal ini menyebabkan hasil tidak valid karena ada bagian koma desimal yang hilang.


Contoh program exception:
a.     Class tanpaexception.java;
class tanpaexception{
public static void main (String[]args){
int nilai=Integer.parseInt(args[0]);
//statement diatas membutuhkan exception handling
System.out.println("Nailai yang dimasukan: "+nilai);
}
}


Output:

               
b.     Class cobaexception;
class cobaexception{
public static void main(String[]args){
int nilai=0;
try{
nilai=Integer.parseInt(args[0]);
//dalam blok exception-handling
}catch (Exception e){
System.out.println("Harus integer");
}
finally{
System.out.println("Nilai anda: "+nilai);
}
System.out.println("selesai..");
}
}

               
                                Output:



c.     Class pembagian.java;
class pembagian{
public static void main(String[]args){
int a=0;
int b=0;
int c=0;
try{
a=Integer.parseInt(args[0]);
b=Integer.parseInt(args[1]);
System.out.println("nilai a: "+a);
System.out.println("nilai b: "+b);
c=a/b;
}catch (NumberFormatException nfe){
System.out.println("bukan angka. Inisialisasi dengan nilai 0");
}catch (ArithmeticException ae){
System.out.println("pembagi tidak boleh 0");
b=1;
//karena terjadi exception maka harus dilakukan pembagian lagi.
c=a/b;
System.out.println("Inisialisasi nilai b dengan nilai 1");
}finally{
System.out.println("Nilai a: "+a);
System.out.println("Nilai b: "+b);
System.out.println("Nilai  : "+c);
}
System.out.println("selesai..");
}
}


                                Output:



d.     Class tesinputdata.java;
import java.io.*;
class input{
public static int bacaData(){
BufferedReader br=new
BufferedReader (new InputStreamReader(System.in));
int angka=0;
try{
String input=br.readLine();
angka=Integer.parseInt(input);
}catch (Exception ex){
System.out.println("input salah. Insialisasi dengan nilai "+angka);
}finally{
return angka;
}
}
}
public class tesinputdata{
public static void main(String[]args){
System.out.println("masukan angka: ");
int i=input.bacaData();
System.out.println("angka yang anda masukan adalah "+i);
}
}


                 
a.     Jika dimasukan huruf, maka outputnya:



b.     Jika yang dimasukan angka, maka outputnya:

OVERLOADING DAN OVERRIDING

A.   Overloading
Overloading  adalah suatu kemampuan dalam bahasa berorientasi objek untuk menggunakan satu nama method utnuk beberapa method yang memiliki parameter masukan yang berbeda (tipe maupun jumlah parameter). Overloading memodifikasi secara horisontal method maupun konstruktur milik kelas super, maupun kelas yang sama.

Contoh:
            Public void kuadrat (int x);
Dapat di overload menjadi:
            Public void kuadrat (double y);
Atau dioverload menjadi:
            Public void kuadrat (int x, int y);


Analogi overloading:
Suatu kelas manusia memiliki method menulis, objek yang dapat digunakan (parameter) untuk menulis antara lain: ballpoint, kaput. Hasil (return value) dari method menulis adalah Tulisan. Secara umum implementasi saat kita menulis menggunakan ballpoint adalah menulis di atas kertas dengan ukuran font yang kecil, sementara implementasi saat kita menggunakan kapur adalah menulis diatas papan tulis dengan ukuran font yang besar, ternyata dengan method yang sama, kita memiliki implementasi yang berbeda apabila parameternya berbeda dalam pemrograman berorientasi objek, kejadian tersebut disebut sebagai overloading dalam hal ini kita telah meng-overload (dengan tipe parameter) method menulis.
               
               
Contoh program Overloading adalah:
a.     Class segitiga;
class segitiga{
public segitiga (double panjang){
System.out.println("\n1 atribut, berarti segitiga sama sisi");
System.out.println("panjang= " +panjang);
setkeliling (panjang);
}
public segitiga (double panjang, double sisimiring){
//overloading konstruktur
System.out.println("\n2 atribut, berarti segitiga sama kaki");
System.out.println("panjang= "+panjang+"sisi miring= "+sisimiring);
setkeliling (panjang,sisimiring);
}
private void setkeliling (double panjang){
gethasil (panjang*3);
}
private void setkeliling (double p, double sm){
//overloading method
gethasil (2*sm+p);
}
protected void gethasil (double h){
System.out.println("hasil= "+h);
}
}

Output:


b.     Class mainsegitiga;
class mainsegitiga{
public static void main (String [] args){
segitiga s1=new segitiga(7);
segitiga s2=new segitiga(4,7);
}
}


                                Output:





B.   Overriding
Overriding adalah suatu kemampuan dalam bahasa berorientasi objek untuk mengubah implementasi (menimpa) suatu method yang dimiliki oleh kelas super ketika kelas super tersebut diturunkan. Overriding memodifikasi secara vertikal method milik kelas super.

Ada dua alasan mengapa overriding dilakukan:
1.        Mendefinisikan kembali method kelas induk secara total;
2.       Menambahkan behaviour tertentu pada method kelas induk;

Contoh program Overriding adalah:
a.     Class overriding.java;
class overriding{
public void methodasli(){
System.out.println("method milik class overriding dijalankan");
}
public static void main(String[]args){
overriding o=new overriding();
o.methodasli();
}
}


                                Output:









b.     Class suboverriding.java;
class suboverriding extends overriding {
//class ini turunan class overriding
public void methodasli(){
//method ini menimpa methodasli milik class overriding
System.out.println ("method milik class overriding yang sudah dioverride dijalankan");
}
public void methodaslisuper(){;
//method ini memanggil methodasli milik class overriding
System.out.println ("method pemanggil methodasli milik class overriding dijalankan");
super.methodasli();
}
public static void main(String[]args){
suboverriding so=new suboverriding();
so.methodasli();
so.methodaslisuper();
}
}
               

                Output:

Sabtu, 08 Januari 2011


ABSTRACT CLASS, INTERFACE,
DAN INNER CLASS

A.Abstract Class
Adalah suatu kelas yang dinyatakan abstract, umumnya memiliki satu atau lebih abstract method adalah suatu method yang belum memiliki implementasi dan menggunakan modifier abstract. Abstract class biasanya dijadikan parent/super class dari kelas-kelas yang dapat membuat objek, abstract class tidak dapat diinstansiasi.

Analogi inheritance dan abstract class:
Inheritance dapat dianalogikan seperti penggolongan kelas, ordo, phylum dalam biologi. Makhluk hidup dapat diturunkan/di-extend/diperluas (di-inherit) menjadi manusia, hewan, dan tumbuhan. Hewan masih dapat diperluas (di-inherit) menjadi burung, reptil, ikan, dll. Jenjang penurunan tersebut disebut inheritance.

Kita mengetahui bahwa suatu kelas dapat diinstansiasi menjadi suatu obyek, misal kelas manusia dapt diinstansiasi menjadi joko, susi, ari, dll, namun tidak mungkin dapat menginstansiasi kelas makluk hidup, maupun kelas hewan, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang disebut sebagai abstract class. Apabila kelas makhluk hidup mempunyai method bernafas, maka kita dapat menentukan (meng-implementasikan) cara makhluk hidup tersebut bernafas dengan paru-paru, insang atau stomata. Dengan demikian kita dapat menyatakan bahwa di dalam kelas makhluk hidup, bernafas merupakan method yang abxtract.


Contoh program dari abstract class ini adalah:
a.   Kelas makhlukhidup.
public abstract class makhlukhidup {
     protected String nama;
     protected int jumlkaki;
     protected boolean bisaterbang;
     public makhlukhidup (String nama, int jumlkaki,boolean bisaterbang){
           this.nama=nama;
           this.jumlkaki=jumlkaki;
           this.bisaterbang=bisaterbang;
}
     abstract void bernafas ();
     public void status (){
           System.out.println("Nama        : "+nama);
           System.out.println("Jumlah kaki : "+jumlkaki);
           System.out.println("bisa terbang     : "+bisaterbang);
     }
}

     Output:


b.   Kelas manusia
public class manusia extends makhlukhidup {
     manusia (String nama){
        super (nama, 2, false);
        }         
   public void bernafas(){
           System.out.println(nama+"bernafas dg menghirup o2");
        }         
   public static void main (String [] args){
           manusia m=new manusia ("Sayuti");
           m.status();
        m.bernafas();
     }
}

Output:


c.    Kelas tumbuhan
public class tumbuhan extends makhlukhidup{
   tumbuhan (String nama){
        super(nama,0,false);
   }
   public void bernafas(){
        System.out.println(nama+"bernafas dg menghirup c02");
   }
   public static void main (String [] args){
        tumbuhan m=new tumbuhan ("Bayam");
        m.status();
        m.bernafas();
   }
}

Output:



B. Interface
Interface adalah suatu kelas yang berisi method-method tanpa implementasi, namun tanpa modifier abxtract, apabila suatu interface memiliki atribut, amka atributnya akan berlaku sebagai konstanta (static fianl).

Analogi interface:
Interface dapat dianalogikan sebagia kontrak yang dapat dipakkai oleh setiap kelas. Dalam kehidupan nyata kita mengetahui bahwa ada manusia yang bekerja sebagai penyanyi, pengacara, pelawak, dsb, tentunya manusia-manusia tersebut selain harus memiliki method standar seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat seorang objek joko penyanyi kita harus membuata kelas yang merupakan turunan kelas manuasia yang mengimplementasikan interface penyanyi.

Contoh program dari Interface class ini adalah:
a.   Kelas pekerjaan
interface pekerjaan{
   public void namapekerjaan();
   public void gaji();
}


Output:

b.   Kelas sasya
public class sasya extends manusia implements pekerjaan{
   public sasya(){
        super("Sasya");
   }   
   //mengimplementasikan method milik interface
   public void namapekerjaan(){
        System.out.println("Pekerjaan   :Sekretaris");
   }
        public void gaji(){
        System.out.println ("Gaji : Rp. 3000000,-");
   }
        public static void main (String[]args){
        sasya s=new sasya();
        s.status();
        s.bernafas();
        s.namapekerjaan();
        s.gaji();
   }
}

Output:




C. Inner Class
Inner class adalah kelas yang disisipkan di dalam kelas yang lain. Fungsi kelas sisipan ini adlah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Inner class bersifat tersarang terhadap kelas-kelas utamanya, seperti halnya blok penyeleksian (if, for) yang tersarang pad blok penyeleksian lainnya atau method yang tersarang pada method lainnya.

Analogi inner class:
Inner class dapat dianalogikan sebagai hubungan antara manusia dan paru-paru. Setiap manusia pasti bernafas dengan menggunakan paru-paru. Dalam hal ini berarti kinerja dari paru-paru turut mndukung/menentukan kinerja dari manusia. Dalam bahasa pemrograman berorientasi objek manusia dapat dikatakan sebagai outer class dan paru-paru sebagai inner class-nya.

    
Contoh program dari Inner class ini adalah:
a.   Kelas orang
class orang{
   private int jumlkaki=2;
   public void dengarbunyijantung(){
        jantung j=new jantung();
        j.bunyijantung();
   }
   public void tahannafas(){
        System.out.println("Jantung berhenti berdetak!");
   }
   //inner class
   class jantung{
        public void bunyijantung(){
             System.out.println("deg..deg....deg.......");
        }
        public void istirahat(){
                System.out.println("Silangkan ke " +jumlkaki+"kaki.");
             tahannafas();
        }
   }
}

Output:

b.   Kelas jantungmanusia
class jantungmanusia {
          public static void main(String [] args){
           orang o=new orang();
           orang.jantung p=o.new jantung();
           o.dengarbunyijantung();
           p.istirahat();
     }
}

     Output: