👔Praktikum 1
Pengantar
Pada percobaan ini, kita akan membuat program yang mengilustrasikan tumpukan pakaian yang disimpan ke dalam stack. Karena sebuah pakaian mempunyai beberapa informasi, maka implementasi Stack dilakukan dengan menggunakan array of object untuk mewakili setiap elemennya.
Untuk kebutuhan praktikum, perhatikan class diagram Pakaian
dan Stack
berikut ini. Pakaian
merupakan representasi dari objek pakaian yang akan disusun dengan menggunakan konsep Stack
.


Langkah Percobaan
Buatlah proyek dengan nama
Praktikum1
. Kemudian buatlah class namaPakaian
sesuai dengan class diagram yang telah dijelaskan sebelumnya.
public class Pakaian {
String jenis, warna, merek, ukuran;
Double harga;
Pakaian(String jenis, String warna, String merek, String ukuran, Double harga) {
this.jenis = jenis;
this.warna = warna;
this.merek = merek;
this.ukuran = ukuran;
this.harga = harga;
}
}
Selanjutnya, buatlah class
Stack
sesuai dengan class diagram yang telah dijelaskan sebelumnya. Tambahkan atribut dan konstrutornya.
Keterangan: Tipe data pada variabel data menyesuaikan dengan data yang akan akan disimpan di dalam Stack
. Pada praktikum ini, data yang akan disimpan merupakan array of object dari Pakaian
, sehingga tipe data yang digunakan adalah Pakaian
.
int size;
int top;
Pakaian data[];
public Stack(int size) {
this.size = size;
data = new Pakaian[size];
top = -1;
}
Tambahkan method
isEmpty()
.
public boolean isEmpty() {
if(top == -1) {
return true;
} else {
return false;
}
}
Selanjutnya buat method
isFull()
.
public boolean isFull() {
if(top == size -1) {
return true;
} else {
return false;
}
}
Buat method
push()
bertipe void untuk menambahkan isi elemen stack dengan parameterpkn
yang berupa objekPakaian
.
public void push(Pakaian pkn) {
if(!isFull()){
top++;
data[top] = pkn;
} else {
System.out.println("Isi stack penuh!");
}
}
Buat method
pop()
bertipe void untuk mengeluarkan isi elemen stack. Hal ini dikarenakan satu elemen stack terdiri dari beberapa informasi (jenis, warna, merk, ukuran, dan harga), maka ketika mencetak data juga perlu ditampilkan semua informasi tersebut.
public void pop() {
if(!isEmpty()){
Pakaian x = data[top];
top--;
System.out.println("Data yang keluar: " + x.jenis + " " + x.warna + " " + x.merk + " " + x.ukuran + " " + x.harga);
} else {
System.out.println("Stack masih kosong");
}
}
Buat method
peek()
bertipe void untuk memeriksa elemen stack pada posisi paling atas.
public void peek() {
System.out.println("Elemen teratas: " + data[top].jenis + " " + data[top].warna + " " + data[top].merk + " " + data[top].ukuran + " " + data[top].harga);
}
Buat method
print()
bertipe void untuk menampilkan seluruh elemen pada stack.
public void print() {
System.out.println("Isi stack: ");
for(int i = top; i >=0; i--) {
System.out.println("Elemen teratas: " + data[i].jenis + " " + data[i].warna + " " + data[i].merk + " " + data[i].ukuran + " " + data[i].harga + " ");
}
System.out.println("");
}
Buat method
clear()
bertipe void untuk menghapus seluruh isi stack.
public void clear() {
if(!isEmpty()) {
for(int i = top; i >= 0; i--) {
top--;
}
System.out.println("Stack sudah dikosongkan");
} else {
System.out.println("Stack masih kosong");
}
}
Selanjutnya, buat class baru dengan nama
StackMain
. Buat fungsi main, kemudian lakukan instansiasi objek dari classStack
dengan namastk
dan nilai parameternya adalah 5.
Stack stk = new Stack(5)
Deklarasikan objek
Scanner
dengan namasc
.Tambahkan kode berikut ini untuk menerima input data
Pakaian
, kemudian semua informasitersebut dimasukkan ke dalam stack.
char pilih;
do {
System.out.print("Jenis: ");
String jenis = sc.nextLine();
System.out.print("Warna: ");
String warna = sc.nextLine();
System.out.print("Merk: ");
String merk = sc.nextLine();
System.out.print("Ukuran: ");
String ukuran = sc.nextLine();
System.out.print("Harga: ");
double harga = sc.nextDouble();
Pakaian p = new Pakaian(jenis, warna, merk, ukuran, harga);
System.out.print("Apakah Anda akan menambahkan data baru ke stack (y/n)? ");
pilih = sc.next().charAt(0);
sc.nextLine();
stk.push(p);
} while (pilih == 'y');
Catatan: sintaks sc.nextLine() sebelum sintaks st.push(p) digunakan untuk mengabaikan karakter new line.
Lakukan pemanggilan method
print()
, methodpop()
, dan methodpeek()
dengan urutan sebagai berikut.
stk.print();
stk.pop();
stk.peek();
stk.print();
Compile dan jalankan class
StackMain
, kemudian amati hasilnya.

Pertanyaan
Berapa banyak data pakaian yang dapat ditampung di dalam stack? Tunjukkan potongan kode program untuk mendukung jawaban Anda tersebut!
Perhatikan class
StackMain
, pada saat memanggil fungsipush()
(line 18), parameter yang dikirimkan adalah p. Data apa yang tersimpan pada variabel p tersebut?Apakah fungsi penggunaan do-while yang terdapat pada class
StackMain
?Modifikasi kode program pada class
StackMain
sehingga pengguna dapat memilih operasi- operasi pada stack (push, pop, peek, atau print) melalui pilihan menu program denganmemanfaatkan kondisi IF-ELSE atau SWITCH-CASE!
Last updated