Menu
Coddy logo textTech

계좌 구현하기

Coddy C 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 23번째.

challenge icon

챌린지

쉬움

이제 은행 계좌(Bank Account)에 생명력을 불어넣을 시간입니다! 이미 account.h에 공개 인터페이스를 만들었으니, 이제 이를 작동하게 만드는 숨겨진 내부 로직을 구현해 보겠습니다.

이전 작업을 바탕으로, 비밀스러운 구조체 정의와 실제 함수 구현이 포함된 소스 파일을 추가할 것입니다. 이것이 바로 캡슐화가 실제로 일어나는 지점입니다. 구조체의 본체는 .c 파일에만 존재하며, 라이브러리를 사용하는 누구에게도 보이지 않습니다.

세 개의 파일로 작업하게 됩니다:

  • account.h: 불투명한 Account 타입 선언과 create_accountdestroy_account의 함수 프로토타입이 포함된 기존 헤더 파일입니다. ACCOUNT_H를 사용한 인클루드 가드(include guards)를 유지하세요.
  • account.c: 마법이 일어나는 곳입니다. 두 개의 숨겨진 멤버인 int id(계좌 식별자)와 double balance(새 계좌의 경우 0.0으로 시작)를 가진 실제 struct Account를 정의하세요. 메모리를 할당하고, 매개변수로부터 ID를 설정하며, 잔액을 0으로 초기화하는 생성자를 구현하세요. 메모리를 적절히 해제하는 소멸자를 구현하세요.
  • main.c: 계좌를 생성하고 제대로 작동하는지 확인하여 구현 내용을 테스트하세요. 구조체 멤버가 숨겨져 있으므로 내부를 들여다볼 수는 없지만, 라이프사이클이 올바르게 작동하는지는 확인할 수 있습니다.

하나의 입력을 받게 됩니다: 새 계좌에 할당할 account ID(정수)입니다.

메인 파일에서 제공된 ID로 계좌를 생성하고, ID를 보여주는 확인 메시지를 출력한 다음, 계좌를 파괴하고 정리를 확인하세요.

출력은 다음 형식으로 하세요:

Account 1001 created
Account destroyed

여기서 1001은 입력으로 받은 실제 ID로 대체됩니다.

기억하세요: main.caccount->idaccount->balance에 직접 접근할 수 없습니다. 이 멤버들은 account.c 내부에 완전히 숨겨져 있습니다. 지금은 출력 메시지를 위해 입력받은 ID를 그대로 사용하면 됩니다. 다음 레슨에서는 숨겨진 데이터를 적절히 가져오기 위한 게터(getter) 함수를 추가할 것입니다.

직접 해보기

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

int main() {
    int account_id;
    // TODO: 입력에서 account_id 읽기
    scanf("%d", &account_id);

    // TODO: create_account()를 사용하여 계정을 생성하고 "Account <id> created" 출력하기

    // TODO: destroy_account()를 사용하여 계정을 삭제하고 "Account destroyed" 출력하기

    return 0;
}

Object Oriented Programming의 모든 레슨