Anda di halaman 1dari 33

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

BAB : ENCAPSULATION
NAMA : CASSIA VERA DIPHIPERIDINE
NIM : 175150201111026
TANGGAL : 13/03/2018
ASISTEN : SALSABILA ATHIKA RAMADHANI

A. DEFINISI MASALAH
Anda dan tim anda mendapat sebuah proyek untuk merancang sistem transaksi pada
sebuah swalayan Tiny. Anda ditugasi oleh tim untuk membuat programnya
berdasarkan hasil analisis tim anda :
1. Informasi akun seorang pelanggan (saldo, nomor pelanggan, nama) tidak bisa
diubah oleh pelanggan secara langsung.
2. Nomor pelanggan terdiri dari 10 digit, dimana 2 digit awal adalah jenis rekening
o 38 : Pelanggan jenis silver; setiap pembelian diatas 1 jt maka mendapat
cashback sebesar 5%
o 56 : Pelanggan jenis gold; setiap pembelian diatas 1 jt maka mendapat
cashback sebesar 7%, selain itu cashback 2% (cashback kembali ke saldo)
o 74 : Pelanggan jenis platinum; setiap pembelian diatas 1 jt maka mendapat
cashback sebesar 10%, selain itu cashback 5% (cashback kembali ke
saldo)
3. Pelanggan harus memiliki saldo minimal Rp10.000, jika saldo pasca transaksi
kurang dari batas minimal tadi, maka transaksi pembelian dianggap gagal
4. Buatlah sistem transaksi swalayan ini terbatas pada pembelian dan top up saja dan
menggunakan PIN dan nomor pelanggan sebagai syarat transaksi pembelian atau
top up.
Apabila pelanggan melakukan 3x kesalahan dalam autentifikasi, maka akun pelanggan
akan defreeze / diblokir sehingga tidak bisa digunakan lagi.

B. SOURCE CODE
tiny.java
1 import static enkapsulasi.TinySwalayan.pilihan1;
2 import java.util.Scanner;
3 public class tiny {
4 Scanner input = new Scanner(System.in);
5 private int pin, top_up, saldo, jumlahbarang;
6 private String nama, nopelanggan, jeniskartu;
7 //deklarasi instance variabel array
8 private int hargabarang[] = {1200, 75000, 22500,
13990, 38000, 29000, 18000, 25370};
9 private final String[][] data = {{"No.", "Nama
Barang", "Harga Satuan"},
{"1", "Indomie", "Rp. 1200,-"}, {"2", "Beras Ramos
5kg", "Rp. 75000,-"},
{"3", "Gulaku Premium 1kg", "Rp. 22500,-"}, {"4",
"Sprite 2L", "Rp. 13990,-"},
{"5", "Body Wash Shinzui 450ml", "Rp. 38000,-"},
{"6", "Shampoo Pantene 170ml", "Rp. 29000,-"},
{"7", "Telur (12 pcs)", "Rp. 18000,-"}, {"8", "Rinso
Detergen 900gr", "Rp. 25370,-"}, {"","",""}};
10 int[] pilihan2 = new int[10]; int[]total = new int[10];
11 int counter = 0; int totalAkhir = 0;
12 public tiny(){
13 }
14 public tiny(String nama, String nopelanggan, String
jeniskartu) {
15 this.nama = nama; this.nopelanggan =
nopelanggan; this.jeniskartu = jeniskartu;
16 }
17 public String getJenisKartu() {
18 return jeniskartu;
19 }
20 public void setNopelanggan(String n) {
21 nopelanggan = n;
22 }
23 public String getNopelanggan() {
24 return nopelanggan;
25 }
26 public void tiny(String nama, String nopelanggan,
String jeniskartu) {
27 this.nama = nama; this.nopelanggan =
nopelanggan; this.jeniskartu = jeniskartu;
28 }
29 public void setPin(int p) {
30 pin = p;
31 }
32 public int getPin() {
33 return pin;
34 }
35 public void setSaldo(int s) {
36 saldo = s;
37 }
38 public int getSaldo() {
39 return saldo;
40 }
41 public void autentikasi() {
42 setNopelanggan("7410000057");
setNopelanggan("5610000077");
setNopelanggan("3810000088");
43 System.out.println("***Masukkan Nomor Pelanggan
: ");
44 System.out.print(">>> "); nopelanggan =
input.nextLine();
45 System.out.println("");
46 if ("7410000057".equals(getNopelanggan())) {
47 tiny("Cassia", "7410000057", "Platinum");
autentikasiPIN();
48 } else if
("5610000077".equals(getNopelanggan())) {
49 tiny("Verind", "5610000077",
"Gold");autentikasiPIN();
50 } else if
("3810000088".equals(getNopelanggan())) {
51 tiny("Vera", "3810000088",
"Silver");autentikasiPIN();
52 } else {
53 if(!"7410000057".equals(getNopelanggan())
&& !"5610000077".equals(getNopelanggan())&&
!"3810000088".equals(getNopelanggan())){
54 System.out.println("No Pelanggan tidak
tersedia!! Input ulang nomor pelanggan!");
55 } else {
56 System.out.println("***Masukan No
Pelanggan : ");
57 System.out.print(">>> "); nopelanggan =
input.nextLine();
58 }
59 }
60 }
61 public void autentikasiPIN() {
62 setPin(112233); setPin(111222); setPin(123456);
63 System.out.println("***Masukan PIN : ");
64 System.out.print(">>> ");
65 pin = input.nextInt();
66 System.out.println("- - - - - - - - - - - - - -
- - - - -***");
67 if (getNopelanggan() == "7410000057" && getPin()
== 112233) {
68 tiny("Cassia ", "7410000057", "Platinum");
69 if (pilihan1 == 1) { setSaldo(1500000);
pesan();
70 }
71 if (pilihan1 == 4) { topup2();
72 }
73 } else if (getNopelanggan() == "5610000077" &&
getPin() == 111222) {
74 tiny("Verind", "5610000077", "Gold");
75 if (pilihan1 == 1) { setSaldo(2000000);
pesan();
76 }
77 if (pilihan1 == 4) { topup2();
78 }
79 } else if (getNopelanggan() == "3810000088" &&
getPin() == 123456) {
80 tiny("Vera", "3810000088", "Silver");
81 if (pilihan1 == 1) { setSaldo(1000000);
pesan();
82 }
83 if (pilihan1 == 4) { topup2();
84 }
85 } else {
86 int blokir1 = 0;
87 while (getPin() != 112233 && getPin() !=
111222 && getPin() != 123456) {
88 System.out.println("PIN YANG DIMASUKKAN
SALAH!");
89 System.out.println("- - - - - - - - - -
- - - - - - - - -***");
90 blokir1++;
91 if (blokir1 >= 3) {
92 System.out.println("- - - - - - - -
- - - - - - - - - - -***");
93 System.out.println("\n!!!!! ANDA
TELAH MEMASUKAN 3 KALI !!!!!");
94 System.out.println(" !!!!! NOMOR
PIN YANG SALAH !!!!!");
95 System.out.println(" !!!!! STATUS
AKUN : TERBLOKIR !!!!!\n");
96 System.out.println("- - - - - - - -
- - - - - - - - - - -***\n");
97 System.exit(0);
98 break;
99 } else {
100 System.out.println("***Masukan PIN
: ");
101 System.out.print(">>> ");
102 pin = input.nextInt();
103 }
104 }
105 }
106 }
107 public void pesan() {
108 System.out.println("\n==================== P E
M E S A N A N ======================");
109 System.out.println("Pemesan : " + nama);
110 System.out.println("No pelanggan : " +
nopelanggan);
111 daftarbarang();
112 System.out.print("Jumlah jenis item : ");
113 counter = input.nextInt();
114 System.out.println("- - - - - - - - - - - - - -
- - - - -***");
115 for (int i = 0; i < counter; i++) {
116 int no = i + 1;
117 System.out.println("Item Ke-" + no);
118 System.out.print("Masukkan pilihan : ");
119 pilihan2[counter] = input.nextInt();
120 System.out.print("Jumlah Barang : ");
121 jumlahbarang = input.nextInt();
122 int a = pilihan2[counter] - 1;
123 total[counter] = hargabarang[a] *
jumlahbarang;
124 totalAkhir = totalAkhir + total[counter];
125 }
126 nota();
127 }
128 public void nota() {
129 System.out.println("- - - - - - - - - - - - - -
- - - - -***");
130 System.out.println("Total Bayar : Rp. " +
totalAkhir);
131 System.out.println("- - - - - - - - - - - - - -
- - - - -***");
132 System.out.println("\n Status
Saldo\n");
133 if (totalAkhir > 1000000) {
134 if (getSaldo() > totalAkhir &&
"Platinum".equals(getJenisKartu()) && getSaldo() !=
10000) {
135 saldo = getSaldo() - totalAkhir;
136 setSaldo(saldo);
137 int cashback = (totalAkhir * 10) / 100;
138 int cashback1 = (totalAkhir * 5) / 100;
139 setSaldo(saldo);
140 System.out.println("Saldo Anda Sisa :
Rp. " + getSaldo());
141 System.out.println("- - - - - - - - - -
- - - - - - - - -***");
142 System.out.println("Dapat Melakukan
Transaksi!");
143 System.out.println("Cash Back :
Rp." + cashback);
144 saldo = getSaldo() + cashback1;
145 setSaldo(saldo);
146 System.out.println("Saldo Anda + 5% :
Rp." + getSaldo());
147 } else if (getSaldo() > totalAkhir &&
"Gold".equals(getJenisKartu()) && getSaldo() != 10000)
{
148 saldo = getSaldo() - totalAkhir;
149 setSaldo(saldo);
150 int cashback = (totalAkhir * 7) / 100;
151 int cashback1 = (totalAkhir * 2) / 100;
152 setSaldo(saldo);
153 System.out.println("Saldo Anda Sisa :
Rp. " + getSaldo());
154 System.out.println("- - - - - - - - - -
- - - - - - - - -***");
155 System.out.println("Dapat Melakukan
Transaksi!");
156 System.out.println("Cash Back :
Rp." + cashback);
157 saldo = getSaldo() + cashback1;
158 setSaldo(saldo);
159 System.out.println("Saldo Anda + 2% :
Rp." + getSaldo());
160 } else if (getSaldo() > totalAkhir &&
"Silver".equals(getJenisKartu()) && getSaldo() != 10000)
{
161 saldo = getSaldo() - totalAkhir;
162 setSaldo(saldo);
163 double cashback = (totalAkhir * 5) /
100;
164 setSaldo(saldo);
165 System.out.println("Saldo Anda Sisa :
Rp. " + getSaldo());
166 System.out.println("- - - - - - - - - -
- - - - - - - - -***");
167 System.out.println("Dapat Melakukan
Transaksi!");
168 System.out.println("Cash Back :
Rp." + cashback);
169 System.out.println("Saldo Anda + 0% :
Rp." + getSaldo());
170 } else {
171 System.out.println("::: Saldo anda
tidak mencukupi ::: \n");
172 setSaldo(saldo);
173 topup(getSaldo());
174 }
175 } else if (totalAkhir <= 1000000) {
176 if (getSaldo() > totalAkhir && getSaldo() !=
10000) {
177 saldo = getSaldo() - totalAkhir;
178 setSaldo(saldo);
179 System.out.println("Saldo Anda Sisa :
Rp. " + getSaldo());
180 System.out.println("- - - - - - - - - -
- - - - - - - - -***");
181 } else {
182 System.out.println("::: Saldo anda
tidak mencukupi ::: \n");
183 setSaldo(saldo);
184 topup(getSaldo());
185 }
186 }
187 }
188 public void topup(int a) {
189 setSaldo(getSaldo());
190 System.out.println("- - - - - - - - - - - - - -
- - - - -***");
191 System.out.println("***Top Up saldo anda?
(YA/TIDAK)");
192 System.out.print(">>> ");
193 String pilih = input.nextLine();
194 System.out.println("- - - - - - - - - - - - - -
- - - - -***");
195 if ("ya".equalsIgnoreCase(pilih)) {
196 System.out.println("Masukkan nominal yang
akan di Top-Up : ");
197 System.out.print(">>> Rp. ");
198 int topup = input.nextInt();
199 System.out.println("- - - - - - - - - - - -
- - - - - - -***");
200 top_up = a + topup; setSaldo(top_up);
201 System.out.println("\n Saldo anda
berhasil diTOP-UP");
202 System.out.println(" Saldo Anda Sisa Rp."
+ getSaldo());
203 System.out.println("\n- - - - - - - - - - -
- - - - - - - -***\n");
204 System.out.println("Ingin Berbelanja?
(YA/TIDAK)");
205 System.out.print(">>> ");
206 String belanjalagi = input.next();
207 input.nextLine();
208 if ("ya".equalsIgnoreCase(belanjalagi)) {
209 pesan();
210 }
211 } else if ("Tidak".equalsIgnoreCase(pilih)) {
212 System.out.println("- - - - - - - - - - - -
- - - - - - -***");
213 System.out.println("\n Terima kasih telah
berbelanja!");
214 System.out.println(" Jika saldo anda
tidak mencukupi,");
215 System.out.println(" Silahkan topup
saldo anda\n");
216 System.out.println("- - - - - - - - - - - -
- - - - - - -***\n");
217 }
218 }
219 public void topup2() {
220 topup(getSaldo());
221 }
222 public void daftarbarang() {
223 System.out.println("================= D A F T A
R B A R A N G ==================");
224 for (int i = 0; i < data.length; i++) {
225 for (int j = 0; j < data[0].length; j++) {
226 System.out.printf("%-24s", data[i][j]);
227 }
228 System.out.println("");
229 }
230 System.out.print("
=======================================================
=======\n");
231 }
232 public void DisplayInfo() {
233 System.out.println("\n======================
INFORMASI PELANGGAN =======================");
234 System.out.println("No. Pelanggan : " +
nopelanggan);
235 System.out.println("Nama Pelanggan : " + nama);
236 System.out.println("Jenis Kartu : " +
jeniskartu);
237 }
238 }

TinySwalayan.java
1 import java.util.Scanner;
2 public class TinySwalayan {
3 public static int pilihan1;
4 public static void main(String[] args) {
5 Scanner input = new Scanner(System.in);
6 tiny pelanggan1 = new tiny("Cassia",
"7410000057", "Platinum");
7 tiny pelanggan2 = new tiny("Vera", "5610000077",
"Gold");
8 tiny pelanggan3 = new tiny("Verind",
"3810000088", "Silver");
9 tiny test1 = new tiny();
10 do {
11 System.out.println("
*******************************************************
*******");
12 System.out.println(" M
E N U");
13 System.out.println("
*******************************************************
*******");
14 System.out.println("\t1.\tMemesan Barang");
15 System.out.println("\t2.\tData Barang");
16 System.out.println("\t3.\tInformasi
Pelanggan");
17 System.out.println("\t4.\tTOP UP Saldo");
18 System.out.println("\t5.\tKeluar");
19 System.out.println("-----------------------
---------------------------------------");
20 System.out.print("Masukkan Pilihan : ");
21 pilihan1 = input.nextInt();
22 System.out.println("
*******************************************************
*******\n");
23 switch (pilihan1) {
24 case 1: test1.autentikasi(); break;
25 case 2: test1.daftarbarang();break;
26 case 3: pelanggan1.DisplayInfo();
pelanggan2.DisplayInfo(); pelanggan3.DisplayInfo();
break;
27 case 4: test1.autentikasi();break;
28 case 5:
29 System.out.println("
............................Terima
Kasih............................\n");
30 System.out.println("
..............................E X I
T...............................");
31 System.exit(0); break;
32 default:
33 System.out.println("!!!!! Pilihan
yang diinput tidak terdaftar !!!!!!");
34 System.out.println(" Silahkan
mulai ulang program. . . .");
35 System.exit(0); break;
36 }
37 } while (pilihan1 != 6);
38 }
39 }

C. PEMBAHASAN
tiny.java
1 Mengimport variabel static pilihan1 pada class TinySwalayan
2 Mengimport class Scanner
3 Deklarasi class tiny
4 Intansiasi class Scanner pada variabel input
5 Deklarasi instance variabel pin, top_up, saldo, jumlahbarang pada tipedata
integer dengan access modifier private
6 Deklarasi instance variabel nama, nopelanggan, jeniskartu pada tipedata string
dengan access modifier private
7 Deklarasi komentar
8 Insialisasi dan Deklarasi instance variabel array dengan nama hargabarang
dengan tipedata integer dan access modifier private
9 Insialisasi dan Deklarasi instance variabel array dengan nama data dengan
tipedata String dan access modifier private
10 Deklarasi dan insialisasi variabel array dengan nama pilihan2 dan total
11 Deklarasi dan inisialisasi variabel counter dan totalAkhir dengan nilai awal 0
12 Deklarasi konstruktor class tiny dengan default parameter
13 Akhir dari konstruktor class tiny dengan default parameter
14 Deklarasi konstruktor tiny dengan parameter String variabel nama,
nopelangan dan jenis kartu
15 Inisialisasi instance variabel nama dengan parameter konstruktor nama,
instance variabel nopelanggan dengan parameter konstruktor nopelanggan,
dan instance variabel jeniskartu dengan parameter konstruktor jeniskartu
16 Akhir dari deklarasi konstruktor class tiny dengan parameter String variabel
nama, nopelangan dan jenis kartu
17 Deklarasi method getJenisKartu dengan tipe data String
18 Pengembalian nilai instance variabel jeniskartu
19 Akhir dari method getJenisKartu
20 Deklarasi method setNopelanggan dengan tipe void dan parameter variabel n
bertipe data string
21 Deklarasi instance variabel bernilai variabel n
22 Akhir dari method setNopelanggan
23 Deklarasi method getNopelanggan dengan tipe data string
24 Pengembalian nilai instance variabel nopelanggan
25 Akhir method getNopelanggan
26 Deklarasi method tiny dengan tipe void dan parameter variabel nama,
nopelanggan, jeniskartu bertipedata string
27 Inisialisasi instance variabel nama dengan parameter konstruktor nama,
instance variabel nopelanggan dengan parameter konstruktor nopelanggan,
dan instance variabel jeniskartu dengan parameter konstruktor jeniskartu
28 Akhir dari method tiny
29 Deklarasi method setPin dengan tipe void dan parameter variabel p
bertipedata integer
30 Insialisasi instance variabel pin dengan nilai variabel local p
31 Akhir dari method setPin
32 Deklarasi method getPin dengan tipe data integer
33 Pengembalian nilai instance variabel pin
34 Akhir dari method getPin
35 Deklarasi method setSaldo dengan tipe void dan parameter variabel s
bertipedata integer
36 Insialisasi instance variabel saldo dengan nilai variabel local s
37 Akhir dari method setSaldo
38 Deklarasi method getSaldo dengan tipe data integer
39 Pengembalian nilai instance variabel saldo
40 Akhir dari method getSaldo
41 Deklarasi method autentikasi dengan tipe void
42 Deklarasi pengisian setNopelanggan
43 Mencetak “*** masukkan nomor pelanggan : “
44 Menetak “>>>” dan menginputkan nilai nopelanggan
45 Mencetak baris baru
46 Deklarasi seleksi kondisi dengan parameter method getNopelanggan
47 Inisialisasi method tiny dengan instance variabel nama, nopelanggan, jenis
kartu dan memanggil method autentikasiPIN
48 Deklarasi else
49 Inisialisasi method tiny dengan instance variabel nama, nopelanggan, jenis
kartu dan memanggil method autentikasiPIN
50 Deklarasi else
51 Inisialisasi method tiny dengan instance variabel nama, nopelanggan, jenis
kartu dan memanggil method autentikasiPIN
52 Deklarasi else
53 Deklarasi seleksi kondisi jika getNopelanggan tidak sama dengan
noPelanggan yang telah ditentukan
54 Mencetak “No Pelanggan tidak tersedia, input ulang nomor pelanggan!”
55 Deklarasi else
56 Mencetak “*** Masukkan No pelanggan : “
57 Mencetak “>>>” dan menginput variabel nopelanggan
58 Akhir dari seleksi kondisi else if kedua
59 Akhir dari seleksi kondisi else if pertama
60 Akhir dari method autentikasi
61 Deklarasi method autentikasiPIN
62 Inisialisasi method setPin
63 Mencetak “*** Masukkan pin :”
64 Mencetak “>>>”
65 Menginput nilai variabel pin
66 Mencetak “----------------------------***”
67 Deklarasi seleksi kondisi dengan kondisi method getNopelanggan sesuai
dengan method getPin
68 Inisialisasi method tiny dengan instance variabel nama, nopelanggan, jenis
kartu dan memanggil method autentikasiPIN
69 Deklarasi seleksi kondisi dengan kondisi variabel pilihan1 sama dengan 1
akan memberikan nilai pada setSaldo dan memanggil method pesan
70 Akhir dari deklarasi if
71 Deklarasi seleksi kondisi dengan kondisi variabel pilihan1 sama dengan 4
akan memanggil method topup2
72 Akhir dari deklarasi if
73 Deklarasi else if dengan kondisi method getNopelanggan sesuai dengan
method getPin
74 Inisialisasi method tiny dengan instance variabel nama, nopelanggan, jenis
kartu dan memanggil method autentikasiPIN
75 Deklarasi seleksi kondisi dengan kondisi variabel pilihan1 sama dengan 1
akan memberikan nilai pada setSaldo dan memanggil method pesan
76 Akhir dari deklarasi if
77 Deklarasi seleksi kondisi dengan kondisi variabel pilihan1 sama dengan 4
akan memanggil method topup2
78 Akhir dari deklarasi if
79 Deklarasi else if dengan kondisi method getNopelanggan sesuai dengan
method getPin
80 Inisialisasi method tiny dengan instance variabel nama, nopelanggan, jenis
kartu dan memanggil method autentikasiPIN
81 Deklarasi seleksi kondisi dengan kondisi variabel pilihan1 sama dengan 1
akan memberikan nilai pada setSaldo dan memanggil method pesan
82 Akhir dari deklarasi if
83 Deklarasi seleksi kondisi dengan kondisi variabel pilihan1 sama dengan 4
akan memanggil method topup2
84 Akhir dari deklarasi if
85 Deklarasi else
86 Deklarasi dan inisialisasi variabel blokir1 sama dengan 0
87 Deklarasi perulangan while jika setiap method getPin tidak memiliki nilai
yang sama dengan 112233, atau 111222, atau 123456
88 Mencetak “PIN YANG DIMASUKKAN SALAH!”
89 Mencetak “----------------------------------***”
90 Penambahan variabel blokir1
91 Deklarasi seleksi kondisi dengan kondisi variabel blokir1 lebih dari sama
dengan 3
92 Mencetak “-------------------------****”
93 Mencetak “!!!!!ANDA TELAH MEMASUKKAN 3 KALI!!!!!!”
94 Mencetak “!!!!! NOMOR PIN YANG SALAH!!!!!”
95 Mencetak “!!!!! STATUS AKUN : TERBLOKIR!!!!!”
96 Mencetak “----------------------------***”
97 Deklarasi mengeluarkan atau menghentikan program
98 Deklarasi break
99 Deklarasi else
100 Mencetak “****Masukkan PIN : “
101 Mencetak “>>>”
102 Menginputkan nilai pada variabel pin
103 Akhir dari seleksi kondisi kedua
104 Akhir dari perulangan while
105 Akhir dari seleksi kondisi pertama
106 Akhir dari method autentikasiPIN
107 Deklarasi method pesan dengan tipe void
108 Mencetak “==================PEMESANAN===============”
109 Mencetak “Pemesan : “ dan pemanggilan nilai variabel nama
110 Mencetak “No pelanggan : “ dan pemanggilan nilai nopelanggan
111 Memanggil method daftarbarang
112 Mencetak “Jumlah jenis item : “
113 Menginput nilai dari variabel counter
114 Mencetak “------------------------------***”
115 Deklarasi perulangan for dengan variabel i tipedata integer bernilai awal 0 dan
variabel i kurang dari variabel counter dan akan menambah niali variabel i
116 Deklarasi variabel no dengan tipedata integer dan perhitungannya
117 Mencetak “Item ke-“ dan pemanggilan nilai variabel no
118 Mencetak “Masukkan pilihan : “
119 Menginputkan nilai variabel array pilihan2 dengan array bernilai variabel
counter
120 Mencetak “Jumlah Barang : “
121 Menginputkan nilai variabel jumlahbarang
122 Inisialisasi variabel a
123 Inisialisasi variabel array total dengan array berupa variabel counter
124 Deklarasi totalAkhir dengan perhitungannya
125 Akhir dari perulangan for
126 Pemanggilan method nota
127 Akhir dari method pesan
128 Deklarasi method nota
129 Mencetak “----------------------------***”
130 Mencetak “Total bayar : Rp. “ dan pemanggilan nilai variabel totalAkhir
131 Mencetak “---------------------------***”
132 Mencetak “Status Saldo”
133 Deklarasi seleksi kondisi dengan kondisi variabel totalAkhir lebih besar dari
pada 1000000
134 Deklarasi seleksi kondisi dengan kondisi getSaldo harus lebih besar daripada
totalAkhir dan jeniskartu berupa “Platinum” dan saldo tidak boleh 10000
135 Deklarasi perhitungan variabel saldo dengan method getSaldo dan variabel
totalAkhir
136 Memberikan nilai pada method setSaldo dengan saldo yang terbaru
137 Deklarasi variabel cashback dengan perhitunganya
138 Deklarasi variabel cashback1 dengan perhitungannya
139 Memberikan nilai terbaru pada setSaldo dengan parameter saldo yang terbaru
140 Mencetak “Saldo anda sisa :” dan pemanggilan method getSaldo
141 Mencetak “------------------------***"
142 Mencetak “Dapat melakukan Transaksi!”
143 Mencetak “Cash Back : Rp. “ dan pemanggilan nilai variabel cashback
144 Deklarasi variabel saldo dan inisialisasinya berupa pemanggilan method
getSaldo ditambah dengan variabel cashback1
145 Memberikan nilai variabel saldo dengan nilai yang terbaru
146 Mencetak “Saldo Anda + 5% : Rp. Dan memanggil method getSaldo
147 Deklarasi else if dengan kondisi getSaldo harus lebih besar daripada
totalAkhir dan jeniskartu berupa “Gold” dan saldo tidak boleh 10000
148 Deklarasi perhitungan variabel saldo dengan method getSaldo dan variabel
totalAkhir
149 Memberikan nilai pada method setSaldo dengan saldo yang terbaru
150 Deklarasi variabel cashback dengan perhitunganya
151 Deklarasi variabel cashback1 dengan perhitungannya
152 Memberikan nilai terbaru pada setSaldo dengan parameter saldo yang terbaru
153 Mencetak “Saldo anda sisa :” dan pemanggilan method getSaldo
154 Mencetak “------------------------***"
155 Mencetak “Dapat melakukan Transaksi!”
156 Mencetak “Cash Back : Rp. “ dan pemanggilan nilai variabel cashback
157 Deklarasi variabel saldo dan inisialisasinya berupa pemanggilan method
getSaldo ditambah dengan variabel cashback1
158 Memberikan nilai pada setSaldo dengan nilai dari variabel saldo terbaru
159 Mencetak “Saldo Anda + 2% : Rp. Dan memanggil method getSaldo
160 Deklarasi else if dengan kondisi getSaldo harus lebih besar daripada
totalAkhir dan jeniskartu berupa “Silver” dan saldo tidak boleh 10000
161 Deklarasi perhitungan variabel saldo dengan method getSaldo dan variabel
totalAkhir
162 Memberikan nilai pada method setSaldo dengan saldo yang terbaru
163 Deklarasi variabel cashback dengan perhitunganya
164 Memberikan nilai terbaru pada setSaldo dengan parameter saldo yang terbaru
165 Mencetak “Saldo anda sisa :” dan pemanggilan method getSaldo
166 Mencetak “------------------------***"
167 Mencetak “Dapat melakukan Transaksi!”
168 Mencetak “Cash Back : Rp. “ dan pemanggilan nilai variabel cashback
169 Mencetak “Saldo Anda + 0% : Rp. Dan memanggil method getSaldo
170 Deklarasi else
171 Mencetak “::: Saldo anda tidak mencukupi :::”
172 Memberi nilai pada method setSaldo dengan saldo yang terbaru
173 Memanggil method topup dengan nilai getSaldo
174 Akhir dari deklarasi else
175 Deklarasi else if jika nilai variabel totalAkhir kurang dari 1000000
176 Deklarasi seleksi kondisi if dengan kondisi nilai method getSaldo harus lebih
besar dari variabel totalAkhir dan getSaldo tidak boleh bernilai 10000
177 Deklarasi variabel saldo dan inisialisasinya berupa perhitungan
178 Memberikan nilai pada setSaldo dengan variabel saldo yang terbaru
179 Mencetak “Saldo anda sisa Rp. “ dan memanggil method getSaldo
180 Mencetak “-----------------------***”
181 Deklarasi else
182 Mencetak “::: Saldo anda tidak mencukupi :::”
183 Memberikan nilai pada method setSaldo dengan variabel saldo dengan nilai
terbaru
184 Pemanggilan method topup dengan parameter method getSaldo
185 Akhir dari seleksi kondisi else kedua
186 Akhir dari seleksi kondisi else pertama
187 Akhir dari method nota
188 Deklarasi method void dengan nama topup dengan parameter variabel a
bertipedata integer
189 Pemberian nilai pada method getSaldo dengan nilai variabel getSaldo
190 Mencetak “---------------------***”
191 Mencetak “*** Top up saldo anda? (ya/tidak)”
192 Mencetak “>>>”
193 Menginput variabel pilih dengan tipedata string
194 Mencetak “-----------------------***”
195 Deklarasi seleksi kondisi if jika nilai variabel pilih sama dengan “ya”
196 Mencetak “Masukkan nominal yang akan di top-up : “
197 Mencetak “>>> Rp. “
198 Menginput variabel topup yang bertipe data integer
199 Mencetak “-----------------------****”
200 Deklarasi dan inisialisasi variabel top_up
201 Mencetak “Saldo anda berhasil di TOP-UP”
202 Mencetak “Saldo Anda Sisa Rp. “ dan memanggil method getSaldo
203 Mencetak “------------------------***”
204 Mencetak “Ingin Berbelanja? (YA/TIDAK)”
205 Mencetak “>>> “
206 Menginput nilai variabel belanjalagi yang bertipe data string
207 Deklarasi baris baru
208 Deklarasi seleksi kondisi if dengan kondisi “ya” pada nilai variabel belanja
lagi
209 Memanggil method pesan
210 Akhir dari seleksi kondisi if
211 Deklarasi seleksi kondisi if lainnya yaitu else if dengan kondisi belanjalagi
bernilai “tidak”
212 Mencetak “------------------------***”
213 Mencetak “Terima kasih telah berbelanja!”
214 Mencetak “Jika Saldo anda tidak mencukupi,”
215 Mencetak “Silahkan topup saldo anda”
216 Mencetak “------------------------***”
217 Akhir dari deklarasi else if
218 Akhir dari method topup
219 Deklarasi method void bernama topup2
220 Memanggil method topup dengan parameter nilai method getSaldo
221 Akhir dari method void topup2
222 Deklarasi method void bernama daftarbarang
223 Mencetak “------------------D A F T A R B A R A N G-------------------“
224 Deklarasi perulangan for dengan variabel i dengan nilai awal 0 dan variabel i
kurang dari panjang variabel data serta variabel i yang akan bertambah nilai
225 Deklarasi perulangan for dengan variabel j dengan nilai awal 0 dan variabel j
kurang dari panjang variabel data serta variabel j yang akan bertambah nilai
226 Mencetak nilai dari variabel array data[i][j] dan ditampilkan dengan format
227 Akhir dari perulangan for variabel j
228 Mencetak baris baru
229 Akhir dari perulangan for variabel i
230 Mencetak “==============================”
231 Akhir dari method daftarbarang
232 Deklarasi method DisplayIndo
233 Mencetak “======================INFORMASI
PELANGGAN======================”
234 Mencetak “No. Pelanggan : “ dan pemanggilan nilai variabel nopelanggan
235 Mencetak “Nama Pelanggan : “ dan pemanggilan nilai variabel nama
236 Mencetak “Jenis Kartu : “ dengan nilai variabel jeniskartu
237 Akhir dari method DisplayInfo
238 Akhir dari class tiny

TinySwalayan.java
1 Mengimport class Scanner pada class TinySwalayan
2 Deklarasi class TinySwalayan
3 Deklarasi variabel pilihan1 bertipe data integer dengan acces modifier public
dan static
4 Deklarasi class main TinySwalayan
5 Intansiasi class Scanner pada variabel input
6 Instansiasi class tiny pada variabel pelanggan1
7 Instansiasi class tiny pada variabel pelanggan2
8 Instansiasi class tiny pada variabel pelanggan3
9 Intansiasi class tiny dengan variabel test1 pada constructor tiny di class tiny
10 Deklarasi perulangan do
11 Mencetak “******************************************”
12 Mencetak “ M E N U"
13 Mencetak “******************************************”
14 Mencetak “1. Memesan Barang”
15 Mencetak “2. Data Barang”
16 Mencetak “3. Informasi Pelanggan”
17 Mencetak “4. TOP UP Saldo”
18 Mencetak “5. Keluar”
19 Mencetak “---------------------------------------------------------------“
20 Mencetak “Masukkan Pilihan : “
21 Menginput nilai pada variabel pilihan1 dengan tipe data integer
22 Mencetak “******************************************”
23 Deklarasi switch case dengan nilai variabel pilihan1
24 Deklarasi case 1 dan memanggil method autentikasi pada class tiny
menggunakan object test1 serta deklarasi break
25 Deklarasi case 2 dan memanggil method daftarbarang pada class tiny
menggunakan object test1 serta deklarasi break
26 Deklarasi case 3 dan memanggil method DisplayInfo pada class tiny
menggunakan object pelanggan1, pelanggan2, dan pelanggan3 serta deklarasi
break
27 Deklarasi case 4 dan memanggil method autentikasi pada class tiny
menggunakan object test1 serta deklarasi break
28 Deklarasi case 5
29 Mencetak “…………………….Terima Kasih……………………..”
30 Mencetak “……………………..E X I T………………………….”
31 Deklarasi menghentikan atau mengeluarkan program serta deklarasi break
32 Deklarasi default selain case case sebelumnya
33 Mencetak “!!!! Pilihan yang diinput tidak terdaftar!!!!!”
34 Mencetak “ Silahkan mulai ulang program. . . . “
35 Deklarasi menghentikan atau mengeluarkan program serta deklarasi break
36 Akhir dari deklarasi switch case
37 Akhir dari deklarasi perulangan do while dengan perulangan tidak akan
berhenti jika pilihan1 tidak sama dengan 6
38 Akhir dari class main TinySwalayan
39 Akhir dari class TinySwalayan
D. SCREENSHOT PROGRAM

Program 1
E. PRAKTIKUM
A. Encapsulation 1
1. Lakukan percobaan diatas dan benahi jika menemukan kesalahan!
Jawab :
Pada class Student.java tidak terdapat kesalahan. Namun pada main class, yaitu
Test.java mengalami kesalahan yaitu pada baris 5-8.

Kesalahan ini terjadi dikarenakan pada method setMark di class Student


memiliki parameter dengan tipe integer bukan tipe String. Dan pada baris-6
kesalahan terdapat pada s1.setName(); pada sintak tersebut seharusnya bukan
setName, melainkan getName, begitupula pada baris ke-7, setMark seharusnya
menjadi getMark. Maka sintaks pada baris ke 5-7 tidak terdapat tanda
kesalahan pada nomor baris.

Namun pada baris ke-8, sintaks mengalami error karena instance variabel name
dan mark pada class Student seharusnya variabel name dan mark tidak di
deklarasikan pada baris-8 dikarenakan variabel name dan mark tidak memiliki
deklarasi di class main. Maka sintaks pada baris-8 seharusnya berupa :

Maka sintaks pada main class, Test.java ketika di jalankan tidak mengalami
kesalahan. Serta output pada class main, Test.java berupa :

2. Jika pada baris 6 s1.setName diubah menjadi s1.getName apa yang terjadi?
Jelaskan!
Jawab :
Jika pada baris ke-6 dari s1.setName diubah menjadi s1.getName maka nilai
yang telah diinsialisasi pada method setName pada class Student akan
membaca nilai pada accessor method yaitu getName.
Maka output berupa :

3. Setelah diperbaiki, ubahlah hak akses pada baris 4 (pada class Student)
menjadi private apa yang terjadi jika class Test dijalankan? Jelaskan!
Jawab :
Jika pada baris ke-4, hak akses public pada class Student diganti menjadi
private

Maka pada class Main akan terjadi error.

Dan ketika program dijalankan maka output yang dihasilkan juga akan
mengalami kesalahan
Hal ini dikarenakan hak akses modifier berupa private hanya dapat diakses
pada class itu sendiri. Berbeda dengan access modifier public yang dapat
diakses di class yang berbeda-beda maupun class itu sendiri serta pada package
yang berbeda.

4. Jika kedua kelas diatas terdapat dalam package yang sama apakah konsep
enkapsulasi tetap berfungsi? Jelaskan!
Jawab :
Pada program yang terdapat di dalam package yang sama konsep enkapsulasi
tetaplah berfungsi dengan catatan bahwa access modifier dari method yang
berada di tiap-tiap class memiliki access modifier berupa public. Karena access
modifier berupa public dapat diakses pada class itu sendiri, class lainnya serta
dapat diakses didalam package.

B. Encapsulation 2
1. Method apakah yang menjadi accessor (getter) ?
Jawab :
Pada class vehicle1.java yang menjadi sebagai accessor (getter) yaitu getLoad
dan getMaxLoad.

Pada kedua method tersebut digunakan untuk membaca instance variabel Load
dan MaxLoad yang memiliki access modifier berupa private, dan juga kedua
method ini memiliki return value.

2. Tambahkan source code berikut dibawah baris ke 6 pada class TestVehicle1.


System.out.println("Add load(100kg) : " + (vehicle.load=500));
a. Jalankan program, apakah output dari program tersebut?
b. Kembalikan program seperti semula.
Jawab :
Jika pada baris ke 6 pada class TestVehicle1. System.out.println("Add
load(100kg) : " + (vehicle.load=500)); maka pada baris ke-7 akan mengalami
error/kesalahan.
Hal ini dikarenakan variabel load pada class Vehicle1 memiliki access
modifier berupa private. Access modifier private hanya dapat diakses di class
itu sendiri. Sehingga variabel load tersebut tidak dapat diakses di class
TestVehicle1.

3. Ubahlah tipe data pada atribut load dan maxload pada class Vehicle1 menjadi
public. Jalankan program, apakah output dari program tersebut?
a. Tambahkan source kode berikut dibawah baris ke 6 pada class
TestVehicle1. System.out.println("Add load(100kg) : " +
(vehicle.load=500));
Jalankan program, apakah output dari program tersebut? Kembalikan
program seperti semula.
b. Tambahkan source kode berikut dibawah baris ke 12 pada class
TestVehicle1. System.out.println("Add load(100kg) : " +
(vehicle.load=500));
Jalankan program, apakah output dari program tersebut? Kembalikan
program seperti semula.
Jawab :
a. Jika dibawah baris ke 6 pada class TestVehicle1. System.out.println("Add
load(100kg) : " + (vehicle.load=500)); maka pada class TestVehicle1 akan
berubah menjadi :
Dan pada class Vehicle1 sintaks pada baris ke-3 yaitu mengubah acces
modifier pada variabel load dan maxLoad menjadi public

Maka ketika program dijalankan, program menghasilkan output berupa :


b. Jika dibawah baris ke 12 pada class TestVehicle1.
System.out.println("Add load(100kg) : " + (vehicle.load=500)); maka
pada class TestVehicle1 akan berubah menjadi :

Dan pada class Vehicle1 sintaks pada baris ke-3 yaitu mengubah acces
modifier pada variabel load dan maxLoad menjadi public
Maka ketika program dijalankan, program menghasilkan output berupa :

4. Ulangi instruksi pada nomor 3 dengan mengubah tipe data pada attribute load
dan maxload pada class Vehicle1 menjadi protected.
Jawab :
Jika pada class Vehicle1 attribute load dan maxload diubah acess modifiernya
dari private menjadi protected maka sintaks pada class Vehicle1 berubah
menjadi :
Jika dibawah baris ke 6 pada class TestVehicle1. System.out.println("Add
load(100kg) : " + (vehicle.load=500)); maka pada class TestVehicle1 akan
berubah menjadi :

Maka ketika program dijalankan, program menghasilkan output berupa :


Jika dibawah baris ke 12 pada class TestVehicle1. System.out.println("Add
load(100kg) : " + (vehicle.load=500)); maka pada class TestVehicle1 akan
berubah menjadi :

Maka ketika program dijalankan, program menghasilkan output berupa :


5. Ulangi Instruksi pada nomor 4 dengan mengubah tipe data pada atribut load
dan maxload pada class Vehicle1 menjadi default.
Jawab :
Jika pada class Vehicle1 attribute load dan maxload diubah acess modifiernya
dari private menjadi default maka sintaks pada class Vehicle1 berubah menjadi
:

Jika dibawah baris ke 6 pada class TestVehicle1. System.out.println("Add


load(100kg) : " + (vehicle.load=500)); maka pada class TestVehicle1 akan
berubah menjadi :
Maka ketika program dijalankan, program menghasilkan output berupa :
Jika dibawah baris ke 12 pada class TestVehicle1. System.out.println("Add
load(100kg) : " + (vehicle.load=500)); maka pada class TestVehicle1 akan
berubah menjadi :

Maka ketika program dijalankan, program menghasilkan output berupa :


F. KESIMPULAN
1. Enkapsulasi adalah pembungkus suatu data atau enkapsulasi sering juga disebut
sebagai penyembunyi data. Hal ini bertujuan agar ketika program melakukan suatu
proses di dalam class yang berbeda, class tersebut tidak dapat secara sembarang
untuk dapat mengaksesnya. Enkapsulasi sendiri pada dasarnya membuat suatu
class yang menyatakan variabel atau method pada sebuah class tertentu tidak dapat
dikased dengan class lain tanpa membuat method atau variabel tersebut di
deklarasikan dengan access modifier (Private atau Protected).
2. Access Modifier dalam bahasa pemrograman java adalah sebuah hak akses yang
biasanya ikut di deklarasikan sebelum nama variable atau nama class maupun
nama method.
3. Tujuan adanya Access Modifier yaitu agar variable, method serta class itu tidak
sembarangan dapat diakses. Access Modifier ada protected, private, public, dan
default. Access Modifier dengan public dapat dideklarasikan ke dalam class,
package, subclass dan world. Access modifier dengan protected dapat di
deklarasikan pada class, package, subclass namun tidak pada world. Sedangkan
Access Modifier default dapat diakses pada class dan package namun tidak pada
world maupun subclass. Sedangkan Access Modifier Private hanya dapat diakses
pada class itu sendiri dan tidak dapat diakses pada class lain, atau di dalam package
atau di subclass serta di world.

Anda mungkin juga menyukai