Ôn tập: trình quản lý Point
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 11 trên 61.
Thử thách
DễHãy xây dựng một module Point hoàn chỉnh để quản lý tọa độ 2D. Thử thách ôn tập này kết hợp mọi điều bạn đã học về cách xem struct như đối tượng: dùng con trỏ để thay đổi trạng thái và con trỏ const cho các thao tác chỉ đọc.
Bạn sẽ tạo ba tệp:
point.h: Khai báo một structPointcó hai thành viên số nguyên:xvày. Đồng thời khai báo hai hàm đóng vai trò như phương thức:point_move: nhận một con trỏ đến Point cùng với hai số nguyên (dxvàdy), rồi dịch chuyển vị trí của điểm bằng cách cộng các giá trị này vàoxvàypoint_print: nhận một con trỏconstđến Point và hiển thị tọa độ của điểm (hàm này không được thay đổi điểm)
POINT_H.point.c: Cài đặt cả hai hàm. Hãy cân nhắc kỹ hàm nào cần con trỏ thông thường để thay đổi điểm và hàm nào dùng con trỏconstđể đọc an toàn mà không thay đổi điểm.main.c: Tạo một Point, di chuyển điểm đó và hiển thị vị trí của nó ở các thời điểm khác nhau.
Bạn sẽ nhận được bốn đầu vào số nguyên: giá trị x ban đầu, giá trị y ban đầu, giá trị dx (khoảng cách di chuyển theo chiều ngang) và giá trị dy (khoảng cách di chuyển theo chiều dọc).
Trong tệp chính, khởi tạo một Point với tọa độ ban đầu, in ra vị trí ban đầu, di chuyển điểm theo các giá trị đã cho, rồi in ra vị trí mới.
Hàm point_print cần in ra theo định dạng sau:
Point: ({x}, {y})Ví dụ, với các đầu vào 3, 5, 2 và -1, đầu ra sẽ là:
Point: (3, 5)
Point: (5, 4)Tự làm thử
#include <stdio.h>
#include "point.h"
int main() {
// Đọc các giá trị đầu vào
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: Tạo một Point với tọa độ ban đầu (x, y)
// TODO: In ra vị trí ban đầu bằng point_print
// TODO: Di chuyển điểm theo (dx, dy) bằng point_move
// TODO: In ra vị trí mới bằng point_print
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