Menu
Coddy logo textTech

입금 로직

Coddy C 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 61개 중 24번째.

challenge icon

챌린지

쉬움

이제 Account 모듈에 첫 번째 실제 뱅킹 작업을 추가할 차례입니다. 바로 자금 입금 기능입니다! deposit 함수는 올바르게 작동해야 합니다. 양수 금액만 허용하여 잘못된 거래로부터 account를 보호해야 합니다.

기존 Bank Account 프로젝트를 기반으로 모듈을 deposit 기능으로 확장합니다. deposit 함수는 숨겨진 잔액을 수정하기 전에 입력값을 검증해야 합니다. 이는 데이터 무결성을 보호하기 위해 캡슐화가 작동하는 방식입니다.

다음 세 파일을 사용합니다.

  • account.h: 기존 헤더에 새 함수 프로토타입인 deposit을 추가하여 확장합니다. 이 함수는 Account 포인터와 double amount를 인수로 받고, int를 반환해야 합니다(성공하면 1, amount가 유효하지 않으면 0). 기존의 create_accountdestroy_account 선언은 그대로 유지합니다.
  • account.c: 기존 constructor 및 destructor와 함께 deposit 함수를 Implement합니다. deposit은 amount가 양수(0보다 큼)일 때만 성공해야 합니다. 유효하면 amount를 숨겨진 잔액에 더하고 1을 return합니다. amount가 0 또는 음수이면 잔액을 변경하지 않고 0을 return하여 거부합니다.
  • main.c: account를 생성하고 여러 deposit 작업을 수행하여 deposit 기능을 시연합니다. 일부는 유효하고 일부는 유효하지 않게 하여 검증이 올바르게 작동하는지 보여 줍니다.

세 가지 입력을 받습니다. account ID(정수), valid deposit amount(양수), 그리고 invalid deposit amount(0 또는 음수)입니다.

main 파일에서 주어진 ID로 account를 생성하고 확인 메시지를 출력합니다. 그런 다음 먼저 invalid amount의 입금을 시도합니다. 성공 여부를 출력하고 잔액이 변경되지 않아야 함을 나타냅니다. 다음으로 valid amount를 입금하고 성공 결과를 출력합니다. 마지막으로 account를 destroy하고 정리가 완료되었음을 확인합니다.

출력은 다음 형식으로 표시합니다.

Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyed

여기서 1001은 account ID이고, -50.00은 invalid amount이며, 200.00은 valid amount입니다. 모든 amount는 %.2f를 사용하여 소수점 이하 두 자리로 형식화합니다.

deposit 함수는 gatekeeper 역할을 합니다. 유효한 거래만 account의 숨겨진 잔액을 수정할 수 있도록 보장합니다. 아직 잔액을 직접 볼 수는 없지만(이후 강의에서 getter를 추가할 예정입니다), invalid deposit이 올바르게 거부되고 있다는 것을 신뢰할 수 있습니다.

직접 해보기

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 C 컴파일러