Phương Thức Thiết Lập Và Phương Thức Phá Hủy

- Class đánh dấu bắt đầu một class

- Classname: tên của một class

- Implements chỉ rõ class thực thi trên giao diện nào.

- InterfaceName miêu tả tên giao diện.Một class có thể thực thi trên một hoặc nhiều giao diện.

- End Class đánh dấu kết thúc khai báo của một class

- Từ khóa để tham khảo khái niệm class trong MSDN là “Class statement”

3.2.2 Đối tượng

Đối tượng là 1 sự thể hiện của lớp. Một lớp có thể có nhiều sự thể hiện khác nhau.

Cú pháp khai báo đối tượng:

Dim variablename As [New] { objectclass | Object }

Ví dụ minh hoạ:


Dim

a

As

new

CHocSinh

Dim

x

As

new

ChocSinh

Dim

y

As

new

CHocSinh

Có thể bạn quan tâm!

Xem toàn bộ 201 trang tài liệu này.

Lập trình cơ sở dữ liệu - CĐ Nghề Công Nghiệp Hà Nội - 8

Trong ví dụ trên ta nói a,x,y là 3 đối tượng thuộc class CHocSinh.

Nói cách khác, trong ví dụ này, lớp CHocSinh có 3 thể hiện.

Chú ý:

- Có thể có nhiều đối tượng cùng thuộc về một lớp.

- Từ khóa để tham khảo khái niệm đối tượng trong MSDN là “object variables, declaring”

3.2.3 Phương thức

Phương thức là chức năng mà đối tượng thuộc về lớp có thể thực hiện. Đó có thể là một thủ tục hoặc một hàm.

3.2.4 Ví dụ về thiết kế lớp

Viết chương trình nhập họ tên, điểm toán, điểm văn của một học sinh.

Tính điểm trung bình và xuất kết quả ra Console.

Đơn thể lớp học sinh:

Public Class CHocSinh Private HoTen As String Private Toan As Integer Private Van As Integer

Private DiemTrungBinh As Double


Public Sub New()

Return End Sub

Public Sub Nhap() Console.Write("Nhap ho ten:") HoTen = Console.ReadLine() Console.Write("Nhap toan:") Toan = Console.ReadLine() Console.Write("Nhap van:") Van = Console.ReadLine()

End Sub

Public Sub XuLy()

DiemTrungBinh = (Toan + Van) / 2 End Sub

Public Sub Xuat()

Console.WriteLine("Ho ten :" & HoTen) Console.WriteLine("Toan :" & Toan) Console.WriteLine("Van:" & Van) Console.WriteLine("Diem Trung Binh:" &

DiemTrungBinh) End Sub

End Class


Đơn thể chính:

Module Module1 Sub Main()

Dim hs As New CHocSinh hs.Nhap()

hs.XuLy()

hs.Xuat() End Sub

End Module


3.3 Phương thức thiết lập và phương thức phá hủy

3.3.1 Phương thức thiết lập

Các phương thức thiết lập của một lớp có nhiệm vụ thiết lập thông tin ban đầu cho các đối tượng thuộc về lớp ngay khi đối tượng được khai báo.

a. Các đặc điểm của phương thức thiết lập

- Phương thức thiết lập của lớp được định nghĩa thông qua toán tử new.

- Không có giá trị trả về.

- Được tự động gọi thực hiện ngay khi đối tượng được khai báo.

- Có thể có nhiều phương thức thiết lập trong một lớp.

- Trong một quá trình sống của đối tượng thì chỉ có 1 lần duy nhất phương thức thiết lập được gọi thực hiện đó là khi đối tượng được khai báo.

- Các phương thức thiết lập của lớp thuộc nhóm các phương thức khởi tạo.

- Từ khóa để tham khảo trong MSDN là “New constructor”. Chú ý:

Khi khai báo một lớp đối tượng trong VB.NETta phải định nghĩa ít nhất một phương thức thiết lập cho lớp đó. Thông thường các lập trình viên chọn là phương thức thiết lập mặc định (không nhận tham số đầu vào). Tuy nhiên, đây không phải là phương thức thiết lập bắt buộc phải định nghĩa.

b. Phân loại phương thức thiết lập

Để đơn giản ta có thể chia các phương thức thiết lập của một lớp thành 3 nhóm như sau:

- Phương thức thiết lập mặc định.

- Phương thức thiết lập sao chép.

- Phương thức thiết lập nhận tham số đầu vào.

Về mặt nguyên tắc có bao nhiêu phương thức khởi tạo thì có bấy nhiêu phương thức thiết lập, phương thức khởi tạo mặc định thì tương ứng với phương thức thiết lập mặc định, phương thức khởi tạo dựa vào 1 đối tượng khác tương ứng 1 phương thức thiết lập sao chép, các phương thức khởi tạo còn lại tương ứng với lại phương thức thiết lập nhận tham số đầu vào.

c. Ứng dụng phương thức thiết lập

Ví dụ: Cần xác định và cài đặt các phương thức thiết lập cho lớp phân số. Lớp phân số có hai thuộc tính tử số và mẫu số.

- Phương thức thiết lập mặc định: tử số được lấy mặc định là 0 và mẫu số được lấy mặc định là 1.

- Phương thức thiết lập khi biết tử số: tử số được gán giá trị tương ứng với giá trị của đối số đầu vào và mẫu số được lấy mặc định là 1.

- Phương thức thiết lập khi biết đầy đủ thông tin: tử số và mẫu số được gán giá trị tương ứng với giá trị của các đối số đầu vào.

- Phương thức thiết lập sao chép: nhận tham số đầu vào là một đối tượng cùng thuộc về lớp phân số và tạo ra một đối tượng phân số mới giống hoàn toàn đối tượng phân số đối số tương ứng.

Chương trình minh họa

ĐƠN THỂ LỚP PHÂN SỐ:

Public Class CphanSo

'Các thuộc tính

Private Tu As Integer Private Mau As Integer

' Phương thức thiết lập mặc định Public Sub New()

Tu = 0

Mau = 1 End Sub

' Phương thức thiết lập khi biết tử số Public Sub New(ByVal t As Integer)

Tu = t Mau = 1

End Sub

' Phương thức thiết lập khi biết đầy đủ thông tin Public Sub New(ByVal t As Integer,

ByVal m As Integer) Tu = t

Mau = m End Sub

' Phương thức thiết lập sao chép Public Sub New(ByRef ps As CPhanSo)

Tu = ps.Tu Mau = ps.Mau

End Sub

Public Sub Nhap() Console.Write("Nhap tu: ") Tu = Console.ReadLine() Console.Write("Nhap mau: ") Mau = Console.ReadLine()

End Sub


Public Sub Xuat() Console.WriteLine(Tu & "/" & Mau)

End Sub End Class


HƯỚNG DẪN SỬ DỤNG CONSTRUCTOR


Module Module1 Sub Main()

Dim a As New CPhanSo

a.Xuat()

Dim b As New CPhanSo(1) b.Xuat()

Dim c As New CPhanSo(1, 2) c.Xuat()

Dim d As New CPhanSo(c) d.Xuat()

End Sub End Module

3.3.2 Phương thức phá hủy

Phương thức phá huỷ có nhiệm vụ thu hồi lại tất cả các tài nguyên đã cấp phát cho đối tượng trong quá trình sống của đối tượng khi đối tượng hết phạm vi hoạt động.

Đặc điểm của phương thức phá hủy

- Phương thức phá hủy của lớp được định nghĩa thông qua toán tử Finalize.

- Không có giá trị trả về.

- Không có tham số đầu vào.

- Được tự động gọi thực hiện khi đối tượng hết phạm vi sử dụng.

- Phương thức phá huỷ thuộc nhóm các phương thức xử lý.

- Có và chỉ có duy nhất một phương thức phá huỷ trong 1 lớp mà thôi.

- Từ khóa để tham khảo trong MSDN là “Finalize destructor”.

Chú ý: Một phương thức phá hủy Finalize không nên gọi exceptions, bởi vì ứng dụng không thể quản lý được và chương trình có thể bị ngắt giữa chừng.

3.4 Thuộc tính - Property

Câu lệnh Propertyđược sử dụng để dùng để gán giá trị cho một thuộc tính, một biến thành phần hoặc lấy giá trị của một thuộc tính, một biến thành phần đã được khai báo trong Module, Class hoặc Structure.

Cú pháp khai báo thuộc tính:

' Khai báo biến lưu giữ giá trị của thuộc tính


Private mthuoctinh As <Kiểu dữ liệu>

[<Từ khoá>] Property Thuoc_tinh() As <Kiểu dữ liệu>


' Truy xuất giá trị của thuộc tính Get

Return mthuoctinh

End Get


' Gán trị cho thuộc tính

Set (ByVal Value As <Kiểu dữ liệu>) mthuoctinh = Value

End Set


End Property

- Một thuộc tính có thể có thủ tục Get (đọc), thủ tục Set (ghi), hoặc cả hai

- Nếu không có các từ khóa chỉ phạm vi Public, Protected, Private, Friend thì thuộc tính (Property) của thủ tục Get và thủ tục Set sẽ mặc định là Public.

- Các từ khóa khai báo trong cú pháp trên bao gồm

* Default:

Khai báo thuộc tính mặc định. Các thuộc tính này phải có tham số và có thể gán và truy xuất không cần chỉ ra tên thuộc tính.

Một thuộc tính chỉ có thể là thuộc tính mặc định nếu thỏa các điều kiện:

Mỗi Class chỉ được có một thuộc tính mặc định, phải kể đến cả các thuộc tính kế thừa.

Thuộc tính mặc định không được là Shared hay Private

Nếu một thuộc tính nạp chồng (Overloaded) là mặc định thì tất cả các thuộc tính cùng tên cũng phải khai báo mặc định.

Thuộc tính mặc định phải có ít nhất một tham số

Cú pháp:

Private mthuoctinh As <Kiểu_DL>

Default Public Property Thuoc_tinh(Index as Integer) As <Kiểu_DL> Get

Return mthuoctinh

End Get

Set

(ByVal Value As <Kiểu dữ

mthuoctinh = Value

liệu>)

End Set

End Property

* ReadOnly

Cho biết thuộc tính chỉ được phép đọc không cho phép gán. Cú pháp:

Private mthuoctinh As <Kiểu dữ liệu>

Public ReadOnly Property Thuoc_tinh() As <Kiểu dữ liệu> Get

Return mthuoctinh End Get

End Property

* WriteOnly

Private mthuoctinh As <Kiểu dữ liệu>

Public WriteOnly Property Thuoctinh() As String Set (ByVal Value As String)

mthuoctinh = Value End Set

End Property

Cho biết thuộc tính chỉ được phép gán không cho phép đọc. Cú pháp:


* Overloads

Cho biết thuộc tính này nạp chồng một hoặc nhiều thuộc tính có cùng tên được định nghĩa trên lớp cơ sở. Danh sách tham số trong thuộc tính này phải khác với danh sách tham số của mỗi thuộc tính nạp chồng khác về số lượng, hoặc về các kiểu dữ liệu hoặc cả hai.

Chúng ta không cần phải dùng từ khóa Overloads khi tạo các thuộc tính nạp chồng trong một lớp. Nhưng nếu đã khai báo cho một thì phải khai báo cho tất cả.

Không được phép sử dụng cả hai từ khóa sau một lượt: Overloads và Shadows trong cùng một thuộc tính.

* Overrides

Cho biết thuộc tính ghi chồng một thuộc tính cùng tên của lớp cơ sở. Số lượng tham số, kiểu dữ liệu của tham số cũng như kiểu giá trị trả về phải khớp với của lớp cơ sở.

* Overridable

Cho biết thuộc tính này được phép ghi chồng trong lớp Con.

* NotOverridable

Cho biết thuộc tính không được phép ghi chồng trong lớp Con. Mặc nhiên, các thuộc tính là không được phép ghi chồng.

* MustOverride

Cho biết thuộc tính không được cài đặt trong lớp và phải được cài đặt ở lớp Con.

* Shadows

Cho biết thuộc tính che lấp một thuộc tính có tên tương tự, hoặc một tập hợp các thuộc tính nạp chồng của lớp cơ sở. Tham số và giá trị trả về không nhất thiết phải như trong thuộc tính bị che. Thuộc tính bị che không còn giá trị trong lớp che nó.

* Shared

Cho biết thuộc tính được chia sẻ - nghĩa là thuộc tính không gắn chặt với một thể hiện nào của lớp nhưng được sử dụng chung giữa các thể hiện của một lớp.

Ví dụ: Sử dụng câu lệnh Property dùng để gán giá trị và lấy giá trị đối với thuộc tính intMaSo trong class CHocSinh.

Khai báo định nghĩa phương thức.

Public Class CHocSinh Private intMaSo As Integer Private strHoTen As String Private dblToan As Double Private dblVan As Double

Private dblTrungBinh As Double Private intMaKhoi As Integer


Property _MaSo() As Integer Get

Return intMaSo End Get


Set(ByVal value As Integer) intMaSo = value

End Set End Property

End Class

Hướng dẫn sử dụng

Module Module1 Sub Main()

Dim hs As New ChocSinh hs._MaSo = 5

Dim a As Integer = hs._MaSo

...

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 27/12/2023