Tugas 13 - Alpro 2 - Si UNIPDU
Interface Java
Pengertian Interface
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"); } }
Praktik Implementasi Interface di Java
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();
}
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.
}
}
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 :)");
}
}
}
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!");
}
}
}
}
Komentar
Posting Komentar