본문 바로가기
Language/C++ & openGL

C++ account BankAccount class deposit, withdraw, 계좌 이체

by javapp 자바앱 2019. 1. 10.
728x90

은행참고.txt
다운로드

#include <iostream>

#include <string>

using namespace std;



class BankAccount { // 은행 계좌

private:

 int accountNumber; // 계좌 번호

 string owner; // 예금주

 int balance; // 잔액을 표시하는 변수



public:

 void setAccountNumber(int aNumber);

 void setOwner(string myowner);

 void setBalance(int amount); // balance에 대한 설정자

 int getBalance(); // balance에 대한 접근자



 void deposit(int amount); // 입금 함수

 void withdraw(int amount); // 인출 함수

 void print(); // 현재 상태 출력

 int transfer(int amount, BankAccount otherAccount);

};

void BankAccount::setAccountNumber(int aNumber) { accountNumber = aNumber; }

void BankAccount::setOwner(string myowner) { owner = myowner; }

void BankAccount::setBalance(int amount){balance = amount;}

int BankAccount::getBalance(){return balance;}



void BankAccount::deposit(int amount)

{

 balance += amount;

}

void BankAccount::withdraw(int amount)

{

 balance -= amount;

}

void BankAccount::print()

{

 cout << "잔액은 " << balance << "입니다." << endl;

}



int BankAccount::transfer(int amount, BankAccount otherAccount) // 이체

{

 if (balance > amount) {

 balance -= amount; // withdraw(amount)

 otherAccount.deposit(amount); //다른 계좌에 이체

 return amount;

 }

 else return 0;

}

int main() {

 BankAccount account;

 BankAccount account2;

 account.setBalance(0); account2.setBalance(10000);

 account.deposit(10000);

 account.print();

 account.withdraw(8000);

 account.print();

 account2.deposit(account.transfer(500, account2));

 account.print();

 account2.print();

 return 0;

}

 

 

 

처음 짠 코드는 잔액이 구별되지 않았다.

 

여기서 생성자를 추가해서 계좌 번호 예금주를 추가(디폴트) 해 보았다.

 

#include <iostream>

#include <string>



using namespace std;



class BankAccount { // 은행 계좌

private:

 string accountNumber; // 계좌 번호

 string owner; // 예금주

 int balance; // 잔액을 표시하는 변수



public:

 BankAccount(string aNumber, string myowner, int amount)

 {

 setAccountNumber(aNumber);                                    //보안성을 올린 생성자

 setOwner(myowner);

 setBalance(amount);

 }



 void setAccountNumber(string aNumber);

 void setOwner(string myowner);

 void setBalance(int amount); // balance에 대한 설정자

 int getBalance(); // balance에 대한 접근자



 void deposit(int amount); // 입금 함수

 void withdraw(int amount); // 인출 함수

 void print(); // 현재 상태 출력

 int transfer(int amount, BankAccount otherAccount);

};

void BankAccount::setAccountNumber(string aNumber) { accountNumber = aNumber; }

void BankAccount::setOwner(string myowner) { owner = myowner; }

void BankAccount::setBalance(int amount){balance = amount;}

int BankAccount::getBalance(){return balance;}



void BankAccount::deposit(int amount)

{

 balance += amount;

}

void BankAccount::withdraw(int amount)

{

 balance -= amount;

 cout <<"계좌번호" << accountNumber <<"에서 "<< amount << "원이 출금 되었습니다.\n";

}

void BankAccount::print()

{

 cout <<"계좌번호 : "<< accountNumber << " "<< owner<<"님의 잔액은 " << balance << "입니다." << endl;

}



int BankAccount::transfer(int amount, BankAccount otherAccount) // 이체

{

 if (balance > amount) {

 cout << "계좌번호 "<<accountNumber<<"에서 "<< otherAccount.accountNumber<<" 으로 "<<amount << "원을 계좌 이체합니다.\n";

 balance -= amount; // withdraw(amount)

 otherAccount.deposit(amount); //다른 계좌에 이체

 return amount;

 }

 else return 0;

}

int main() {

 BankAccount account("111-111","김김김",0);

 BankAccount account2("222-222","이이이",10000);

 account.deposit(10000);

 account.print();

 account.withdraw(8000);

 account.print();

 account2.print();

 account2.deposit(account.transfer(500, account2));

 account.print();

 account2.print();

 return 0;

}

 

 

 

+추가로 setter 에 this 를 이용해서 초기화

가독성을 올린다.

 

댓글