Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistem ATM Interaktif (CLI) - Implementasi Konsep OOP Java

Proyek ini adalah simulasi sistem perbankan sederhana berbasis teks (CLI) yang dirancang untuk mendemonstrasikan penerapan prinsip-prinsip Pemrograman Berorientasi Objek (OOP) secara mendalam di bahasa Java. Arsitektur kode mengikuti prinsip Separation of Concerns (SoC) dengan memisahkan logika bisnis dari tampilan antarmuka (Input/Output).

Materi yang Diimplementasikan

Berikut adalah rincian materi Java dan OOP yang telah diterapkan dalam kode ini:

1. Dasar OOP (Object, Class, Method)

Seluruh sistem ini dibangun menggunakan objek yang saling berinteraksi.

  • Class: Terlihat pada semua file .java, contohnya Tabungan.java dan BankService.java.
  • Object: Instansiasi objek dilakukan di BankService.java (saat seeding data) dan Main.java (saat pendaftaran nasabah baru).
  • Method: Digunakan untuk perilaku objek, seperti tambahSaldo() dan tarikUang() di Tabungan.java.

2. Aturan Dasar & Logika (Method, Conditional, Looping & Array)

  • Method & Parameter: Digunakan secara intensif di Main.java (seperti menuRead, menuCreate) dan BankService.java.
  • Conditional (if-else, switch): Digunakan untuk alur menu di Main.java (baris 35-47) dan validasi jenis tabungan (baris 81-90).
  • Looping & ArrayList: Iterasi data nasabah menggunakan for-each di Main.java (baris 59-62) untuk menampilkan data dari ArrayList yang ada di BankService.java.

3. Access Modifier & Encapsulation

Prinsip penyembunyian data diterapkan untuk melindungi integritas atribut.

  • Private Access: Atribut seperti nomorRekening dan namaNasabah di Tabungan.java bersifat private.
  • Getter & Setter: Digunakan untuk mengakses atribut private tersebut secara aman (lihat Tabungan.java baris 10-34).
  • Protected Access: Atribut saldo di Tabungan.java menggunakan modifier protected agar bisa diakses langsung oleh subclassnya.

4. Inheritance (Pewarisan)

Subclass mewarisi atribut dan method dari superclass.

  • Superclass: Tabungan.java menjadi induk dari semua jenis tabungan.
  • Subclass: TabunganRupiah.java dan TabunganValas.java menggunakan keyword extends untuk mewarisi sifat dari Tabungan.

5. Polymorphism (Polimorfisme)

Kemampuan objek untuk mengambil banyak bentuk.

  • Method Overriding: Method hitungBunga() dan getJenisTabungan() diimplementasikan secara berbeda di TabunganRupiah.java dan TabunganValas.java.
  • Dynamic Method Binding: Di Main.java baris 59, variabel bertipe Tabungan bisa berisi objek TabunganRupiah atau TabunganValas, dan akan memanggil method yang sesuai saat runtime.

6. Interface & Abstract Class

  • Abstract Class: Tabungan.java dideklarasikan sebagai abstract karena bersifat umum dan memiliki abstract method yang wajib diisi oleh subclass.
  • Interface: LayananDigital.java digunakan sebagai kontrak untuk fitur tambahan. Hanya TabunganRupiah yang mengimplementasikannya untuk fitur transfer.

7. Exception Handling

Penanganan kesalahan agar program tidak berhenti tiba-tiba saat terjadi error input atau logika.

  • Custom Exception: SaldoTidakCukupException.java dan NasabahNotFoundException.java.
  • Try-Catch Block: Diterapkan di Main.java untuk menangani input user yang salah (misal input huruf saat diminta angka di baris 25-33) serta menangani error transaksi (baris 162-175).

Struktur File

  • Main.java: Berisi logika tampilan, menu, dan interaksi user (Scanner).
  • BankService.java: Pusat penyimpanan data (ArrayList) dan logika CRUD nasabah.
  • Tabungan.java: Kerangka utama data rekening (Abstract).
  • TabunganRupiah.java & TabunganValas.java: Spesialisasi jenis tabungan.
  • LayananDigital.java: Kontrak untuk transaksi digital (Transfer).
  • Exception Files: Berisi definisi error kustom untuk validasi sistem.

Cara Menjalankan

  1. Pastikan Java JDK sudah terinstall.
  2. Compile semua file di folder src: javac src/*.java
  3. Jalankan program utama: java -cp src Main

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages