Buổi 5: Kỹ thuật lập trình trong VB.NET OOP: Object Orientation Programming Hàm Function [Public, Protected, Private] Function _ [Danh sách các tham số] AS _ [ Handles eventlist ] [
Trang 1Windows Form programming with VB.Net 2005.
Buổi 5: Kỹ thuật lập trình trong VB.NET
(OOP: Object Orientation Programming)
Hàm (Function)
[Public, Protected, Private] Function <Tên hàm> _
[(Danh sách các tham số)] AS <ReturnType> _ [ Handles
eventlist ]
[Khai báo biến thuộc tầm vực của hàm]
[Các câu lệnh …]
[Exit Fucntion]
Return <ReturnType>
End Fucntion
- Một Hàmlà dãy các câu lệnh để thực thi một công
việc, một chức năng đặc thù nào đó
- Hàm được gọi để thi hành thôngqua tên thủ tục
- Hàmthường có giá trị trả về
Trang 2Windows Form programming with VB.Net 2005.
If a > b Then
Else
End If
End Function
Dim C as Integer
C = Max(a,b)
VD: Hàm
Thủ tục (Procedure)
[Public, Protected, Private] Sub <Tên Thủ tục> _
[(Danh sách các tham số)] [Handles eventlist]
[Khai báo biến thuộc tầm vực của thủ tục]
[Các câu lệnh …]
[Exit Sub]
End Sub
- Chức năng của thủ tục giống như Hàm, nhưng
Thủ tục không có giá trị trả về
Trang 3Windows Form programming with VB.Net 2005.
Private Sub bntAn_Click ( , ) Handles bntAn.Click
AnGioiTinh()
End Sub
Private Sub AnGioiTinh()
Dim rdb As RadioButton
For Each Ctrl As Control In GroupBox1.Controls
On Error Resume Next ' Có lỗi bỏ qua
rdb = CType (Ctrl , RadioButton) ' chuyển kiểu
rdb.Visible = False
Next
GroupBox1.Text = "Sở thích:“
End Sub
VD: Thủ tục
Trang 4Windows Form programming with VB.Net 2005.
Public Function GetCommand() As OleDbCommand
Dim cn As New OleDbConnection
Dim cmd As New OleDbCommand
Dim strConnection As String =
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\QLNhanSu.mdb"
cn.ConnectionString = strConnection
cn.Open()
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = “sp_NhanVien”
cmd.Connection = cn
return cmd
End Function
VD: Hàm trả về 1 đối tượng Command
VD: DataAdapter & Fill cho DataTable
public function GetDataTable() as DataTable
Dim da As New OleDbDataAdapter()
Dim tb As New DataTable()
Try ‘ Cmd đối tượng đã được khai báo & khởi tạ
da.SelectCommand = Cmd ‘ = GetCommand()
da.Fill(tb)
Return tb
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try
End Function
Trang 5Windows Form programming with VB.Net 2005.
VD: DataAdapter & Fill cho DataSet
Public Function GetDataSet() as DataSet
Dim da As New OleDbDataAdapter()
Dim ds As New DataSet()
Try ‘ Cmd đối tượng đã được khai báo & khởi tạ
da.SelectCommand = Cmd ‘ = GetCommand()
da.Fill(ds) ‘da.Fill(ds, “TableName”)
Return ds
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try
End Function
Public Function GetDataReader ( ByVal StoreProceureName As
String , Optional ByVal arrParams() As String = Nothing,
Optional ByVal arrValues() As Object = Nothing ) As
OleDbDataReader
Dim rd As OleDbDataReader
Dim cmd As New OleDbCommand
cmd = me.GetCommand()
If Not (arrParams Is Nothing ) Then
For nIndex As Integer = 0 To (arrParams.Length - 1)
cmd Parameters AddWithValue (arrParams(nIndex),
arrValues(nIndex)) Next
End If
rd = cmd.ExecuteReader()
Return rd ‘cmd.ExecuteReader()
End Function
Trang 6Windows Form programming with VB.Net 2005.
Lập trình hướng đối tượng là gì?
¾Trong thế giới thực, đối tượng là thực thể tồn tại như
con người, xe, máy tính, v.v…
¾Trong ngôn ngữ lập trình, đối tượng có thể là màn hình,
mouse, các control v.v…
¾Lập trình hướng đối tượng là kiểu lập trình nhằm vào
sự tương tác giữa các đối tượng
¾Một đối tượng có các đặc điểm sau:
- Những thuộc tính: xác định các đặc điểm của đối tượng
- Những phương thức:x/định các chức năng của đối tượng
- Các sự kiện phát sinh khi thay đổi thuộc tính, thực hiện
một phương thức hay bị đối tượng khác tác động vào
Lập trình hướng đối tượng
¾ Abstraction: Tính trừu tượng
¾ Encapsulation: Tính bao bọc (đóng gói)
¾ Inheritance: Tính kế thừa
¾ Polymorphism: Tính đa hình
Đặc điểm trong Lập trình hướng đối tượng:
Trang 7Windows Form programming with VB.Net 2005.
Trong thế giới thực tồn tại các đối tượng có cùng các
thuộc tính cần quản lý như: Nhân viên, sinh viên, hàng
hóa… MaSV HoTen NgaySinh
Ví dụ: A001 Lê Văn A 1/1/1979
A002 TrầnVăn B 1/6/1979
Từ những đối tượng có các thuộc tính giống nhau, ta trừu
tượng hóa thành một lớp đối tượng
Ví dụ: từ hai đối tượng trên ta trừu tượng hóa thành lớp
(class) SinhVien có các thuộc tính:
MaSV
HoTen
NgaySinh
Abstraction: Tính trừu tượng
¾ Có thể gọi các phương thức của các đối
tượng để thực hiện mà không quan tâm bên
trong các phương thức này có các lệnh xử
lý nào
¾ Chỉ quan tâm đến dữ liệu đầu vào và kết
quả trả về của phương thức
¾ Khi ta chỉnh sửa lại các xử lý trong
phương thức mà không chỉnh sửa dữ liệu
vào và kết quả trả về thì không cần chỉnh
sửa ở nơi gọi
Encapsulation: Tính bao bọc
Trang 8Windows Form programming with VB.Net 2005.
¾ Là khả năng cho phép ta xây dựng một lớp
mới dựa trên các định nghĩa của một lớp đã có
¾ Lớp đã có gọi là lớp Cha, lớp mới phát sinh
gọi là lớp Con
¾ Lớp con kế thừa tất cả các thành phần của lớp
Cha, có thể mở rộng chức năng các thành
phần kế thừa cũng như bổ sung thêm các
thành phần mới.
Inheritance: Tính kế thừa
Kết nối trễ:
¾Ta có thể gián giá trị một đối tượng của lớp cha
bằng một đối tượng thuộc lớp con
¾Khi gọi một phương thức của đối tượng thuộc lớp
cha, tùy thời điểm gọi, đối tượng này được gán là
đối tượng thuộc lớp con nào thì phương thức của
lớp con đó được gọi.
Nạp chồng: Là khả năng một lớp có nhiều phương
thức cùng tên nhưng khác các tham số về số lượng,
kiểu dữ liệu
Ghi đè: là khả năng lớp con định nghĩa lại các
phương thức của lớp cha
Trang 9Windows Form programming with VB.Net 2005.
Tạo mới một lớp: menu Project -> Add Class ->
Nhập tên lớp (Hoặc chuột phải tên Project ….)
Public Class <tên Class>
…
End Class
Ta có thể tự định nghĩa một lớp với cú pháp:
<Từ khóa của lớp> Class <Tên lớp>
<Các khai báo>
End Class
Lập trình hướng đối tượng trong VB.NET
[các Namspace của VB hay của người sử dụng ]
[Namespace { name | name.name } ]
Public Class <tên Class>
[ Inherits <tên Class cha> ]
[ Khai báo các biến hay thuộc tính ]
[ Các phương thức (hàm hay thủ tục) ]
End Class
[End Namespace]
Cấu trúc của một Class
Trang 10Windows Form programming with VB.Net 2005.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.VisualBasic
Namespace CSLD.KetNoi
Public Class DataLayers
Private Con As SqlConnection
Private strConnect As String
Public Sub New()
strConnect = "Data Source=(local);Initial Catalog=Menu;
Persist Security Info=True;User ID=sa;Password=sa"
Public Function GetConnection() As SqlConnection
Dim objCon As SqlConnection objCon = New SqlConnection(strConnect) Return objCon
End Function ‘ kết húc phương thức lấy kết nối
Ví dụ class CSDL:
¾.NetFrameWork cung cấp hơn 5000 đối tượng, để dễ
dàng quan lý và sử dụng, các đối tượng này được đưa vào
các nhóm tùy theo loại, các nhóm này có một tên gọi là
Namespase
¾Để sử dụng các đối tượng thuộc namespase nào ta
phải tham chiếu đến bằng lệnh:
Ví dụ: Imports System.Data.OleDb
¾Chú ý
• Mỗi lệnh Imports chỉ được sử dụng với một không
gian tên.
• Mỗi Module có thể có nhiều dòng Imports
¾Các lệnh Imports phải được đặt trước tất cả các khai
báo, kể cả lệnh khai báo Module hoặc Class
Imports không gian tên (Namespace) :
Trang 11Windows Form programming with VB.Net 2005.
Public: Các thực thể khai báo với từ khóa nàycó
thể sử dụng ở mọi nơi.
Private: Cho biết thực thể khai báo chỉ được sử
dụng trong phạm vi khai báo.
Protected: Cho biết thực thể khai báo chỉ được sử
dụng trong phạmvi Class và Sub Class (lớp và lớp con).
Friend: Cho biết th t th ực thể khai báochỉ đượcsử
dụng trong phạm vi Project Nếu không
có từ khóa, Class mặcn hiên là khai báo Friend.
Từ khóa của lớp:
Public Class <tên Class con>
Inherits <tên Class cha>
'Khai báo các phương thức cho lớp đối tượng
[<từ khóa>] Sub <tên thủ tục> ([<các tham số>])
…
End Sub
' Hoặc
[<từ khóa>] Function <tên hàm> ([<các tham số>]) _
as <Kiểu trả về>
…
Return <giá trị>
End Function
End Class
Khai báo một lớp con kế thừa từ lớp cha :
Trang 12Windows Form programming with VB.Net 2005.
Public: Phương thức được gọi ở mọi nơi.
Private: P.thức chỉ được gọi trong phạm vi của Class.
Protected: P thức chỉ được gọi trong phạm vi của
Class đó và các class con (Subclass) Friend: P thức chỉ được gọi trong phạm vi của Project.
Overloads: chỉ khai báo cho phương thức thuộc lớp
con, Cho biết P thức Nạp chồng một hay nhiều P
thức có cùng tên với phương thức trong lớp cha
Overrides: Cho biết P thức ghi đè một phương thức
cùng tên của lớp cha 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 cha.
Từ khóa của phương thức:
9Là thủ tục được khai báo với từ khóa Public và luôn
có tên New
cú pháp:
Public Sub New [(Các tham số)]
<các xử lý>
End Sub
9Trong một lớp ta có thể có nhiều phương thức khởi
tạo với các tham số khác nhau
Khai báo thuộc tính:
9Thuộc tính là thành phần lưu giữ các tính chất, đặc
điểm của đối tượng.
9Ứng với mỗi thuộc tính, chúng ta cần khai báo một
biến Private tương ứng để lưu giữ giá trị.
Phương thức khởi tạo (Constractor):
Trang 13Windows Form programming with VB.Net 2005.
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ử v mẫu
Public Sub New(ByVal t As Integer, ByVal m As Integer)
Tu = t
Mau = m
End Sub
End Class
' Khai báo biến lưu giữ giá trị của thuộc tính
Private mthuoctinh As <Kiểudữ liệu>
Property Thuoctinh() As <Kiểudữ liệu>
' Truy xuất giá trị của thuộc tính tức truy xuất đến
giá trị của biến
Get
Return mthuoctinh End Get
' Gán trị cho thuộc tính tức gán trị cho biến
Set (ByVal Value As <Kiểudữ liệu>)
mthuoctinh = Value End Set
End Property
Truy cập thuộc tính ta dùng cấu trúc Get - Set:
Trang 14Windows Form programming with VB.Net 2005.
Public Class CHocSinh
Private intMaSo As Integer
Private strHoTen As String
Private bGioiTinh As Boolean
Property MaSo() As Integer
Get
Return intMaSo End Get
Set(ByVal MaSV As Integer)
intMaSo = MaSV End Set
End Property
Vd: khai báo thuộc tính
Property HoTen() As Integer
Get
Return strHoTen End Get
Set(ByVal sHoTen As Integer)
strHoTen = sHoTen End Set
End Property
Trang 15Windows Form programming with VB.Net 2005.
Property GioiTinh() As Integer
Get
Return bGioiTinh End Get
Set(ByVal Phai As Boolaen)
bGioiTinh = Phai End Set
End Property
End Class ' Kết thúc class CHocSinh
Me: được dùng khi chúng ta chỉ rõ muốn dùng các
thành phần của chính thể hiện Class nơi viết lệnh.
Ví dụ:
Public Class Con_nguoi
Private ten as String
Public Sub Lam_viec()
Dim ten as String
' biến cụcbộ của Sub được sử dụng
ten = "Hùng"
' biến cấp Class được dùng
Me.ten = "Hùng "
End Sub
End Class
Từ khóa Me
Trang 16Windows Form programming with VB.Net 2005.
Mybase: được dùng trong Class kế thừa, khi muốn dùng các
phương thức của Class Cha (class cơ sở); VD:
Public Class Xe
Public sub Chay()
<Các lệnh>
End Sub
End class ' hết Class Xe
Public Class Xe_Hoi
Inherits Xe
Public sub Chay()
<Các lệnh chạy của Xe hơi>
MyBase.Chay() ' chạy của class Xe
End Sub
End Class ' hết Class Xe_Hoi
Từ khóa Mybase
MyClass: được dùng để gọi các thể hiện hay phương thức
của Class hiện hành; VD:
Class TaiKhoan
Sub New()
MyClass.RutTien(100)
End Sub
Overridable Sub RutTien(ByVal amount As Integer)
[Các xử lý rút tiền]
End Sub
End Class
Từ khóa MyClass
Trang 17Windows Form programming with VB.Net 2005.
Try
[ tryStatements ]
[ Exit Try ]
[ Catch [ exception [ As type ] ] [ When expression]
[ Exit Try ] ]
[ Catch ]
[ Finally
End Try
Bắt lỗi trong lập trình:
Try
[Các câu lệnh cần bắt lỗi]
Catch ex As [ Exception | ApplicationException ]
[Các thông báo lỗi ]
End Try
Public Function GetConnection() As SqlConnection
Try
Dim objCon As New SqlConnection(strConnect)
Return objCon
Catch ex As Exception
MsgBox (ex.Message)
End Try
End Function
Bắt lỗi đơn giản:
Trang 18Windows Form programming with VB.Net 2005.
1 On Error Resume Next
Khi có lỗi bỏ CT qua dòng lỗi và sang dòng mới
2 On Error GoTo LabelName
Khi có lỗi chương trình sẽ bỏ qua tất cả các dòng
sau dòng lệnh trên và nhảy tới nhãn ( LabelName: )
đã được chỉ định sau đó VD:
Public Function PhanSo(ByVal tu As Integer, ByVal
mau As Integer) As Double
On Error GoTo Loi
Return a / b
Loi:
MsgBox(Err.Description)
End Function
Bắt lỗi bằng On Error: (có 2 cách)
- Hầu hết các control trong VB.Net đều có các thuộc
tính (Properties) dùng cho việc thiết kết giao diện,
nhưng chúng ta có thể thực hiện chúng trong lúc
chạy chương trình (viết code thay vì design)
- Chúng ta phải nắm bắt đặc điểm, chức năng của
từng thuộc tính (Properties) của một control cụ thể
như: ComboBox, TextBox, Button, ListBox,
MenuStrip, ToolStrip….
- Tương tự mỗi một Control đều có các sự kiện
(Event) chung và riêng biệt theo từng control của nó
(Đề nghị xem lại lý thuyết từ bài giảng buổi 2, 3, và 4 và
xem các thuộc tính chung và riêng của từng control)
Lập trình thuộc tính (Property) và tự kiện (Eevnt)
Trang 19Windows Form programming with VB.Net 2005.
Cách thức bắt Sự kiện: (tại giao diện code)
Chứa các đối tượng
cần viết sự kiện Chứa các sự cần viết code kiện
Chọn đối tượng trước, sau đó chọn sự kiện (Đối tượng ở
đây thường là các Name của các Control)
Cách thức lập trình Sự kiện:
Sau khi bắt sự kiện của các control thường xuất hiện
các tham số mặc định là Sender và e và Hanhle
System.Object , ByVal e As System.EventArgs )
<Các lệnh xữ lý>
End Sub
¾Sender: là tham số truyền chính đối tượng của
control mà ta cần xử lý vào trong phần viết code
¾e: là tham số truyền chính đối sự kiện (event ) của
control mà ta cần viết vào
¾Theo sau từ Hanhle là chính sự kiện (event) cần xử lý