Sabtu, 18 November 2017

Abstract Class & Interface

PBO 2017, Teknik Informatika UTM


Berikut adalah Gambar Tree dari program Abstract class & interface.



Abstract Class

Abstract class merupakan salah satu konsep class dalam pemrograman Java. Abstract class memiliki fungsi yang sama dengan superclass yaitu untuk diimplementasikan ke class turunan / subclass, tetapi kita tidak bisa bisa membuat objek baru dari class abstract dan method pada class abstract methodnya tidak memiliki body (hanya nama dan parameter), berbeda dengan superclass yang bisa membuat objek baru dari superclass tersebut.

Syntax Abstract Class

abstract class <nama class>{
 
    //some code or method
    abstract <nama method>();
}

Contoh Abstract Class

abstract class Kendaraan {
 
    //abstract method     
    abstract void warna(String color);
    abstract void idNo(String id_no);
    abstract void owner(String owner);
}

Penjelasan Contoh

Dari contoh di atas Kendaraan sebagai nama dari class abstract dan memiliki tiga buah abstract method yaitu warna(),idNo(),owner(). Lihat pada ketiga method tersebut tidak memiliki body / tidak ada statement didalamnya, hanya ada nama dan parameter.

Concrete Class

Concrete Class adalah suatu class turunan / subclass yang mengimplementasi / mewarisi (extends) method dari class Abstract. Fungsi concrete class adalah untuk meng-overidding abstract method dari abstrac class, karena jika tanpa overidding akan terjadi error.

Syntax Concrete Class

class <nama class> extends <nama abstract class>{

     //some code or method here
 
     //override abstract method
     <nama method abstract class>(){
     //some code here
    }
}

Contoh Concrete Class

class Motor extends Kendaraan {

    void motorType(String type) {
        System.out.println("Type: "+type);
    }
 
    //method overidding dari abstract class Kendaraan
    void warna(String warna) {
        System.out.println("Warna: "+warna);
    }
 
    //method overidding dari abstract class Kendaraan
    void idNo(String id_no) {
        System.out.println("ID Number: "+id_no);
    }
 
    //method overidding dari abstract class Kendaraan
    void owner(String owner) {
        System.out.println("Owner: "+owner);
    }
}

Penjelasan Contoh

Dari contoh di atas motor sebagai nama concrete class. Class motor ini mewarisi / extends (konsep inheritance Java) dari abstract class Kendaraan. Dalam class motor terdapat empat method, tiga method diantaranya adalah overidding method dari class abstract Kendaraan dan satu method lagi adalah method milik class motor. Tiga abstract method warna(),idNo(),owner()yang tadinya tidak memiliki body / statement kini telah dioverdding.


Interface

Interface juga merupakan salah satu konsep class dalam pemrograman Java. Interface memiliki fungsi sebagai tempat menyimpan method kosong (tanpa body). Sama seperti Abstract class, interface juga hanya bisa diimplementasikan ke class lain dan diwariskan ke interface lain. Class yang mengimplementasi sebuah interface wajib untuk mengoveridding method - method kosong yang ada dan harus di set ke public.

Syntax Interface

interface <nama inteface>{
 
    //some attribut or method
 
    //void method
    <nama method>();
}

Contoh Interface

interface modifyKendaraan {
 
    //method kosong 
    void changeColor(String color);
    void changeEngineType(String engine);
    void upSpeed(int speed);
}

abstract class Kendaraan implements modifyKendaraan {
     
    void engineStatus() {
        System.out.println("Engine Status: Ready");
    }
 
    //overidding method dari interface modifyKendaraan
     public void changeWarna(String warna) {
        System.out.println("Warna was changed to: "+warna);
    }

    //overidding method dari interface modifyKendaraan
    public void changeEngineType(String engine) {
        System.out.println("Engine was changed to: "+engine);
    }
 
    //overidding method dari interface modifyKendaraan
    public void upSpeed(int speed) {
        System.out.println("Speed was up to: "+speed+" KM/H");
    }
 
    //abstract method
    abstract void warna(String warna);
    abstract void idNo(String id_no);
    abstract void owner(String owner);
}

Penjelasan Contoh

Dari contoh di atas modifyKendaraan sebagai nama dari interface dan memiliki tiga buah method kosong yaitu changeWarna(), changeEngineType(), upSpeed(). Lihat pada ketiga method tersebut tidak memiliki body / tidak ada statement didalamnya, hanya ada nama dan parameter.

Dari abstract class Kendaraan yang mengimplementasi kan interface modifyKendaraan terdapat overidding tiap method yang ada diinterface yaitu method changeWarna(), changeEngineType(), upSpeed()dan tiap method tersebut di set menjadi public (syarat menggunakan interface).

Contoh Implementasi sebuah program dengan konsep Abstract Class, Concrete Class dan Interface.

Program Kendaraan

Kode program:

//interface
interface modifyKendaraan {
 
    //method kosong 
    void changeWarna(String warna);
    void changeEngineType(String engine);
    void upSpeed(int speed);
}

//abstract class
abstract class Kendaraan implements modifyKendaraan {
     
    void engineStatus() {
        System.out.println("Engine Status: Ready");
    }
 
    //overidding method dari interface modifyKendaraan
    public void changeWarna(String warna) {
        System.out.println("Warna was changed to: "+warna);
    }
 
    //overidding method dari interface modifyKendaraan
    public void changeEngineType(String engine) {
        System.out.println("Engine was changed to: "+engine);
    }
 
    //overidding method dari interface modifyKendaraan
    public void upSpeed(int speed) {
        System.out.println("Speed was up to: "+speed+" KM/H");
    }
 
    //abstract method
    abstract void warna(String warna);
    abstract void idNo(String id_no);
    abstract void owner(String owner);
}

//concrete class
class motor extends Kendaraan {

    void motorType(String type) {
        System.out.println("Type: "+type);
    }
 
    //method overidding dari abstract class Kendaraan
    void warna(String warna) {
        System.out.println("Warna: "+warna);
    }
 
    //method overidding dari abstract class Kendaraan
    void idNo(String id_no) {
        System.out.println("ID Number: "+id_no);
    }
 
    //method overidding dari abstract class Kendaraan
    void (String owner) {
        System.out.println("Owner: "+owner);
    }
 
}

//subclass
class SupraX extends motor {
 
    void motorName(String name) {
        System.out.println("Car Name: "+name);
        }
    }

//main class
public class Main {
 
    //main program
    public static void main(String[] args) {
     
        Transportation newTransportation = new motor();
        motor newmotor = new SupraX();
        SupraX newSupraX = new SupraX();
     
        newmotor.motorType("SupraX");
     
        newSupraX.motorName("SupraX125");
     
        newKendaraan.owner("Eko");
        newKendaraan.warna("Hitam-Hijau");
        newKendaraan.idNo("181297");
        newKendaraan.engineStatus();
     
        System.out.println("\nModification\n");
     
        newKendaraan.changeWarna("Merah");
     
        newmotor.warna("Hijau");
        newmotor.changeEngineType("Honda");
     
        newSupraX.engineStatus();
        newSupraX.carType("SupraX");
        newSupraX.upSpeed(2000);

    }
}

Output Program

Type: SupraX
Warna Name: SupraX125
Owner: Eko
Warna: Hitam-Hijau
ID Number: 181297
Engine Status: Ready

Modification

Color was changed to: Merah
Color: Hijau
Engine was changed to: Honda
Engine Status: Ready
Type: SupraX
Speed was up to: 2000 KM/H

Penjelasan kode Program

Dari contoh program diatas terdapat sebuah interface bernama modifyKendaraan, abstract class Kendaraan, concrete class motor dan sub class SupraX.

Langsung menuju main program karena inti dari ketiga konsep ini digunakan terdapat dimain program. Kode Kendaraan newKendaraan = new Motor(); yang berarti membuat sebuah objek dari conrete class motor yang mengacu pada abstract class kendaraan, jadi objek  newKendaraan hanya bisa menggunakan method yang ada dalam abstract class Kendaraan. Berikut ini adalah kode pemanggilan method dari abstract class  Kendaraan, newKendaraan.owner("Eko");, newKendaraan.color("Hitam-Hijau");, newKendaraan.idNo("181297");, newKendaraan.engineStatus();. Kemudian ada kode motor newMotor = new SupraX(); yang berarti membuat sebuah objek dari sub class SupraX yang mengacu pada concrete class Motor, jadi objek  newmotor hanya bisa menggunakan method yang ada dalam concrete class Motor dan abstract class Kendaraan. Berikut ini adalah kode pemanggilan method dari concrete class  Motor, newMotor.motorType("SupraX");, newMotor.color("Hijau");.Lalu ada kode SupraX newSupraX = new SupraX(); yang berarti membuat sebuah objek dari sub class SupraX yang mengacu pada sub class SupraX, jadi objek  newSupraX hanya bisa menggunakan method yang ada dalam sub class SupraX, concrete classMotor dan abstract class Kendaraan. Berikut ini adalah kode pemanggilan method dari sub class SupraX, newSupraX.motorName("SupraX125");,newSupraX.engineStatus(); ,newSupraX.motorType("SupraX");

Lalu dimana peran interface modifyKendaraan ?
Terdapat kode newKendaraan.changeColor("Merah"); yang berarti objek newKendaraan memanggil method changeColor() dari interface modifyKendaraan yang telah dioeveridding diabstract class Kendaraan, hal ini bisa terjadi karena ada kode abstract class Kendaraan implements modifyKendaraan kunci dari penggunaan interface adalah kode implements. Hal ini juga berlaku bagi concrete class motor dan sub class SupraX, karena telah diwariskan dengan ada nya kode  class motor extends Kendaraan yang berarti concrete class motor mewarisi / memilki apa yang ada dalam abstract class Kendaraan dan class SupraX extends motor yang berarti sub class SupraX mewarisi / memilki apa yang ada dalam abstract class Kendaraan dan concrete class motor. Berikut contoh kode dari keduanya newCar.color("Hijau"); ,newmotor.changeEngineType("Honda");,newSupraX.engineStatus();,newSupraX.carType("SupraX");
,newSupraX.upSpeed(2000);

Kesimpulan

Abstract class digunakan ketika ingin membuat desain untuk mengelompokkan beberapa subclass dengan mengimplementasikan beberapa kode ke subclass - subclass tersebut
Syntax abstract class diawali dengan kata abstract
Terdapat abstract method / method tanpa bodydalam abstract class
Abstract class tidak bisa dibuat objek baru
Concrete class digunakan ketika ingin mengimplementasikan apa yang ada di dalam abstract class
Concrete class sama dengan subclass
Concrete class harus mengoveridding abstract method dari abstract class
Interface digunakan ketika ingin membuat aturan untuk class lain yang saling berhubungan dengan konsep inheritance
Syntax interface diawali dengan kata interface
Terdapat method kosong / method tanpa body pada interface
Overidding method dari interface harus di set ke public

Terimakasih, Semoga Bermanfaat, Mohon maaf bila ada salah kata.


Tidak ada komentar:

Posting Komentar

Mencari bilangan prima menggunakan Python 3

Universitas Trunojoyo Madura, 15 oktober 2018, python 3 n = int(input("berapa banyak bilangan prima yang ingin dikeluarkan = "...