728x90
#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 를 이용해서 초기화
가독성을 올린다.
'Language > C++ & openGL' 카테고리의 다른 글
C++ 기초 static변수 최다 최소 구하기 / 여러 번 정의된 기호가 있습니다.LNK1169 LNK2005 (0) | 2019.01.16 |
---|---|
C++ coding training function, array, class[c++ 코딩연습: 함수, 배열, 클래스, 프로토타입 헤더 분리] (0) | 2019.01.12 |
C++ powerC++ p404 LAB box 클래스 setter getter 함수 (0) | 2019.01.09 |
C++ string 함수 문자 변경 getline(cin,s) , find, length, replace (0) | 2019.01.09 |
C++기초 배열 원소들의 순서를 역순서로 Reverse Array function, 동적 메모리 할당 Power C++ p294 5 (0) | 2019.01.09 |
댓글