Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
399,01 KB
Nội dung
Chương 5: Nạp chồng toán tử Giảng viên: Ths Nguyễn Thị Khiêm Hòa Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Nội dung Từ khóa Operator Hỗ trợ ngôn ngữ NET khác Toán tử so sánh Toán tử chuyển đổi Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Đặt vấn đề Lớp người dùng định nghĩa (user class defined) có đầy đủ chức lớp xây dựng sẵn Ví dụ:Thực phép cộng hai phân số, đảm bảo thực phép toán số học lớp đối tượng này, đồng thời viết toán tử “+” phép tính số học khác Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Đặt vấn đề class Phanso { private int tuso; private int mauso; public Phanso(int tu, int mau) { this.tuso = tu; this.mauso = mau; } public override string ToString() { return tuso.ToString() + “/” + mauso.ToString(); } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Đặt vấn đề public Phanso Cong(Phanso rhs) { if(rhs.mauso!= mauso) { int ts = mauso*rhs.tuso + rhs.mauso*tuso; int ms = mauso*rhs.mauso; return new Phanso(ts,ms); } else { int ts = tuso + rhs.tuso; return new Phanso(ts, this.mauso); } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Đặt vấn đề Lời gọi phương thức: Phanso kq = ps1.Cong(ps2); Đảm bảo thực phép cộng hai phân số Không tự nhiên Cần xây dựng định nghĩa phép toán thật tự nhiên Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Toán tử Operator Toán tử phương thức tĩnh Trả kết thực phép tính đối tượng Để xây dựng toán tử thực nạp chồng toán tử Cú pháp public static operator ( lhs, rhs) { // câu lệnh định nghĩa } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Toán tử operator public static Phanso operator+(Phanso lhs, Phanso rhs) { if(rhs.mauso!= lhs.mauso) { int ts = lhs.mauso*rhs.tuso + rhs.mauso*lhs.tuso; int ms = lhs.mauso*rhs.mauso; return new Phanso(ts,ms); } else { int ts = lhs.tuso + rhs.tuso; return new Phanso(ts, this.mauso); } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Hỗ trợ ngôn ngữ NET Một số ngôn ngữ không hỗ trợ nạp chồng toán tử => cần hỗ trợ phương thức thay Ví dụ: Định nghĩa phương thức Add để thực phép cộng hai đối tượng Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Sử dụng toán tử Không sử dụng nạp chồng toán tử tùy tiện: Nạp chồng toán tử làm cho đối tượng trực quan Có thể làm mã nguồn phức tạp nhập nhằng Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 10 Nguyên tắc sử dụng toán tử Định nghĩa toán tử kiểu liệu giá trị, kiểu liệu xây dựng sẵn Nạp chồng toán tử bên lớp Sử dụng tên ký hiệu quy ước CLS Kết phải rõ ràng Toán tử có tính đối xứng Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 11 Nguyên tắc sử dụng toán tử Cung cấp phương thức thay theo quy định CLS Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 12 Nguyên tắc sử dụng toán tử Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 13 Nguyên tắc sử dụng toán tử Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 14 Toán tử so sánh Toán tử so sánh “==“ Định nghĩa lại phương thức ảo Equals() theo cú pháp: public override bool Equals(object o) { if(!(o is )) return false; else return this == () o; } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 15 Toán tử chuyển đổi Xây dựng phương thức chuyển đổi kiểu liệu: Ngầm định (implicit): Bảo đảm không thông tin Cú pháp: public static implicit operator ( ) Tường minh (explicit): Chuyển đổi công khai, có khả gây thông tin Cú pháp: public static explicit operator ( ) Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 16 Toán tử chuyển đổi public static implicit operator Phanso(int a) { return new Phanso(a,1); } public static explicit operator int(Phanso ps) { return ps.tuso/ps.mauso; } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 17 Q&A Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 18 [...]... tử Định nghĩa toán tử trong kiểu dữ liệu giá trị, kiểu dữ liệu được xây dựng sẵn Nạp chồng toán tử bên trong lớp Sử dụng tên và ký hiệu được quy ước trong CLS Kết quả phải rõ ràng Toán tử có tính đối xứng Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 11 Nguyên tắc sử dụng toán tử Cung cấp phương thức thay thế theo quy định trong CLS Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM... phương thức ảo Equals() theo cú pháp: public override bool Equals(object o) { if(!(o is )) return false; else return this == () o; } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 15 Toán tử chuyển đổi Xây dựng phương thức chuyển đổi kiểu dữ liệu: Ngầm định (implicit): Bảo đảm không mất thông tin Cú pháp: public static implicit operator ( ) Tường ... cộng hai phân số, đảm bảo thực phép toán số học lớp đối tượng này, đồng thời viết toán tử “+” phép tính số học khác Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Đặt vấn đề class Phanso { private... tin - Đại học Ngân hàng TP.HCM Toán tử Operator Toán tử phương thức tĩnh Trả kết thực phép tính đối tượng Để xây dựng toán tử thực nạp chồng toán tử Cú pháp public static operator