1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình hướng đối tượng: Một số kỹ thuật khác

23 17 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 442,5 KB

Nội dung

Bài giảng Lập trình hướng đối tượng: Một số kỹ thuật khác cung cấp cho người học các kiến thức: Chỉ mục, nạp chồng toán tử, chuyển đổi kiểu. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.

Một số kỹ thuật khác v 2.2 - 11/2017 Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Nội dung Chỉ mục Nạp chồng toán tử Chuyển đổi kiểu Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Chỉ mục Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Chỉ mục • Sử dụng thuộc tính mục public class PeopleCollection { List arrPeople = new List(); public Person this[int index] { get { return arrPeople[index]; } set { arrPeople.Insert(index, value); } } } static void Main() { PeopleCollection myPeople = new PeopleCollection(); //thêm đối tượng với cú pháp mục myPeople[0] = new Person(“An”, 40); myPeople[1] = new Person(“Binh”, 35); //lấy đối tượng sử dụng mục for (int i = 0; i < myPeople.Count; i++) Console.WriteLine(myPeople[i]); } Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Chỉ mục với giá trị chuỗi public class PeopleCollection { private Dictionary dicPeople = new Dictionary(); public Person this[string name] { get { return (Person)dicPeople[name]; } set { dicPeople[name] = value; } } } Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Nạp chồng mục public class PeopleCollection { private Dictionary dicPeople = new Dictionary(); public Person this[string name] { get { return (Person)dicPeople[name]; } set { dicPeople[name] = value; } } } public Person this[int index] { get { return (dicPeople.Values.ToList())[index]; } } Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Những vấn đề khác • Chỉ mục cho đa chiều public class SomeContainer { private int[,] my2DArray = new int[10, 10]; public int this[int row, int column] { } } • Định nghĩa mục giao diện public interface IStringContainer { string this[int index] { get; set; } } Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Nạp chồng toán tử Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Nạp chồng tốn tử • Là khả thực thi toán tử với lớp tự định nghĩa giống với kiểu liệu sở Point p1 = new Point(10, 20); Point p2 = new Point(10, 40); Point p3; Point p1 = new Point(10, 20); Point p2 = new Point(10, 40); Point p3; p3 = p2.add(p1); p3 = p2 + p1; p3 = p2 + 10; • • Là dạng nạp chồng hàm • Là hàm tĩnh có dạng operator@ (trong đó, @ tốn tử nạp chồng) Lưu ý nạp chồng tốn tử • • • • Khơng thay đổi ý nghĩa tốn tử Khơng thay đổi vị trí hay tính kết hợp tốn tử Khơng thay đổi số lượng đối số Khơng tạo tốn tử (ví dụ, **) Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Các tốn tử nạp chồng + - ! false ~ ++ + >> / % == * != < > -& true | p.X && this.Y > p.Y) return 1; if (this.X < p.X && this.Y < p.Y) return -1; else return 0; } else throw new ArgumentException(); } //nạp chồng toán tử so sánh sử dụng hàm CompareTo public static bool operator < (Point p1, Point p2) { return (p1.CompareTo(p2) < 0); } Khi nạp chồng toán tử lớn hơn, phải nạp chồng toán } public static bool operator > (Point p1, Point p2) tử nhỏ { Tương tự cho lớn return (p1.CompareTo(p2) > 0); } nhỏ Lê Viết Mẫn - lvman@hce.edu.vn 15 Một số kỹ thuật khác Chuyển đổi kiểu Lê Viết Mẫn - lvman@hce.edu.vn 16 Một số kỹ thuật khác Nhắc lại - Chuyển đổi kiểu • Chuyển đổi kiểu số học • Chuyển đổi kiểu kiểu sở kiểu phái sinh int a = 123; long b = a; // ngầm định int c = (int)b; // tường minh class Base {} class Derived : Base {} class Program { static void Main() { Base myBase; myBase = new Derived(); // ngầm định Derived myDerived = (Derived)myBase; // tường minh } • } Cấu tử chuyển đổi kiểu class Rectangle { } class Square { public Square (Rectangle r) { this.Size = r.Width; } } Lê Viết Mẫn - lvman@hce.edu.vn 17 Một số kỹ thuật khác Lớp Rectangle public class Rectangle { public int Width { get; set; } public int Height { get; set; } public Rectangle(int w, int h) { Width = w; Height = h; } public Rectangle() {} public void Draw () { Console.WriteLine(“Rectangle”); } } public override string ToString () { return string.Format(“[Width={0}; Height={1}]”, Width, Height); } Lê Viết Mẫn - lvman@hce.edu.vn 18 Một số kỹ thuật khác Lớp Square public class Square { public int Size { get; set; } public Square(int s) { Size = s; } public Square () {} public void Draw () { Console.WriteLine(“Square”); } } public override string ToString () { return string.Format(“[Size={0}]”, Size); } Lê Viết Mẫn - lvman@hce.edu.vn 19 Một số kỹ thuật khác Từ khoá explicit public class Square { public static explicit operator Square (Rectangle r) { Square s = new Square(); s.Size = r.Height; return s; } } static void DrawSquare(Square sq) { Console.WriteLine(sq); sq.Draw(); } static void Main() { Rectangle rect = new Rectangle (10,20); DrawSquare((Square)rect); } Lê Viết Mẫn - lvman@hce.edu.vn 20 Một số kỹ thuật khác Từ khoá explicit public class Square { public static explicit operator Square (int size) { Square s = new Square(); s.Size = size; return s; } public static explicit operator int (Square s) { return s.Size; } } static void Main() { Square sq2 = (Square)90; int size = (int)sq2; } Lê Viết Mẫn - lvman@hce.edu.vn 21 Một số kỹ thuật khác Từ khoá implicit public class Rectangle { public static implicit operator Rectangle (Square s) { Rectangle r = new Rectangle(); r.Width = s.Size; r.Height = s.Size; return r; } } static void Main() { Square sq3 = new Square(); sq3.Size = 83; Rectangle rect = sq3; } Lê Viết Mẫn - lvman@hce.edu.vn 22 Một số kỹ thuật khác Cảm ơn ý Câu hỏi ? Lê Viết Mẫn - lvman@hce.edu.vn 23 Một số kỹ thuật khác ... Viết Mẫn - lvman@hce.edu.vn 15 Một số kỹ thuật khác Chuyển đổi kiểu Lê Viết Mẫn - lvman@hce.edu.vn 16 Một số kỹ thuật khác Nhắc lại - Chuyển đổi kiểu • Chuyển đổi kiểu số học • Chuyển đổi kiểu kiểu... index] { get; set; } } Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Nạp chồng toán tử Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Nạp chồng tốn tử • Là khả thực thi toán tử với lớp... chồng toán tử Chuyển đổi kiểu Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Chỉ mục Lê Viết Mẫn - lvman@hce.edu.vn Một số kỹ thuật khác Chỉ mục • Sử dụng thuộc tính mục public class PeopleCollection

Ngày đăng: 14/10/2020, 22:32