LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Nguyễn Hữu Thể
CHƯƠNG 8 TEMPLATE
1
NỘI DUNG
1
Template
2
Xử lý Exception
5
2
Object-oriented programming
1. Template
Các template cho phép chúng ta để định rõ, với một đoạn mã đơn
giản: Toàn bộ phạm vi của các hàm có liên quan (đa năng hóa) =>
gọi là các hàm template
Hoặc một toàn bộ phạm vi của các lớp có liên quan => gọi là
lớp template.
3
Object-oriented programming
Các hàm template
Các hàm đa năng hóa được sử dụng để thực hiện các thao tác
tương tự trên các kiểu khác nhau của dữ liệu.
Ví dụ: hàm lấy trị tuyệt đối của một số
4
Object-oriented programming
Các hàm template
Cú pháp hàm template :
template
hoặc
template
Các tham số hình thức của một định nghĩa template được sử dụng
để mô tả các kiểu của các tham số cho hàm, để mô tả kiểu trả về
của hàm, và để khai báo các biến bên trong hàm.
Từ khóa class sử dụng để mô tả các kiểu tham số của hàm
template.
5
Object-oriented programming
Các hàm template
Khi đó, hàm trị tuyệt đối ở trên viết theo hàm template
Hàm template MyAbs() khai báo một tham số hình thức T cho kiểu của một số. T được tham khảo như một tham số kiểu.
Gọi hàm: cout< cout< biên dịch tạo ra hàm int MyAbs(int). Lần thứ hai sẽ tạo ra hàm float MyAbs(float). 6 7 8 9 Lớp template cũng mang đầy đủ ý tưởng của hàm template.
Các lớp template được gọi là các kiểu có tham số bởi vì chúng
đòi hỏi một hoặc nhiều tham số để mô tả làm thế nào tùy chỉnh
một lớp template chung để tạo thành một lớp template cụ thể. Ví dụ: cài đặt lớp template Stack. 10 11 12 13 14 Là phương thức của C++ giúp quản lý theo cùng một phong
cách đối với các lỗi phát sinh bởi chương trình vào lúc chạy. Có thể quy định các thủ tục cần được thực hiện một cách tự động trong từng trường hợp lỗi. Bảo đảm cho chương trình không chấm dứt tức thời, đột ngột hoặc nhảy tới đoạn mã thực hiện không đúng. 15 Ba từ khóa này tạo nên một cơ chế cho phép các chương trình
thông báo với nhau về các vấn đề bất thường và nghiêm trọng
xảy ra. Trong đoạn mã của chúng ta có ba khối tham gia vào việc phát hiện exception:
Khối try đánh dấu đoạn mã mà chúng ta nghi ngờ có thể xảy ra sai lầm khi chạy. Khối catch nằm sau khối try, chứa đoạn mã giải quyết vấn đề bất thường xảy ra gọi là exception handler. Lệnh throw: cho phép chúng ta nén ra bất cứ biến nào đặc biệt (hoặc biểu thức gán) mà chúng ta muốn. 16 17 18 Khi một exception không bị bắt
Nếu một exception được ném ra trong trường hợp sau khối try không có exception handler không khớp =>hàm terminate() được gọi nhằm kết thúc chương trình. 19 20 Chúng ta có thể ném một exception từ trong bất kỳ hàm nào miễn là hàm đó sẽ được gọi trong khối try. 21 Xử lý exception lúc chạy sinh bởi đoạn mã nào đó thuộc hàm 22 Bài 1: Viết hàm template trả về giá trị trung bình của một mảng, các tham số hình thức của hàm này là tên mảng và kích
thước mảng. Bài 2: Cài đặt hàng đợi template.
Bài 3: Cài đặt lớp template dùng cho cây nhị phân tìm kiếm (BST). Bài 4: Viết hàm template để sắp xếp kiểu dữ liệu bất kỳ. 23Object-oriented programming
Ví dụ: template in các giá trị của mảng
Object-oriented programming
Ví dụ: template in các giá trị của mảng
Object-oriented programming
Ví dụ: Hàm template có nhiều tham số
Object-oriented programming
Các lớp template
Object-oriented programming
Các lớp template
Object-oriented programming
Các lớp template
Object-oriented programming
Các lớp template
Object-oriented programming
Các lớp template
Object-oriented programming
2. Xử lý exception
Object-oriented programming
Các từ khóa try, catch và throw
Object-oriented programming
Các từ khóa try, catch và throw
try
{
……………
}
catch(
Object-oriented programming
Ví dụ: try, catch và throw
Object-oriented programming
Các tình huống xử lý exception
Object-oriented programming
Các tình huống xử lý exception
Object-oriented programming
Ném một exception trong hàm bất kỳ
Object-oriented programming
Khối try bên trong hàm
Object-oriented programming
Bài tập
Object-oriented programming

