Menu
CoddyTech

Logika Penarikan

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 25 dari 61.

challenge icon

Tantangan

Mudah

Rekening Bank-mu terus bertambah! Sekarang, mari tambahkan kemampuan untuk menarik dana. Tidak seperti penyetoran, penarikan memiliki batasan tambahan. Kamu tidak bisa menarik uang lebih banyak daripada yang kamu miliki. Fungsi withdraw-mu perlu memeriksa saldo sebelum mengizinkan transaksi.

Dengan melanjutkan proyek Rekening Bank yang sudah kamu buat, kamu akan memperluas module dengan fungsionalitas penarikan. Di sinilah enkapsulasi benar-benar bermanfaat. Fungsimu dapat mengakses saldo tersembunyi untuk memeriksa kecukupan dana, sesuatu yang tidak dapat dilakukan langsung oleh kode eksternal.

Kamu akan menggunakan tiga file:

  • account.h: Tambahkan prototipe fungsi baru: withdraw. Fungsi ini menerima pointer Account dan jumlah double, lalu mengembalikan int (1 jika berhasil, 0 jika penarikan gagal). Pertahankan semua deklarasi yang sudah ada untuk create_account, destroy_account, dan deposit.
  • account.c: Implementasikan fungsi withdraw. Penarikan hanya boleh berhasil jika dua kondisi terpenuhi: jumlahnya harus positif (lebih besar dari nol), DAN rekening harus memiliki dana yang cukup (saldo >= jumlah). Jika kedua kondisi terpenuhi, kurangi saldo sebesar jumlah tersebut dan kembalikan 1. Jika tidak, kembalikan 0 tanpa mengubah saldo.
  • main.c: Tunjukkan alur kerja penyetoran dan penarikan secara lengkap. Buat rekening, lakukan penyetoran untuk menambahkan saldo, lalu uji penarikan, baik yang berhasil maupun yang gagal.

Kamu akan menerima empat input: ID rekening (bilangan bulat), jumlah setoran (untuk menambahkan dana awal), jumlah penarikan yang berhasil (kurang dari atau sama dengan jumlah yang disetorkan), dan jumlah penarikan yang gagal (lebih besar daripada saldo yang tersisa).

Di file utama, buat rekening dan cetak konfirmasi. Setorkan dana awal dan cetak hasilnya. Lalu lakukan penarikan yang berhasil dan cetak apakah penarikan tersebut berhasil. Terakhir, coba lakukan penarikan yang seharusnya gagal karena dana tidak cukup, lalu cetak hasilnya. Hancurkan rekening dan konfirmasikan bahwa pembersihan telah selesai.

Cetak output dengan format ini:

Account 1001 created
Deposit 500.00: 1
Withdraw 200.00: 1
Withdraw 400.00: 0
Account destroyed

Di sini, 1001 adalah ID rekening, 500.00 adalah jumlah setoran, 200.00 adalah jumlah penarikan yang berhasil, dan 400.00 adalah jumlah penarikan yang gagal (karena hanya tersisa 300.00 setelah penarikan pertama). Format semua jumlah dengan dua angka di belakang koma menggunakan %.2f.

Fungsi withdraw-mu menunjukkan manfaat enkapsulasi. Fungsi ini dapat memeriksa saldo tersembunyi secara internal untuk mengambil keputusan, sementara kode eksternal tidak dapat melewati validasi ini atau melihat saldo secara langsung.

Coba sendiri

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double valid_amount;
    scanf("%lf", &valid_amount);
    
    double invalid_amount;
    scanf("%lf", &invalid_amount);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    int result_invalid = deposit(account, invalid_amount);
    printf("Deposit %.2f: %d\n", invalid_amount, result_invalid);
    
    int result_valid = deposit(account, valid_amount);
    printf("Deposit %.2f: %d\n", valid_amount, result_valid);
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online