Đóng gói dữ liệu với property

Một phần của tài liệu Phát triển ứng dụng cơ sở dữ liệu với c và net framework (Trang 32 - 34)

Chương 4.L ớp và đối tượng

4.7. Đóng gói dữ liệu với property

Trong lập trình C++, thông thường để đọc hoặc gán giá trị cho biến thành viên, lập trình viên thường viết hai hàm get và set tương ứng cho biến. C# cung cấp khai báo hàm chung gọi là property cho hàm get và set.

Ví dụ: trong lớp DocGia có biến thành viên m_sHoTen, cài đặt Property cho biến thành viên này như sau:

public string HoTen {

get { return m_sHoTen; } set { m_sHoTen = value; }

}

Property có một vài khác biệt so với hàm thành viên. Thứ nhất khai báo Property không có tham số và cặp ngoặc. Trong thân property dùng hai từ khóa get/set tương ứng cho hai hành động lấy/thiết đặt giá trị thuộc tính. Trong thân set, có biến mặc định là value, biến này sẽ mang kiểu đã được khai báo property, như

trong trường hợp trên là string. Biến value sẽ nhận giá trị được gán cho Property. Cách sử dụng một Property như sau:

1 // trong thân của một hàm

2 DocGia dgMoi = new DocGia(); 3

4 // sử dung property set

5 dgMoi.HoTen = "Nguyễn Văn A"; 6

7 // sử dụng property get

8 string ten = dgMoi.HoTen; //ten có giá trị "Nguyễn Văn A"

Ở dòng mã thứ 5, khối set trong property HoTen sẽ được gọi, biến value sẽ có giá trị của biến nằm sau phép gán (trong trường hợp này là "Nguyễn Van A").

Nếu trong thân hàm không cài đặt hàm set, property sẽ có tính chỉ đọc, phép gán sẽ bị cấm. Ngược lại nếu không cài đặt hàm get, property sẽ có tính chỉ ghi.

Ví dụ 4-11 Minh họa dùng một property

public class Time {

// public accessor methods

public void DisplayCurrentTime( ) {

System.Console.WriteLine("Time\t: {0}/{1}/{2} {3}:{4}:{5}", month, date, year, hour, minute, second);

} // constructors public Time(System.DateTime dt) { year = dt.Year; month = dt.Month; date = dt.Day; hour = dt.Hour; minute = dt.Minute; second = dt.Second; } // tạo một đặc tính

public int Hour {

set { hour = value; } }

// các biến thành viên kiểu private private int year;

private int month; private int date; private int hour; private int minute; private int second; }

public class Tester {

static void Main( ) {

System.DateTime currentTime = System.DateTime.Now; Time t = new Time(currentTime);

t.DisplayCurrentTime( ); int theHour = t.Hour;

System.Console.WriteLine("\nRetrieved the hour: {0}\n", theHour); theHour++;

t.Hour = theHour;

System.Console.WriteLine("Updated the hour: {0}\n", theHour); }

}

Một phần của tài liệu Phát triển ứng dụng cơ sở dữ liệu với c và net framework (Trang 32 - 34)

Tải bản đầy đủ (PDF)

(192 trang)