Rangkuman, Pengelola Rekening Bank
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 33 dari 104.
Tantangan
MudahMari 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 classBankAccountyang mengelola data akun dengan enkapsulasi yang tepat. Class-mu harus memiliki:- Member private:
accountNumber(string),ownerName(string),balance(double), danmutable int queryCountuntuk melacak berapa kali saldo diperiksa - Member static private
totalAccountsuntuk melacak jumlah akun yang ada - Konstruktor yang menerima nomor akun, nama pemilik, dan saldo awal. Konstruktor ini harus menginisialisasi
queryCountke0dan menambah nilaitotalAccounts - Getter const:
getAccountNumber(),getOwnerName(), dangetBalance(): getter saldo harus menambah nilaiqueryCountsetiap 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.
- Member private:
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
BankAccountdengan nomor akun"ACC001"dan"ACC002" - Cetak
"Total accounts: <count>" - Cetak
"<name>: $<balance>"untuk akun pertama - Cetak
"<name>: $<balance>"untuk akun kedua - Setorkan
500.0ke akun pertama - Cetak
"After deposit - <name>: $<balance>"untuk akun pertama - Transfer
300.0dari 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
- Buat dua object
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
1Dasar-Dasar OOP
File EksternalBuild dan Kompilasi C++File Header dan File SourceNamespace dan CakupanPengantar OOP dalam C++class vs objectPointer 'this'method (Fungsi Anggota)Atribut (Anggota Data)Dasar Ctor dan DtorRingkasan: Kalkulator Sederhana4Properti class
Anggota instance vs staticGetter dan setterFungsi anggota constKata kunci mutableMethod dan variabel staticFungsi dan class friendRangkuman, Pengelola Rekening Bank7Pewarisan
Pewarisan DasarTingkat Akses pada PewarisanUrutan Pemanggilan Ctor & DtorPenimpaan methodFungsi Virtual & VTablePewarisan BergandaPewarisan VirtualRangkuman: Hierarki Karyawan2Manajemen Memori
Memori Stack vs HeapPointer dan ReferenceMemori Dinamis (new/delete)Smart Pointer di C++RAII di C++Rangkuman: Pengelola Array Dinamis5Enkapsulasi
Penentu Akses dalam C++Penentu Akses secara MendalamPenyembunyian Informasistruct vs classNested dan Inner classRangkuman, Sistem Catatan Siswa8Polimorfisme
Polimorfisme saat Compile vs RuntimeOverloading FungsiMeninjau Kembali Fungsi VirtualFungsi Virtual MurniKelas AbstrakDesain Interface di C++Casting Dinamis & RTTIRangkuman: Kalkulator Bentuk3Konstruktor & Destruktor
Konstruktor DefaultKonstruktor BerparameterKonstruktor SalinKonstruktor PindahDaftar Inisialisasi KonstruktorKonstruktor DelegasiKupas Tuntas DestruktorAturan Tiga, Lima, dan NolRangkuman: class String6Overloading Operator
Pengantar Overloading OperatorOverloading Operator AritmetikaOverloading Operator PerbandinganOperator StreamOverloading Operator PenugasanOverloading Operator [] dan ()Operator Konversi TipeRingkasan, class Matrix9Template
Template FungsiTemplate classSpesialisasi TemplateTemplate VariadikDasar SFINAE & Type TraitsRangkuman, Container GenerikLatihan sendiri: Compiler C++ online