Danh mục

ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA PHẦN 4

Số trang: 30      Loại file: pdf      Dung lượng: 517.27 KB      Lượt xem: 10      Lượt tải: 0    
Hoai.2512

Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Delegate và EventGvhd: Nguyễn Tấn Trần Minh KhangBây giờ thêm phương thức ReverseSort, để sắp các đối tượng theo thứ tự ngược.public void ReverseSort(WhichIsFirst theDelegatedFunc) { if ( theDelegatedFunc(thePair[0], thePair[1]) == comparison.theFirstComesFirst ) { object temp
Nội dung trích xuất từ tài liệu:
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU NGÔN NGỮ C# VÀ VIẾT MỘT ỨNG DỤNG MINH HỌA PHẦN 4Delegate và Event Gvhd: Nguyễn Tấn Trần Minh KhangBây giờ thêm phương thức ReverseSort, để sắp các đối tượng theo thứ tự ngược. public void ReverseSort(WhichIsFirst theDelegatedFunc) { if ( theDelegatedFunc(thePair[0], thePair[1]) == comparison.theFirstComesFirst ) { object temp = thePair[0]; thePair[0] = thePair[1]; thePair[1] = temp; } }Bây giờ chúng ta cần vài đối tượng để sắp xếp. Ta sẽ tạo hai lớp Student và Dog.Gán tên cho Student lúc khởi tạo public class Student { public Student(string name) { this.name = name; }Lớp Student yêu cầu hai phương thức, một override từ hàm ToString() vàmột để đóng gói như phương thức được ủy thác.Student phải override hàm ToString() để phương thức ToString() tronglớp Pair gọi. Hàm chỉ đơn giản trả về tên của sinh viên. public override string ToString() { return name; }Cũng cần phải cài đặt phương thức để Pair.Sort() có thể ủy thác quyền quyếtđịnh thứ tự hai đối tượng. return (String.Compare(s1.name, s2.name) < 0 ? comparison.theFirstComesFirst : comparison.theSecondComesFirst );Hàm String.Compare là phương thức của lớp String trong thư viện .NetFramework. Hàm so sánh hai chuỗi và trả về số nhỏ hơn 0 nếu chuỗi đầu nhỏ hơnvà trả về số lớn hơn 0 nếu ngược lại. Chú ý rằng hàm trả về nếu chuỗi đầu nhỏ hơn, và trả vềtheFirstComesFirsttheSecondComesFirst nếu chuỗi sau nhỏ hơn.Lớp thứ hai là Dog. Các đối tượng Dog sẽ được sắp xếp theo trọng lượng, con nhẹ sẽđứng trước con nặng. Đây là khai báo đầy đủ lớp Dog: public class Dog { public Dog(int weight) { this.weight=weight; } // dogs are ordered by weight 90Delegate và Event Gvhd: Nguyễn Tấn Trần Minh Khang public static comparison WhichDogComesFirst( Object o1, Object o2 ) { Dog d1 = (Dog) o1; Dog d2 = (Dog) o2; return d1.weight > d2.weight ? theSecondComesFirst : theFirstComesFirst; } public override string ToString( ) { return weight.ToString( ); } private int weight; }Chú ý rằng lớp Dog cũng override phương thức ToString() và cài đặt phươngthức tĩnh với nguyên mẫu hàm được khai báo trong delegate. Cũng chú rằng haiphương thức chuẩn bị ủy thác của hai lớp Dog và Student không cần phải trùngtên. Ví dụ 12 - 1 là chương tình hoàn chỉnh. Chương trình này giải thích cách cácphương thức ủy thác được gọi.Ví dụ 12 - 1. Làm việc với delegate using System; namespace Programming_CSharp { public enum comparison { theFirstComesFirst = 1, theSecondComesFirst = 2 } // túi chứa đơn giản chứa 2 đối yựơng public class Pair { // khai báo delegate public delegate comparison WhichIsFirst( object obj1, object obj2 ); // hàm khởi tạo nhận 2 đối tượng // ghi nhận theo đúng trình tự nhận vào public Pair( object firstObject, object secondObject) { thePair[0] = firstObject; thePair[1] = secondObject; } // phương thức sắp thứ tự (tăng) hai đối tượng // theo thứ tự do chính chúng qui định. public void Sort(WhichIsFirst theDelegatedFunc) { if ( theDelegatedFunc(thePair[0],thePair[1]) == comparison.theSecondComesFirst ) { object temp = thePair[0]; thePair[0] = thePair[1]; thePair[1] = temp; } } 91Delegate và Event Gvhd: Nguyễn Tấn Trần Minh Khang // phương thức sắp thứ tự ngược (giảm) các đối tượng // theo thứ tự do chính chúng qui định. public void ReverseSort( WhichIsFirst theDelegatedFunc) { if (theDelegatedFunc(thePair[0],thePair[1]) == comparison.theFirstComesFirst ) { object temp = thePair[0]; thePair[0] = thePair[1]; thePair[1] = temp; } } // kết hợp hai hàm ToString() của hai đối tượng public override string ToString( ) { return thePair[0].ToString( ) + , + thePair[1].ToString( ); } // mảng giữ hai đối tượng private object[] thePair = new object[2]; } public class Dog { public Dog(int weight) { this.weight=weight; } // chó được sắp theo trọng lượng public static comparison WhichDogComesFirst( object o1, ...

Tài liệu được xem nhiều: