Anda di halaman 1dari 11

LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

BAB : CONSTRUCTOR DAN INSTANCE METHOD


NAMA : ARIF RAMADHAN
NIM : 155150401111139
TANGGAL : 11/03/2016
ASISTEN : - IRWIN DERIYAN FERDIANSYAH
- IBRAHIM YUNUS MUHAMMAD FIQHAN

A. DEFINISI MASALAH

1. Buatlah implementasi sebuah mesin ATM. Dalam mesin ATM, password dapat
dimasukkan oleh user. Selain itu, system memiliki pilihan menu melihat saldo,
menarik uang dan menstransfer ke rekening lain!

B. SOURCE CODE
1. Class Program implementasi meisn ATM.

1 package Praktikum2;
2
3 public class Atm {
4
5 String nama, pin, norek;
6 int saldo, uang;
7
8 public Atm(String nama, String pin, String norek, int
9 saldo) {
10 this.nama = nama;
11 this.pin = pin;
12 this.norek = norek;
13 this.saldo = saldo;
14 uang = 0;
15 }
16
17 public void saldo() {
18 System.out.println("Saldo di Rekening anda : " +
19 saldo);
20
21 }
22
23 public void uang(int uang) {
24 this.uang = uang;
25 if (saldo > uang) {
26 saldo = saldo - uang;
27 System.out.println("===========================");
28 System.out.println("Penarikan Sebesar Rp." + uang);
29 System.out.println("Sisa Saldo anda saat ini Rp." +
30 saldo);
31 } else {
32 System.out.println("Saldo anda Tidak Cukup");
33 }
34 }
35
36 public void infoTransfer() {
37 System.out.println("Nomer Rekening Atas nama " + nama);
38 }
39
40 public void setTransfer(int uang) {
41 this.uang = uang;
42 if (saldo > uang) {
43 saldo = saldo - uang;
44 System.out.println("Dengan Nomer Rekening: " +
45 norek);
46 System.out.println("Transfer Sebesar : " + uang);
47 System.out.println("Saldo Anda saat ini : " +
48 saldo);
49 } else {
50 System.out.println("Saldo anda Tidak Cukup");
51 }
52 }
53
54 public void Transfer(Atm a) {
55 a.saldo = a.saldo + uang;
56 }
57
58 }

2. Main Class Program implementasi meisn ATM.

1 package Praktikum2;
2
3 //NAMA : Arif Ramadhan
4 //NIM : 155150401111139
5 //Kelas : SI-H
6
7
8 import java.util.Scanner;
9
10 class AtmPanggil {
11
12 public static void main(String[] args) {
13 Scanner in = new Scanner(System.in);
14 String tanya, norek;
15 Atm atm = new Atm("Arif Ramadhan", "240198",
16 "12345678", 10000000);
17 Atm atm1 = new Atm("Kamu iya kamu", "980124",
18 "87654321", 10000000);
19
20 do {
21 System.out.print("Masukan PIN anda : ");
22 String pin = in.next();
23 if (pin.equals(atm.pin) || pin.equals(atm1.pin)) {
24 System.out.println("=========== BANK MAHASISWA
25 BRAWIJAYA ==============");
26 System.out.println("1. Tarik Tunai ");
27 System.out.println("2. Informasi Saldo ");
28 System.out.println("3. Transfer ");
29 System.out.println("4. Keluar");
30 System.out.print("Pilihan Anda: ");
31 int pilihan = in.nextInt();
32 switch (pilihan) {
33 case 1:
34 System.out.println("===Tarik
35 Tunai===");
36 System.out.print("Masukkan Nominal
37 Tarik Tunai : ");
38 if (pin.equals(atm.pin)) {
39 atm.uang(in.nextInt());
40 } else {
41 atm1.uang(in.nextInt());
42 }
43 break;
44 case 2:
45 System.out.println("===Informasi
46 Saldo===");
47 if (pin.equals(atm.pin)) {
48 atm.saldo();
49 } else {
50 atm1.saldo();
51 }
52 break;
53 case 3:
54
55 System.out.println("=====Transfer=====");
56
57 if (pin.equals(atm.pin)) {
58 System.out.print("Masukkan No.Rek
59 Tujuan : ");
60 norek = in.next();
61 if (norek.equals(atm1.norek)) {
62 atm1.infoTransfer();
63 System.out.print("Masukkan
64 Nominal Transfer : ");
65 atm.setTransfer(in.nextInt());
66 atm.Transfer(atm1);
67 } else {
68 System.out.println("Data yang
69 anda input salah");
70 }
71 } else {
72 System.out.print("Masukkan No.Rek
73 Tujuan : ");
74 norek = in.next();
75 if (norek.equals(atm.norek)) {
76 atm.infoTransfer();
77 System.out.print("Masukkan
78 Nominal Transfer: Rp. ");
79 atm1.setTransfer(in.nextInt());
80 atm1.Transfer(atm);
81 } else {
82 System.out.println("Data yang
83 anda input salah");
84 }
85 }
86 break;
87 case 4:
88 System.out.println("Terimakasih");
89 break;
90 default:
91 System.out.println("Menu tidak
92 terdaftar");
93 }
94 } else {
95 System.out.println("Pin anda salah ");
96 }
97
98 System.out.print("Melanjutkan Transaksi Lain?
99 (Yes/No) ");
100 tanya = in.next();
101 } while (tanya.equalsIgnoreCase("Yes"));
102 }
103 }

C. PEMBAHASAN
1. Class Program implementasi meisn ATM.

1 Deklarasi package dengan nama Praktikum2


3 Deklarasi class dengan nama Atm
5 Deklarasi variabel “nama”, “pin”, “norek” dengan tipe data String
6 Deklarasi variabel “saldo” dan “uang” dengan tipe data integer
8 Deklarasi konstruktor dengan nama Atm(String nama, String pin, String norek, int
saldo)
9 Mengisi nilai variabel nama dari masukan parameter nama
10 Mengisi nilai variabel pin dari masukan parameter pin
11 Mengisi nilai variabel norek dari masukan parameter norek
12 Mengisi nilai variabel saldo dari masukan parameter saldo
13 Mengisi nilai variabel uang dengan nilai 0
16 Deklarasi method dengan tipe data void dan dengan nama saldo()
17 Mencetak keterangan saldo dan nilai saldo
21 Deklarasi method dengan tipe data void dan dengan nama uang(int uang)
22 Mengisi nilai variabel uang dengan parameter uang
23 Melakukan seleksi kondisi jika saldo > uang
24 Mengisi nilai saldo dengan nilai saldo sebelumnya dikurang uang
25 Mencetak “======================”
26 Mencetak keterangan penarikan dan nilai uang
27 Mencetak keterangan saldo dan nilai saldo setelah ditarik
28 Melakukan seleksi kondisi jika saldo < uang
29 Mencetak keterangan saldo tidak mencukupi
33 Deklarasi method dengan tipe data void dan dengan nama infoTransfer()
34 Mencetak keterangan nomer rekening atas nama dan nilai dari variabel nama
37 Deklarasi method dengan tipe data void dan dengan nama setTransfer(int uang)
38 Mengisi nilai variabel uang dengan inputan parameter uang
39 Melakukan seleksi kondisi jika saldo > uang
40 Mengisi nilai saldo dengan nilai saldo sebelumnya dikurang uang
41 Mencetak keterangan nomer rekening dengan nilai dari variabel norek
42 Mencetak keterangan nilai transfer dengan nilai dari parameter uang
43 Mencetak keterangan saldo dan nilai saldo setelah ditransfer
44 Melakukan seleksi kondisi jika saldo < uang
45 Mencetak keterangan saldo tidak mencukupi
49 Deklarasi method dengan tipe data void dan dengan nama Transfer(int uang)
50 Mengisi nilai saldo dari objek penerima dengan nilai saldo awal ditambah nilai
dari variabel uang (transfer)

2. Main Class Program implementasi meisn ATM.

1 Deklarasi package dengan nama Praktikum2


3 Deklarasi package Scanner
5 Deklarasi class dengan nama AtmPanggil
7 Deklarasi main class
8 Deklarasi Scanner in
9 Deklarasi variabel “tanya” dan “norek” dengan tipe data String
10 Deklarasi object reference dengan nama “atm” ("Arif Ramadhan", "240198",
"12345678", 10000000)
11 Deklarasi object reference dengan nama “atm1” ("Kamu iya kamu", "980124",
"87654321", 10000000)
13 Melakukan perulangan do while
14-15 Melakukan input pin dari user dan nilainya disimpan di variabel pin
16 Melakukan seleksi kondisi dengan syarat jika pin=pin dari objek 1 atau pin=pin
dari objek 2
17 Menampilkan "======BANK MAHASISWA BRAWIJAYA======"
18 Menampilkan "1. Tarik tunai "
19 Menampilkan "2. Informasi Saldo "
20 Menampilkan "3. Transfer"
21 Menampilkan "4. Keluar"
22-23 Perintah menginputkan Menu dan nilainya dimasukan kedalam variabel pilihan
24 Seleksi kondisi dengan menggunakan switch case pada variabel pilihan
25 Kemungkinan jika user pilih 1
26 Perintah menampilkan "==Tarik Tunai==”
27 Perintah menginputkan nominal Tarik tunai
28 Melakukan seleksi kondisi dengan syarat jika pin=pin objek 1
29 Nilai nominal uang akan masuk ke variabel uang objek 1 dan sekaligus memanggil
method uang
30 Melakukan seleksi kondisi dengan syarat jika pin=pin objek 2
31 Nilai nominal uang akan masuk ke variabel uang objek 2 dan sekaligus memanggil
method uang
33 Break

34 Kemungkinan jika user pilih 2


35 Perintah menampilkan "==Informasi Saldo=="
36 Melakukan seleksi kondisi dengan syarat jika pin=pin objek 1
37 Memanggil method saldo() pada objek 1
38 Melakukan seleksi kondisi dengan syarat jika pin=pin objek 2
39 Memanggil method saldo() pada objek 2
41 Break

42 Kemungkinan jika user pilih 3


43 Perintah menampilkan "=====Transfer====="
45 Melakukan seleksi kondisi dengan syarat jika pin=pin objek 1
46-47 Memasukkan norek tujuan dan nilainya dimasukan ke variabel norek
48 Melakukan seleksi kondisi dengan syarat jika norek=norek objek 2
49 Memanggil method infoTransfer() pada objek 2
50 Mencetak keterangan input nominal transfer
51 Memanggil method setTransfer(nilai inputan nominal transfer) pada objek 1
52 Memanggil method Transfer pada objek 1 dengan parameter objek 2
53 Jika norek tidak sama dengan norek penerima (objek 2)
54 Mencetak keterangan data yang diinputkan salah
56 Melakukan seleksi kondisi dengan syarat jika pin=pin objek 2
57-58 Memasukkan norek tujuan dan nilainya dimasukan ke variabel norek
59 Melakukan seleksi kondisi dengan syarat jika norek=norek objek 1
60 Memanggil method infoTransfer() pada objek 1
61 Mencetak keterangan input nominal transfer
62 Memanggil method setTransfer(nilai inputan nominal transfer) pada objek 2
63 Memanggil method Transfer pada objek 2 dengan parameter objek 1
64 Jika norek tidak sama dengan norek penerima (objek 1)
65 Mencetak keterangan data yang diinputkan salah
68 Break
69 Kemungkinan jika user pilih 4
70 Perintah menampilkan "Terimakasih”
71 Perintah menyelesaikan case 4 dan keluar
72 Kemungkinan jika user pilih tidak sesuai menu
73 Perintah menampilkan "Menu tidak terdaftar”
75 Kondisi jika pin inputan tidak sama dengan pin objek 1 atau pin objek 2
76 Mencetak keterangan pin yang diinputkan salah
79 Sebelum keluar mencetak keterangan untuk menanyakan user melanjutkan
80 transaksi dengan pilihan yes/no dan disimpan di variabel tanya
81 Syarat perulangan while sampai nilai dari Tanya = yes

D. SCREENSHOT PROGRAM
1. Program implementasi meisn ATM.
E. PRAKTIKUM
Data dan Analisis hasil percobaan
A. Constructor
1. Lakukan percobaan constructor diatas dan benahi jika menemukan kesalahan!

- Terdapat kesalahan pada penamaan konstruktor di class, nama konstruktor tidak


sama dengan nama class sedangkan syarat membuat konstruktor namanya harus
sama dengan nama class. Nama kelasnya Student sedangkan nama konstruktornya
student , S kapital dan s kecil dibedakan

2. Tambahkan constructor pada class Student dengan parameter yang mempunyai


parameter masing masing nilai dari mata pelajaran yang ada! Kemudian buat
contoh objeknya pada main Class!

- //class
public Student(int math, int english, int science) {
mathGrade = math;
englishGrade = english;
scienceGrade = science;
}
//main class
Student anna = new Student(100,89,80);

3. Tambahkan method dengan nilai balikan berupa boolean pada class student
bernama statusAkhir untuk menentukan apakah siswa tersebut remidi atau tidak.
Ketentuannya adalah jika nilai lebih dari atau sama dengan 61 adalah lolos
sedangkan nilai kurang dari atau sama dengan 60 adakah remidi. Nilai yang di cari
adalah nilai rata rata untuk semua mapel. Kemudian nilai pada method statusAkhir
tampilkan pada method displayMessage!

- public boolean statusAkhir() {


boolean hasil = false;
double result = 0;
result = (mathGrade + scienceGrade + englishGrade) / 3;
if (result > 61) {
System.out.println("LULUS");
hasil = true;
}
else{
System.out.println("TIDAK LULUS");
}
return hasil;
}
public void displayMessage() {
System.out.println("Siswa dengan nama " + name);
System.out.println("beramalat di " + address);
System.out.println("berumur " + age);
System.out.println("mempunyai nilai rata rata " + getAverage());
System.out.print("Keterangan : ");statusAkhir();
}

4. Bagaimana cara memasukkan jumlah siswa sesuai dengan keinginan user? Tuliskan
kodenya dengan inputan user yang interaktif! (key : menggunakan array)
- //class
public void setData() {
nama = new String[n];
asal = new String[n];
umur = new int [n];
nilai = new int [n];
}
//main class
System.out.print("input banyak mahasiswa : ");
data.n = in.nextInt();
data.setData();
5. Bagaimana cara menghitung banyaknya objek yang kita buat dari sebuah
menginstance objek dari main class? Tuliskan kodenya kemudian tampilkan
informasinya dengan memanggil method jumlahObjek() bertipe void!
- Caranya dengan membuat attribute jumlah , dan pada konstruktor jumlah
diinsialisasikan nilainya ditambah satu, agar jika objek bertambah nilai jumlahnya
juga bertambah, lalu nilai dari variabel jumlah tersebut ditampilkan, dan kita dapat
mengetahui jumlah objeknya .

//attribute
public static int jumlah;
//konstruktor
public Student(String n, String a, int ag) {
jumlah++;
name = n;
address = a;
age = ag;
}
//method di class
public void displayMessage() {
System.out.println("Jumlah Objek : "+jumlah);
}
//mainclass
anna.displayMessage();
chris.displayMessage();

B. Instance Method
Pertanyaan
1. Lakukan percobaan Instance Method diatas dan benahi jika menemukan kesalahan!

- telah dilakukan percobaan dan tidak menemukan kesalahan.

2. Tambahkan method untuk operator <, <=, >= !

- jika dirubah menjadi < outputnya menjadi false


- jika dirubah menjadi <= outputnya menjadi false
- jika dirubah menjadi >= outputnya menjadi true

3. Ubah method sederhana pada baris 25 – 30 yang awalnya adalah menggunakan


while menjadi for!

- for (int i=B;i>0;i--) {


temp = A % B;
A = B;
B = temp;
}
pembilang /= A;
penyebut /= A;
}

4. Tambahkan method untuk operasi -, * , / !

- //class
public void operasiPengurangan() {
int pengurangan;;
pengurangan = pembilang - penyebut;
System.out.println(pengurangan);
}

public void operasiPerkalian() {


int perkalian;
perkalian = pembilang * penyebut;
System.out.println(perkalian);
}

public void operasiPembagian() {


double pembagian;
pembagian = (double) pembilang / (double) penyebut;
System.out.println(pembagian);
}
//main class
System.out.println("Nilai Operasi(-,*,/) R1");
System.out.print("pembilang - penyebut = ");R1.operasiPengurangan();
System.out.print("pembilang X penyebut = ");R1.operasiPerkalian();
System.out.print("pembilang : penyebut = ");R1.operasiPembagian();
System.out.println();
System.out.println("Nilai Operasi(-,*,/) R2");
System.out.print("pembilang - penyebut = ");R2.operasiPengurangan();
System.out.print("pembilang X penyebut = ");R2.operasiPerkalian();
System.out.print("pembilang : penyebut = ");R2.operasiPembagian();
System.out.println();

F. KESIMPULAN
1. Konstruktor adalah method dimana seluruh inisialisasi object ditempatkan. Saat
kita menginstan sebuah object pada main class atau class lain, kita sebenarnya
telah memanggil sebuah konstruktor pada sebuah class yang kita instan objeknya.
Berikut ini adalah property dari konstrukstor :
1. Konstruktor memiliki nama yang sama dengan class
2. Konstruktor tidak memilki return value, meskipun void
3. Konstruktor tidak dapat dipanggil secara langsung, namun harus dipanggil
dengan menggunakan operator new pada saat menginstan objek dari class.

2. Perbedaannya, nama konstruktor harus sama dengan class sedangkan nama


method-method yang lain tidak harus sama artinya bebas. Lalu kontruktor tidak
memiliki tipe data seperti hal nya void pada method-method yang lain. Selain itu,
konstruktor tidak dapat dipanggil secara langsung, tetapi harus dipanggil dengan
menggunakan operator new pada saat menginstance objek dari class.

3. - //class
public Rasional(int pbl, int pyb) {
pembilang = pbl;
penyebut = pyb;
}
//main class
Rasional R1 = new Rasional(1, 2);
4. Instance method sama halnya dengan instance objek yang telah kita ketahui yakni
jika dipanggil, dia akan memanggil/mengakses data yang terdapat pada instan
yang dikaitkannya. Dengan kata lain instance method adalah method yang hanya
mengubah object itu sendiri.

5. Caranya, pada method ditambahkan parameter/argument dengan tipe data “nama


class” contohnya pada class Rasional :
public void unaryPlus(Rasional A) {
pembilang = pembilang * A.penyebut + penyebut * A.pembilang;
penyebut *= A.penyebut;
}

Anda mungkin juga menyukai