Minggu, 06 November 2011

Praktek V

OVERLOADING, OVERRIDING DAN EXCAPTION

A.  OVERLOADING
     
      Overloading adalah suatu keadaan atau kemampuan dalam bahasa berorientasi objek dimana dalam satu kelas terdapat method yang memiliki nama sama, namun parameter masukan yang berbeda (tipe maupun jumlah parameter).

lebih Jelasnya Overloading secara singkat :
  • Nama Method Boleh Sama , Tapi Jumlah Parameter Mesti berbeda
  • Nilai Yang Di Return Harus memiliki Tipe yang sama


B.  OVERRIDING

     
      Overriding Merupakan Suatu Keadaan Dimana kelas anak dapat mengubah atau bisa kita bilang memodifikasi atau memperluas data dan method pada kelas induk
Keuntungan Overriding : dapat menambahkan sifat / atribut pada kelas induk nya
lebih Jelasnya Overloading secara singkat :
  • Mendefinisikan method dengan nama sama pada class yang berbeda.
  • Konsep dapat di manfaatkan dalam beberapa kasus inheritance, di mana menginginkan penamaan method dengan nama sama namunberbeda dalam impelementasinya.
Modifikasi hak akses pada overriding sangat berpengaruh. Perhatikan tabel di bawah ini 
untuk lebih jelasnya :



C.  EXCEPTION

     Kesalahan atau error sering terjadi pada saat membuat program, ini yang membuat kesal para pemula programmer untuk itu menghindari dari kesalahan atau eror Java menyediakan fasilitas berupa mekanisme penanganan exception. Bisa di kata kan bahwa Exception adalah singkatan dari Exceptional Events atau dalam bahasa indonesianya kesalahan (error) yang terjadi pada saat pembuatan program dan saat runtime, mengakibatkan gangguan pada alur exekusi.

Kesalahan dalam program java terdapat beberapa tipe sebagai contoh kesalahan pembagian 0, mengakses elemen di luar jangkauan array dan input yang tidak benar. Exception merupakan sebuah subclasses baik secara langsung atau tidak langsung, sehingga exception di bagi 2 kategori class yaitu : Error Class dan Exception Class
Exception menunjukkan bahwa class tersebut dapat di terima oleh user program. Tetapi Exception class di gunakan untuk memperbaiki beberapa kesalahan pada kode program sebagai contoh Exception adalah pembagi oleh 0 dan error pada saat array melakukan tindakan di luar jangkauan. Error class menpunyai fungsi untuk menangani kesalahan atau error yang sering muncul pada saat program di jalankan. Tetapi kesalahan pada program merupakan di luar control user karena kemunculan di sebabkan oleh run-time environment. Sebagai contoh out of memory dan harddisk carsh. 

Kategori error dalam program :

1.  Syntax error
     error yang terjadi apabila java compiler menemukan kesalahan pada syntax 
     atau aturan-aturan lainnya pada program.

2.  Runtime error
     Error yang terjadi karena faktor eksternal, seperti adanya pemagian nol, input
     yang tidak sesuai dengan tipe yang diminta dan sebagainya.
     Kondisi ini dikenal sebagai EXCEPTION.

3.  Logic error
     Error yang terjadi karena kesalahan logika program. Misalnya hasil pembagian
     dua buah bilangan diberi tipe data int. Hal ini meyebabkan hasil tidak valid karena ada
     bagian koma desimal yang hilang.



Contoh Program :
A. Membuat Program SegiTiga.java

  class Segitiga {
  public Segitiga (double panjang) {
                System.out.println  ("\nVariabel=segitiganya sama sisi ");
                System.out.println ("Panjang="+panjang);
                keliling(panjang);
  }
  public Segitiga (double panjang, double sisimiring) {
                System.out.println("\n2Variabel=segitiganya sama kaki");
                System.out.println  ("\nVariabel=segitiganya sama sisi ");
                System.out.println ("Panjang="+panjang+" sisi miring= "+ sisimiring);
                                keliling (panjang, sisimiring);
  }

  public void keliling (double panjang) {
                                tampilkanHasil(panjang*3);
  }

   public void keliling (double p, double sM) {
                                tampilkanHasil(2*sM+p);
  }

  protected void tampilkanHasil (double h) {
                System.out.println ("Hasil=" +h);

  }
}


B. Membuat Program MainSegitiga.java

    class MainSegitiga {
  public static void main (String []args) {
                new Segitiga(7);
                new Segitiga(4,7);
  }
}

Hasilnya



C. Membuat Program Overriding
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();
    }
  }

Hasilnya


 D. Membuat Program SubOverriding.java
   class SubOverRiding extends OverRiding {
  public void MethodAsli() {
                System.out.println("Method yang sudah Overriding dijalankan");

  }

    public void MethodAsliSuper() {
                System.out.println("Method pemanggil MethodAsli dijalankan");
                                super.MethodAsli();
    }

    public static void main (String[]args) {

                SubOverRiding SO= new SubOverRiding();
                SO.MethodAsli();
                SO.MethodAsliSuper();
    }

   }

Hasilnya



E.  Membuat Program Tanpa Exception.java
class TanpaException

public static void main (String[]args) {
                int Nilai=Integer.parseInt (args[0]);
                System.out.println("Nilai yang dimasukkan : " + Nilai);
                }
}

Hasilnya




F. Membuat Program CobaException.java 


  class CobaException {
 public static void main(String []args) {
                int Nilai=0;
                try {
                                int nilai = Integer.parseInt (args[0]);
                                System.out.println ("Nilai yang Dimasukkan : " + nilai);
                }
                catch (Exception e) {
                System.out.println("Pasti yang diinput bukan Integer");
                }
                finally {
                                System.out.println("Blk finally tetap dilakukan");
                }
    }
 }

Hasilnya



 G. Membuat Program PembagianNol.java

class PembagianNol {
  public static void main (String []args) {
                System.out.println ("Sebelum pembagian");
                try {
                                System.out.println(5/0);
                }
                catch (Throwable T) {
                                System.out.println("Terjadi pemabagian Nol"); }
                                System.out.println ("Sesudah pemabagian");
                                }
                }



 









 

Praktek IV

ABSTRACT CLASS, INTERFACE, INNER CLASS

1. ABSTRACT CLASS
 
         Abstract class adalah kelas yang terletak pada posisi tertinggi pada hierarki kelas. Kelas ini digunakan sebagai basis bagi penurunan kelas lainnya, sehingga abstract class tidak dapat diinstansiasi secara langsung menjadi object. Suatu abstract class bisa mengandung method kongkrit dan/atau method abstract. Abstract method meruapakan suatu method yang tidak mempunyai badan method. Hanya berupa nama method dan parameter inputan method. Ketika suatu abstract class diturunkan/ di-extends, maka subclass harus mengimplementasikan semua method abstract pada parent/ base class. Jika tidak mengimplementasikan semua method abstract maka subclass harus dideklarasikan sebagai abstract class.


2.  INTERFACE

         Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. Interface digunakan bila Anda ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance. Tipe data yang boleh pada interface hanya tipe data konstan. Setelah mengetahui apa itu interface. Timbul pertanyaan Mengapa membutuhkan interface?
  • Memecahkan bagian yang rumit dan spesifik. Dengan menggunakan class atau interface oleh vendor maka dalam pembuatan perangkat lunak menjadi lebih cepat.
  • Keterbatasan inheritance pada Java. Interface menjawab kebutuhan untuk melakukan multiple inheritance 

 NB:
Apakah Interface = Abstract class ?


Ya menurut saya sih antara keduanya memiliki kemiripan, tapi tidak sama. Mirip bukan berarti sama kan? Terdapat beberapa perbedaan antara keduanya yaitu :
  • Abstract class dapat memiliki tipe data dengan semua tipe data, sedangkan interface tipe datanya hanya berupa konstanta
  • Method pada abstract class dapat berupa method kongkrit dan method abstract. Sedangkan pada interface semua method harus berupa method abstract.


3.  INNER CLASS

         Inner Class adalah suatu Class yang didefinisikan di dalam Class lain. Dengan kata lain, Inner Class adalah anggota (member) dari Class lain, sama halnya seperti variable dan method. Hal ini mengakibatkan instance dari Inner Class dapat mengakses /berbagi dengan instance dari outer Class-nya. Instance dari Inner Class dapat mengakses semua member dari outer Class-nya, bahkan yang private.




contoh dari Abstract class, interface, inner class :


A.  Membuat program MakhlukHidup.java



public abstract class MakhlukHidup {
     protected boolean BisaTerbang = false ;
     protected String Nama ;
     protected int JlhKaki;
   public MakhlukHidup(String Nama1, int JlhKaki1, boolean BisaTerbang1) {
                this.Nama=Nama1;
                this.JlhKaki=JlhKaki1;
                this.BisaTerbang=BisaTerbang1;
   }
   abstract void bernafas ();
  
   public void status () {
                System.out.println("Nama : "+Nama);
                System.out.println("Jumlah kaki  : "+JlhKaki);
                System.out.println("Bisa Terbang : "+BisaTerbang);
  }
 }


B. Membuat Program Manusia.java
 
class Manusia extends MakhlukHidup {
                Manusia (String Nama) {
                                super(Nama,2,false);
                }
                public void bernafas () {
                                System.out.println( Nama +"  bernafas dengan menghirup O2");
                }
                public static void main (String []args) {
                                Manusia m=new Manusia ("Eka Angelina");
                                m.status ();
                                m.bernafas ();
                }
 }

Hasilnya 



C. Membuat Progeam Tumbuhan.java


public class Tumbuhan extends MakhlukHidup {
                Tumbuhan (String Nama) {
                                super (Nama,0,false);
                }
                public void bernafas () {
                                System.out.println ( Nama +" bernafas dengan menghirup CO2");
                }
                public static void main (String []args) {
                                Tumbuhan t= new Tumbuhan ("Bayam");
                                t.status();
                                t.bernafas();
                }
}

Hasilnya


D.  Membuat Program Pekerjaan.java


interface Pekerjaan {
                public void namapekerjaan ();
                public void gaji();
}

E.  Membuat Program Saya.java
 
public class Saya extends Manusia implements Pekerjaan {
                 public Saya () {
                                                super ("Saya");
                                }
                                                public void namapekerjaan () {
                                                                 System.out.println ("Pekerjaan: Sekretaris");
                                }
                                                public void gaji () {
                                                                System.out.println ("Gaji : Rp. 3.000.000");
                                                }

                                                public static void main (String []args) {
                                                                                Saya s =new Saya ();
                                                                                s.status();
                                                                                s.bernafas();
                                                                                s.namapekerjaan();
                                                                                s.gaji();
                                }
}

Hasilnya

  F. Membuat Program JantungManusia.java

public class Orang {

                private int jumlahkaki=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...deg....");

                }

                public void istirahat () {
                                System.out.println ("Silangkan ke "+jumlahkaki+" kaki.");
                                tahanNafas();
}
}

}


public class JantungManusia{
                public static void main (String[]args) {
                                Orang o=new Orang();
                                Orang.Jantung p= o.new Jantung();
                                o.dengarBunyiJantung();
                                p.istirahat();
                }
}


Hasilnya