Danh mục tài liệu

CHƯƠNG 6 PHÉP TOÁN

Số trang: 19      Loại file: pdf      Dung lượng: 622.87 KB      Lượt xem: 17      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

TÀI LIỆU THAM KHẢO VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Nội dung trích xuất từ tài liệu:
CHƯƠNG 6 PHÉP TOÁN CH CHƯƠNG 6 PHÉP TOÁN 1 GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN MỤC TIÊU 2 Biết cách thức viết hàm phép toán trong lớp của ngôn ngữ C++ Hoàn thiện kiểu dữ liệu lớp sao cho có các hành vi: Truy cập dữ liệu (nhập/xuất; nhận biết/thay đổi giá trị của dữ liệu) Các phép toán liên quan Các hành vi đặc thù GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN NỘI DUNG CHI TIẾT 3 Đ Ặ T VẤ N Đ Ề HÀM TOÁN TỬ CÁC KÝ HiỆU KHÔNG SỬ DỤNG PHÉP TOÁN LÀ THÀNH VIÊN CỦA LỚP PHÉP TOÁN LÀ HÀM FRIEND CỦA LỚP PHÉP TOÁN 2 NGÔI PHÉP TOÁN 1 NGÔI GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN ĐẶT VẤN ĐỀ 4 Không báo lỗi Vì phép toán + chỉ được Muốđịnh dụngaphépcác ki+u C n sử nghĩ cho toán ể cho kiểsởphanso thì phải cơ u như int, float, Báo lỗi định nghĩađạnh nghĩa cho …chưa l ị i phép toán + Tại sao? kiểu phanso GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN HÀM TOÁN TỬ 5 Ngôn ngữ C++ cho phép cài đặt các phép toán một cách tiện lợi và tự nhiên. Tên gọi của phép toán được đặt theo quy ước gồm hai phần, Phần bắt buộc - sử dụng từ khóa operator Phần do người lập trình chọn lựa trong tập hợp các ký hiệu phép toán của ngôn ngữ. GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN VÍ DỤ 6 Cộng hai phanso với nhauphanso operator+ (phanso a){ //...}Kiểu trả về Phép toán được Từ khóa bắt định nghĩa lại là buộc phải có phép + GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN Các ký hiệu không sử dụng 7 Pheùp toaùn YÙ nghóa Truy caäp ñeán thaønh phaàn cuûa lôùp :: Truy caäp ñeán con troû laø thaønh phaàn ñoái töôïng .* hay struct Truy caäp ñeán thaønh phaàn cuûa ñoái töôïng hay . cuûa struct Pheùp toaùn ñieàu kieän ?: sizeof() Laáy kích thöôùc cuûa kieåu döõ lieäu GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN Phép toán là thành viên của lớp 8 Phép toán là hành vi, nên có thể hiện thực như thành phần thuộc lớp. Hàm toán tử operator phải có thuộc tính public vì nếu không thì trình dịch không thể thực hiện được nó ở ngoài phạm vi lớp. Với phép toán hai ngôi phải có hai tham số hình thức, khi trở thành phương thức của lớp chỉ còn một tham số. GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN PHÉP TOÁN 2 NGÔI 9 Giả sử có kiểu dữ liệu phanso v = (t,m), trong đó t, m là 2 số nguyên. Khi đó, phép toán cộng 2 vector được định nghĩa như sau, cho u = (t,m), v = (t,m), thì w = (t,m), w = u + v w.t = u.t*v.m + v.t*u.m w.m = u.m * v.m GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN 10 Tương tự cho các phép toán 2 ngôi khác khác Kết quả trả về operator phép toán (các tham số) { ….. return ….; }c=a+b trong ví dụ trên có thể hiểu là c=a.operator+(b)c.t=a.t*b.m+b.t*a.m c.t=t*b.m+b.t*mc.m=a.m*b.m c.m=m*b.m return c;return c GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN LƯU Ý 11 Trong lời gọi a.operator +(b), a đóng vai trò tham số ngầm định của hàm thành phần và b là tham số tường minh. Số tham số tường minh cho hàm toán tử thành phần luôn ít hơn số ngôi của phép toán là 1 vì có một tham số ngầm định là đối tượng gọi hàm toán tử. Chương trình dịch sẽ không thể hiểu được biểu thức 3+b vì cách viết tương ứng 3.operator (b) không có ý nghĩa. Để giải quyết tình trạng này ta dùng hàm friend để định nghĩa hàm toán tử (bài tập tự nghiên cứu). Gợi ý: hàm toán tử này sẽ là hàm tự do, và là friend của hàm phanso. Lời gọi cho nó là 3+b tương tự operator+(3,b) GV: Võ Hồng Bảo ChâuOOP-CHƯƠNG 6-PHÉP TOÁN BÀI TẬP TẠI LỚP 12 1)Định nghĩa lại phép toán -, ...