잔액 조회하기
Coddy C 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 26번째.
챌린지
쉬움은행 계좌 기능이 거의 완성되었습니다! 계좌 생성, 입금, 출금 기능은 이미 구현했지만, 한 가지 중요한 부분이 빠져 있습니다. 현재로서는 외부 코드에서 현재 잔액을 확인할 방법이 없습니다. getter 함수를 추가하여 이 문제를 해결해 봅시다.
getter는 캡슐화된 모듈에서 숨겨진 데이터를 노출하는 적절한 방법입니다. 잔액(balance) 필드를 공개(public)로 만드는 대신(이는 캡슐화를 깨뜨립니다), 값을 반환하는 읽기 전용 함수를 제공합니다. 이렇게 하면 데이터를 보호하면서도 제어된 접근을 허용할 수 있습니다.
다음 세 개의 파일로 작업을 계속합니다:
account.h: 새로운 함수 프로토타입인get_balance를 추가하세요. 이 함수는const Account *를 인자로 받고(데이터를 수정하지 않고 읽기만 하므로), 현재 잔액을 나타내는double을 반환합니다. 기존의 모든 선언은 그대로 유지하세요.account.c:get_balance함수를 구현하세요. 이 함수는 단순히 계좌의 숨겨진 balance 필드를 반환합니다. 이 함수는 구조체와 같은 파일에 정의되어 있으므로 내부 데이터에 접근할 수 있지만, 외부 코드에서는 여전히 내부를 직접 들여다볼 수 없다는 점에 유의하세요.main.c: 이제 드디어 계좌 내부에서 어떤 일이 일어나는지 확인할 수 있습니다! 계좌를 생성하고, 몇 가지 거래를 수행한 다음, 새로운 getter를 사용하여 각 단계에서 잔액을 표시하세요.
네 개의 입력을 받게 됩니다: 계좌 ID(정수), 입금액, 출금액, 그리고 두 번째 입금액입니다.
main 파일에서 계좌를 생성하고 초기 잔액을 출력하세요(0.00이어야 합니다). 첫 번째 금액을 입금하고 새로운 잔액을 출력하세요. 지정된 금액을 출금하고 다시 잔액을 출력하세요. 마지막으로 두 번째 입금을 하고 최종 잔액을 출력하세요. 그런 다음 계좌를 소멸시킵니다.
출력은 다음 형식을 따르세요:
Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyed여기서 1001은 계좌 ID이며, 잔액은 초기(0.00), 500.00 입금 후, 300.00 출금 후, 그리고 150.00을 추가로 입금한 후의 상태를 반영합니다. 모든 잔액 값은 %.2f를 사용하여 소수점 둘째 자리까지 형식을 맞추세요.
이 getter를 추가함으로써, 이제 은행 계좌 모듈은 계좌 데이터에 대한 완전하고 제어된 접근을 제공하게 됩니다. 사용자는 잔액을 볼 수 있지만, 검증된 입금 및 출금 함수를 통해서만 잔액을 수정할 수 있습니다.
직접 해보기
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
double deposit1;
scanf("%lf", &deposit1);
double withdraw_amount;
scanf("%lf", &withdraw_amount);
double deposit2;
scanf("%lf", &deposit2);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
// TODO: get_balance를 사용하여 초기 잔액 출력
deposit(account, deposit1);
// TODO: 첫 번째 입금 후의 잔액 출력
withdraw(account, withdraw_amount);
// TODO: 출금 후의 잔액 출력
deposit(account, deposit2);
// TODO: 두 번째 입금 후의 잔액 출력
destroy_account(account);
printf("Account destroyed\n");
return 0;
}