Jumat, 01 April 2016

Perbedaan Abstact Class dan Interface

Edit Posted by with No comments
Haloo, pada kali ini saya berkesempatan untuk memposting "Perbedaan Abstract Class dan Interface" serta menyelesaikan Tugas Akhir Algoritman dan Pemograman Lanjut di postingan ini juga. Sebelumnya, nama saya Nyoman Irvianti Windaputri dari kelas D3MI3904 Telkom University. Langsung saja pada penjelasan Abstract Class dan Interface;

  · Abstract Class merupakan Class yang khusus dibuat untuk keperluan inheritance. Tujuan dari pembuatan abstract class ini ialah untuk membuat definisi umum bagi class-class yang akan menjadi turunan darinya. Abstract Class tidak bisa diinstansiasi. Abstract method tidak mempunyai implementasi, sehingga penulisannya dilakukan hanya dengan mengikutkan semikolon, bukan blok method {} seperti biasanya. Abstract method ini bisa digunakan oleh Class turunannya dengan melakukan override.
  · Sedangkan interface secara filosofis lebih berfungsi sebagai antarmka yang membentuk komunikasi dengan code lain. Misalnya membentuk hubungan antara sebuah object dengan object yang lain atau hubungan antara object sebagai penyedia dengan code pengguna. Karena itulah interface ini banyak digunakan dalam dunia design pattern. Sebab kebanyakan dari design pattern ini menekankan hubungan antar object.

Terdapat keyword – keyword yang ada dalam abstract class dan interface, yaitu;

Abstract method adalah Abstract method adalah method yang tidak memiliki  body (hanya  deklarasi method).
Overriding  adalah memiliki method yang namanya sama namun berbeda class. Method                      pertama adalah method yang berasal dari class induk dengan parameter yang  sama dengan method pada class anak.
Implements adalah sama dengan extends tapi ini digunakan nya di interface. Mengimplementasikan interface serupa dengan menuruni dari class kecuali, tetapi perlu mengimplementasikan  semua metode yang didefinisikan di  interface.
Perent class adalah induk dari si class atau yang menjadi orang tuanya.
Private adalah Kata kunci yang digunakan dalam pembagian lapangan, metode, atau kelas batin,anggota swasta hanya dapat diakses oleh anggota lain dari kelas mereka    sendiri.
Public adalah kata kunci yang digunakan dalam deklarasi metode, kelas, atau bidang, kelas umum, metode dan bidang dapat diakses oleh anggota dari setiap kelas.
This adalah yang Digunakan untuk mewakili sebuah instance dari kelas dimana ia muncul.This dapat digunakan untuk mengakses anggota kelas sebagai referensi. This juga     kata kunci digunakan untuk meneruskan panggilan dari satu konstuktor dikelas untuk   konstuktor lain dikelas yang sama.
Extends adalah yang Digunakan dalm sebuah deklarasi kelas untuk menetukan superclass,         digunakan dalam deklarasi interface nutuk menentukan satu atau lebih         superinterface.
Protected adalah Kata kunci yangdigunakan dalam pembagian lapangan, metode,atau kelas     batin,anggota yang dilindungi hanya dapat diakse oleh anggota kelas mereka sendiri,     bahwa kelas itu subclass atau kelas yang sama.

Perbedaan:
Abstract Class
Interface
Bisa berisi abstract dan non-abstract method.
Hanya boleh berisi abstract method.
Kita harus menuliskan sendiri modifiernya.
Kita tidak perlu susah2 menulis public abstract di depan nama method. Karena secara implisit, modifier untuk method di interface adalah public dan abstract.
Bisa mendeklarasikan constant dan instance variable.
Hanya bisa mendeklarasikan constant.  Secara implisit variable yang dideklarasikan di interface bersifat public, static dan final.
Method boleh bersifat static.
Method tidak boleh bersifat static.
Method boleh bersifat final.
Method tidak boleh bersifat final.
Suatu abstact class hanya bisa meng-extend satu abstract class lainnya.
Suatu interface bisa meng-extend  satu atau lebih interface lainnya.
Suatu abstract class hanya bisa meng-extend satu abstract class dan meng-implement beberapa interface.
Suatu interface hanya bisa meng-extend interface lainnya. Dan tidak bisa meng-implement class atau interface lainnya.

Nah itu dia beberapa penjelasan tentang Abstract Class dan Interface dan perbedaannya, saya lanjut saja ke Pengamatan untuk Tugas Akhir Algoritma dan Pemograman Lanjut

Pengamatan 1
1.  Bolehkah ditambahkan body method “{statement1; statement1}” pada method getValue ataupun method prefeix pada classAbstract abstractClass ? jelaskan!
Jawaban: Tidak boleh, karena pada abstractClass  tidak boleh mempunyai body method.
2. Kembalikan program seperti semula, jelaskan error apa yang terjadi apabila method getValue() pada class ConcreteClass1 di hapus!
Jawaban: Error, yang terjadi jika method getValue dihapus ialah tidak ada method dan tidak ada override.
3. Kembalikan program seperti semula, selanjutnya perhatikan perbedaan hak akses method getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksudnya!
Jawaban: Pada classConcrete1 terdapat protetcted yang hanya bisa di akses oleh kelas lain yang berada dalam satu package, sedangkan classConcrete2 terdapat public yang hanya bisa diakses atau dipanggil dari luar kelas di mana ia dideklarasikan.
4. Buatlah abstract method yang bernama getValue2 pada class ConcreteClass1! Compile dan mengapa terjadi error?
Jawaban: Terjadi error, karena tidak ada method body / tidak adanya deklarasi abstract pada protected String pada getvalue2.
5. Ikuti soal nomor 4, silahkan ubah class ConcreteClass1 menjadi abstract. Selajutnya jelaskan mengapa terjadi error?
Jawaban: Terjadi error, karena ConcreteClass1 pada abstractclass nya tidak bisa di intansiasi.
6. Dengan mengikuti struktur kode program tadi serta ditambahkan satu abstract method bernama “gabung” TANPA PARAMETER pada parent class, bagaimana outputnya?




     Output:


         Pengamatan 2 

         1.      Compile kode program dan jelaskan sebab error yang terjadi! 
        Jawaban: ClassMobil2 bukan class abstract dan juga tidak ada Override method getMerk() diclassMobil2
         2.      Tambahkan method yang diperlukan untuk mengatasi error yang terjadi (No. 1)
            Jawaban: 




      OUTPUT:

    
    

     3.       Perhatikan soal 1 (abstract) dan soal 2 ini (interface) dan lakukan poin-poin berikut:
·         Apa yang terjadi apabila ditambahkan method biasa yang mengandungbody "{}" pada interface Mobil? Jelaskan!
·         Jelaskan perbedaan body program antara class abstract dan interface!
·         Jelaskan perbedaan penggunaan extends antara soal 1 dan soal 2
Jawaban:
1.   Programnya error karena pada  class interface tidak diperbolehkan memakai method biasa, harus memakai method abstract.
2.  Body Program abstract itu dalam penurunan sifat nya memakai extends dan di Interface class memakai implements.
3. Pada soal no.1 penggunaan extendsnya  menunjukan bahwa abstractClass memiliki child. Tapi pada soal no.2 extendsnya menunjukan bahwa interfacenya yang memiliki child.
---------------------------------------------------------------------------------------
Demikian Penjelasan tentang Perbedaan Abstract Class dan Interface beserta Tugas Akhir ALPRO Lanjut saya, mohon maaf bila terdapat kesalahan. Terimakasih sudah membaca!

0 komentar:

Posting Komentar