intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hướng đối tượng: Chương 10 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:31

11
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình hướng đối tượng: Chương 10 Operator overloading, cung cấp cho người đọc những kiến thức như: Đặt vấn đề; Operator overloading; Khai báo hàm cho Operator overloading; Các toán tử chuyển đổi;...Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 10 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM

  1. CHƯƠNG 10: Click to edit Master subtitle style Operator overloading Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM 1
  2. NỘI DUNG Đặt vấn đề Operator overloading Operator Overloading Toán tử 2 ngôi Toán tử 1 ngôi Hỗn hợp Toán tử so sánh Khai báo hàm cho Operator overloading Các toán tử chuyển đổi Tóm tắt 2
  3. ĐẶT VẤN ĐỀ
  4. Đặt vấn đề Mục tiêu khi thiết kế ngôn ngữ C# là các lớp tự tạo (user-defined class) bởi người dùng sẽ có tất cả các chức năng của các kiểu dữ liệu có sẵn (built-in type). 4
  5. Đặt vấn đề class Vector Ví dụ: { public double X { get; set; } public double Y { get; set; } public Vector(double x, double y) { X = x; Y = y; } Cộng 2 vector public static Vector Add(Vector a, Vector b) { return new Vector(a.X + b.X, a.Y + b.Y); } } Có thể Gọi hàm Vector v1 = new Vector (1.0, 2.0); viết ???? Vector v1 = new Vector (1.0, 2.0); Vector v2 = new Vector (3.0,4.0); Vector v2 = new Vector (3.0,4.0); cộng 2 vector Vector kq = Vector.Add(v1, v2); Vector kq = v1 + v2; Operator Overloading 5
  6. OPERATOR OVERLOADING
  7. Operator overloading Operator overloading Toán tử 2 ngôi Toán tử 1 ngôi Hỗn hợp Toán tử so sánh 7
  8. Operator overloading Operator overloading Toán tử 2 ngôi Toán tử 1 ngôi Hỗn hợp Toán tử so sánh 8
  9. Operator overloading Operator overloading bao gồm: Từ khoá operator Các toán hạng (operand) • Ví dụ: +, -, *, /, >,
  10. Operator overloading class Vector { public double X { get; set; } public double Y { get; set; } public Vector(double x, double y) { X = x; Y = y; } Overload + public static Vector operator + (Vector a, Vector b) { return new Vector(a.X + b.X, a.Y + b.Y); } } Vector v1 = new Vector (1.0, 2.0); Vector v2 = new Vector (3.0,4.0); Sử dụng operator + Vector kq = v1 + v2; 10
  11. Operator overloading Ưu điểm của Operator overloading: Viết code ngắn gọn hơn Code dễ đọc hơn Vận dụng được các kiến thức về toán tử số học (+, - , *, /, >,
  12. Operator overloading Operator overloading Toán tử 2 ngôi Toán tử 1 ngôi Hỗn hợp Toán tử so sánh 12
  13. Toán tử hai ngôi (binary operator) class Vector { Ví dụ: public double X { get; set; } public double Y { get; set; } public Vector(double x, double y) { X = x; Y = y; } public static Vector operator + (Vector a, Vector b) Toán tử 2 ngôi + { return new Vector(a.X + b.X, a.Y + b.Y); } Toán tử 2 ngôi - public static Vector operator - (Vector a, Vector b) { return new Vector(a.X - b.X, a.Y - b.Y); } } Vector v1 = new Vector (1.0, 2.0); Vector v2 = new Vector (3.0,4.0); Sử dụng operator overloading Vector v3 = v1 + v2; Vector v4 = v1 - v2; 13
  14. Operator overloading Operator overloading Toán tử 2 ngôi Toán tử 1 ngôi Hỗn hợp Toán tử so sánh 14
  15. Toán tử một ngôi (unary operator) Ví dụ: class Vector { public double X { get; set; } public double Y { get; set; } public Vector(double x, double y) { X = x; Y = y; } Toán tử 1 ngôi + public static Vector operator + (Vector a) { return new Vector(a.X , a.Y); } Toán tử 1 ngôi - public static Vector operator - (Vector a) { return new Vector(-a.X ,- a.Y); } } 15
  16. Operator overloading Operator overloading Toán tử 2 ngôi Toán tử 1 ngôi Hỗn hợp Toán tử so sánh 16
  17. Hỗn hợp (Mixed) class Vector { Ví dụ: public double X { get; set; } public double Y { get; set; } public Vector(double x, double y) { X = x; Y = y; } Vector * int public static Vector operator * (Vector a, int k) { return new Vector(a.X * k, a.Y * k); } int * Vector public static Vector operator * (int k, Vector a) { return new Vector(k * a.X, k * a.Y); } } Vector v1 = new Vector (2.0, 3.0); int k = 3 Sử dụng operator overloading Vector v3 = v1 * k; Vector v4 = k * v1; 17
  18. Operator overloading Operator overloading Toán tử 2 ngôi Toán tử 1 ngôi Hỗn hợp Toán tử so sánh 18
  19. Toán tử so sánh class Vector { Ví dụ: public double X { get; set; } public double Y { get; set; } public Vector(double x, double y) { X = x; Y = y; } public static bool operator == (Vector a, Vector b) So sánh bằng { return a.X == b.X && a.Y == b.Y; } So sánh không bằng public static bool operator != (Vector a, Vector b) { return !(a==b); } } Vector v1 = new Vector (1.0, 2.0); Vector v2 = new Vector (3.0,4.0); Sử dụng toán tử so sánh if(a == b) ... 19
  20. Toán tử so sánh Các toán tử so sánh có thể overloading và phải overload theo từng cặp == và != > và < class Vector >= và
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2