Bài giảng Lập trình hướng đối tượng: Chương 5 - Phạm Mạnh Cương
lượt xem 4
download
Chương 6 cung cấp kiến thức về nạp chồng toán tử. Nội dung chính trong chương này: Toán tử (operator), cách dùng từ khoá operator, các toán tử logic hai ngôi, toán tử chuyển đổi kiểu (ép kiểu). Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 5 - Phạm Mạnh Cương
- Chương 6: Nạp chồng toán tử
- Nội dung Toán tử (operator) Cách dùng từ khoá operator Các toán tử logic hai ngôi Toán tử chuyển đổi kiểu (ép kiểu) Ví dụ
- Toán tử (operator) Trong C#, toán tử là một phương thức tĩnh dùng để cài đăt m ̣ ột phép toán nào đó trên các đối tượng. Mục đích của toán tử là để viết mã chương trình gọn gàng, dễ hiểu hơn, thay vì phải gọi phương thức. Ta có thể cài đặt các toán tử sau: Toán học: +, , *, /, %. Cộng trừ một ngôi: ++, , . Quan hệ so sánh: ==, !=, >, =,
- Chú ý o Tham số của toán tử phải là tham trị (không dùng các từ khóa ref, out). o Không được cài toán tử = (gán), && , || (and, or logic), ?: (điều kiện), checked, unchecked, new, typeof, as, is không được xem là một toán tử. o Khi cài đặt các toán tử dạng: +, , *, / , % thì các toán tử +=, =, *=, /= , %= cũng tự động được cài đặt.
- Chú ý (tt) o Khi cài đặt toán tử thì nên cài đặt theo cặp đối ngẫu. Chẳng hạn, khi cài đặt toán tử == thì quá tải thêm toán tử !=… o Khi định nghĩa toán tử ép kiểu ta phải chỉ ra đây là toán tử ép kiểu ngầm định (implicit) hay tường minh (explicit).
- Cách dùng từ khoá operator Ví dụ public static Fraction operator+ (Fraction lhs, Fraction rhs) Sự hữu ích của các toán tử: Các toán tử được nạp chồng có thể giúp cho đoạn mã nguồn của ta dễ nhìn hơn, dễ quản lý và trong sáng hơn. Tuy nhiên nếu ta quá lạm dụng đưa vào các toán tử quá mới hay quá riêng sẽ làm cho chương trình khó sử dụng các toán tử này mà đôi khi còn có các nhầm lẫn vô vị nữa
- Các toán tử logic hai ngôi Các toán tử khá phổ biến là (==) so sánh bằng giữ hai đối tượng, (!=) so sánh không bằng, () so sánh lớn hơn, (=) tương ứng nhỏ hơn hay bằng và lớn hơn hay bằng Là các toán tử phải có cặp toán hạng hay gọi là các toán tử hai ngôi.
- Toán tử chuyển đổi kiểu (ép kiểu) Trong C#, khi ta chuyển từ kiểu thấp hơn (kích thước nhỏ) lên kiểu cao hơn (kích thước lớn) thì việc chuyển đổi này luôn thành công nhưng khi chuyển từ kiểu cao xuống kiểu thấp có thể ta sẽ mất thông tin Cú pháp định nghĩa toán tử ép kiểu: public static [ implicit | explicit ] operator KiểuTrảVềT (Type V) trong đó Type V là biến cần ép sang kiểu KiểuTrảVềT.
- Ví dụ: xây dựng lớp phân số và cài đặt các phép toán trên phân số. using System; //Chuyen doi ngam dinh tu so nguyen sang phan class PhanSo so { public static implicit operator PhanSo(int theInt) int Tu, Mau; // private members { //constructor Console.WriteLine("Chuyen doi ngam dinh tu so public PhanSo(int TuSo, int MauSo) nguyen sang phan so"); { return new PhanSo(theInt); Tu = TuSo; } Mau = MauSo; //Chuyen doi tuong minh phan so sang so nguyen; } //constructor public static explicit operator int(PhanSo PS) public PhanSo(int HoleNumber) { return PS.Tu/PS.Mau; { Tu = HoleNumber; } Mau = 1; } //constructor public PhanSo() { Tu = 0; Mau = 1; }
- Ví dụ: xây dựng lớp phân số và cài đặt các phép toán trên phân số (tt) //toan tu so sanh == // Tang phan so them mot don vi! public static bool operator==(PhanSo PS1, PhanSo PS2) public static PhanSo operator++(PhanSo PS) { { return (PS1.Tu * PS2.Mau == PS2.Tu * PS1.Mau); PS.Tu = PS.Mau + PS.Tu; } return PS; // Toan tu so sanh !=; } public static bool operator!=(PhanSo PS1, PhanSo PS2) //ep phan so ve gia tri True, false de tra loi cau { //doi: day co phai la mot phan so hop le hay khong return !(PS1 == PS2); public static implicit operator bool(PhanSo PS) } { // phong thuc so sanh 2 phan so co bang nhau hay khong return PS.Mau !=0; public override bool Equals(object o) } { //Phuong thuc doi phan so thanh chuoi Console.WriteLine("Phuong thuc Equals"); public override string ToString() if (! (o is PhanSo) ) return false; { return this == (PhanSo) o; String s = Tu.ToString( ) + "/" + Mau.ToString( } ); //Toan tu cong hai phan so return s; public static PhanSo operator+(PhanSo PS1, PhanSo } PS2) } { int MauMoi = PS1.Mau * PS2.Mau ; int TuMoi = PS2.Mau * PS1.Tu + PS1.Mau * PS2.Tu; return new PhanSo(TuMoi, MauMoi); }
- Ví dụ: xây dựng lớp phân số và quá tải các phép toán trên phân số (tt) class PhanSoApp { static void Main( ) { PhanSo f1 = new PhanSo(3,4); Console.WriteLine("f1: {0}", f1.ToString( )); PhanSo f2 = new PhanSo(2,4); Console.WriteLine("f2: {0}", f2.ToString( )); PhanSo f3 = f1 + f2; Console.WriteLine("f1 + f2 = f3: {0}", f3.ToString()); PhanSo f4 = f3 + 5; Console.WriteLine("f3 + 5 = f4: {0}", f4.ToString( )); PhanSo f5 = new PhanSo(4,8); if (f5 == f2) { Console.WriteLine("F5: {0} == F2: {1}", f5.ToString( ), f2.ToString( )); } Console.ReadLine(); } }
- Kết quả của chương trình
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 141 | 9
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 104 | 8
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 102 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 90 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 105 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 140 | 4
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 0
2 p | 84 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 16 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 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