NGÔN NGỮ LẬP TRÌNH Nạp chồng toán...
Transcript of NGÔN NGỮ LẬP TRÌNH Nạp chồng toán...
![Page 1: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/1.jpg)
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 1
NGÔN NGỮ LẬP TRÌNH
Nạp chồng toán tử
![Page 2: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/2.jpg)
NỘI DUNG
• Tại sao phải nạp chồng toán tử?
• Các cách nạp chồng toán tử
• Nạp chồng các toán tử <<, >>
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 2
![Page 3: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/3.jpg)
Tại sao phải
nạp chồng toán tử?
![Page 4: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/4.jpg)
Xét 2 ví dụ sau
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 4
![Page 5: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/5.jpg)
Kết luận
+, -, *, /, %,
Là những toán tử đã được xây dựng sẵn
Được dùng cho các kiểu cơ bản trong C/C++
Nhưng chưa dùng được cho các kiểu người dùng
định nghĩa
=> Muốn dùng thì phải nạp chồng
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 5
![Page 6: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/6.jpg)
Các cách nạp chồng toán tử
Nạp chồng ngoài lớp
Hàm nạp chồng không phải là hàm thành viên của
lớp
Nạp chồng trong lớp
Hàm nạp chồng là hàm thành viên của lớp
![Page 7: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/7.jpg)
Nạp chồng ngoài lớp
![Page 8: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/8.jpg)
Nạp chồng ngoài lớp
Cú pháp nạp chồng toán tử 1 ngôi: kieutrave operator toántử(kieutoanhang toanhang)
Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang toanhang1, kieutoanhang toanhang2)
Trong đó: operator: là từ khóa nạp chồng toán tử
Toántử: là các ký hiệu +, -, *, /, %
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 8
![Page 9: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/9.jpg)
Xét ví dụ
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 9
![Page 10: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/10.jpg)
Vấn đề
Trong hàm nạp chồng sử dụng đến các thành
phần private của đối tượng
Hàm nạp chồng không thuộc lớp => không
truy cập vào các thành phần private được
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 10
![Page 11: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/11.jpg)
Giải pháp 1
Phải truy cập qua các hàm thành viên của lớp
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 11
![Page 12: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/12.jpg)
Ví dụ cho giải pháp 1
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 12
![Page 13: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/13.jpg)
Giải pháp 2
Sử dụng hàm bạn
Hàm bạn là hàm có thể truy cập được vào các
thành phần private của lớp
Phải khai báo hàm bạn trong lớp
Phải có từ khóa friend ở đầu khai báo hàm
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 13
![Page 14: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/14.jpg)
Ví dụ cho giải pháp 2
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 14
![Page 15: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/15.jpg)
Nạp chồng trong lớp
![Page 16: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/16.jpg)
Nạp chồng trong lớp
Cú pháp nạp chồng toán tử 1 ngôi:
kieutrave operator toántử()
Cú pháp nạp chồng toán tử 2 ngôi:
kieutrave operator toántử(kieutoanhang toanhang)
Trong đó:
operator: là từ khóa nạp chồng toán tử
Toántử: là các ký hiệu +, -, *, /, %
![Page 17: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/17.jpg)
Ví dụ
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 17
![Page 18: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/18.jpg)
Sự khác biệt giữa 2 cách nạp chồng
Nạp chồng trong lớp có:
Số lượng tham số của hàm ít hơn
Vì khi nạp chồng trong lớp, toán hạng 1 được hiểu
chính là đối tượng gọi hàm
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 18
![Page 19: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/19.jpg)
Bài tập Xây dựng một lớp phân số (đặt tên là PhanSo) bao gồm:
Các thành phần dữ liệu tử số và mẫu số
Ít nhất hai hàm tạo: hàm tạo mặc định và hàm tạo có tham số
Phương thức nhập và hiển thị dữ liệu cho phân số
Xây dựng phương thức nạp chồng toán tử +, - , *, /
Viết một hàm main, khai báo và nhập dữ liệu cho 3 phân số ps1, ps2, ps3. Tính toán và hiển thị các kết quả sau: ps4 = ps1 + ps2 - ps3
ps4 = ps1 * ps2 / ps3
ps4 = (ps1+1) + ps2/2 – ps3
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 19
![Page 20: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/20.jpg)
Nạp chồng toán tử
nhập (>>), xuất(<<)
![Page 21: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/21.jpg)
Mục đích
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 21
Thay vì phải viết:
Ta có thể viết:
![Page 22: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/22.jpg)
Cách làm
Khai báo nạp chồng toán tử << và >> là hàm
bạn trong lớp PhanSo:
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 22
![Page 23: NGÔN NGỮ LẬP TRÌNH Nạp chồng toán tửfit.hnue.edu.vn/~dungntp/NNLT/7.Napchongtoantu.pdf · Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang](https://reader033.fdocuments.net/reader033/viewer/2022041718/5e4ca25f98f04102c70e2dfa/html5/thumbnails/23.jpg)
Cách làm
Định nghĩa
2 hàm này
như sau:
16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 23