Bài giảng cơ sở lập trình máy tính chương 5 ths nguyễn thị khiêm hòa

18 132 0
Bài giảng cơ sở lập trình máy tính  chương 5   ths  nguyễn thị khiêm hòa

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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

Ngày đăng: 04/12/2015, 14:17

Tài liệu cùng người dùng

Tài liệu liên quan