Anda di halaman 1dari 13

SEC11K4 – Algoritma Pemrograman dan Struktur Data

1 BAB VII – ARRAY OF OBJECT

1.1 IDENTITAS

Kajian

Data Majemuk – Array of Object

Topik

1. Array of Object
Referensi

1. Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms Third
Edition. Cambridge: The MIT Press.
2. Sedgewick, R. (2002). Algorithm in Java: parts 1-4 Third Edition. Boston: Pearson Education, Inc.
3. P. Deitel and H. Deitel, Java How To Program 9th Edition, Prentice Hall, 2011.
4. Poo, Danny, Derek Kiong, and Swarnalatha Ashok. Object-Oriented Programming and Java, 2nd
Edition. Springer, 2010.
5. Wu, C. Thomas. An Introduction to Object-Oriented Programming with Java. McGraw-Hill, 2009.
Kompetensi Utama

1. Mahasiswa mampu menentukan kapan menggunakan penyimpanan data majemuk,


2. Mahasiswa mampu menggunakan penyimpanan data majemuk dengan menggunakan static
array,
3. Mahasiswa mampu menggunakan penyimpanan data majemuk dengan menggunakan array
dinamis,
4. Mahasiswa mampu melakukan penyimpanan object didalam array/arraylist
Lama Kegiatan Kajian

1. Pertemuan Terbimbing : 2 x 100 menit


2. Kegiatan Mandiri : 1 x 120 menit
Parameter Penilaian

1. Tugas Pendahuluan 20%


2. Jurnal 50%
3. Tugas Akhir 30%
SEC11K4 – Algoritma Pemrograman dan Struktur Data

1.2 PERTANYAAN PENDAHULUAN

Pelajari materi berikut ini, sebelum pelaksanaan praktikum. Akan dilaksanakan pre-test sebelum
praktikum dimulai.

1. Data majemuk,
2. Penyimpanan data majemuk dengan menggunakan array static dan array dinamis,
3. Akses data kedalam dan dari array static dan array dinamis,
4. Traversal array static dan array dinamis.
SEC11K4 – Algoritma Pemrograman dan Struktur Data

1.3 PRAKTIK
Contoh kasus berikut merupakan contoh penyelesaian masalah dengan menggunakan ArrayList.
Dimana jumlah elemen data yang disimpan adalah dinamis. Artian dinamis disini adalah bahwa jumlah
data yang disimpan akan dapat bergerak membesar dan akan dapat selalu menampung data yang kita
masukkan. Akses data juga menggunakan index, dengan batasan jumlah data yang dapat disimpan
adalah sebanyak nilai maksimal integer, yaitu 2^31 – 1 atau sebesar nilai kembalian dari
Integer.MAX_VALUE.

1.3.1 Soal
Buatlah sebuah aplikasi sederhana yang digunakan untuk melakukan pendataan Mahasiswa. Data
mahasiswa terdiri dari NIM dan Nama. Jumlah mahasiswa yang akan disimpan tidak ditentukan, oleh
karena itu gunakankah metode penyimpanan data dalam variable yang sesuai.

1.3.2 Langkah Penyelesaian


1. Deklarasi ArrayList. Dalam mendeklarasikan sebuah ArrayList, untuk menentukan tipe data
yang hendak disimpan, maka harus menggunakan kelas dari Tipe Data tersebut. Demikian juga
jika hendak menyimpan data dengan jenis tipe data bentukan (Kelas) sendiri.
a. Data inputan dalam bentuk Kelas Entitas (jika kelas Mahasiswa telah dibangun)
ArrayList<Mahasiswa> arrMahasiswa = new ArrList<Mahasiswa>();

2. Input data mahasiswa


1. System.out.println("Masukkan Data Mahasiswa");
2. System.out.print("NIM : ");
3. int nim=in.nextInt();
4. System.out.print("Nama : ");
5. String nama=in.next();
6. arrMhs.add(new Mahasiswa(nim, nama));

3. View data mahasiswa


1. for (int a=0; a < arrMhs.size(); a++){
2. String nilai = arrMhs.get(a).getDataMhs());
3. System.out.println((a+1)+".\t"+ nilai);
4. }
SEC11K4 – Algoritma Pemrograman dan Struktur Data

1.3.3 Solusi Lengkap

1.3.3.1 Kelas Mahasiswa


1. //Kelas Entitas Mahasiswa
2. class Mahasiswa{
3. int nim;
4. String nama;
5. public Mahasiswa(String nim, String nama){
6. this.nim=nim;
7. this.nama=nama;
8. }
9. public void setNim(int nim){
10. this.nim=nim;
11. }
12. public void setNama(String nama){
13. this.nama=nama;
14. }
15. public int getNim() {
16. return nim;}
17. public String getNama(){
18. return nama;}
19. public String getDataMhs(){
20. return nim+"; "+nama;
21. }
22. }

1.3.3.2 Kelas Driver Mahasiswa


1. import java.util.Scanner;
2. import java.util.ArrayList;

3. //Kelas Driver Untuk melakukan pengolahan data


4. class DriverMahasiswa{
5. Scanner in = new Scanner(System.in);
6. ArrayList<Mahasiswa> arrMhs = new ArrayList<>();
7. public static void main(String args[]){
8. DriverMahasiswa dm = new DriverMahasiswa();
9. dm.runThis();
10. }
11. void runThis(){
12. inputData();
13. viewData();
14. }

15. void viewData(){


16. System.out.println("Data Mahasiswa");
17. for (int a=0; a < arrMhs.size(); a++) {
18. String nama = arrMhs.get(a).getNama();
19. String nim = arrMhs.get(a).getNim();
20. System.out.println((a+1)+".\tNim : "+nim);
SEC11K4 – Algoritma Pemrograman dan Struktur Data

21. System.out.println(“\t\tNama : "+nama);


22. }
23. }
24. void inputData(){
25. System.out.println("Masukkan Data Mahasiswa");
26. System.out.print("NIM : ");
27. int nim=in.nextInt();
28. System.out.print("Nama : ");
29. String nama=in.next();
30. arrMhs.add(new Mahasiswa());
31. }
32. }

1.3.4 Pengamatan
Amati kode diatas dan jawab beberapa pertanyaan berikut ini.

1. Lengkapi kode program diatas, sehingga menjadi sebuah program yang utuh dan dapat
dijalankan sesuai dengan kebutuhan.
2. Apakah fungsi dari
a. ArrayList<Mahasiswa> arrMhs = new ArrayList<>();
b. arrMhs.get(a).getNama();
c. arrMhs.get(a).getNim();
3. Tambahkanlah data (variabel) baru dalam kelas Mahasiswa, yaitu
a. Asal sekolah (SMU)
b. Alamat asal (alamat orang tua)
c. Alamat sekarang (tempat tinggal pada saat kuliah)
SEC11K4 – Algoritma Pemrograman dan Struktur Data

1.4 TEST AKHIR

Pada bagian ini, terdapat 2 buah soal test akhir

1.4.1 Test akhir 1


Buatlah program Sistem Perbankan sederhana, yang memiliki beberapa fungsionalitas antara lain

1. Penambahan rekening baru. Data: no rekening, nama, saldo


2. Tabung
3. Tarik. Saldo akhir tidak boleh kurang dari saldo minimal
4. Transfer. Saldo akhir rekening asal tidak boleh kurang dari saldo minimal

Telah disusunkan struktur dari aplikasi tersebut, tugas anda adalah melengkapi kode berikut ini

1.4.1.1 Kode Program


class Rekening{
private int no;
private String nama;
private double saldo;

public Rekening(___________,___________,___________){ //No 1,2,3


this.no=___________; //No 4
this.nama=___________; //No 5
this.saldo=___________; //No 6
}
public void setSaldo(double saldo) {
____________ = saldo //No 7
}

public ____________ getSaldo() { //No 8


return saldo;
}
public ____________ getNo() { //No 9
return no;
}
public ____________ getNama() { //No 10
return nama;
}
}
SEC11K4 – Algoritma Pemrograman dan Struktur Data

import java.util.ArrayList;

class BankOfMiddleEarth {
ArrayList<____________> aRek = new ArrayList<>(); //No 11
double saldoMinimal = 500000;
public static void main(String[] abcd){
BankOfMiddleEarth b = new BankOfMiddleEarth ();
b.menu();
}

private void menu() {


/*pada bagian ini, diasumsikan adalah sebuah struktur menu,
.yang kemudian menjalankan proses pengolahan data
.(buatRekening, tabung, tarik dan transfer)
.untuk melengkapi, buatlah sebuah struktur menu dari program ini
*/
}

private void buatRekening(){


/*
. Input data nama dan saldo
*/

if (_________ < saldoMinimal){ //No 12


System.out.println("Saldo awal tidak mencukupi");
}
else{
int no;
if (!aRek.isEmpty()){
no=aRek.get(aRek.size()-1).getNo()+1;
//jika array sudah terisi, maka no rekening diambilkan dari
//rekening terakhir yang ditambahkan, kemudian ditambahkan 1
}
else{
no=1;
//jika array masih kosong, maka no rekening adalah 1
}
Rekening rek = new Rekening(no, nama, saldo)
aRek.add(________________); //No 13
System.out.println("Rekening telah ditambahkan");
}
}
/*
. Method cekRekening merupakan sebuah method yang digunakan
. untuk mencari indeks dalam arrayList dari no rekening yang dicari.
. Jika ditemukan, maka akan mengembalikan indeks dari rekening
tersebut.
. Jika tidak ditemukan, maka akan mengembalikan nilai -1
SEC11K4 – Algoritma Pemrograman dan Struktur Data

*/

private int cekRekening(int no) {


int ketemu = -1;
for (int a=0; a<aRek.size(); a++) {
if (aRek.get(a).getNo() == ____________) { //No 14
ketemu = a;
break;
}
}
return ketemu;
}

private void tabung(){


/*
. Input data no rekening dan saldo tambahan
*/

int pos=cekRekening(noRek);
if (pos>=0) {
double saldoAkhir = aRek.get(pos).getSaldo() + jumlah;
aRek.get(pos).setSaldo(____________); //No 15
System.out.println("Saldo telah ditambahkan");
}
else{
System.out.println("No Rekening tidak ditemukan, Transaksi dibatalkan");
}
}
SEC11K4 – Algoritma Pemrograman dan Struktur Data

private void tarik() {


/*
. Input no rekening dan saldo penarikan
*/

int pos = cekRekening(noRek);


if (pos>=0){
//cek apakah saldo akhir masih cukup atau tidak
double saldoAkhir = _______________ - jumlah;
if (_____________ < saldoMinimal) { //No 16
aRek.get(pos).setSaldo(____________); //No 17
System.out.println("Transaksi Selesai");
}
else {
System.out.println("Saldo tidak cukup, Transaksi dibatalkan");
}
}
else {
System.out.println("No Rekening tidak ditemukan, Transaksi dibatalkan");
}
}

private void transfer() {


/*
. Input no rekening asal, no rekening tujuan dan saldo penarikan
*/

int posAsal = cekRekening(____________); //No 18


int posTujuan = cekRekening(____________); //No 19
if ((posAsal>=0) && (posTujuan>=0)){
double saldoAkhirAsal = ____________ - _____________;
if ((__________________) {
aRek.get(posAsal).setSaldo (____________); //No 20
doubleSaldoAkhirTujuan = _______________ +_____________ //No 21
aRek.get(posTujuan).setSaldo(____________); //No 22
System.out.println("Transfer telah dilaksanakan");
}
else {
System.out.println("Saldo tidak cukup, Transaksi dibatalkan");
}
}
else{
System.out.println("No Rekening tidak ditemukan");
}
}
SEC11K4 – Algoritma Pemrograman dan Struktur Data

private void infoRekening(int no) {


int pos = cekRekening(no);
if (pos>=0) {
System.out.println("Informasi Rekening");
System.out.println("No Rek : "+____________); //No 23
System.out.println("Nama : "+____________); //No 24
System.out.println("Saldo : "+____________); //No 25
}
}
} //end of class BankOfMiddleEarth

Tugas anda adalah

1. Melengkapi kode program diatas dan menyusunnya menjadi sebuah program yang
sesuai dengan kebutuhan aplikasi
SEC11K4 – Algoritma Pemrograman dan Struktur Data

1.4.2 Test akhir 2


Buatlah sebuah aplikasi yang digunakan untuk melakukan proses pengelolaan data Kepemilikan Surat
Izin Mengemudi (SIM). Atribut data yang disimpan adalah :

a. Nama,
b. Tanggal lahir,
c. Tempat lahir,
d. Golongan Darah,
e. Jenis Kelamin,
f. Alamat,
g. Tanggal Kadaluarsa SIM,
h. Jenis SIM (A/B/C),
i. Kota penerbitan SIM.

Fitur yang harus dibuat adalah :

a. Menerima inputan data


b. Menampilkan Data seluruh pemilik SIM dan jenis SIM yang dimilikinya. (Hanya NAMA
dan JENIS SIM saja)
c. Menampilkan Data Lengkap pemilik SIM, dilakukan dengan cara menampilkan nama
pemilik SIM. Pemilihan data yang ditampilkan dilakukan dengan cara melakukan
pencarian berdasar nama atau no SIM.
SEC11K4 – Algoritma Pemrograman dan Struktur Data

1.5 RESUME

1.5.1 Pre-Test

1. Selesaikan soal yang terdapat pada bagian Tugas Pendahuluan dalam waktu maksimal 15
menit.
2. Kumpulkan jawaban anda sesuai dengan instruksi dari asisten.

1.5.2 Jurnal Pengamatan

1. Jawablah pertanyaan-pertanyaan yang terdapat pada bagian pengamatan.


2. Kumpulkan jawaban anda sesuai dengan instruksi dari asisten.

1.5.3 Tugas Akhir

1. Jawablah soal yang terdapat pada bagian Tugas Akhir


2. Jawaban tugas akhir dikumpulkan maksimal 24 jam setelah praktikum berakhir.
3. Kumpulkan jawaban anda sesuai dengan instruksi dari asisten.
SEC11K4 – Algoritma Pemrograman dan Struktur Data

2 DAFTAR PUSTAKA

[1] P. Deitel and H. Deitel, Java How To Program 9th Edition, Prentice Hall, 2011.

[2] E. Turban, D. Leidner, E. McLean and J. Wetherbe, Information Technology for Management,
Wiley International, 2008.

[3] R. Sedgewick, Algorithm in Java: parts 1-4 Third Edition, Boston: Pearson Education, Inc, 2002.

[4] T. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein, Introduction to Algorithms Third Edition,
Cambridge: The MIT Press, 2009.

[5] D. Ananda, P. Mayadewi, A. Suryan, L. Rasiana and H. Kusmayadi, Algoritma dan Pemrograman,
Bandung: Politeknik Telkom, 2009.

Anda mungkin juga menyukai