Tugas 13 - Alpro 2 - Si UNIPDU

 Interface Java


Pengertian Interface

Dalam OOP (Object Oriented Programming), memungkinkan developer dapat membuat method yang sifatnya abstrak, atau belum terdefinisikan detilnya, di mana tujuannya adalah untuk menyederhanakan ide solusi dari permasalahan. Melalui konsep ini, kita bisa memikirkan secara global terlebih dahulu struktur dan karakteristik dari objek, barulah kemudian dipikirkan detilnya.

Keberadaan method abstrak bisa terdapat dalam dua tempat, yaitu bisa terdapat dalam sebuah class, yang selanjutnya class tersebut disebut dengan class abstrak, dan juga bisa terdapat dalam sebuah interface.

Jadi, apa perbedaan dari kedua jenis class tersebut?

Perbedaan Class Jenis Abstrak dan Interface

Perbedaan dari keduanya adalah pada implementasinya. Pada class abstrak implementasinya hanya bisa di dalam pewarisan(inheritence), artinya semua method-method yang masih abstrak milik class abstrak hanya bisa diimplementasikan di subclass nya. Adapun pada interface, tidak. Method abstrak di dalam interface bisa diimplementasikan pada sembarang class.

Masih bingung? Berikut contoh code penerapannya

public interface ProjectInterface {

    // ini konstanta
    public int MYCONST = 3;
    
    // ini method abstrak
    public void myMethod1();
    public void myMethod2();
}

Interface ProjectInterface di atas terdiri dari sebuah konstanta yaitu MYCONST yang nilainya sudah ditentukan, serta beberapa method yang bersifat abstrak yaitu myMethod1() dan myMethod2().

Setelah sebuah interface terdefinisikan seperti di atas, nantinya setiap class yang mengimplementasikan interface tersebut WAJIB untuk mengoverriding dan menjabarkan detil setiap method yang masih abstrak milik interface. Berikut ini adalah contohnya:

public class MyClass implements ProjectInterface {

    @Override
    public void myMethod1() {
        System.out.println("Hello");
    }

    @Override
    public void myMethod2() {
        System.out.println("Hello Juga");
    }
}

Class MyClass di atas mengimplementasikan interface ProjectInterface, oleh karenanya di dalam method tersebut harus ada method yang mengoverriding (@Override) dan menjabarkan apa yang harus dilakukan di kedua method yang masih abstrak milik interface.

Praktik Implementasi Interface di Java

Untuk menambah pemahaman tentang Interface, berikut dibawah ini ada project buatan saya, membuat source code menampilkan aplikasi top up sederhana. Code bisa dicoba sesuka hati dan bisa kalian ubah. Selamat mencoba.

1. OMInterface (Class untuk Interface)

package OMoneyApps;
/**
 *
 * @author Aditya Candra
 * Search me on Youtube Candra Score
 */
public interface OMInterface {
    
    boolean LOGIN_APP = true;
    boolean MISS_LOGIN = false;
    
    void Login();
    void Logout();
    void checkMoney();
    void Topup();
    void getMoney();
    void Buy();
}
2. Class OMUsers (Superclass)

package OMoneyApps;
/**
 *
 * @author Aditya Candra
 */
public class OMUsers {
    private final OMInterface user;
    
    public OMUsers(OMInterface user){
        this.user = user;
    }
    
    void enterToApp(){
        this.user.Login();
    }
    
    void outFromApp(){
        this.user.Logout();
    }
    
    void checkMoneytoApp(){
        this.user.checkMoney();
    }
    
    void topupMoney(){
        this.user.Topup();
    }
    
    void withdrawMoney(){
        this.user.getMoney();
    }
    
    void BuyStuff(){
        this.user.Buy();
    }

    boolean equalsIgnoreCase(String string) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
3. Class OMProcess (Subclass untuk Implementasi Interface)

package OMoneyApps;
import java.util.Scanner;
/**
 *
 * @author Aditya Candra
 */
public class OMProcess implements OMInterface {
    
    // Atributte
    private int money, topup, take, pay;
    private String barang, penerima;
    private boolean login, account;
    
    // Scanner
    Scanner input = new Scanner(System.in);
    
    // Constructor
    public OMProcess(int money, int topup, int take, int pay){
        this.money = money;
        this.topup = topup;
        this.take = take;
        this.pay = pay;
    }

    OMProcess(){
    // Constructor Utama
    }
    
    @Override
    public void Login(){
        login = true;
        System.out.println("Succesfully login to account..");
        System.out.println("\n");
        System.out.println("SELAMAT DATANG DI O-MoneyApp");
        System.out.println("Aplikasi Top up, Bayar termudah dan tercepat ;)");
    }
    
    @Override
    public void Logout(){
        login = false;
        System.out.println("Anda Telah Keluar");
    }
    
    @Override
    public void checkMoney(){
        if(login){
            if(login == LOGIN_APP){
                System.out.println("Saldo awal anda adalah : Rp." +money);
                System.out.println("\n");
            } else {
                money += 0;
                System.out.println("Silahkan Isi Saldo Anda");
            }
        } else {
            System.out.println("Silahkan Login Dulu :)");
        }
    }
    
    @Override
    public void Topup(){
        if(login){
            if(login == LOGIN_APP){
                System.out.println("Masukkan Nominal Uang :");
                topup = input.nextInt();
                money = topup+money;
                System.out.println("\n");
                System.out.println("Saldo saat ini adalah : Rp." +money);
                System.out.println("\n");
            } else {
                money += 0;
                System.out.println("Saldo Yang Anda Masukkan 0");
            }
        } else {
            System.out.println("Silahkan Login Dulu :)");
        }
    }
    
    @Override
    public void getMoney(){
        if(login){
            if(login == LOGIN_APP){
                System.out.println("Masukkan Nominal Uang Yang Diambil :");
                take = input.nextInt();
                if(money <= take){
                    System.out.println("Maaf Saldo Anda Kurang!!");
                } else money = money-take;
                    System.out.println("\n");
                    System.out.println("Saldo saat ini adalah : Rp." +money);
                    System.out.println("\n");
            } else {
                money = 0;
                System.out.println("Saldo yang anda masukkan 0");
            }
        } else {
            System.out.println("Silahkan Login Dulu :)");
        }
    }
    
    @Override
    public void Buy(){
        if(login){
            if(login == LOGIN_APP){
                System.out.println("Masukkan Nama Barang :");
                barang = input.next();
                System.out.println("Masukkan Tagihan :");
                pay = input.nextInt();
                if(money <= pay){
                    System.out.println("Maaf Saldo Anda Kurang!!");
                } else money = money-pay;
                    System.out.println("Nama Barang : " +barang);
                    System.out.println("Jumlah Bayar : Rp." +pay);
                    System.out.println("\n");
                    System.out.println("Saldo saat ini adalah: Rp." +money);
                    System.out.println("\n");
            } else {
                money += 0;
                System.out.println("Silahkan bayar tagihan");
            }
        } else {
            System.out.println("Silahkan Login Dulu :)");
        }
    }
}
4. Class OMmain (Main Class)

package OMoneyApps;
import java.util.Scanner;
/**
 *
 * @author Aditya Candra
 * Search me on Youtube Candra Score
 */
public class OMmain {
    public static void main(String args[]){
    // 
    OMInterface redmi7a = new OMProcess();
    
    // Object for user
    OMUsers Aditya = new OMUsers(redmi7a);
    
    // Result for login
    Aditya.enterToApp();
    
    // Scanner
    Scanner set = new Scanner(System.in);
    
    String action;
    while(true){
            System.out.println("==== O-Money Apps Menu ====");
            System.out.println("[1] Login");
            System.out.println("[2] Cek Saldo");
            System.out.println("[3] Top-up O Money");
            System.out.println("[4] Ambil Uang");
            System.out.println("[5] Bayar Tagihan");
            System.out.println("[6] Logout");
            System.out.println("[0] Quit");
            System.out.println("--------------------------");
            action = set.nextLine();
            
            if(action.equalsIgnoreCase("1")){
                Aditya.enterToApp();
            } else if(action.equalsIgnoreCase("2")){
                Aditya.checkMoneytoApp();
            } else if(action.equalsIgnoreCase("3")){
                Aditya.topupMoney();
            } else if(action.equalsIgnoreCase("4")){
                Aditya.withdrawMoney();
            } else if(action.equalsIgnoreCase("5")){
                Aditya.BuyStuff();
            } else if(action.equalsIgnoreCase("6")){
                Aditya.outFromApp();
            } else if(action.equalsIgnoreCase("0")){
                System.exit(0);
            } else {
                System.out.println("You pick a wrong number, fool!");
            }
        }
    }
}
5. Bagian Output

1. Menampilkan Menu Awal Aplikasi Top up Sederhana











2. Menampilkan Proses Top up













3. Menampilkan Proses Cek Saldo











4. Menampilkan Proses Ambil Uang














5. Menampilkan Proses Bayar Tagihan

Komentar

Postingan populer dari blog ini

Tugas 13 - Alpro 1 - SI UNIPDU