Sabtu, 18 November 2017

Abstract class, Concrete class, dan Interface

(PBO 2017,Teknik Informatika UTM)
·       
·         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.

·         Concrete Class

            Concrete Class merupakan class yang bisa di instansiasikan atau bisa dibuat objeknya. Conrete class bisa didefinisikan class yang nyata, dapat membentuk atau instansiasi object. Object hanya bisa dibuat dari no-abstract class (consrete class). Selain itu, juga dapat menurunkan implementasi dari super class dan sebagai base class pada hierarchical relationship yang juga dibutuhkan class lain untuk mewarisinya. Consrte class merupakan class paling ujung disetiap cabang sebuah pohon.

Program :
 
    abstract class AbstracClass {
    abstract protected String getValue();
    abstract protected String prefixValue (String previx);
        
    public void printOut (){
        System.out.println(this.getValue());
    }
        
}
class ConcreteClass1 extends AbstracClass{
    public String getValue() {
        return "ConcreteClass1";
    }
    public String prefixValue (String prefix) {
        return prefix + "ConcreteClass1";
    }
}

class ConcreteClass2 extends AbstracClass{
    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_"));
    }
} 
 Run :
ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2
·         Inheritance

       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 jika ingin mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance. Tipe data yang boleh pada interface hanya tipe data konstan. 
Beberapa perbedaan Interface dan Kelas Abstrak 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.

 Program :

package Hewan;
interface nama1{
    public void setNama(String nama);
    public String getNama();
}
interface makanan{
    public void setEat(String eat);
    public String getEat();
}
interface jalan{
    public void setBergerak(String bergerak);
    public String getBergerak();
}
class jalan_eat1 implements makanan{
    private String nama, eat, bergerak;
   
    public void setNama(String nama) {
        this.nama = nama;
    }
    public String getNama() {
        return nama;
    }
    public void setEat(String eat) {
        this.eat = eat;
    }
    public String getEat() {
        return eat;
    }
       
    public void setBergerak(String bergerak) {
        this.bergerak = bergerak;
    }
       
    public String getBergerak() {
        return bergerak;
    }
}

class jalan_eat2 implements makanan{
    private String nama, eat, bergerak;
   
    public void setNama(String nama) {
        this.nama = nama;
    }
    public String getNama() {
        return nama;
    }   
   
    public void setEat(String eat) {
        this.eat = eat;
    }
    public String getEat() {
        return eat;
    }
       
    public void setBergerak(String bergerak) {
        this.bergerak = bergerak;
    }
       
    public String getBergerak() {
        return bergerak;
    }
}
class Hewan {
    public static void main(String[] args) {
        jalan_eat1 hewan = new jalan_eat1();
        hewan.setNama("Sapi");
        hewan.setEat("Rumput");
        hewan.setBergerak("4 kaki");
       
       
       
        jalan_eat2 hewan2= new jalan_eat2();
        hewan2.setNama("Singa");
        hewan2.setEat("Daging");
        hewan2.setBergerak("4 kaki");
       
        System.out.println(hewan.getNama());
        System.out.println("makan " + hewan.getEat());
        System.out.println("berjalan dengan " + hewan.getBergerak());
       
        System.out.println("~~~~~~~~~~~~~~~~~");
       
        System.out.println(hewan2.getNama());
        System.out.println("makan " + hewan2.getEat());
        System.out.println("berjalan dengan " + hewan2.getBergerak());
    }

}

Run:
Sapi
makan Rumput
berjalan dengan 4 kaki
~~~~~~~~~~~~~~~~~
Singa
makan Daging
berjalan dengan 4 kaki

Kapan kita menggunakan class abstract dan Inheritance ?Menggunakan interface untuk mendefinisikan method standart yang sama dalam class – class yang berbeda , kita telah membuat kumpulan definisi method standar (abstrak), kita dapat menulis method tunggal (spesifik) untuk memanipulasi semua class – class yang mengimplementasikan interface tersebut.
Gunakan class abstract untuk mendefinisikan secara luas sifat – sifat dari class tertinggi dari hirarki OOP, dan gunakan sebclassnya (turunannya / child class) untuk melengkapi deskripsi method dari class abstract.

















Abstract class, Concrete class, dan Interface

(PBO 2017,Teknik Informatika UTM) ·         ·          Abstract class             Abstract class adalah kelas yang terletak pada...

Popular Posts