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 -, ...
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 -, ...
Tìm kiếm theo từ khóa liên quan:
lập trình căn bản thủ thuật lập trình tài liệu lập trình lập trình hướng đối tượng bài tập lập trìnhTài liệu có liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 315 0 0 -
114 trang 263 2 0
-
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 248 0 0 -
80 trang 238 0 0
-
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 223 0 0 -
101 trang 211 1 0
-
Hướng dẫn lập trình với Android part 4
5 trang 158 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 143 0 0 -
14 trang 141 0 0
-
124 trang 135 3 0