Tugas 12 - Alpro 2 - Si UNIPDU

Class Abstrak


Pengertian Class Abstrak

Kelas abstrak atau abstract class adalah adalah kelas yang memiliki kata kunci yang diawali abstract.

Kelas harus diawali dengan abstrak jika memiliki satu atau lebih metode yang menggynakan kata kunci abstrak. Metode abstrak hanya dideklarasikan tetapi tidak bisa diimplementasikan. Kelas abstrak tidak dapat dibuat instansinya tetapi dapat diwariskan oleh kelas lain.

Lalu, apa fungsi abstrak?

Abstraksi adalah proses menyembunyikan detail implementasi dan hanya menampilkan fungsionalitas kepada pengguna. Cara lainnya, hal ini hanya menampilkan hal-hal penting kepada pengguna dan menyembunyikan detail internal.

Kita tidak tahu proses internal tentang pengiriman pesan. Abstraksi memungkinkan kita fokus pada apa yang dilakukan objek alih-alih bagaimana melakukannya.

Bagaimana Cara Mencapai Abstraksi

Setidaknya, ada dua cara untuk mencapai abstraksi di Java;

1. Kelas Abstrak (0 - 100%)
2. Interface (100%)

Kemudian ada beberapa hal penting yang perlu kita ingat ketika menggunakan abstrak.
  1. Abstract class harus dideklarasikan dengan kata kunci abstrak.
  2. Abstract class dapat memiliki metode abstrak dan non-abstrak.
  3. Abstract class tidak bisa dipakai.
  4. Abstract class dapat memiliki konstruktor dan metode statis juga.
  5. Abstract class dapat memiliki metode akhir yang akan memaksa subclass untuk tidak mengubah isi metode.
Contoh penggunaannya kurang lebih seperti dibawah ini
public abstract class abstractClass { 
    abstract void abstractMethod(); 
    void concreteMethod() { // concrete methods masih diperbolehkan dalam kelas abstract  
        System.out.println("ini merupakan concrete method."); 
    } 
}

Contoh Source Code Menggunakan Class Abstrak

Biar lebih paham lagi, dibawah ini saya berikan project internet cafe penggunaan class Abstract buatan saya untuk dicoba coba, anda bebas merubah sesuka hati.

1. CafeBilling (Super class)
package Ozen.net;

/**
 *
 * @author Aditya Candra
 * Search me on Youtube Candra Score
 */
public abstract class CafeBilling {
    
    String Computer;
    
    void setComputer(String computer){
        this.Computer = computer;
    }
    
    String getComputer(){
        return this.Computer;
    }
    
    abstract String getBilling();
}
2. normalComp (Subclass)

package Ozen.net;

/**
 *
 * @author Aditya Candra
 */
public class normalComp extends CafeBilling {
    private final String computer;
    private final String price;
    private final double bill;
    
    public normalComp(String komputer, String harga, double bill){
        this.computer = komputer;
        this.price = harga;
        this.bill = bill;
    }
    
    public String bill(){
        String hargaBilling;
        if(bill >= 13.000)
            hargaBilling = "4 jam";
        else if(bill >= 10.000)
            hargaBilling = "3 jam";
        else if(bill >= 6.000)
            hargaBilling = "2 jam";
        else if(bill >= 3.000)
            hargaBilling = "1 jam";
        else
            hargaBilling = "Masukkan harga billing!";
        return hargaBilling;
    }
    
    @Override
    String getBilling(){
        System.out.println("Komputer : " +this.computer);
        System.out.println("Harga : " +this.price);
        System.out.println("Waktu : " +bill());
        return computer;
    }
}
3. VIPComp (Subclass)

package Ozen.net;

/**
 *
 * @author Aditya Candra
 */
public class VIPComp extends CafeBilling{
    private final String computer;
    private final String price;
    private final double bill;
    
    public VIPComp(String komputer, String harga, double bill){
        this.computer = komputer;
        this.price = harga;
        this.bill = bill;
    }
    
    public String bill(){
        String hargaBilling;
        if(bill >= 17.000)
            hargaBilling = "4 jam";
        else if(bill >= 13.000)
            hargaBilling = "3 jam";
        else if(bill >= 7.000)
            hargaBilling = "2 jam";
        else if(bill >= 4.000)
            hargaBilling = "1 jam";
        else
            hargaBilling = "Masukkan harga billing!";
        return hargaBilling;
    }
    
    @Override
    String getBilling(){
        System.out.println("Komputer : " +this.computer);
        System.out.println("Harga : " +this.price);
        System.out.println("Waktu : " +bill());
        return computer;
    }
}
4. MainCafeBilling (Main class)

package Ozen.net;

/**
 *
 * @author Aditya Candra
 * Search me on Youtube Candra Score
 */
public class MainCafeBilling {
    public static void main(String args[]){
        
        // Tempat untuk memasukkan tarif normal
        CafeBilling normal_computer = new normalComp("Komputer A", "Rp 10.000", 10.000);
        
        System.out.println("===================================");
        System.out.println("|      OZEN.NET SMART BILLING     |");
        System.out.println("===================================");
        System.out.println("PEMBAYARAN BILLING TARIF NORMAL");
        normal_computer.getBilling();
        System.out.println("Mabar & Enjoy it");
        
        // Tempat untuk memasukkan tarif VIP
        CafeBilling vip_computer = new VIPComp("Komputer C", "Rp 7.000", 7.000);
        
        System.out.println();
        System.out.println("-----------------------------------"); // Batas
        System.out.println();
        
        System.out.println("===================================");
        System.out.println("|      OZEN.NET SMART BILLING     |");
        System.out.println("===================================");
        System.out.println("PEMBAYARAN BILLING TARIF VIP");
        vip_computer.getBilling();
        System.out.println("PC kuat, tak kuatir ngelag.. Enjoy it");
    }
}
5. Output


















Referensi

https://codekey.id/java/abstract-class-java/#:~:text=Abstract%20Class%20Java%20atau%20Kelas,hanya%20dideklarasikan%20tetapi%20tidak%20diimplementasikan.

Komentar

Postingan populer dari blog ini

Tugas 13 - Alpro 1 - SI UNIPDU