Anda di halaman 1dari 6

PERCOBAAN 4

Array of Objects dan Bubble Sort

TUJUAN PRAKTIKUM
1. Memahami cara menyimpan banyak objek ke dalam array.
2. Memahami cara kerja pengurutan data memakai Bubble Sort
3. Memahami cara melakukan pengrurutan objek
4. Memahami cara menentukan kunci pengurutan dan jenis urutan.

PENGANTAR
Array memungkinkan kita menyimpan banyak data termasuk banyak objek. Pada praktikum
ini kita akan mendalami mengenai cara mengelola array yang elemen-elemennya bertipe
kelas, yaitu array of Mahasiswa. Pada prinsipnya masih sama dengan array of int yang sudah
dibahas sebelumnya, perbedaan hanya terletak pada tipe data yang tersimpan di dalam tiap
elemen tersebut adalah berupa kelas yang mengakibatkan data yang diurutkan harus
berdasarkan salah satu anggota field kelas tersebut seperti ilustrasi di bawah ini:
data byk

0 1 2 3 4 5
Nim : 72150010 Nim : 72150020 Nim : 72150030 Nim : 72150040 Nim : 72150050
Nama : Rudy Nama : Andy Nama : Bayu Nama : Felicia Nama : Leo Vina
Kota : Muntilan Kota : Yogyakarta Kota : Klaten Kota : Purwokerto Kota : Pangkal Pinang

Gambar 4.1 Ilustrasi isi elemen-elemen array of Mahasiswa

Nilai Yang Dibandingkan


Pada contoh data di atas data sudah dalam kondisi urut Nim, tetapi tidak urut Nama karena
pada satu saat data hanya bisa diatur dalam kondisi urut berdasarkan salah satu kunci saja,
misalnya urut Nim saja, atau urut Nama saja, atau urut Kota saja. Apabila akan dilakukan
pengurutan data berdasarkan kunci tertentu yang lain, misalnya Nama, maka pada proses
pengurutan data, nilai yang dibandingkan adalah nilai yang tersimpan di dalam field nama,
sehingga pembandingannya bukan lagi pada isi elemen array (lihat Gambar 4.2.), tetapi isi
dari salah satu anggota field (misalnya field nama)salah satu elemen array, misalnya nomor
indek yang dibandingkan adalah b maka pembandingannya adalah seperti Gambar 4.2. di
bawah ini:

Gambar 4.2 Pembandingan isi elemen array of int

Gambar 4.3 Pembandingan isi field dari isi elemen array of struct

23 Program Studi Sistem Informasi Fakultas Teknologi Informasi | UKDW 2020


Tempat Penukaran Data
Selain ada perbedaan pada nilai yang dibandingkan, pengurutan data pada array of
Mahasiswa juga mempunya perbedaan pada tempat penyimpanan yang digunakan untuk
menukarkan data. Variabel sementara yang digunakan untuk teknik penukaran data harus
bertipe data sama dengan isi elemen array, pada pembahasan sebelumnya variabel tersebut
bertipe int karena struktur data adalah berupa array of int, sekarang jika struktur data yang
digunakan adalah array of Mahasiswa maka tempat penyimpanan sementara tersebut harus
bertipe Mahasiswa.

titip Nim :
3 Nama :
Alamat :
b 1 Kota :
2

0 1 2 3 4 5
Nim : 72150010 Nim : 72150020 Nim : 72150030 Nim : 72150040 Nim : 72150050
Nama : Rudy Nama : Andy Nama : Bayu Nama : Felicia Nama : Leo Vina
Kota : Muntilan Kota : Yogyakarta Kota : Klaten Kota : Purwokerto Kota : Pangkal Pinang

Gambar 4.4 Ilustrasi menukar isi elemen nomor 0 dengan nomor 1

Pada Gambar 4.4 di atas menggambarkan proses pembandingan pada saat b bernilai 0, yang
dibandingkan adalah field nama (lihat Gambar 4.3), karena "Rudy" > "Andy" maka terjadilah
proses pertukaran isi elemen nomor 0 dengan isi elemen nomor 1. Langkah pertama yang
dilakukan adalah menitipkan nilai yang ada di elemen nomor 2 ke variabel titip, yang perlu
diperhatikan adalah bahwa variabel titip harus bertipe Mahasiswa, karena isi elemen array
bertipe Mahasiswa, langkah yang kedua adalah menyalin isi elemen nomor 0 disimpan di
elemen nomor 1, kemudian yang terakhir adalah menyimpan isi variabel titip ke elemen
nomor 0.

Membandingkan String
Operator pembanding tidak dapat digunakan untuk membandingkan nilai String, sebagai
gantinya kita bisa memakai metode CompareTo(<string>) yang merupakan metode
bawaan tipe data String seperti di bawah ini:

bertipe Mahasiswa

metode CompareTo

Gambar 4.5 Kode program proses Bubble Sort

24 Program Studi Sistem Informasi Fakultas Teknologi Informasi | UKDW 2020


Pada kode program Gambar 4.5 di atas apabila metode CompareTo() mengembalikan nilai
positip (lebih dari 0) berarti isi nilai pada field nama pada elemen nomor tersebut b > dari ini
nilai field nama pada elemen nomor b + 1.

ALAT DAN BAHAN


1. PC dengan Sistem Operasi Windows
2. NetBeans 8.2
3. Microsoft Word

CARA KERJA
1. Buatlah projek JavaFX Application dengan NetBeans 8.2, berilah nama projek sesuai
dengan identitas kalian: Praktikum_04_nimKamu. Contoh : Praktikum_04_72870137.
2. Untuk tiap soal di bawah ini buatlah masing-masing sesuai dengan yang diminta.
3. Lakukan uji coba terhadap program yang dibuat.
4. Jawablah pertanyaan yang ada pada Pendalaman Materi.

Buatlah Responsi Praktikum dengan template docx yang sudah disediakan,


kumpulkan hasil penelitian kalian melalui E-Class yang sudah disediakan
susai dengan batas waktu yang sudah ditetapkan.

PENDALAMAN MATERI
NIM : _________________
PERCOBAAN 4

Array Of Object dan Bubble Sort NAMA : _______________________

Laporan yang dibuat berupa :


 Source Code (Copas dari dokumen yang dibuat pada Editor NetBeans)
 Screen Shoot hasil eksekusi program (Compilasi dan jalankan ulang
dengan Shift+ F6)
 Pembahasan Program (Berikan penjelasan untuk memberikan
pengetahuan)
 Algoritma, Pseudocode dan Flowchart (sesuai yg diminta)

Persiapan Praktikum
Gunakan antarmuka grafis JavaFX yang telah disediakan seperti berikut, tambahakan Nim
dan Nama Anda :
package praktikum04;

import javafx.application.Application;
import javafx.geometry.Pos;

25 Program Studi Sistem Informasi Fakultas Teknologi Informasi | UKDW 2020


import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Praktikum04 extends Application{


public static void main(String[] args) {
launch(args);
}

Text txtJudul = new Text("Data Mahasiswa");


Label lblNim = new Label("Nim");
TextField txtNim = new TextField();
Label lblNama = new Label("Nama");
TextField txtNama = new TextField();
Label lblKota = new Label("Kota");
TextField txtKota = new TextField();
Label lblSemua = new Label("Daftar Mahasiswa :");
TextArea txtDaftar = new TextArea();
Button btnTambah = new Button("Tambah");
Label lblUrut = new Label("Urut berdasarkan");
ComboBox cbUrut = new ComboBox();
Label lblOrder = new Label("Jenis Urutan");
ComboBox cbOrder = new ComboBox();
Button btnProses = new Button("Proses Bubble Sort");
Button btnTutup = new Button("Tutup");
HBox hb1 = new HBox();
HBox hb2 = new HBox();
HBox hb3 = new HBox();

@Override
public void start(Stage primaryStage) throws Exception {
txtJudul.setFont(Font.font("Arial", 28));
hb1.getChildren().add(btnTambah);
hb1.setAlignment(Pos.BASELINE_RIGHT);
hb2.getChildren().add(btnTutup);
hb2.setAlignment(Pos.BOTTOM_RIGHT);
hb3.getChildren().addAll(cbOrder,btnProses);
hb3.setSpacing(5);
txtNim.setMaxWidth(80);
txtDaftar.setMinHeight(300);
cbUrut.getItems().addAll("Nim","Nama","Kota");
cbUrut.setValue("Nim");
cbOrder.getItems().addAll("Ascending","Descending");
cbOrder.setValue("Ascending");
GridPane grid = new GridPane();
Scene scene = new Scene(grid,500,600);
grid.setAlignment(Pos.CENTER);
grid.setVgap(3);
grid.setHgap(10);
grid.setGridLinesVisible(false);
grid.add(txtJudul,0,0,2,1);

26 Program Studi Sistem Informasi Fakultas Teknologi Informasi | UKDW 2020


grid.add(lblNim,0,1);grid.add(txtNim,1,1);
grid.add(lblNama,0,2);grid.add(txtNama,1,2);
grid.add(lblKota,0,3);grid.add(txtKota,1,3);
grid.add(hb1,1,4);
grid.add(lblUrut, 0, 5);grid.add(cbUrut,1,5);
grid.add(lblOrder, 0, 6);grid.add(hb3,1,6);
grid.add(lblSemua,0,7);
grid.add(txtDaftar,0,8,2,1);
grid.add(hb2,0,9,2,1);
primaryStage.setScene(scene);
primaryStage.setTitle("Data Mahasiswa");
primaryStage.show();
}
}

Tampilan Antarmuka Grafis adalah seperti berikut :

Gambar 4.6 Antarmuka grafis yang digunakan dalam praktikum ini

Penelitian Laboratorium :
1. Buat kelas bernama Mahasiswa yang mempunyai field nim, nama dan kota semuanya
bertipe String. nim dienkapsulasi maksimal 8 huruf lebih dari itu akan dipotong diambil 8

27 Program Studi Sistem Informasi Fakultas Teknologi Informasi | UKDW 2020


huruf pertama (dari kiri) dan hanya boleh berupa angka. Field nama huruf pertamanya
selalu huruf kapital, sedangkan kota selalu dikonversi menjadi huruf kapital semuanya.
Kelas ini mempunyai sebuah konstruktor 3 parameter (nim, nama, kota) yang akan
mengisi filed-field sesuai konstrain yang ada pada enkapsulasi (gunakan setter untuk
mengisi field). Kelas ini juga mempunya metode getMhs() yang mengembalikan nilai
String berupa gabungan nim, nama dan kota (nim + " " + nama + " " + kota).
(Screen shoot kelas kamu dan berikan pembahasan/ penjelasan)

2. Buatlah kelas DaftarMahasiswa yang mempunyai :


a. Konstruktor untuk menentukan banyakanya data mahasiswa yang dapat ditampung
b. Metode tambahMahasiswa(nim, nama, kota) untuk menambah elemen Mahasiswa
di belakang.
c. Metode hapusMahasiswa() untuk menghapus elemen terakhir (mengurangi data
Mahasiswa).
d. Metode getAllMahasiswa() untuk mengambil semua Mahasiswa, untuk tiap elemen
dipisahkan dengan ENTER (gunakan "\n")
e. Metode bubbleNim(<order>) order adalah urutan "Asc" atau "Desc"
f. Metode bubbleNama(<order>) order adalah urutan "Asc" atau "Desc"
g. Metode bubbleKota(<order>) order adalah urutan "Asc" atau "Desc"
(Screen shoot kelas kamu dan berikan pembahasan/ penjelasan)

3. Implementasikan kelas DaftarMahasiswa ke dalam Antarmuka grafis JavaFX yang sudah


disediakan.
(Screen shoot hasil percobaan kamu dan berikan pembahasan/ penjelasan)

Amsal
Berbahagialah orang yang mendapat hikmat, orang
yang memperoleh kepandaian, karena keuntungannya
melebihi keuntungan perak, dan hasilnya melebihi emas.
Ia lebih berharga dari pada permata; apapun yang
kauinginkan, tidak dapat menyamainya.
28 Program Studi Sistem Informasi Fakultas Teknologi Informasi | UKDW 2020

Anda mungkin juga menyukai