Menu
CoddyTech

Triển khai tài khoản

Thuộc phần Lập trình hướng đối tượng trong hành trình C của Coddy. Bài học 23 trên 61.

challenge icon

Thử thách

Dễ

Đã đến lúc biến tài khoản ngân hàng của bạn thành hiện thực! Bạn đã tạo giao diện công khai trong account.h, giờ bạn sẽ triển khai phần nội bộ ẩn để giao diện hoạt động.

Dựa trên phần bạn đã làm trước đó, bạn sẽ thêm tệp mã nguồn chứa định nghĩa cấu trúc bí mật và phần triển khai các hàm thực tế. Đây là nơi tính đóng gói thực sự diễn ra: phần thân cấu trúc chỉ tồn tại trong tệp .c, hoàn toàn vô hình với bất kỳ ai sử dụng thư viện của bạn.

Bạn sẽ làm việc với ba tệp:

  • account.h: Tệp tiêu đề hiện có của bạn, chứa khai báo kiểu Account không hiển thị và các nguyên mẫu hàm cho create_account và destroy_account. Giữ nguyên các bảo vệ include với ACCOUNT_H.
  • account.c: Đây là nơi phép màu xảy ra. Định nghĩa struct Account thực tế với hai thành viên ẩn: int id (mã định danh tài khoản) và double balance (bắt đầu từ 0.0 với tài khoản mới). Triển khai hàm khởi tạo để cấp phát bộ nhớ, đặt ID từ tham số và khởi tạo số dư bằng không. Triển khai hàm hủy để giải phóng bộ nhớ đúng cách.
  • main.c: Kiểm tra phần triển khai bằng cách tạo một tài khoản và xác nhận tài khoản hoạt động. Vì các thành viên của cấu trúc bị ẩn, bạn không thể xem bên trong, nhưng có thể xác minh vòng đời hoạt động chính xác.

Bạn sẽ nhận một đầu vào: ID tài khoản (một số nguyên) để gán cho tài khoản mới.

Trong tệp chính, hãy tạo tài khoản với ID được cung cấp, in thông báo xác nhận có ID, sau đó hủy tài khoản và xác nhận đã dọn dẹp.

In đầu ra theo định dạng này:

Account 1001 created
Account destroyed

Trong đó, 1001 được thay bằng ID thực tế bạn nhận làm đầu vào.

Ghi nhớ: main.c không thể truy cập trực tiếp vào account->id hoặc account->balance. Các thành viên đó hoàn toàn ẩn bên trong account.c. Hiện tại, bạn chỉ cần dùng ID từ đầu vào trong thông báo đầu ra. Trong các bài học tiếp theo, bạn sẽ thêm các hàm getter để lấy dữ liệu ẩn đúng cách.

Tự làm thử

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

int main() {
    int account_id;
    // TODO: đọc account_id từ đầu vào
    scanf("%d", &account_id);

    // TODO: tạo tài khoản bằng create_account() và in ra "Account <id> created"

    // TODO: hủy tài khoản bằng destroy_account() và in ra "Account destroyed"

    return 0;
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch C online