lập trình hướng đối tượng. Chương trình cho phép:
- Đăng ký bạn đọc mới với thông tin là mã và tên bạn đọc, số điện thoại - Nhập sách mới với thông tin là mã sách, tên sách, số lượng, nhà xuất bản. - Mượn và trả sách.
- Thống kê bạn đọc. - Thống kê sách.
BACHIEU
CHƯƠNG 6
KHN HÌNH6.1. Khn hình hàm 6.1. Khn hình hàm
6.1.1. Khái niệm
Ta đã biết hàm quá tải cho phép dùng một tên duy nhất cho nhiều hàm để thực hiện các công việc khác nhau. Khái niệm khn hình hàm cũng cho phép sử dụng cùng một tên duy nhất để thực hiện các công việc khác nhau, tuy nhiên so với định nghĩa hàm quá tải, nó có phần mạnh hơn và chặt chẽ hơn. Mạnh hơn vì chỉ cần viết định nghĩa khn hình hàm một lần, rồi sau đó chương trình biên dịch làm cho nó thích ứng với các kiểu dữ liệu khác nhau. Chặt chẽ hơn bởi vì dựa theo khn hình hàm, tất cả các hàm thể hiện được sinh ra bởi chương trình dịch sẽ tương ứng với cùng một định nghĩa và như vậy sẽ có cùng một giải thuật.
6.1.2. Tạo một khn hình hàm
Giả thiết rằng chúng ta cần viết một hàm min đưa ra giá trị nhỏ nhất trong hai giá trị có cùng kiểu. Ta có thể viết một định nghĩa như thế với kiểu int như sau:
int min (int a, int b) { if (a<b) return a; else return b; }
Nếu ta muốn sử dụng hàm min cho kiểu double, float, char,.... ta lại phải viết lại định nghĩa hàm min, ví dụ:
float min (float a, float b) { if (a < b) return a; else return b; }
Như vậy ta phải viết rất nhiều định nghĩa hàm hồn tồn tương tự nhau, chỉ có kiểu dữ liệu là thay đổi. Chương trình dịch C++ cho phép giải quyết đơn giản vấn đề
template <danh sách tham số kiểu> <kiểu trả về> tên hàm(khai báo tham số) {
// định nghĩa hàm }
trong đó <danh sách tham số kiểu> là các kiểu dữ liệu được khai báo với từ khoá class, cách nhau bởi dấu phẩy. Kiểu dữ liệu là một kiểu bất kỳ, kể cả kiểu class.
Ví dụ 6.1 Xây dựng khn hình cho hàm tìm giá trị nhỏ nhất của hai số:
template <class Kieuso> Kieuso min(Kieuso a, Kieuso b) { if (a<b) return a; else return b; } 6.1.3. Sử dụng khn hình hàm
Để sử dụng khn hình hàm min vừa tạo ra, chỉ cần sử dụng hàm min trong những điều kiện phù hợp, trong trường hợp này là hai tham số của hàm phải cùng kiểu dữ liệu. Như vậy, nếu trong một chương trình có hai tham số ngun n và m (kiểu int) với lời gọi min(n,m) thì chương trình dịch tự động sản sinh ra hàm min(), gọi là một hàm thể hiện, tương ứng với hai tham số kiểu int. Nếu chúng ta gọi min() với hai tham số kiểu float, chương trình biên dịch cũng tự động sản sinh một hàm thể hiện min khác tương ứng với các tham số kiểu float và cứ thế với các kiểu dữ liệu khác.
Chú ý: