Ôn tập: Greeter
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 43 trên 61.
Thử thách
DễHãy xây dựng một hệ thống Greeter minh họa tính đa hình thông qua con trỏ hàm: cùng một kiểu struct tạo ra các đầu ra khác nhau tùy theo hàm chào hỏi nào được gán.
Bạn sẽ tổ chức code trong ba tệp:
greeter.h: Định nghĩa giao diện greeter tại đây. Tạo một kiểu con trỏ hàm có tên làGreetFunc, nhận vào mộtconst char*(tên cần chào) và không trả về gì. Sau đó, định nghĩa một structGreeterchứalanguage(kiểuconst char*) và một con trỏ hàmgreetcó kiểuGreetFunc.greeter.c: Triển khai các hàm chào hỏi đại diện cho những ngôn ngữ khác nhau:greet_english: in raHello, name!greet_spanish: in raHola, name!
main.c: Kết hợp mọi thứ tại đây. Tạo hai đối tượngGreeter, một cho tiếng Anh và một cho tiếng Tây Ban Nha, mỗi đối tượng được gán hàm chào hỏi tương ứng. Đọc tên đầu vào, sau đó gọi hàmgreetcủa cả hai greeter để minh họa hành vi đa hình.
Chương trình sẽ nhận một đầu vào duy nhất: một tên cần chào.
Tạo một greeter tiếng Anh có ngôn ngữ được đặt thành English và một greeter tiếng Tây Ban Nha có ngôn ngữ được đặt thành Spanish. Với mỗi greeter, in ngôn ngữ của nó theo sau là dấu hai chấm và dấu cách, rồi gọi hàm greet của nó với tên đầu vào.
Đầu ra ví dụ khi đầu vào là Maria:
English: Hello, Maria!
Spanish: Hola, Maria!Đầu ra ví dụ khi đầu vào là Carlos:
English: Hello, Carlos!
Spanish: Hola, Carlos!Cả hai greeter đều có cùng kiểu Greeter, nhưng chúng tạo ra lời chào khác nhau vì mỗi đối tượng được gán một hàm khác nhau cho thành viên greet. Nhớ dùng include guard trong tệp header.
Tự làm thử
#include <stdio.h>
#include <string.h>
#include "greeter.h"
int main() {
// Đọc tên từ đầu vào
char name[100];
scanf("%s", name);
// TODO: Tạo bộ chào hỏi bằng tiếng Anh
// - Đặt language thành "English"
// - Đặt greet thành hàm (function) greet_english
// TODO: Tạo bộ chào hỏi bằng tiếng Tây Ban Nha
// - Đặt language thành "Spanish"
// - Đặt greet thành hàm greet_spanish
// TODO: Với mỗi bộ chào hỏi:
// 1. In ra language, sau đó là ": "
// 2. Gọi hàm greet với tên đã nhập
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