Menu
CoddyTech

Rangkuman, Pengelola Rekening Bank

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 33 dari 104.

challenge icon

Tantangan

Mudah

Mari kita buat Bank Account Manager lengkap yang menggabungkan semua konsep properti class yang telah kamu pelajari di bab ini: member private dengan getter dan setter, fungsi member const, member mutable, variabel dan method static, serta fungsi friend.

Kamu akan membuat dua file untuk mengatur kodemu:

  • BankAccount.h: Definisikan class BankAccount yang mengelola data akun dengan enkapsulasi yang tepat. Class-mu harus memiliki:
    • Member private: accountNumber (string), ownerName (string), balance (double), dan mutable int queryCount untuk melacak berapa kali saldo diperiksa
    • Member static private totalAccounts untuk melacak jumlah akun yang ada
    • Konstruktor yang menerima nomor akun, nama pemilik, dan saldo awal. Konstruktor ini harus menginisialisasi queryCount ke 0 dan menambah nilai totalAccounts
    • Getter const: getAccountNumber(), getOwnerName(), dan getBalance(): getter saldo harus menambah nilai queryCount setiap kali dipanggil
    • Getter const getQueryCount() yang mengembalikan berapa kali saldo diperiksa
    • Method deposit(double amount) yang menambahkan saldo hanya jika jumlahnya positif
    • Method withdraw(double amount) yang mengurangi saldo hanya jika jumlahnya positif dan tidak melebihi saldo saat ini
    • Method static getTotalAccounts() yang mengembalikan jumlah total akun yang dibuat
    • Deklarasikan fungsi friend transfer(BankAccount& from, BankAccount& to, double amount) yang memindahkan uang antar akun. Fungsi ini hanya boleh mentransfer jika jumlahnya positif dan akun sumber memiliki dana yang cukup

    Definisikan member static dan fungsi friend setelah definisi class.

  • main.cpp: Tunjukkan cara semua fitur ini bekerja bersama. Baca dua nama pemilik dan dua saldo awal dari input (total empat baris: name1, balance1, name2, balance2), lalu:
    • Buat dua object BankAccount dengan nomor akun "ACC001" dan "ACC002"
    • Cetak "Total accounts: <count>"
    • Cetak "<name>: $<balance>" untuk akun pertama
    • Cetak "<name>: $<balance>" untuk akun kedua
    • Setorkan 500.0 ke akun pertama
    • Cetak "After deposit - <name>: $<balance>" untuk akun pertama
    • Transfer 300.0 dari akun pertama ke akun kedua menggunakan fungsi friend
    • Cetak "After transfer:"
    • Cetak " <name>: $<balance>" untuk akun pertama
    • Cetak " <name>: $<balance>" untuk akun kedua
    • Cetak "Query count for <name>: <count>" untuk akun pertama

Format semua nilai saldo dengan dua angka desimal menggunakan std::fixed dan std::setprecision(2) dari <iomanip>. Ubah input saldo dari string menjadi double menggunakan std::stod().

Jangan lupa menambahkan header guard di file header-mu dan menyertakan <string> serta <iostream> jika diperlukan.

Coba sendiri

#include <iostream>
#include <string>
#include <iomanip>
#include "BankAccount.h"

int main() {
    // Baca input
    std::string name1, name2;
    std::string balance1Str, balance2Str;
    
    std::getline(std::cin, name1);
    std::getline(std::cin, balance1Str);
    std::getline(std::cin, name2);
    std::getline(std::cin, balance2Str);
    
    double balance1 = std::stod(balance1Str);
    double balance2 = std::stod(balance2Str);
    
    // Atur format output menjadi 2 angka di belakang koma
    std::cout << std::fixed << std::setprecision(2);
    
    // TODO: Buat dua object BankAccount dengan nomor rekening "ACC001" dan "ACC002"
    
    // TODO: Cetak "Total accounts: <count>"
    
    // TODO: Cetak "<name>: $<balance>" untuk rekening pertama
    
    // TODO: Cetak "<name>: $<balance>" untuk rekening kedua
    
    // TODO: Setorkan 500.0 ke rekening pertama
    
    // TODO: Cetak "After deposit - <name>: $<balance>" untuk rekening pertama
    
    // TODO: Transfer 300.0 dari rekening pertama ke rekening kedua menggunakan fungsi friend
    
    // TODO: Cetak "After transfer:"
    
    // TODO: Cetak "  <name>: $<balance>" untuk rekening pertama (perhatikan indentasi 2 spasi)
    
    // TODO: Cetak "  <name>: $<balance>" untuk rekening kedua (perhatikan indentasi 2 spasi)
    
    // TODO: Cetak "Query count for <name>: <count>" untuk akun pertama
    
    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler C++ online