KHÁI NIỆM LỚPNhững thuộc tính và hành động chung của các thực thể được nhóm lại để tạo nên 1 đơn vị duy nhất là lớp.. TẠO MỘT LỚP MỚISử dụng từ khóa Class Class End Class TD: Khai báo
Trang 1Chương V: Lập Trình Hướng Đối
Tượng với VB.NET
•Lớp (Class)
•Đối tượng (Object)
•Thuộc tính (Properties)
•Đa hình (Polymorphism)
•Thừa kế (Inheritance)
•Giao diện (Interface)
Trang 2KHÁI NIỆM LỚP
Những thuộc tính và hành động chung của các thực thể được nhóm lại để tạo nên 1 đơn
vị duy nhất là lớp.
TD: Lớp Con người có các thuộc tính và hành
động sau:
- Tên
- Chiều cao
- Màu tóc
- Nói năng
- Viết
…
Những thuộc tính và hành động chung gọi là
thành viên (member)
Trang 3KHÁI NIỆM ĐỐI TƯỢNG
Một đối tượng là một trường hợp cụ thể của một lớp
TD: Đối tượng 1 con người thực tế của lớp Con người:
- Tên: Đan Tú
- Tuổi: 29
- Trọng lượng: 46 kg
Hành động:
- Đi
- Nói
- Suy nghĩ
Trang 4TẠO MỘT LỚP MỚI
Sử dụng từ khóa Class
Class <Tên lớp>
<Các thành viên của lớp>
End Class
TD: Khai báo lớp Person Class Person
Public Name As String
Public Age As Integer
Public Weight As Single End Class
Trang 5TẠO ĐỐI TƯỢNG TỪ LỚP
Việc tạo 1 đối tượng chính là khai
báo và khởi tạo biến đối tượng từ lớp.
TD: Tạo đối tượng p thuộc lớp
Person
C1:
Dim p As Person
p = New Person()
C2:
Dim p As New Person()
Trang 6PHƯƠNG THỨC XÂY DỰNG( HÀM KHỞI TẠO )
Là phương thức được gọi thực hiện đầu tiên mỗi khi 1
đối tượng của 1 lớp được tạo ra
Trong VB.NET, phương thức xây dựng luôn là Sub New()
TD:
Class Person
Public Name As String
Public Age As Integer
Public Weight As Single
Public Sub New() ‘ Phương thức xây dựng
Name =“”
Age = 0
Weight = 0
End Sub
End Class
Trang 7PHƯƠNG THỨC HỦY
Là phương thức được gọi thực hiện cuối cùng khi đối tượng
bị thu hồi
Phương thức này có nhiệm vụ giải phóng tài nguyên được dùng cho đối tượng
Trong VB.NET, phương thức này phải là Overrides
Sub Finalize()
TD:
Class Person
… Protected Overrides Sub Finalize()
‘ Thu hồi các thuộc tính
Name = “”
End Sub
End Class
Trang 8THUỘC TÍNH (PROPERTIES)
Thuộc tính là những đặc trưng của các đối tượng của 1 lớp Thuộc tính có thể được tạo nhờ:
- Từ khóa Public
- Phương thức Property
VD: Lớp Con người (Person)
Class Person
Public strName As String
Public iAge As Integer
Public iWeight As Integer
End Class
Với cách truy cập Public , thuộc tính có thể được truy xuất không giới hạn
Trang 9Nếu ta muốn hạn chế truy cập, ta có thể sử dụng từ khóa Private (data hiding)
Trong VD trên, ta có thể định nghĩa thuộc tính Name:
Private strName As String
Public Property Name() As String
Set (ByVal value As String)
strName = Value
End Set
Get
Name = strName
End Get
End Property
THUỘC TÍNH (PROPERTIES)
Trang 10Khối Set: gán giá trị cho thuộc tính.
Khối Get: lấy giá trị của thuộc tính
Thuộc tính chỉ đọc (ReadOnly ): khai báo khối Get (không có khối Set) hay có thể khai báo cách tường minh trong khối Get nhờ từ khóa ReadOnly
VD: Thuộc tính tuổi của lớp Con người là chỉ đọc
Private iAge As Integer
Public ReadOnly Property Age() As Integer
Get
Age = iAge
End Get
End Property
THUỘC TÍ NH (PROPERTIES)
Trang 11Thuộc tính chỉ ghi (WriteOnly ): khai báo khối Set (không có khối Get) hay có thể khai báo cách tường minh trong khối Set
nhờ từ khóa WriteOnly
VD: Trọng lượng của lớp Con người là chỉ ghi
Private iAge As Integer
Public WriteOnly Property Weight () As Integer
Set (ByVal value As Integer)
iAge = Value
End Set
End Property
THUỘC TÍ NH (PROPERTIES)
Trang 12ĐA HÌNH (POLY MORPHISM)
Đa hình: Khả năng các phương thức có cùng một tên nhưng các tham số của chúng là khác nhau.
Nạp chồng phương thức (method overload): khai báo nhiều
phương thức có cùng một tên (khác tham số) trong một lớp Khi định nghĩa các phương thức này, ta sử dụng từ khóa
Overloads.
VD: Tạo lớp Điểm trong không gian 2 chiều gồm 2 thuộc tính
là tọa độ X & tọa độ Y.
- 2 phương thức xây dựng: một không có tham số (gán X, Y, là 0), một có tham số (cặp (X1,Y1) có sẵn để gán cho X,Y).
- Phương thức hiển thị tọa độ của điểm lên màn h.nh.
- 2 phương thức tính khoảng cách từ điểm hiện thời đến 1
điểm khác, một không tham số (tinh kc đến gốc tọa độ), một
có tham số là một điểm khác (tính kc đến điểm này).
Trang 13Class Point
Private iX As Integer
Private iY As Integer
Public Property X() As Integer Get
X = iX
End Get
Set(ByVal Value As Integer)
iX = Value
End Set
End Property
Public Property Y() As Integer Get
Y = iY
End Get
Set(ByVal Value As Integer)
iY = Value
End Set
End Property
Trang 14Public Sub New()
Me.X = 0
Me.Y = 0
End Sub
Public Sub New(ByVal X1 As Int eger, ByVal Y1 As Integer) Me.X = X1
Me.Y = Y1
End Sub
Public Sub Display()
WriteLine("({0},{1})", Me.X, Me.Y)
End Sub
Public Overloads Function Distance() As Single
Return Sqrt(Me.X ^ 2 + Me.Y ^ 2)
End Function
Trang 15Public Overloads Function_
Distance(ByVal p As Point) As Single Return Sqrt((Me.X - p.X) ^ 2 + (Me.Y - p.Y) ^ 2)
End Function
End Class ‘ Kết thúc ĐN lớp Point
‘ Hàm main
Sub Main()
Dim p1, p2 As Point
p1 = New Point(2, 2)
p2 = New Point
WriteLine("Toa do p1 la ({0},{1})", p1.X, p1.Y)
WriteLine("Toa do p2 la ({0},{1})", p2.X, p2.Y)
p1.Display()
p2.Display()
Trang 16WriteLine("Khoang cach p1 & p2: {0}", p1.Distance(p2)) WriteLine("Khoang cach p1 & goc _
toa do: {0}", p1.Distance())
ReadLine()
End Sub
Lưu ý:
- Sử dụng không gian tên:
System.Console & System.Math
- Đối với phương thức xây dựng,
để nạp chồng ta không được đặt
từ khóa Overloads
Trang 17THỪA KẾ (INHERITANCE)
Thừa kế là khả năng một lớp (lớp con) thừa hưởng những thuộc tính & các hành động từ 1 lớp đã có (lớp cha).
VB.NET không hỗ trợ đa thừa kế.
Sử dụng từ khóa Inherits khi định nghĩa lớp con.
VD: Thiết kế lớp điểm trong không gian 3 chiều thừa kế từ lớp điểm trong kg 2 chiều.
Class Point3D Inherits Point ' Thừa kế từ lớp Point
Private iZ As Integer
Public Property Z() As Integer
Get
Z = iZ
End Get
Set(ByVal Value As Integer)
iZ = Value
End Set
End Property
End Class
Trang 18THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC
Lớp con có thể ghi đè các phương thức của lớp cha.
Phương thức của lớp cha phải sử dụng từ khóa Overridable , phương
thức của lớp con sử dụng từ khóa Overrides.
Từ khóa MyBase : truy xuất các thuộc tính hay phương thức của lớp cha
từ lớp con.
VD: Lớp điểm trong kg 3 chiều cần ghi đè phương thức hiển thị tọa độ
điểm lên màn hình.
Public Sub New ()
MyBase.New()
Me.Z = 0
End Sub
Public Sub New (ByVal x1 As Integer, ByVal y1 As Integer ,ByVal z1 As Integer) MyBase New(X1, Y1)
Me.Z = z1
End Sub
Public Overrides Sub Display()
WriteLine("Toa do p1 la ({0},{1},{2})", Me.X, Me.Y,Me.Z)
End Sub
Trang 19Sub Main ()
Dim p1, p2 As Point3D
p1 = New Point3D(1, 2, 3)
p1.Display()
p2 = New Point3D
p2.Display()
End Sub
Kết quả chương trình
THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC
Trang 20GIAO DIỆN - INTERFACE
Nếu một lớp cần thể hiện tính đa thừa kế, ta sử dụng giao diện (Interface ) Giao diện có các thuộc tính & các phương thức riêng, tuy
nhiên chúng không có mã lệnh để cài đặt.
Lớp sử dụng giao diện cần phải cài đặt (Implements) các
phương thức đã định nghĩa trong giao diện.
VD:
Public Interface Interface1
Sub A()
Function B(ByVal C As Integer) As Integer
End Interface
Class Tool
Implements Interface1
Public Sub A() Implements Interface1.A
‘Cài đặt A
End Sub
…
End Class