Cara Memebuat Program ATM Berkonsep OOP


Pembuatan Program ATM Berkonsep OOP

Berikut akan saya bahas mengenai tugas akhir praktikum PBO yakni tentan pembuatan Program ATM. Disini saya menggunakan java karena bahasa pemrograman java sangat mendukung konsep pemrograman yang berorientasi objek. Ok, sebelumnya mungkin anda perlu mendownload soalnya disini.

Dari soal tersebut kita diminta untuk membikin suatu program yang minimal memiliki fungsi yang menyerupai fungsi suatu mesin ATM. Fungsi-fungsi tersebut diantaranya adalah:

1. Cek saldo

2. Pengambilan Uang

3. Menyimpan Uang

4. Transfer

Dalam program yang akan kita buat juga harus mampu membaca input data berupa file txt yang berisi data-data awal nasabah dengan format tertentu. Jadi data di dalam program ATM ini sudah ditentukan dari awal sehingga user tinggal melakukan login ke dalam system sesuai dengan data yang dimilikinya. Ok sebelumnya kita harus memiliki suatu file txt yang berisi data-data awal nasabah. Buat filenya bisa langsung dari Notepade tuliskan format datanya seperti berikut.

Contoh isi dokumennya.

Tab01 Agus 1234 100000

Tab02 Tuti 3456 50000

Tab03 Bambang 5678 55000

Tab04 Yuliana 5678 60000

Simpan dokumen tersebut dengan nama.txt, simpan di dalam folder projectnya(ingat! Bukan di dalam folder packagenya).

Program yang saya buat memang tidak sepenuhnya sama dengan acuan yang telah ditentukan dalam soal. Tetapi yang terpenting disini adalah alur program mudah dipahami sehingga pemahaman mengenai konsep OOP lebih mudah dicerna🙂 .

Di program ini saya menggunakan satu interface yang bernama InterfaceTabungan yang berfungsi sebagai ringkasan class yang nantinya mengimplement interface ini yakni class DataTabungan. Class DataTabungan merupakan kumpulan method setter dan getter yang merupakan implementasi dari interface InterfaceTabungan. Kemudian juga ada class Proses yang berisi semua proses utama dari program ATM. Di dalam class ini terdapat beberapa method yang menangani masalah input login user, cek saldo, pengambilan uang, penyimpanan uang, dan transfer uang.

Penerapan program dari class-class(1 interface &2 class) ada pada class Program ATM. Di dalam class ini terdapat method main yang dijadikan sebagai acuan titik awal bagai mana java mengeksekusi baris per baris program. Di dalam method main juga berisi urut-urutan langkah jalannya program secara keseluruhan.

Ok, tanpa panjang lebar mari kita mulai dengan membuat interfacenya dulu.Oya jangan lupa memastikan Netbeansnya masih idup🙂 . Bagaimana membuat interface? Caranya? Yups, sama seperti bagaimana kita membuat suatu class. Klik kanan pada package NetbeanàJavaClass kemudian di form newClass isikan nama classnya dengan nama InterfaceTabungan, maka otomatis Netbeans akan membikinkan suatu class dengan nama InterfaceTabungan. Kemudian hapus semua kode default yang degenerate oleh Netbeans dang anti dengan kode program berikut.

public interface InterfaceTabungan {
public String getNama();
public void setNama(String val);
public int getSaldo();
public void setSaldo(int val);
public String getIdTabungan();
public void setIdTabungan(String val);
public String getPassword();
public void setPassword(String val);
}

Perbedaan mendasar antara class dan interface yang terlihat adalah jika class maka pada awal baris program tertulis “public class InterfaceTabungan” sedangkan interface adalah “public interface InterfaceTabungan”.

Ok, selanjutnya buat class baru dengan nama DataTabungan yang merupakan class yang mengimplementasikan interface Interfacetabungan. Berikut adalah kode programnya.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author aries
*/
public final class Proses {

private DataTabungan tabungan;
private String[] line;
DataTabungan[] tbg;
int currentId = 0;

public DataTabungan getTabungan() {
return tabungan;
}

public void setTabungan(DataTabungan val) {
tabungan = val;
}

public Proses(String val) throws IOException {
bacaFile(val);
tbg = new DataTabungan[10];
for (int i = 0; i < line.length; i++) {
if (line[i] == null) {
break;
}
tbg[i] = new DataTabungan();
StringTokenizer st = new StringTokenizer(line[i]);
tbg[i].setIdTabungan(st.nextToken());
tbg[i].setNama(st.nextToken());
tbg[i].setPassword(st.nextToken());
tbg[i].setSaldo(Integer.parseInt(st.nextToken()));
}
}

public void bacaFile(String val) throws IOException {
BufferedReader reader;
File f;
line = new String[10];
f = new File(val);
reader = new BufferedReader(new FileReader(f));
int i = 0;
while (true) {
line[i] = reader.readLine();
if (line[i] == null) {
break;
}
i++;
}
}

public int cekId(String id) {
StringTokenizer st = new StringTokenizer(id);
String idTab = st.nextToken();
String password = st.nextToken();

for (int i = 0; i < line.length; i++) {
if (line[i] == null) {
break;
}
if (idTab.equals(tbg[i].getIdTabungan()) && password.equals(tbg[i].getPassword())) {
currentId = i;
return 1;
}
}
return 0;
}

public String namaNasabah() {
return tbg[currentId].getNama();
}

public int cekSaldo() {
return tbg[currentId].getSaldo();
}

public void ambilUang(int ambil) {
int saldo = tbg[currentId].getSaldo() – ambil;
tbg[currentId].setSaldo(saldo);
}

public void simpanUang(int simpan) {
int saldo = tbg[currentId].getSaldo() + simpan;
tbg[currentId].setSaldo(saldo);
}

public void transfer(String trans) {
StringTokenizer st = new StringTokenizer(trans);
String id = st.nextToken();
int uangTrans = Integer.parseInt(st.nextToken());
int cek = 0;
for (int i = 0; i < line.length; i++) { if (line == null) { break; } if (tbg[i]!=null&&id.equals(tbg[i].getIdTabungan())) { cek++; String inpMenu = JOptionPane.showInputDialog( “Nama : ” + tbg[i].getNama() + “\nID Tabungan : ” + tbg[i].getIdTabungan() + “\nJumlah Transfer : ” + uangTrans + “\n1> Lanjut. 0> Batal”);
if (inpMenu.equals(“1”)) {
int saldo = tbg[currentId].getSaldo() – uangTrans;
tbg[currentId].setSaldo(saldo);
return;
} else {
JOptionPane.showMessageDialog(null, “Transfer Terhadap ” + tbg[i].getNama() + ” Telah Anda Batalkan”);
return;
}
}
}
if (cek == 0) {
JOptionPane.showMessageDialog(null, “Nasabah Dengan ID ” + id + ” Belum Terdaftar”);
return;
}
}
}

Fungsi-fungsi yang ada pada mesin ATM direpresentasikan dengan beberapa method misalkan suatu fungsi mentransfer uang yang direpresentasikan sebagai method transfer().

Berikutnya adalah kita membikin suatu class utama yang berfungsi sebagai program utama. Bikin class baru dengan nama ProgramATM. Berikut adalah kode programnya.

import java.io.IOException;
import javax.swing.JOptionPane;

public class ProgramATM {

public static void main(String[] args) throws IOException {
Proses icomeit = new Proses(“ok.txt”);

String id = JOptionPane.showInputDialog(“Masukkan No Tabungan dan Password”);
int cek = icomeit.cekId(id);
String inpMenu;
if (cek == 0) {
JOptionPane.showMessageDialog(null, “DATA DITOLAK”, “LOGIN…”, JOptionPane.ERROR_MESSAGE);
} else {
do {
inpMenu = JOptionPane.showInputDialog(“Selamat Datang ” + icomeit.namaNasabah()
+ “\nMenu”
+ “\n1. Cek Saldo”
+ “\n2. Ambil Uang”
+ “\n3. Simpan Uang”
+ “\n4. Transfer Uang”
+ “\n5. Selesai”);
if (inpMenu.equals(“1”)) {
JOptionPane.showMessageDialog(null, “Saldo Anda Rp ” + icomeit.cekSaldo());
} else if (inpMenu.equals(“2”)) {
String inpAmbil = JOptionPane.showInputDialog(“Masukkan Uang Yang Akan Diambil”);
int ambil = Integer.parseInt(inpAmbil);
icomeit.ambilUang(ambil);
} else if (inpMenu.equals(“3”)) {
String inpSimpan = JOptionPane.showInputDialog(“Masukkan Uang Yang Akan Disimpan”);
int simpan = Integer.parseInt(inpSimpan);
icomeit.simpanUang(simpan);
} else if (inpMenu.equals(“4”)) {
String inptransfer = JOptionPane.showInputDialog(“Masukkan dg Format [ID tabungan JumlahUang]”);
icomeit.transfer(inptransfer);
} else {
JOptionPane.showMessageDialog(null, “Sampai Jumpa”);
System.exit(0);
}
} while (true);
}
}
}

Masukkan No tabungan sesuai dengan yang ada pada data dokumen ok.txt yang kita buat tadi

Pilih salah satu menu dengan menginputkan urutan menu di dalam kotak isiannya. Misal kita akan melakukan transaksi Pengambilan uang maka inputkan nomer 3 lalu tekan tmbol OK .

Masukkan jumlah uang yang akan disimpan lalu tekan OK sehingga kita akan kembali ke menu utama. Untuk melihat hasil transaksi tadi, kita bisa masuk ke menu cek saldo.

Jika kita tekan tombol OK maka kita akan kembali ke menu utama lagi dan kita bisa melakukan aktifitas transaksi yang lainnya. Untuk keluar dari menu utama program bisa menginputkan angka 5 yang memilih opsi keluar program.

Terakhir, sebelum saya akhiri tulisan ini, memang saya akui masih banya sekali kekurangan yang ada pada program ini terutama untuk masalah error handling yang belum saya terapkan (karna keterbatasan waktu, hehehe). Yang terpenting dini bukanlah suatu program yang HEBAT tetapi bagaimana dari program yang terlalu sederhana ini kita dapat mengenal tentang konsep OOP/PBO itu sendiri.

Selamat mencoba……

(sumber icomeit)

7 thoughts on “Cara Memebuat Program ATM Berkonsep OOP

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s