CHƯƠNG 6 PHÉP TOÁN
lượt xem 8
download
TÀI LIỆU THAM KHẢO VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CHƯƠNG 6 PHÉP TOÁN
- CH CHƯƠNG 6 PHÉP TOÁN 1 GV: Võ Hồng Bảo Châu OOP-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âu OOP-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âu OOP-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âu OOP-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âu OOP-CHƯƠNG 6-PHÉP TOÁN
- VÍ DỤ 6 Cộng hai phanso với nhau phanso 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âu OOP-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âu OOP-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âu OOP-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âu OOP-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*m c.m=a.m*b.m c.m=m*b.m return c; return c GV: Võ Hồng Bảo Châu OOP-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âu OOP-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 -, *, / cho lớp phân số trên 2)Xây dựng lớp Diem gồm 2 thành phần hoành độ và tung độ. Viết phép toán + cho 2 Diem. GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 6-PHÉP TOÁN
- PHÉP GÁN 13 a=b Tương đương a.operator=(b) Ví dụ a và b thuộc lớp phân số t=b.t a.t=b.t m=b.m a.m=b.m return *this return a; GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 6-PHÉP TOÁN
- PHÉP TOÁN > 14 Phép toán Để định nghĩa phép toán >> theo nghĩa nhập từ dòng dữ liệu nhập cho kiểu dữ liệu đang định nghĩa, ta định nghĩa phép toán >> như hàm toàn cục với tham số thứ nhất là tham chiếu đến một đối tượng thuộc lớp istream, kết quả trả về là tham chiếu đến chính istream đó. Toán hạng thứ hai là tham chiếu đến đối tượng thuộc lớp đang định nghĩa. GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 6-PHÉP TOÁN
- 15 class PhanSo { ...... friend istream& operator >> (istream &is, PhanSo &p); friend ostream& operator
- 16 istream & operator >> (istream &is, PhanSo &p) { is >> p.t >> p.m; while (!p.m) { cout > p.m; void main() } { return is; PhanSo a, b; } cout > a; ostream & operator b; { cout
- BÀI TẬP TỰ HỌC 17 Tìm hiểu thêm các phép toán khác như (), ++, --, [] Xây dựng một class hoàn chỉnh có dùng các phép toán trên, ví dụ class ma trận. GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 6-PHÉP TOÁN
- TÓM TẮT 18 Toán tử có thể được định nghĩa lại (chồng hàm) Dùng từ khóa operator và ký hiệu toán tử được định nghĩa lại. Không thể định ra phép toán mới Hàm toán tử có thể là hàm thành phần hoặc hàm friend của lớp Khi hàm toán tử là hàm thành phần, toán hạng bên trái luôn là đối tượng thuộc lớp. ái là Khi hàm toán tử là hàm friend, toán hạng bên trái là đối tượng của lớp khác. GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 6-PHÉP TOÁN
- 19 THANH YOU GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 6-PHÉP TOÁN
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập Trình Logic Trong ProLog - PGS.TS. PHAN HUY KHÁNH phần 6
19 p | 416 | 125
-
Chương 6: Giới thiệu ngôn ngữ lập trình C
3 p | 106 | 15
-
UltraISO Premium Edition 9.3.6 Build 2750
8 p | 117 | 14
-
Bài giảng Xử lý ảnh - Chương 6: Các phép toán trên điểm
15 p | 60 | 8
-
Bài giảng Xử lý ảnh - Chương 7: Các phép toán đại số
11 p | 46 | 7
-
Bài giảng Lý thuyết ngôn ngữ lập trình: Chương 6 - CĐ CNTT Hữu nghị Việt Hàn
13 p | 91 | 6
-
Mô tả về mẫu Trojan-Banker.Win32.Banz.cri
5 p | 65 | 5
-
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 6: Giới thiệu về ngôn ngữ lập trình C (GV. Nguyễn Nhật Nam)
16 p | 30 | 3
-
Bài giảng Nhập môn cơ sở dữ liệu: Chương 6 - Vũ Tuyết Trinh
11 p | 66 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn