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.
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ểuAccountkhông hiển thị và các nguyên mẫu hàm chocreate_accountvàdestroy_account. Giữ nguyên các bảo vệ include vớiACCOUNT_H.account.c: Đây là nơi phép màu xảy ra. Định nghĩastruct Accountthự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 destroyedTrong đó, 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
1Kiến thức cơ bản về lập trình mô-đun
Tệp tiêu đềInclude guardTệp mã nguồnHàm staticÔn tập: Máy tính mô-đun4Tính đóng gói
Khái niệm con trỏ mờĐịnh nghĩa struct mờHàm truy xuất và hàm gánKiểm tra tính hợp lệ trong hàm gánÔn tập: Hộp bí mật2Đối tượng và phương thức
Struct dưới dạng đối tượngCon trỏ 'Self'Tính đúng đắn của constCon trỏ và giá trịPhương thức hỗ trợÔn tập: trình quản lý Point5Dự án: Tài khoản ngân hàng đơn giản
Thiết lập dự ánTriển khai tài khoản3Vòng đời đối tượng
Mẫu hàm khởi tạoMẫu hàm hủyKhởi tạo trên ngăn xếpSao chép sâuÔn tập: lớp bao bọc chuỗi6Kế thừa bằng cách kết hợp
Nhúng structQuy tắc thành viên đầu tiênTruy cập thành viên lớp chaUpcastingÔn tập: hệ phân cấp hình dạngTự luyện tập: Trình biên dịch C online