Anda di halaman 1dari 20

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

BAB : ENCAPSULATION
NAMA : LATIFA GIBRANOVA ANWAR
NIM : 175150407111039
TANGGAL : 13/03/2018
ASISTEN : HABIB YAFI ARDI

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.

5. Apabila pelanggan melakukan 3x kesalahan dalam autentifikasi, maka akun


pelanggan akan defreeze / diblokir sehingga tidak bisa digunakan lagi.
B. SOURCE CODE
Pelanggan.java
1 package pemograman.lanjut.Bab4;
2 public class Pelanggan {
3 private int Saldo, Pin;
4 private String NmrRek, Nama, Jenis;

5 public Pelanggan(int Saldo, int Pin, String NmrRek, String


Nama) {

6 char[] digit = new char[2];


7 for (int i=0;i<digit.length;i++) {
8 digit[i] = NmrRek.charAt(i);
9 int nilai = Integer.parseInt(new String(digit));
10 this.Saldo = Saldo;
11 this.Pin = Pin;
12 this.NmrRek = NmrRek;
13 this.Nama = Nama;
14 if(nilai==56)
15 Jenis = "Gold";
16 if(nilai==38)
17 Jenis = "Silver";
18 if(nilai==74)
19 Jenis = "Platinum";
20 }
21 public int getSaldo() {
22 return Saldo;
23 }
24 public int getPin() {
25 return Pin;
26 }
27 public String getNmrRek() {
28 return NmrRek;
29 }
30 public String getNama() {
31 return Nama;
32 }
33 public String getJenis() {
34 return Jenis;
35 }
36 public void setSaldo(double Saldo) {
37 this.Saldo = (int) Saldo;
38 }
39 public void setPin(int Pin) {
40 this.Pin = Pin;
41 }
42 }

Database.java
1 package pemograman.lanjut.Bab4;
2 import java.util.Scanner;
3 public class Database {
4 Pelanggan[] pelanggan = new Pelanggan[3];
5 Scanner input = new Scanner(System.in);
6 public Database(){
7 pelanggan[0] = new Pelanggan(9000000,
488129,"3808125204","Latifa Gibranova Anwar");
8 pelanggan[1] = new Pelanggan(9000000,
199928,"5608211078","Fitrika Fridanova");
9 pelanggan[2] = new Pelanggan(9000000,
281199,"7408131585","Bella Vian Oktavia");
10 }
11 public void TopUp(Pelanggan pelanggan){
12 int nilai, saldo;
13 boolean work;
14 do{
15 System.out.print("Jumlah Yang Ingin Di Top-Up : ");
16 nilai = input.nextInt();
17 saldo = pelanggan.getSaldo()+ nilai;
18 work = SaldoAkhir(saldo);
19 if(work == true)
20 System.out.println("\nSELAMAT! ANDA BERHASIL TOP UP
SEBESAR Rp"+nilai);
21 }while(work == false);
22 pelanggan.setSaldo(saldo);
23 }
24 public void Pembelian(Pelanggan pelanggan){
25 String pilih;
26 int saldo1, saldo2, pin, indeks = 0, a = 0;
27 double nilai;
28 boolean work;
29 System.out.print("Total Belanja : ");
30 nilai = input.nextInt();
31 if(pelanggan.getJenis().equalsIgnoreCase("Gold")){
32 if(nilai>=1000000)
33 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.07)));
34 else
35 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.02)));}
36 else
if(pelanggan.getJenis().equalsIgnoreCase("Silver")){
37 if(nilai>=1000000)
38 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.05)));
39 else
40 saldo1 = (int) ((double)pelanggan.getSaldo() -
nilai);}
41 else {
42 if(nilai>=1000000)
43 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.1)));
44 else
45 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.05)));}
46 pelanggan.setSaldo(saldo1);
47 work = SaldoAkhir(saldo1);
48 System.out.println("Transaksi pembelian sebesar
Rp"+(int)nilai+" Sukses");
49 }

50 public void Display(Pelanggan pelanggan){


51 System.out.println("Saldo Anda Saat Ini : Rp"
+pelanggan.getSaldo());
52 }
53 public boolean PIN_REK(Pelanggan[] pelanggan, int pin,
String rek){
54 int nilai = 0;
55 for (int i=0;i<pelanggan.length;i++) {
56 if(pelanggan[i].getPin()==pin){
57 if(pelanggan[i].getNmrRek().
58 equalsIgnoreCase(rek))
59 nilai++;
60 }
61 }
62 if(nilai == 1)
63 return true;
64 else{
65 return false;
66 }
67 }
68 public static boolean SaldoAkhir(int saldo){
69 if(saldo >= 100000)
70 return true;
71 else{
72 return false;
73 }
74 }
75 }

MainSwalayanTiny.java
1 package pemograman.lanjut.Bab4;
2 import java.util.Scanner;
3 public class MainSwalayanTiny {
4 int pin;
5 public static void main(String[] args) {
6 Scanner input = new Scanner(System.in);
7 Database data = new Database();
8 MainSwalayanTiny obj = new MainSwalayanTiny();
9 int pilih, pin, indeks;
10 String nopel;
11 boolean work;
12 int count=0;
13 do {
System.out.print(" SELAMAT DATANG DI SWALAYAN TINY\n"
+
"===========================================================\n"
+ "Masukan PIN Anda : ");
14 pin = input.nextInt();
15 obj.getPin(pin);
16 System.out.print("Masukan No. Pelanggan Anda : ");
17 input.nextLine();
18 nopel = input.nextLine();
19 work = data.PIN_REK(data.pelanggan, pin, nopel)
20 count++;

21 if(work == true){
22 obj.nextPage();
23 }
24 if (work == false) {
25 System.out.println(" PIN atau No. Pelanggan yang anda ma
salah");
26 } if ((work == false)&&(count ==3)) {
27 System.out.println("!! ANDA TELAH MEMASUKAN PIN YANG SALAH
SEBANYAK TIGA KALI !!\n"
+ " AKUN ANDA DITANGGUHKA
");
28 break;
29 } else {
30
31 System.out.println("========================================================
32 }

33 } while (((work == false) && count < 4));


34 }
35 public void nextPage(){
36 Scanner input = new Scanner(System.in);
37 Database data = new Database();
38 int pilih, indeks;

39 indeks = Nama(data.pelanggan, pin);


40 System.out.println("\nSelamat Datang " +
data.pelanggan[indeks].getNama());
41 do {
42 System.out.print("\n=====================Pilih
Transaksi======================\n"
+ "1. Top Up\n"
+ "2. Transaksi Pembelian\n"
+ "3. Keluar \n"
+ "Pilih : ");
43 pilih = input.nextInt();
44 switch (pilih) {
45 case 1:

46 System.out.println("========================================================
47 data.TopUp(data.pelanggan[indeks]);
48 data.Display(data.pelanggan[indeks]);

49 System.out.println("========================================================
50 break;
51 case 2:

52 System.out.println("========================================================
53 data.Pembelian(data.pelanggan[indeks]);
54 data.Display(data.pelanggan[indeks]);

55 System.out.println("========================================================
56 break;
57 case 3:

58 System.out.println("========================================================
59 System.out.println(" TERIMAKASIH SUDAH
BERTRANSAKSI\n"
+ " SILAHKAN DATANG KEMBALI DI SW
TINY");
60 break;
61 default:
62 System.out.println("Pilihan Tidak Ditemukan");
C. PEMBAHASAN
Pelanggan.java
1 Deklarasi package pemograman.lanjut
2 Deklarasi class dengan nama Pelanggan
3 Mendeklarasi variabel dengan modifier private bertipe data integer bernama Saldo
dan Pin
4 Mendeklarasi variabel dengan modifier private bertipe data String bernama NmrRek,
Nama, dan Jenis
5 Mendeklarasi variabel dengan modifier public dengan nama constructor Pelanggan
dan parameter yang bertipe data integer dengan nama Saldo dan Pin serta parameter
yang bertipe data String dengan nama NmrRek dan Nama
6 Mendeklarasi array char dengan nama digit yang memiliki 2 indeks
7 Melalukan perulangan dengan for hingga kondisi yang ada pada Loop Condition
hingga baris 11
8 Perulangan for
9 Mendeklarasi dan inisialisasi variabel nilai dengan mengcasting variabel digit untuk
dimasukkan nilainya
10 Menginisialisasi atribut Saldo dengan nilai yang diberikan pada variabel Saldo dari
suatu objek dibuat
11 Menginisialisasi atribut Pin dengan nilai yang diberikan pada variabel Pin dari suatu
objek dibuat
12 Menginisialisasi atribut NmrRek dengan nilai yang diberikan pada variabel NmrRek
dari suatu objek dibuat
Menginisialisasi atribut Nama dengan nilai yang diberikan pada variabel Nama dari
13 suatu objek dibuat
Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
14 yang ada di baris selanjutnya
Mendeklarasikan Jenis dengan String Gold
15 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
16 yang ada di baris selanjutnya
Mendeklarasikan Jenis dengan String Silver
17 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
18 yang ada di baris selanjutnya
Mendeklarasikan Jenis dengan String Platinum
19 Akhir dari constructor berjalan
20 Mendeklarasikan method getSaldo yang bertipe data integer
21 Mengembalikan nilai pada atribut Saldo ketika program dijalankan
22 Akhir dari method getSaldo
23 Mendeklarasikan method getPin yang bertipe data integer
24 Mengembalikan nilai pada atribut Pin ketika program dijalankan
25 Akhir dari method getPin
26 Mendeklarasikan method getNmrRekyang bertipe data integer
27 Mengembalikan nilai pada atribut Saldo ketika program dijalankan
28 Akhir dari method getNmrRek
29 Mendeklarasikan method getNama yang bertipe data integer
30 Mengembalikan nilai pada atribut Nama ketika program dijalankan
31 Akhir dari method getNama
32 Mendeklarasikan method getJenis yang bertipe data integer
33 Mengembalikan nilai pada atribut Jenis ketika program dijalankan
34 Akhir dari method getJenis
35 Mendeklarasikan method public tipe void bernama setSaldo yang berparameter
36 variabel Saldo yang bertipe data double
37 Menginisialisas
38 Akhir dari method setSaldo
39 Mendeklarasikan method setPin yang bertipe void dengan parameter Pin yang
40 bertipe data integer
41 Akhir dari method void
42 Akhir dari class Pelanggan

Database.java
1 Deklarasi package pemograman.lanjut.Bab4
2 Melakukan import dari package Scanner untuk menggunakan fungsi scanner pada
program
3 Deklarasi class dengan nama Database
4 Mendeklarasi array Nasabah dengan nama pelanggan yang memiliki 3 indeks
5 Deklarasi variabel Scanner dengan nama variabel input
6 Mendeklarasikan constructor Database
7 Instansiasi objek pada kelas Pelanggan dengan nama pelanggan indeks ke 0
8 Instansiasi objek pada kelas Pelanggan dengan nama pelanggan indeks ke 1
9 Instansiasi objek pada kelas Pelanggan dengan nama pelanggan indeks ke 2
10 Akhir dari constructor
11 Mendeklarasikan method TarikTunai yang bertipe void dengan parameter pelanggan
12 Mendeklarasikan variabel nilai dan saldo dengan tipe integer
13 Mendeklarasikan variabel work dengan tipe boolean
14 Awal dari perulangan do while
15 Mencetak "Jumlah Yang Ingin Di Top-Up : "
16 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable nilai
17 Inisialisasi variabel saldo yang bernilai hasil dari isi variabelpelanggan.getSaldo()
ditambah dengan isi darivariabel nilai
18 Memanggil method SaldoAkhir dengan memberikan 1 parameter variabel saldo
19 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
20 Mencetak "\nSELAMAT! ANDA BERHASIL TOP UP SEBESAR Rp" serta isi dari
variabel nilai
21 Melakukan fungsi logika if dimana ketika bernilai false, akan menjalankan program
yang ada di baris selanjutnya
22 Memanggil instance method bernama setSaldo dengan objek pelanggan dengan
memberikan variabel saldo
23 Akhir dari method TarikTunai
24 Mendeklarasikan method Pembelian yang bertipe void dengan parameter pelanggan
25 Mendeklarasikan variabel pilih dengan tipe String
26 Mendeklarasikan variabel saldo1, saldo2, pin, indeks, dan a dengan tipe integer
27 Mendeklarasikan variabel nilai dengan tipe double
28 Mendeklarasikan variabel work dengan tipe boolean
29 Mencetak "Total Belanja : "
30 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable nilai
31 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
32 Jika isi dari variabel nilai lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
33 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.07
34 Jika isi dari variabel nilai tidak lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
35 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.02
36 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
37 Jika isi dari variabel nilai lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
38 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.05
39 Jika isi dari variabel nilai tidak lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
40 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
variabel nilai
41 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
42 Jika isi dari variabel nilai lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
43 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.1
44 Jika isi dari variabel nilai tidak lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
45 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.05
46 Memanggil instance method bernama setSaldo dengan objek pelanggan dengan
memberikan variabel saldo
47 Inisialisasi varibel work yang nilainya sesuai dengan hasil method return Saldo Akhir
48 Mencetak "SALDO ANDA :
49 Mencetak "Transaksi pembelian sebesar Rp" serta isi dari variabel nilai ditambah
"Sukses"
50 Akhir dari method Pembelian
51 Mendeklarasikan method Display yang bertipe void dengan parameter pelanggan
52 Mencetak "Saldo Anda Saat Ini : " serta isi dari pelanggan.getSaldo();
53 Akhir dari method Display
54 Mendeklarasikan method Display yang bertipe boolean dengan parameter pelanggan,
variabel pinn yang bertipe data integer, dan variabel rek yang bertipe data String
55 Mendeklarasikan variabel nilai yang bertipe data integer yang bernilai 0
56 Melakukan perulangan for
57 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
58 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
59 Post increment dari variabel nilai
60 Akhir dari if
61 Akhir dari perulangan for
62 Jika isi dari nilai sama dengann 1, program akan menjalankan baris selanjutnya
63 Mengembalikan nilai true
64 Jika isi dari nilai tidak sama dengann 1, program akan menjalankan baris selanjutnya
65 Mengembalikan nilai false
66 Akhir dari else
67 Akhir dari method PIN_REK
68 Mendeklarasikan method SaldoAkhir yang bertipe boolean dengan parameter saldo
yang bertipe data integer
69 Jika isi dari saldo lebih dari sama dengan 10000, program akan menjalankan baris
selanjutnya
70 Mengembalikan nilai true
71 Jika isi dari saldo tidak lebih dari sama dengan 10000, program akan menjalankan
baris selanjutnya
72 Mengembalikan nilai false
73 Akhir dari if else
74 Akhir dari method SaldoAkhir
75 Akhir dari class Pelanggan

MainSwalayanTiny.java
1 Deklarasi package pemograman.lanjut.Bab4
2 Melakukan import dari package Scanner untuk menggunakan fungsi scanner pada
program
3 Deklarasi class dengan nama MainSwalayanTiny
4 Deklarasi variabel pin bertipe data integer
5 Deklarasi dari method/fungsi main, untuk menjalankan program.
6 Deklarasi variabel Scanner dengan nama variabel input
7 Instansiasi objek bernama data
8 Instansiasi objek bernama obj
9 Deklarasi variabel pilih, pin, dan indeks bertipe data integer
10 Deklarasi variabel nopel bertipe data String
11 Deklarasi variabel work bertipe data boolean
12 Deklarasi variabel count bertipe data integer bernilai 0
13 Mencetak " SELAMAT DATANG DI SWALAYAN TINY\n" +
14 "===========================================================\n"
+ "Masukan PIN Anda :"
15 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable pin
16 Memanggil method nextPage melalui object ob
17 Mencetak "Masukan No. Pelanggan Anda : "
18 Perintah untuk memasukkan inputan dari user
19 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable nopel
20 Post increment dari variabel count
21 Jika nilai dari work sama dengan true, program akan menjalankan baris selanjutnya
22 Memanggil method nextPage melalui object ob
23 Akhir dari if
24 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
25 Mencetak " PIN atau No. Pelanggan yang anda masukan salah"
26 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
27 Mencetak "!! ANDA TELAH MEMASUKAN PIN YANG SALAH SEBANYAK
TIGA KALI !!\n" + " AKUN ANDA DITANGGUHKAN "
28 Batas dari kondisi if
29 Program akan menjalankan baris selanjutnya jika pada fungsi if bernilai salah
30 Mencetak
"==========================================================="
31 Akhir dari else
32 Deklarasi while dengan memasukkan kondisi perulangan. Apabila while bernilai true
maka akan mengulang pada bagian awal do. Jika bernilai false maka akan keluar dari
perulangan
33 Akhir dari perulangan do while
34 Mendeklarasikan method nextPage yang bertipe void
35 Deklarasi variabel Scanner dengan nama variabel input
36 Instansiasi objek bernama data
37 Deklarasi variabel pilih dan indeks bertipe data integer
38 Inisialisasi varibel indeks yang nilainya sesuai dengan hasil method return Nama
39 Mencetak "Selamat datang "
40 Perulangan do while
41 Mencetak "\n=====================Pilih
Transaksi======================\n" + "1. Top Up\n" + "2. Transaksi
Pembelian\n" + "3. Keluar \n" + "Pilih : "
42 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable pilih
43 Pencabangan logika dengan menggunakan switch-case
44 Mendeklarasikan kondisi pertama
45 Mencetak
"==========================================================="
46 Memanggil instance method bernama TopUpdengan objek data dengan memberikan
objek pelanggan
47 Memanggil instance method bernama Display dengan objek data dengan memberikan
objek pelanggan
48 Mencetak
"==========================================================="
49 Batas dari case satu
50 Mendeklarasikan kondisi kedua
51 Mencetak
"==========================================================="
52 Memanggil instance method bernama Pembelian objek data dengan memberikan objek
pelanggan
53 Memanggil instance method bernama Display dengan objek data dengan memberikan
objek pelanggan
54 Mencetak
"==========================================================="
55 Batas dari case dua
56 Mendeklarasikan kondisi ketiga
57 Mencetak
"==========================================================="
58 Mencetak " TERIMAKASIH SUDAH BERTRANSAKSI\n" + "
SILAHKAN DATANG KEMBALI DI SWALAYAN TINY"
59 Batas dari case tiga
60 Jika nilai yang dimasukkan pada variabel pilihan tidak ada dimasing-masing kondisi,
maka statement yang berada di default akan di proses dan akan tercetak MENU
61 PILIHAN TIDAK TERSEDIA"
62 Mencetak "Pilihan Tidak Ditemukan"
D. SCREENSHOT PROGRAM
Top Up dan Transaksi Jenis Silver

Transaksi Jenis Silver <1000000


Top Up dan Transaksi Jenis Gold >1000000

Transaksi Jenis Gold <1000000


Top Up dan Transaksi Jenis Platinum >1000000

Transaksi Jenis Platinum <1000000

Tiga kali salah memasukan PIN


E. PRAKTIKUM
A. Encapsulation 1
1. Lakukan percobaan diatas dan benahi jika menemukan kesalahan!
Jawab:

Tidak terdapat kesalahan pada Student.java. Program berjalan dengan baik.


Student.java
1 public class Student {
2 private String name;
3 private int mark;
4 public void setName(String n){
5 name=n;
6 }
7 public String getName(){
8 return name;
9 }
10 public void setMark(int m){
11 mark=m;
12 }
13 public int getMark(){
14 return mark;
15 }
16 }

Pada Test.java terdapat kesalahan pada baris ke 6-9.


Baris ke-6 error karena parameter yang di inputkan berupa String, sedangkan
seharusnya parameter yang di inputkan adalah integer. Maka, agar program tidak
error tanda “” dihilangkan.
Pada baris ke-7 dan ke-8 error karena memanggil method setter dimana fungsi
method tersebut memberi nilai pada suatu atribut atau variabel. Sedangkan
method yang kita butuhkan adalah method yang mengambil suatu nilai pada
atribut atau variabel, yaitu method getter.
Pada baris ke-9 error karena tidak ditemukannya variabel name dan mark.
Seharusnya agar program tidak error lagi yang dipanggil adalah method getter
dari atribut name dan mark.

Test.java
1 package pemograman.lanjut;
2 public class Test {
3 public static void main(String [] args) {
4 Student s1=new Student();
5 s1.setName("Enkapsulasi");
6 s1.setMark(90);
7 System.out.println("s1Name is "+s1.getName());
8 System.out.println("s1Mark is "+s1.getMark());
9 System.out.println("name dan mark
"+s1.getName()+" "+s1.getMark());
10 }
11 }

2. Jika pada baris 6 s1.setName diubah menjadi s1.getName apa yang terjadi?
jelaskan!
Jawab:

Sama seperti yang sudah dijelaskan sebelumnya, Baris ke-6 error karena
parameter yang di inputkan berupa String, sedangkan seharusnya parameter yang
di inputkan adalah integer. Maka, agar program tidak error tanda “” dihilangkan.

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

Akan terjadi error pada baris ke-5 yaitu pada saat pemanggilan method setName
di Test.java karena access modifier diubah dari public menjadi private dimana
method itu hanya bisa diakses pdaa class itu sendiri (Student.java) tidak bisa di
class yang lain (Test.java)

Student.java
1 public class Student {
2 private String name;
3 private int mark;
4 private void setName(String n){
5 name=n;
6 }
7 public String getName(){
8 return name;
9 }
10 public void setMark(int m){
11 mark=m;
12 }
13 public int getMark(){
14 return mark;
15 }
16 }
4. Jika kedua kelas diatas terdapat dalam package yang sama apakah konsep
enkapsulasi tetap berfungsi? jelaskan!
Jawab :

Enkapsulasi akan tetap berfungsi apabila sesuai dengan kapasitas hak akses yang
dibuat. Maka dari itu terdapat berbagai jenis enkapsulasi supaya program dapat
memahami akses mana saja yang dapat diizinkan terlepas dari class tersebut
berbeda package atau tidak.

B. Encapsulation 2
1. Method apakah yang menjadi accessor (getter) ?
Jawab :

Method “getLoad()” dan “getMaxLoad()”.

2. Tambahkan source code 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.
Jawab :
Akan terjadi error karena atribut load pada class Vehicle1 bersifat private.
Vehicle1.java
//
4 private double load, maxLoad;
//
10 public double getLoad(){
11 return this.load;
12 }
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.
Jawab :
Vehicle1.java
//
4 public double load, maxLoad;
//

TestVehicle1.java
//
7 System.out.println("Add load(100kg) : " +
(vehicle.load=500));
//

Hasil Output :

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 :
Vehicle1.java
//
4 public double load, maxLoad;
//

TestVehicle1.java
//
10 System.out.println("Add load(100kg) : "
+(vehicle.load=500));
//
4. Ulangi instruksi pada nomer 4 dengan mengubah tipe data pada atribut load dan
maxload pada class Vehicle1 menjadi protected.
Jawab :

Vehicle1.java
//
4 protected double load, maxLoad;
//

TestVehicle1.java
//
7 System.out.println("Add load(100kg) : " +
(vehicle.load=500));
//

Hasil Output :

Vehicle1.java
//
4 protected double load, maxLoad;
//

TestVehicle1.java
//
10 System.out.println("Add load(100kg) : "
+(vehicle.load=500));
//
5. Ulangi instruksi pada nomer 4 dengan mengubah tipe data pada atribut load dan
maxload pada class Vehicle1 menjadi default.
Jawab!

Vehicle1.java
//
4 double load, maxLoad;
//

TestVehicle1.java
//
7 System.out.println("Add load(100kg) : " +
(vehicle.load=500));
//

Hasil Output :

Vehicle1.java
//
4 double load, maxLoad;
//

TestVehicle1.java
//
10 System.out.println("Add load(100kg) : "
+(vehicle.load=500));
//
F. KESIMPULAN

Dari percobaan yang sudah saya lakukan, dapat disimpulkan bahwa Encapsulation
adalah pembungkus, encapsulation pada object oriented maksudnya adalah
membungkus class dan menjaga apa apa saja yang ada didalam class tersebut, baik
method ataupun atribut, agar tidak dapat di akses oleh class lainnya.

Ketika sebuah program Java ingin diciptakan, dan user menginginkan beberapa data
dilarang untuk diakses, pengimplementasi inilah yang sering disebut Access Modifiers.
Access Modifier / Pemberian hak akses adalah sesuatu hal yang paling penting
diperhatikan oleh developer atau programmer Java dalam membuat sebuah program
atau aplikasi. Kegunaan Access Modifiers ini untuk memberi hak akses kepada user.
Tentu tidak semua data yang berada di dalam suatu kelas, atau turunannya dapat diakses.

Di dalam Java, terdapat 4 macam Access Modifiers, diantaranya:

1. Akses Default adalah tipe yang hanya class dalam package yang sama yang
memiliki hak akses terhadap variabel dan methods dalam class. Contoh
program sebagai berikut:

public class Car { //akses dasar terhadap variabel


int name; //akses dasar terhadap metode
String getName(){
return name;}
}

2. Akses Public adalah class member untuk diakses baik dari dalam dan luar class.
Sebagai contoh:

public class Car { //akses dasar terhadap variabel


public int name; //akses dasar terhadap metode
public String getName(){
return name; }
}

3. Akses Private pengaksesan class hanya dapat diakses oleh class dimana tipe
ini dibuat. Contoh kutipan program dari akses private:

public class Car { //akses dasar terhadap variabel


private int name; //akses dasar terhadap metode private
String getName(){
return name; }
}

4. Akses Protected mengijinkan class member untuk diakses oleh method dalam
class tersebut dan elemen – elemen subclass. Sebagai contoh:

public class Car { //akses dasar terhadap variabel


private int name; //akses dasar terhadap metode
private String getName(){
return name; }
}

Anda mungkin juga menyukai