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 p9 - Pdf 19

Ngôn Ngữ Lập Trình C#
The Minute is now: 35 and 24 seconds
The Minute is now: 36 and 0 seconds

Phương thức SetTime trên đã minh họa việc sử dụng ba kiểu truyền tham số vào một phương
thức. Tham số thứ nhất theHour được truyền vào dạng giá trị, mục đích của tham số này là để
thiết lập giá trị cho biến thành viên Hour và tham số này không được sử dụng để về bất cứ giá
trị nào.
Tham số thứ hai là theMinute được truyền vào phương thức chỉ để nhận giá trị trả về của biến
thành viên Minute, do đó tham số này được khai báo với từ khóa out.
Cuối cùng tham số theSecond được truyền vào với khai báo ref, biến tham số này vừa dùng
để thiết lập giá trị trong phương thức. Nếu theSecond lớn hơn 30 thì giá trị của biến thành
viên Minute tăng thêm một đơn vị và biến thành viên Second được thiết lập về 0. Sau cùng
thì theSecond được gán giá trị của biến thành viên Second và được trả về.
Do hai biến theHour và theSecond được sử dụng trong phương thức SetTime nên phải được
khởi tạo trước khi truyền vào phương thức. Còn với biến theMinute thì không cần thiết vì nó
không được sử dụng trong phương thức mà chỉ nhận giá trị trả về.
Nạp chồng phương thức
Thông thường khi xây dựng các lớp, ta có mong muốn là tạo ra nhiều hàm có cùng tên. Cũng
như hầu hết trong các ví dụ trước thì các lớp điều có nhiều hơn một phương thức khởi dựng.
Như trong lớp Time có các phương thức khởi dựng nhận các tham số khác nhau, như tham số
là đối tượng DateTime, hay tham số có thể được tùy chọn để thiết lập các giá trị của các biến
thành viên thông qua các tham số nguyên. Tóm lại ta có thể xây dựng nhiều các phương thức
cùng tên nhưng nhận các tham số khác nhau. Chức năng này được gọi là nạp chồng phương
thức.
Một ký hiệu (signature) của một phương thức được định nghĩa như tên của phương thức cùng
với danh sách tham số của phương thức. Hai phương thức khác nhau khi ký hiệu của chúng
khác là khác nhau tức là khác nhau khi tên phương thức khác nhau hay danh sách tham số
khác nhau. Danh sách tham số được xem là khác nhau bởi số lượng các tham số hoặc là kiểu
dữ liệu của tham số. Ví dụ đoạn mã sau, phương thức thứ nhất khác phương thức thứ hai do
số lượng tham số khác nhau. Phương thức thứ hai khác phương thức thứ ba do kiểu dữ liệu

public Time(int Year, int Month, int Date, int Hour, int Minute, int Second)
{
this.Year = Year;
this.Month = Month;
this.Date = Date;
this.Hour = Hour;
this.Minute = Minute;
this.Second = Second;
}
// Biến thành viên private
private int Year;
private int Month;
private int Date;
private int Hour;
private int Minute;
private int Second;
}
Xây Dựng Lớp - Đối Tượng
114
Ngôn Ngữ Lập Trình C#
public class Tester
{
static void Main()
{
System.DateTime currentTime = System.DateTime.Now;
Time t1 = new Time( currentTime);
t1.DisplayCurrentTime();
Time t2 = new Time(2002,6,8,18,15,20);
t2.DisplayCurrentTime();
}

Ngôn Ngữ Lập Trình C#
}
public void Test()
{
int x = 5;
int y = Triple(x);
Console.WriteLine(“x: {0} y: {1}”, x, y);
long lx = 10;
long ly = Triple(lx);
Console.WriteLine(“lx: {0} ly:{1}”, lx, ly);
}
static void Main()
{
Tester t = new Tester();
t.Test();
}
}

 Kết quả:
x: 5 y: 15
lx: 10 ly:30

Trong ví dụ này, lớp Tester nạp chồng hai phương thức Triple(), một phương thức nhận tham
số nguyên int, phương thức còn lại nhận tham số là số nguyên long. Kiểu giá trị trả về của hai
phương thức khác nhau, mặc dù điều này không đòi hỏi nhưng rất thích hợp trong trường hợp
này.
Đóng gói dữ liệu với thành phần thuộc tính
Thuộc tính là khái niệm cho phép truy cập trạng thái của lớp thay vì thông qua truy cập
trực tiếp các biến thành viên, nó sẽ đựơc thay thế bằng việc thực thi truy cập thông qua
phương thức của lớp.

hour = dt.Hour;
minute = dt.Minute;
second = dt.Second;
}
public int Hour
{
get
{
return hour;
}
set
{
hour = value;
}
}
// Biến thành viên private
private int year;
private int month;
private int date;
Xây Dựng Lớp - Đối Tượng
117


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