===> INTERFACE <=====
public interface interface_project <AnyType> {
void enqueue(AnyType data); //menambah data
AnyType dequeue(); //melihat data terdepan kemudian menghapus
AnyType getFront(); //melihat data terdepan
boolean isEmpty(); //memeriksa apakah queue kosong
boolean isFull(); //memeriksa apakah queue penuh
void makeEmpty(); //mengkosongkan queue
}
+++++ IMPLEMENTS +++++
public class implementasi_project <AnyType> implements interface_project<AnyType>{
public int KAPASITAS_DEFAULT = 100;
private AnyType[] arraykita;
private int terpakai;
private int terdepan;
private int terbelakang;
public implementasi_project(){
arraykita = (AnyType[]) new Object[KAPASITAS_DEFAULT];
makeEmpty();
}
public void enqueue(AnyType data) {
if(isFull()){
//System.out.println("queue penuh, keluar dari aplikasi");
//System.exit(1);
perluasKapasitas();
}
this.terbelakang = penambah(this.terbelakang);
this.arraykita[this.terbelakang] = data;
this.terpakai++;
}
public AnyType dequeue() {
if(isEmpty()){
System.out.println("queue kosong, keluar dari aplikasi");
System.exit(1);
}
this.terpakai--;
AnyType tmp = this.arraykita[this.terdepan];
this.arraykita[this.terdepan] = null;
this.terdepan = penambah(this.terdepan);
return tmp;
}
public AnyType getFront() {
if(isEmpty()){
System.out.println("queue kosong, keluar dari aplikasi");
System.exit(1);
}
return this.arraykita[this.terdepan];
}
public boolean isEmpty() {
return this.terpakai == 0;
}
public boolean isFull() {
return this.terpakai == this.arraykita.length;
}
public void makeEmpty() {
this.terpakai = 0;
this.terdepan = 0;
this.terbelakang = -1;
}
public int kapasitas(){
return this.terpakai;
}
private int penambah(int awal){
if(++awal == this.arraykita.length)
awal = 0;
return awal;
}
private void perluasKapasitas(){
AnyType[] tmp = (AnyType[]) new Object[arraykita.length];
//for(int i=0; i<arraykita.length; i++)
// tmp[i] = arraykita[i];
//System.arraycopy(asal, idxasal, tujuan, idxtujuan, besararray);
System.arraycopy(arraykita, 0, tmp, 0, arraykita.length);
arraykita = (AnyType[]) new Object[arraykita.length+KAPASITAS_DEFAULT];
//for(int i=0; i<tmp.length; i++)
// arraykita[i] = tmp[i];
System.arraycopy(tmp, 0, arraykita, 0, tmp.length);
}
}
o0o0o0oo0o0 EXECUSI o0o0o0o00o0o0o0
import javax.swing.JOptionPane;
public class execusi_project {
private implementasi_project que= new implementasi_project();
private implementasi_project que1= new implementasi_project();
private int kapasitas=que.KAPASITAS_DEFAULT;
private String nama="";
private int jumlah=0;//jumlah pembelian awal = 0
private String isi1="";
private String isi_pilihan1(){
isi1="Antrian Minyak Tanah ( "+kapasitas+ " liter )\n"+
"1.Masukkan Data\n"+
"2.Panggil Antrian\n"+
"3.Keluar\n"+
"Masukkan pilihan : ";
return isi1;
}
public void pilihan1(){
do{
String x = JOptionPane.showInputDialog(isi_pilihan1());
boolean tree = true;
try{
if (x.equals("1"))
menu2();
else if (x.equals("2"))
menu3();
else if (x.equals("3"))
System.exit(1);
else {
JOptionPane.showMessageDialog(null,"Maaf Pilihan Anda tidak Ada");
}
tree = true;
}catch (Exception e){
}
tree = false;
} while (!true);
pilihan1();
JOptionPane.showMessageDialog(null, que.dequeue() + " "+ que1.dequeue());
pilihan1();
}
private void menu2(){
String x = JOptionPane.showInputDialog("Masukkan nama : " );
if (x.equals(""))
JOptionPane.showMessageDialog(null, "Nama harus diisi") ;
else
nama=x;
try {
do{
String y1 = JOptionPane.showInputDialog("Jumlah Pembelian : " );
jumlah=Integer.parseInt(y1);
if (jumlah > kapasitas)
JOptionPane.showMessageDialog(null, "Maaf Jumlah pembelian melebihi kapasitas tersedia") ;
}while (jumlah>kapasitas);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"maaf sistem tidak bisa di jalankan");
System.exit(1);
}
que.enqueue(nama);
que1.enqueue(jumlah);
kapasitas=kapasitas-jumlah;
System.out.println(nama);
System.out.println(jumlah);
pilihan1();
}
private void menu3(){
if (que.isEmpty())
JOptionPane.showMessageDialog(null, "Tidak ada lagi antrian") ;
else
{
String hasil="";
hasil="Nama Pembeli : "+ que.dequeue()+"\n"
+"Jumlah Pembelian : "+ que1.dequeue() ;
JOptionPane.showMessageDialog(null, hasil) ;
pilihan1();
}
}
}
##### execusi2 #######
public class Eksekusi2 {
public static void main(String args[]){//method eksekusi(tidk ada nilai kembalian)
execusi_project x= new execusi_project();//mengisikan data ke data baru
x.pilihan1();//memanggil data
}
}
0 komentar:
Posting Komentar