Menu
Coddy logo textTech

Реализация счета

Часть раздела Object Oriented Programming путешествия по C на Coddy — урок 23 из 61.

challenge icon

Задание

Легко

Пришло время оживить ваш банковский счет! Вы уже создали публичный интерфейс в account.h — теперь вы реализуете скрытую внутреннюю логику, которая заставляет его работать.

Опираясь на вашу предыдущую работу, вы добавите исходный файл, содержащий секретное определение структуры и фактическую реализацию функций. Именно здесь происходит настоящая инкапсуляция — тело структуры существует только в файле .c, полностью невидимое для всех, кто использует вашу библиотеку.

Вы будете работать с тремя файлами:

  • account.h: Ваш существующий заголовочный файл с объявлением непрозрачного типа Account и прототипами функций для create_account и destroy_account. Сохраните guard-включения с ACCOUNT_H.
  • account.c: Здесь происходит магия. Определите саму struct Account с двумя скрытыми членами: int id (идентификатор счета) и double balance (начальное значение 0.0 для новых счетов). Реализуйте конструктор для выделения памяти, установки ID из параметра и инициализации баланса нулем. Реализуйте деструктор для правильного освобождения памяти.
  • main.c: Протестируйте свою реализацию, создав счет и подтвердив его работу. Поскольку члены структуры скрыты, вы не можете заглянуть внутрь, но вы можете убедиться, что жизненный цикл работает правильно.

Вы получите один входной параметр: ID счета (целое число), который нужно присвоить новому счету.

В вашем основном файле создайте счет с предоставленным ID, выведите подтверждающее сообщение с указанием ID, затем удалите счет и подтвердите очистку.

Выведите результат в следующем формате:

Account 1001 created
Account destroyed

Где 1001 заменяется на фактический ID, полученный на вход.

Помните: ваш main.c не может получить прямой доступ к account->id или account->balance — эти члены полностью скрыты внутри account.c. На данный момент вы будете использовать ID из входных данных только для вашего выходного сообщения. В следующих уроках вы добавите функции-геттеры для правильного извлечения скрытых данных.

Попробуйте сами

#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