Jumat, 01 April 2016

1.Apa saja keyword yang terdapat dalam interface?
2.Apa saja keyword yang terdapat dalam abstract class?
3.Bagaimana penggunaan abstract class?

     Sebelum lanjut ke materi, saya akan menjelaskan terlebih dahulu dari pertanyaan-pertanyaan diatas.
1. Keyword yang terdapat dalam interface yaitu abstract dan implements.
    
   Nah, setelah kita mengetahui apa saja keyword yang terdapat dalam interface kita lanjut ke keyword yang terdapat dalam abstract class ya sesuai dengan pertanyaan di nomer 2.

2. Keyword yang terdapat dalam abstract class yaitu keyword abstract.
3.
      Hanya class abstract yang memiliki method abstract
      Method abstract tidak memiliki tubuh method(body)

      Method abstract harus di override oleh subclass

Untuk lebih jelasnya, saya akan menjelaskan materi lengkapnya sesuai tema yaitu ”PERBEDAAN INTERFACE DENGAN ABSTRACT CLASS”.

ABSTRACT CLASS
Abstract class merupakan suatu class yang terdapat dalam java yang merupakan turunan dari class super ke sub class. Abstract class juga merupakan class khusus dari inheritance. Suatu abstract class tidak dapat diinstansiasi serta tidak dapat digunakan untuk membuat sebuah objek.
Sifat:
      Dapat diturunkan ke dalam bentuk kelas konkret
      Dapat  diturunkan ke kelas abstrak selanjutnya
       menggunakan keyword abstract
INTERFACE
Mengapa kita membutuhkan suatu interface?
Interface dalam bahasa pemrograman java dapat menjadi solusi dalam sebuah permasalahan. Dimana, sebuah interface dapat menjadi pemecah masalah yang rumit serta interface mampu menjawab segala kekurangan  yang terdapat dalam inheritance. Interface dapat menjawab semua kebutuhan kita karena sebuah interface bersifat multiple.

Nah, ini dia pengertiannya.
          
  Interface adalah sekumpulan method yang hanya memuat sturktur-struktur method saja, tipe datanya konstan(tetap) serta digunakan untuk menyatakan spesifikasi fungsional dari beberapa kelas.
Cirri-ciri dari sebuah interface:
1. Method interface tidak mempunyai body method(tidak memiliki tubuh)
2. sebuah interface tidak dapat membuat objek baru.
3. Sebuah interface tidak memiliki kode impelementasi.


 Aturan umum untuk mendeklarasikan sebuah interface:
1. Modifier yang digunakan hanyalah satu yaitu public.
2. Mendeklarasikan sebuah variable dalam interface haruslah diberikan nilai karena bersifat static final.
3. Menggunakan keywords implements.
4. Sebuah class yang mengimplements sebuah interface, harus meng-override method.

Setelah kita mengetahui Interface dan abstract class secara detail. Selanjutnya saya akan menjelaskan perbedaan dari keduanya.

              
                    PERBEDAAN ABSTACT CLASS DAN INTERFACE DALAM JAVA

Abstract Class :
1. Suatu abstract class hanya dapat digunakan sebagai superclass
2. Methodnya concrete
Interface :
1. Seluruh method haruslah method abstract
2. Tipe datanya konstan atau tetap.

abstract class AbstractClass
{
    // Force Extending class to define this method
    abstract protected String getValue();
    abstract protected String prefixValue(String prefix);

    // Common method
    public void printOut() {
        System.out.println( this.getValue() );
    }
}

class ConcreteClass1 extends AbstractClass
{
protected String getValue() {
        return "ConcreteClass1";
    }

    public String prefixValue(String prefix) {
return prefix + "ConcreteClass1";
    }
}

class ConcreteClass2 extends AbstractClass
{
    public String getValue() {
        return "ConcreteClass2";
    }

    public String prefixValue(String prefix) {
return prefix + "ConcreteClass2";
    }
}

class Main
{
public static void main(String args[]) {
ConcreteClass1 class1 = new ConcreteClass1();
class1.printOut();
System.out.println( class1.prefixValue("FOO_") );
ConcreteClass2 class2 = new ConcreteClass2();
class2.printOut();
System.out.println( class2.prefixValue("FOO_") );
}
}

Pengamatan1 :

1. Bolehkah ditambahkan body "{statement1; statement1;}" pada method getValue ataupun method         prefixValue pada class abstract AbstractClass? Jelaskan!

Jawab : Diperbolehkan, karena penambahan statement1; statement1; tidak mempengaruhi suatu
             aturan yang dimiliki abstract class

2. Kembalikan program seperti semula, jelaskan error apa yang terjadi apabila method
    getValue() pada class ConcreteClass1 di hapus!
Jawab : Concrete class tidak abstract dan tidak ada suatu override class di concrete class yang
              mampu meng extends abstarct class

3. Kembalikan program seperti semula, selanjutnya perhatikan perbedaan hak akses method                     getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksudnya!
Jawab : Di Concreteclass1 hak akses method getValue merupakan suatu protected sedangkan hak
          
  akses method getvalue di concreteclass2 merupakan suatu public

4. Buatlah abstract method yang bernama getValue2 pada class ConcreteClass1! Compile dan
    mengapa terjadi error?
Jawab : Suatu file yang tidak dapat mencapai hasil akhir dan bersifat sementara

5. Ikuti soal nomor 4, silahkan ubah class ConcreteClass1 menjadi abstract. Selajutnya jelaskan
    mengapa terjadi error?
Jawab : Suatu file dengan nama abstract tidak dapat ditemukan pada file java

6. Dengan mengikuti struktur kode program di atas serta ditambahkan satu abstract method bernama "gabung" TANPA PARAMETER pada parent class, hasilkan output berikut.

interface Mobil
{
    public void setMerk(String merk);
    public String getMerk();
}

interface Mesin extends Mobil
{
    public void setNoMesin(String nomor_mesin);
public String getNoMesin();
}


// This will work
class Mobil1 implements Mesin
{
private String merk, nomor_mesin;
    public void setMerk(String merk){
this.merk = merk;
    }
public String getMerk(){
return merk;
    }
    public void setNoMesin(String nomor_mesin){
this.nomor_mesin = nomor_mesin;
    }
public String getNoMesin(){
return nomor_mesin;
    }
}

// This will not work and result in a fatal error
class Mobil2 implements Mesin
{
private String nomor_mesin;
public void setNoMesin(String nomor_mesin){
this.nomor_mesin = nomor_mesin;
    }
public String getNoMesin(){
return nomor_mesin;
    }

class Main{
public static void main(String[] args){
Mobil1 m1 = new Mobil1();
m1.setMerk("Ford");
m1.setNoMesin("01010");
System.out.println( m1.getMerk() );
System.out.println( m1.getNoMesin() );
}
}

Pengamatan 2:

1. Compile kode program diatas dan jelaskan sebab error yang terjadi!
          Jawab : Tidak ditemukannya simbol:
                       Mobil m1 = new mobill(); yang berlokasi di class main
2. Tambahkan method yang diperlukan untuk mengatasi error yang terjadi (No. 1)!
3. Perhatikan soal 1 (abstract) dan soal 2 ini (interface) dan lakukan poin-poin berikut:
            - Apa yang terjadi apabila ditambahkan method biasa yang mengandung body "{}" pada
               interface Mobil? Jelaskan!
            
             - Jelaskan perbedaan body program antara class abstract dan interface!
          
               jawab :
               pada abstract class tidak terdapat badn method namun hanya mendeklarasikan isi
methodnya saja, sedangkan pada interface, interface tidak mempunyai statement serta
memiliki method yang kosong.
            - Jelaskan perbedaan penggunaan extends antara soal 1 dan soal 2!
           




Tidak ada komentar:

Posting Komentar