Giáo trình hướng dẫn xây dựng một trình tự xử lý các toán tử trong phép toán đại số có độ ưu tiên p10 - Pdf 19

Ngôn Ngữ Lập Trình C#
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();
// Lấy dữ liệu từ thuộc tính Hour
int theHour = t.Hour;
Console.WriteLine(“ Retrieved the hour: {0}”, theHour);
theHour++;
t.Hour = theHour;
Console.WriteLine(“Updated the hour: {0}”, theHour);
}
}

 Kết quả:
Time : 2/1/2003 17:55:1
Retrieved the hour: 17
Updated the hour: 18

Để khai báo thuộc tính, đầu tiên là khai báo tên thuộc tính để truy cập, tiếp theo là phần thân
định nghĩa thuộc tính nằm trong cập dấu ({}). Bên trong thân của thuộc tính là khai báo hai
bộ truy cập lấy và thiết lập dữ liệu:
public int Hour
{

Time t = new Time( currentTime );
int theHour = t.Hour;
Khi lệnh thứ hai được thực hiện thì giá trị của thuộc tính sẽ được trả về, tức là bộ truy cập lấy
dữ lịêu get sẽ được thực hiện và kết quả là giá trị của thuộc tính được gán cho biến cục bộ
theHour.
Bộ truy cập thiết lập dữ liệu ( set accessor)
Bộ truy cập này sẽ thiết lập một giá trị mới cho thuộc tính và tương tự như một phương
thức trả về một giá trị void. Khi định nghĩa bộ truy cập thiết lập dữ lịêu chúng ta phải sử dụng
từ khóa value để đại diện cho tham số được truyền vào và được lưu trữ bởi thuộc tính:
set
{
hour = value;
}
Như đã nói trước, do ta đang khai báo thuộc tính lưu trữ dưới dạng biến thành viên nên trong
phần thân của bộ truy cập ta chỉ sử dụng biến thành viên mà thôi. Bộ truy cập thiết lập hoàn
toàn cho phép chúng ta có thể viết giá trị vào trong cơ sở dữ lịêu hay cập nhật bất cứ biến
thành viên nào khác của lớp nếu cần thiết.
Xây Dựng Lớp - Đối Tượng
119
Ngôn Ngữ Lập Trình C#
Khi chúng ta gán một giá trị cho thuộc tính thì bộ truy cập thiết lập dữ liệu set sẽ được tự
động thực hiện và một tham số ngầm định sẽ được tạo ra để lưu giá trị mà ta muốn gán:
theHour++;
t.Hour = theHour;
Lợi ích của hướng tiếp cận này cho phép các thành phần bên ngoài (client) có thể tương tác
với thuộc tính một cách trực tiếp, mà không phải hy sinh việc che dấu dữ lịêu cũng như đặc
tính đóng gói dữ lịêu trong thiết kế hướng đối tượng.
Thuộc tính chỉ đọc
Giả sử chúng ta muốn tạo một phiên bản khác cho lớp Time cung cấp một số giá trị static
để hiển thị ngày và giờ hiện hành. Ví dụ 4.12 minh họa cho cách tiếp cận này.

{
Console.WriteLine(“This year: {0}”,
RightNow.Year.ToString());
RightNow.Year = 2003;
Console.WriteLine(“This year: {0}”,
RightNow.Year.ToString());
}
}

 Kết quả:
This year: 2002
This year: 2003

Đoạn chương trình trên hoạt động tốt, tuy nhiên cho đến khi có một ai đó thay đổi giá trị của
biến thành viên này. Như ta thấy, biến thành Year trên đã được thay đổi đến 2003. Điều này
thực sự không như mong muốn của chúng ta.
Chúng ta muốn đánh dấu các thuộc tính tĩnh này không được thay đổi. Nhưng khai báo hằng
cũng không được vì biến tĩnh không được khởi tạo cho đến khi phương thức khởi dựng static
được thi hành. Do vậy C# cung cấp thêm từ khóa readonly phục vụ chính xác cho mục đich
trên. Với ví dụ trên ta có cách khai báo lại như sau:
public static readonly int Year;
public static readonly int Month;
public static readonly int Date;
public static readonly int Hour;
public static readonly int Minute;
public static readonly int Second;
Khi đó ta phải bỏ lệnh gán biến thành viên Year, vì nếu không sẽ bị báo lỗi:
// RightNow.Year = 2003; // error
Chương trình sau khi biên dịch và thực hiện như mục đích của chúng ta.
Câu hỏi và trả lời

cũng có những khác biệt riêng. Một ví dụ sự khác nhau là C# không cho phép tham số mặc
định bên trong một phương thức. Trong ngôn ngữ C++ thì chúng ta có thể khai báo các
tham số mặc định lúc định nghĩa phương thức và khi gọi phương thức thì có thể không cần
truyền giá trị vào, phương thức sẽ dùng giá trị mặc định. Trong C# thì không được phép. Nói
chung là còn nhiều sự khác nhau nữa, nhưng xin dành cho bạn đọc tự tìm hiểu.
Câu hỏi 7: Phương thức tĩnh có thể truy cập được thành viên nào và không truy cập được
thành viên nào trong một lớp?
Trả lời 7: Phương thức tĩnh chỉ truy cập được các thành viên tĩnh trong một lớp.
Câu hỏi thêm
Câu hỏi 1: Sự khác nhau giữa thành viên được khai báo là public và các thành viên không
được khai báo là public?
Câu hỏi 2: Từ khoá nào được sử dụng trong việc thực thi thuộc tính của lớp?
Câu hỏi 3: Những kiểu dữ liệu nào được trả về từ phương thức?
Câu hỏi 4: Sự khác nhau giữa truyền biến tham chiếu và truyền biến tham trị vào một
phương thức?
Câu hỏi 5: Làm sao truyền tham chiếu với biến kiểu giá trị vào trong một phương thức?
Xây Dựng Lớp - Đối Tượng
122


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status