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

Object-oriented programming

Ví dụ: template in các giá trị của mảng

7

Object-oriented programming

Ví dụ: template in các giá trị của mảng

8

Object-oriented programming

Ví dụ: Hàm template có nhiều tham số

9

Object-oriented programming

Các lớp template

 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

Object-oriented programming

Các lớp template

11

Object-oriented programming

Các lớp template

12

Object-oriented programming

Các lớp template

13

Object-oriented programming

Các lớp template

14

Object-oriented programming

2. Xử lý exception

 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

Object-oriented programming

Các từ khóa try, catch và throw

 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

Object-oriented programming

Các từ khóa try, catch và throw

try { …………… } catch() { …………… } catch() { …………… }

17

Object-oriented programming

Ví dụ: try, catch và throw

18

Object-oriented programming

Các tình huống xử lý exception

 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

Object-oriented programming

Các tình huống xử lý exception

20

Object-oriented programming

Ném một exception trong hàm bất kỳ

 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

Object-oriented programming

Khối try bên trong hàm

 Xử lý exception lúc chạy sinh bởi đoạn mã nào đó thuộc hàm

22

Object-oriented programming

Bài tập

 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ỳ.

23

Object-oriented programming