Kamis, 08 Desember 2016

ATM Case Study (Deitel Book)


Assalamu’alaikum.

Pagi ini, saya akan sedikit men-demonstrasikan sebuah program Java yang melibatkan banyak Class dengan banyak kompleksitas pula tentunya.
Program kali ini adalah program mesin ATM.
Untuk source code aslinya sendiri bisa dilihat pada buku “Java – How to Program, 9th edition by Deitel”.
Disini saya mungkin hanya akan sekedar copy paste saja, karena ini adalah demonstrasi. Tapi akan saya sedikit jelaskan gambaran dari program ini.

Berikut adalah bentuk arus dari programnya, yang tersusun atas beberapa class dan hubungan antar class-nya.
 
Kemudian untuk source code dari masing-masing class sendiri bisa dilihat dibawah ini.

ATM class
Class yang ini adalah class yang menjadi penghubung dari 3 major class, yaitu UI (User-Interface) ATM, Transaksi ATM dan Database ATM.
Class ATM ini hanya difungsikan sebagai penghubung saja, ibarat seperti mesin ATM itu sendiri.

4 class selanjutnya adalah class yang membentuk UI dari ATM.

DepositSlot class

Class ini adalah salah satu dari 4 UI ATM class pada program ini.
Fungsi dari class ini sendiri sebenarnya tidak terlalu penting jika diaplikasikan kedalam sebuah program ini. Akan tetapi penggunaan class ini menjadi penting di dunia nyata. Karena ini diibaratkan seperti kita menerima bon / struk dari mesin ATM yang menandakan bahwa saldo kita berhasil ditambahkan.

Screen class
Class Screen ini adalah class yang paling nampak berperan dalam salah satu UI ATM class.
Seperti namanya, screen. Class ini berfungsi untuk menampilkan UI itu sendiri pada user.
Jadi isinya adalah opsi2 apa saja yang dapat ditawarkan mesin kepada user.

Keypad class
Class Keypad ini adalah class yang berfungsi untuk mengambil input dari user.

CashDispenser class
Class ini berfungsi untuk melakukan pengecekan dari input user terhadap arus variabel uang dalam program.

4 class selanjutnya adalah class yang mengatur Transaksi pada program.

Transaction class
Class ini adalah class yang menjadi inti dari pengaturan transaksi pada program.
Class Transaction ini akan membuat 3 kelas turunan yang mengatur transaksi utama pada program, yaitu Withdrawal, Deposit, dan penyeimbangan Balance uang.

 Withdrawal class
Class turunan dari Transaction, class ini berfungsi untuk mengatur proses pengambilan uang dengan melakukan pengecekan-pengecekan pada variabel2 tertentu dalam program.

Deposit class
Class turunan dari Transaction, class ini berfungsi untuk mengatur proses pemasukan uang dengan melakukan pengecekan-pengecekan pada variabel2 tertentu dalam program.
BalanceInquiry class
Class turunan dari Transaction, class ini berfungsi untuk mengeluarkan output berupa total penyimpanan dan yang bisa diambil dari ATM.
Selain itu class ini juga mengatur balance dari uang dalam mesin ATM supaya tidak bisa bertambah seperti uang dari user itu sendiri.
2 class selanjutnya adalah class yang mengatur database dari ATM.

BankDatabase class
Class ini berfungsi untuk pengaturan database pada mesin ATM. Digunakan untuk menyimpan total saldo user, ID user dan PIN user.

Account class
Class ini berfungsi sebagai pengecekan apakah pemberian input sesuai dengan database.
Kemudian melakukan panggilan fungsi ke Balance yang masih ada (uang dalam ATM)

ATM case study (core class runner)

Dan ini adalah class utama yang difungsikan sebagai penjalan program.
Uniknya class ini hanya memiliki satu perintah saja dalam fungsi main() nya, yaitu run() yang sebenarnya adalah method dari class ATM. Maka program mesin ATM dapat dijalankan.

Contoh pengeksekusian program


Sekain dulu penjelasan singkat dari saya tentang mesin ATM ini.
Jika ada saran atau pertanyaan, silahkan tulis di komentar.
Terima kasih.
Wassalamu'alaikum.

Kamis, 24 November 2016

Java Programming : Decimal to Octal Converter

Assalamu'alaikum.
Pagi.. Postingan kali ini saya akan membahas salah satu problem pada Java, yaitu Konversi bilangan.

Konversi bilangan yang sudah kita bahas sebelumnya adalah:
Konversi desimal ke biner
Konversi desimal ke heksadesimal

Kali ini yang akan kita bahas adalah konversi dari desimal ke oktal.

Apa itu bilangan oktal?
Bilangan oktal adalah bilangan yang hanya memiliki digit mulai dari 0-7.
Sesuai dengan namanya oktal >> octagonal >> segi delapan. Bilangan ini hanya memiliki delapan digit, atau bisa direpresentasikan sebagai 2^3 atau sebagai salah satu bilangan komputer selain biner(2^1) dan heksadesimal(2^4).

Konsep yang digunakan hampir mirip dengan mengkonversi bilangan heksadesimal seperti yang sudah pernah dijelaskan.

Contoh : Desimal = 12345
--> 12345 / 8 = 1543 + sisanya adalah 1
--> 1543 / 8 = 192 + sisanya adalah 7
--> 192 / 8 = 24 + sisanya adalah 0
--> 24 / 8 = 3 + sisanya adalah 0
--> 3 / 8 = 0 + sisanya adalah 3

Maka nilai octalnya dibaca secara terbalik dari bawah ke atas, yaitu octal = 30071

Untuk source codenya bisa dilihat dibawah ini.


Kemudian untuk contoh pengeksekusian program bisa dilihat pada gambar dibawah.


Sekian penjelasan singkat tentang konversi desimal ke octal.
Jika ada pertanyaan atau saran untuk postingan ini, silahkan tulis di komentar.
Terima kasih.
Wassalamu'alaikum.

Selasa, 22 November 2016

C Programming : Linear Search

Assalamu'alaikum.
Postingan kali ini saya mau bahas problem acak lagi, yaitu Linear Search.

Apa itu Linear Search?
Langsung saja, Pencarian data secara garis lurus.
Karena suatu array satu dimensi diibaratkan layaknya garis lurus, maka pencarian data dilakukan terurut dari posisi awal sampai posisi akhir.

Intinya, pencariannya dimulai dari posisi ke-0, lalu posisi ke-1, 2, dst sampai posisi akhir.
Kalau datanya ditemukan, langsung keluarkan posisinya.

Gambaran source codenya bisa dilihat dibawah.
Untuk program utamanya.


Untuk fungsi binary search nya.


Oh iya. Disini saya menggunakan beberapa fungsi tambahan selain int main(),
tapi jika kalian ingin membuat linear searchnya ke dalam fungsi main() pun tidak masalah.

Kemudian contoh eksekusi program.


Sekian penjelasan singkat tentang Linear Search.
Kalo ada pertanyaan atau saran pada postingan ini, silahkan tulis di komentar.
Terima kasih.
Wassalamu'alaikum.

C Programming : Binary Search

Assalamu'alaikum.
Postingan kali ini saya mau bahas problem acak lagi, yaitu Binary Search.

Apa itu binary search?
Binary = Biner
Search = Mencari
Jadi arti dari bubble sort adalah mencari biner.

Maksudnya adalah teknik mencari data dengan menggunakan konsep biner.
Nah, biner sendiri kan bilangan 0 dan 1 aja.
Jadi teknik pencarian data ini adalah dengan membagi sebuah array satu dimensi data menjadi 2 sampai datanya ditemukan.

Biar tahu, langsung aku kasih contohnya nih.
Oh iya, sama ini PENTING BANGET!! Syarat dari binary search adalah, data yang ingin dijadikan tempat pencarian harus sudah terurut entah itu ascending atau descending.
INGET YA.. HARUS SUDAH TERURUT.

Contoh proses Binary Search :
Misalkan data-datanya adalah 2 3 5 7 11 13 17
Ingin mencari nilai data 11 ada di posisi mana.

Maka :

<Langkah 1>
Titik awal = 1, Titik akhir = 7
Jumlah data = 7 data
data dibagi 2, yaitu 4 data awal dan 3 data akhir.
Titik tengah = (Titik awal + Titik akhir) / 2 = 8 / 2 = 4
Posisi titik ke-4 memiliki nilai data 7
11 tidak sama dengan 7

<Langkah 2>
Titik awal = Titik tengah + 1 = 5, Titik akhir = 7
Jumlah data = 3 data
data dibagi 2, yaitu 2 data awal dan 1 data akhir
Titik tengah = (5 + 7) / 2 = 12 / 2 = 6
Posisi titik ke-6 memiliki nilai data 13
11 tidak sama dengan 13

<Langkah 3>
Titik awal = 5, Titik akhir = Titik tengah - 1 = 5
Jumlah data = 1 data
data dibagi 2, yaitu 1 data awal dan 0 data akhir
Titik tengah = (5 + 5) / 2 = 10 / 2 = 5
Posisi titik ke-5 memiliki nilai data 11
11 sama dengan 11

Maka, nilai data 11 bisa ditemukan pada posisi data ke-5

Gambaran source codenya bisa dilihat dibawah.
Untuk program utamanya.


Untuk fungsi binary search nya.


Oh iya. Disini saya menggunakan beberapa fungsi tambahan selain int main(),
tapi jika kalian ingin membuat binary searchnya ke dalam fungsi main() pun tidak masalah.

Kemudian contoh eksekusi program.



Sekian penjelasan singkat tentang Binary Search.
Kalo ada pertanyaan atau saran pada postingan ini, silahkan tulis di komentar.
Terima kasih.
Wassalamu'alaikum.