요약 - 은행 계좌 관리자
Coddy C++ 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 104개 중 33번째.
챌린지
쉬움이 장에서 배운 모든 class 속성 개념인 private 멤버와 getters 및 setters, const 멤버 함수, mutable 멤버, static 변수와 메서드, friend 함수를 모두 결합한 완전한 Bank Account Manager를 만들어 보겠습니다.
코드를 구성하기 위해 두 개의 파일을 만듭니다:
BankAccount.h: 적절한 캡슐화를 사용하여 account 데이터를 관리하는BankAccountclass를 Define합니다. class에는 다음이 포함되어야 합니다:- Private 멤버:
accountNumber(string),ownerName(string),balance(double), 그리고 balance가 확인된 횟수를 추적하는mutable int queryCount - 존재하는 account 수를 추적하는 private static 멤버
totalAccounts - account number, owner name, initial balance를 받는 constructor.
queryCount를0으로 initialize하고totalAccounts를 increment해야 합니다 - Const getters:
getAccountNumber(),getOwnerName(),getBalance(): balance getter는 호출될 때마다queryCount를 increment해야 합니다 - balance가 확인된 횟수를 반환하는 const getter
getQueryCount() - amount가 양수인 경우에만 balance에 더하는
deposit(double amount)메서드 - amount가 양수이고 현재 balance를 exceed하지 않는 경우에만 balance에서 빼는
withdraw(double amount)메서드 - 생성된 전체 account 수를 반환하는 static 메서드
getTotalAccounts() - account 간에 money를 이동하는 friend 함수
transfer(BankAccount& from, BankAccount& to, double amount)를 Declare합니다. amount가 양수이고 source에 충분한 funds가 있는 경우에만 transfer해야 합니다
class definition 이후에 static 멤버와 friend 함수를 Define합니다.
- Private 멤버:
main.cpp: 이 모든 기능이 함께 작동하는 모습을 보여 줍니다. input에서 두 개의 owner names와 두 개의 initial balances를 읽습니다(총 네 줄: name1, balance1, name2, balance2). 그런 다음:- account numbers
"ACC001"및"ACC002"를 사용하여 두 개의BankAccountobjects를 Create합니다 "Total accounts: <count>"를 Print합니다- 첫 번째 account에 대해
"<name>: $<balance>"를 Print합니다 - 두 번째 account에 대해
"<name>: $<balance>"를 Print합니다 - 첫 번째 account에
500.0을 Deposit합니다 - 첫 번째 account에 대해
"After deposit - <name>: $<balance>"를 Print합니다 - friend 함수를 사용하여 첫 번째 account에서 두 번째 account로
300.0을 Transfer합니다 "After transfer:"를 Print합니다- 첫 번째 account에 대해
" <name>: $<balance>"를 Print합니다 - 두 번째 account에 대해
" <name>: $<balance>"를 Print합니다 - 첫 번째 account에 대해
"Query count for <name>: <count>"를 Print합니다
- account numbers
<iomanip>의 std::fixed와 std::setprecision(2)를 사용하여 모든 balance 값을 소수점 이하 두 자리로 Format합니다. std::stod()를 사용하여 balance input을 string에서 double로 Convert합니다.
header file의 header guards를 잊지 말고, 필요한 곳에 <string>과 <iostream>을 include하세요.
직접 해보기
#include <iostream>
#include <string>
#include <iomanip>
#include "BankAccount.h"
int main() {
// 입력 읽기
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);
// 소수점 2자리 출력을 위한 형식 설정
std::cout << std::fixed << std::setprecision(2);
// TODO: 계좌 번호 "ACC001"과 "ACC002"로 BankAccount 객체 두 개 생성
// TODO: Print "Total accounts: <count>"
// TODO: 첫 번째 계좌에 대해 "<name>: $<balance>" 출력
// TODO: 두 번째 계좌에 대해 "<name>: $<balance>" 출력
// TODO: 첫 번째 계좌에 500.0 입금
// TODO: Print "After deposit - <name>: $<balance>" for the first account
// TODO: friend 함수를 사용하여 첫 번째 계좌에서 두 번째 계좌로 300.0 이체
// TODO: Print "After transfer:"
// TODO: 첫 번째 계좌에 대해 " <name>: $<balance>" 출력 (2칸 들여쓰기 주의)
// TODO: 두 번째 계좌에 대해 " <name>: $<balance>" 출력 (2칸 들여쓰기 주의)
// TODO: Print "Query count for <name>: <count>" for the first account
return 0;
}
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 C++ 컴파일러