Menambahkan setter
AhmadAbdillah
dart
3 months ago
4.1 kB
3
Indexable
Tugas IDN
import 'dart:io'; class BankAccount { String _pin; // Properti private double _saldo; // Properti private // Constructor BankAccount(this._pin, this._saldo); // Getter untuk membaca saldo double get saldo => _saldo; // Metode untuk autentikasi PIN bool authenticate(String inputPin) { return inputPin == _pin; } // Metode untuk menyetor uang void deposit(double jumlah) { if (jumlah > 0) { _saldo += jumlah; print('Deposit berhasil: $jumlah'); } else { print('Jumlah harus positif'); } } // Metode untuk menarik uang void withdraw(double jumlah) { if (jumlah > 0 && jumlah <= _saldo) { _saldo -= jumlah; print('Penarikan berhasil: $jumlah'); } else { print('Penarikan gagal. Saldo tidak mencukupi.'); } } // Setter untuk pin set pin(newPin) { if (newPin.length > 3) { _pin = newPin; } else { print('Pin harus lebih dari 3 huruf'); } } } void main() { // Membuat akun bank var account = BankAccount('1234', 500.0); print('Selamat datang di sistem Bank!'); int percobaan = 0; bool isAuthenticated = false; // Loop autentikasi dengan batasan 3 kali percobaan while (percobaan < 3 && !isAuthenticated) { stdout.write('Masukkan PIN Anda: '); String? inputPin = stdin.readLineSync(); if (inputPin != null && account.authenticate(inputPin)) { isAuthenticated = true; print('Autentikasi berhasil! Selamat datang.'); } else { percobaan++; print('PIN salah! Percobaan tersisa: ${3 - percobaan}'); } } // Jika gagal autentikasi setelah 3 percobaan, keluar if (!isAuthenticated) { print('Anda telah gagal memasukkan PIN 3 kali. Akses ditolak.'); return; } // Jika autentikasi berhasil, tampilkan menu while (true) { print('\nPilih aksi:'); print('1. Cek Saldo'); print('2. Deposit'); print('3. Withdraw'); print('4. Ubah Pin'); print('5. Keluar'); stdout.write('Masukkan pilihan Anda: '); String? pilih = stdin.readLineSync(); if (pilih == '1') { // menampilkan saldo print('Saldo Anda saat ini: ${account.saldo}'); } else if (pilih == '2') { // Deposit stdout.write('Masukkan jumlah deposit: '); String? jumlahInput = stdin.readLineSync(); double? jumlah = double.tryParse(jumlahInput ?? ''); if (jumlah != null) { account.deposit(jumlah); } else { print('Input tidak valid.'); } } else if (pilih == '3') { // Withdrawl stdout.write('Masukkan jumlah penarikan: '); String? jumlahInput = stdin.readLineSync(); double? jumlah = double.tryParse(jumlahInput ?? ''); if (jumlah != null) { account.withdraw(jumlah); } else { print('Input tidak valid.'); } } else if (pilih == '4') { // Ubah PIN int percobaan = 0; bool isAuthenticated = false; // Loop autentikasi dengan batasan 3 kali percobaan while (percobaan < 3 && !isAuthenticated) { stdout.write('Masukkan PIN Anda: '); String? inputPin = stdin.readLineSync(); if (inputPin != null && account.authenticate(inputPin)) { stdout.write('Masukkan PIN baru: '); String? jumlah = stdin.readLineSync(); isAuthenticated = true; if (jumlah != null) { account.pin = jumlah; } print('Berhasil merubah pin.'); break; } else { percobaan++; print('PIN salah! Percobaan tersisa: ${3 - percobaan}'); } } // Jika gagal autentikasi setelah 3 percobaan, keluar if (!isAuthenticated) { print('Anda telah gagal memasukkan PIN 3 kali. Akses ditolak.'); return; } } else if (pilih == '5') { // keluar print('Terima kasih telah menggunakan layanan kami. Sampai jumpa!'); break; } else { print('Pilihan tidak valid.'); } } }
Editor is loading...
Leave a Comment