BASIC .NET
M c tiêu c a bài:ụ ủ
Hi u đ c đi m l p trình hể ặ ể ậ ướng đ i tố ượng trong VB.Net;
Xây d ng các l p x lý, chuy n t i s li u gi a các form trong VB.Net.ự ớ ử ể ả ố ệ ữ
1. Khái ni m hệ ướng đ i tố ượng
1.1 Đ nh nghĩaị
L p đ i tớ ố ượng (Class) là m t khuân m u ho c m t b n thi t k mà đ nh nghĩaộ ẫ ặ ộ ả ế ế ị các thu c tính và các phộ ương th c c a đ i tứ ủ ố ượng.
Đ i tố ượng (Object) là m t b n sao ch y độ ả ạ ược c a m t class, s d ng b nhủ ộ ử ụ ộ ớ và có h n ch v th i gian.ạ ế ề ờ
1.2 Đ t đi mặ ể
1.2.1 Tính tr u từ ượng
Khi b n mua m t t l nh, b n quan tâm t i kích thạ ộ ủ ạ ạ ớ ước, đ b n và các đ c đi mộ ề ặ ể c a nó, ch không quan tâm t i máy móc c a nó đủ ứ ớ ủ ược làm nh th nào, đây g i làư ế ọ s tr u tự ừ ượng. VB.Net cũng cung c p tính tr u tấ ừ ượng qua class và objects.
M i đ i tỗ ố ượng có các đ c đi m ho c thu c tính g i là thu c tính (property) c aặ ể ặ ộ ọ ộ ủ đ i tố ượng và có th th c hi n hành đ ng g i là phể ự ệ ộ ọ ương th c (method). ứ
VB.Net cho phép b n có kh năng t o các thu c tính và các phạ ả ạ ộ ương th c choứ các đ i tố ượng khi t o các class.ạ
V i m t l p trình viên, dùng tính tr u tớ ộ ậ ừ ượng đ gi m đ ph c t p c a đ iể ả ộ ứ ạ ủ ố tượng, ch hi n ra các thu c tính và các phỉ ệ ộ ương th c c n thi t cho đ i tứ ầ ế ố ượng.
Tính tr u từ ượng cho phép t ng quát hóa m t đ i tổ ộ ố ượng nh m t ki u d li u.ư ộ ể ữ ệ
1.2.2 Tính đóng gói
Được hi u nh vi c n thông tin. Nó n nh ng chi ti t không c n thi t c a đ iể ư ệ ẩ ẩ ữ ế ầ ế ủ ố tượng.
Ví d : Khi b n b t t l nh, ch c năng start b t đ u nh ng b n không th nhìnụ ạ ậ ủ ạ ứ ắ ầ ư ạ ể th y trong t ho t đ ng nh th nào.ấ ủ ạ ộ ư ế
Tính đóng gói n vi c thi hành c a class đ i v i ngẩ ệ ủ ố ớ ườ ử ụi s d ng. Hay nói cách khác, nó ch hi n th các thu c tính và các phỉ ể ị ộ ương th c c a đ i tứ ủ ố ượng.
1.2.3 Tính th a kừ ế
M t class có th th a k t m t class t n t i. L p th a k g i là l p conộ ể ừ ế ừ ộ ồ ạ ớ ừ ế ọ ớ (subclass) và l p đớ ược th a k g i là l p c s (base class).ừ ế ọ ớ ơ ở
T t c các l p trong VB.Net đ u xu t phát t l p Object. L p con th a k cácấ ả ớ ề ấ ừ ớ ớ ừ ế thu c tính và các phộ ương th c t l p c s . Chúng ta cũng có th thêm các thu cứ ừ ớ ơ ở ể ộ tính và phương th c cho l p con. B n cũng có th ch ng các phứ ớ ạ ể ồ ương th c c a l pứ ủ ớ c s . Tính th a k cho phép b n t o phân c p các đ i tơ ở ừ ế ạ ạ ấ ố ượng.
Ví d : phân c p classụ ấ
Hình 22
M c đ nh, t t các các class b n t o trong VB.Net có th đặ ị ấ ạ ạ ể ược th a k . Th a kừ ế ừ ế cho phép b n dùng l i code và t o các đ i tạ ạ ạ ố ượng ph c t p h n t các đ i tứ ạ ơ ừ ố ượng đ n gi n. VB.Net cung c p nhi u t khóa cho phép b n thi hành vi c th a k .ơ ả ấ ề ừ ạ ệ ừ ế
1.2.4 Tính đa hình
Đ ch m t đ i tể ỉ ộ ố ượng t n t i nhi u khuôn d ng khác nhau.ồ ạ ề ạ
Ví d : Khi b n mua t l nh có 2 cách, b n ph i liên h v i ngụ ạ ủ ạ ạ ả ệ ớ ười bán ho c nhàặ s n xu t. Khi b n liên h v i ngả ấ ạ ệ ớ ừơi bán, người bán s đ t hàng và liên h v i côngẽ ặ ệ ớ ty. Khi b n liên h v i công ty, công ty s liên h v i ngạ ệ ớ ẽ ệ ớ ười bán vùng c a b n đở ủ ạ ể s p đ t vi c phân phát t l nh. ắ ặ ệ ủ ạ
Nh v y, ngư ậ ười bán và công ty là hai class khác nhau. M i class đ u có cáchỗ ề ph n h i khác nhau v cùng vi c đ t hàng. Chúng ta có th hi u nh là tính đa hìnhả ồ ề ệ ặ ể ể ư trong l p trình hậ ướng đ i tố ượng.
Tính đa hình cho phép b n t o cùng phạ ạ ương th c nh ng thi hành các công vi cứ ư ệ khác nhau. B n cũng có thay đ i cách th c thi các phạ ổ ự ương th c c a l p c s .ứ ủ ớ ơ ở
2. L p trình hậ ướng đ i tố ượng trong VB.NET
2.1 T o m t classạ ộ
Tính tr u từ ượng được th hi n b ng vi c dùng class, cú pháp t o class:ể ệ ằ ệ ạ [AccessModifier][Keyword] Class _ ClassName [Implements InterfaceName] ' Đ nh nghĩa các thu c tính và phị ộ ương th cứ
End Class
AccessModifier đ nh nghĩa kh năng truy c p c a class, s d ng m t trong cácị ả ậ ủ ử ụ ộ t khóa : ừ Public, Private, Protected, Friend,Protected Friend.
Keyword ch rõ các l p có đỉ ớ ược th a k hay không, t khóa ừ ế ừ Inherit, NotInheritable ho c MustInherit.ặ
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ấ ế ủ ộ Các bướ ạc t o class trong vb.net:
Vào Project \ Add New Item …
Nhập tên Classs
Hình 23 B ng AccessModifierả Access Modifie r Dùng trong Mô tả
Public module, class, structure Được truy c p t cùng project, t projectậ ừ ừ khác ho c t thành ph n khácặ ừ ầ
Private module, class, structure Ch đỉ ược truy c p trong cùng module,ậ class , structure
Protecte d
Classes, class member Được truy c p trong cùng class , ho cậ ặ class được k th aế ừ
Friend module, class, structure Truy c p đậ ược trong cùng project Protecte
d Friend
Classes, class member Truy c p đậ ược trong cùng project Và t các class đừ ược k th aế ừ
2.2 T o class k th aạ ế ừ
2.2.1 Tính th a k (Inherits)ừ ế
Cú pháp: Inherits
Ví d :ụ
Public Class ThisClass Inherits OtherClass
'Property and method declarations 'Other code
End Class
L p ớ ThisClass k th a t l p ế ừ ừ ớ OtherClass
VB.Net cung c p các t khóa khác nhau đ th c hi n vi c th a k .ấ ừ ể ự ệ ệ ừ ế B ng Keyword:ả
Keyword Được dùng v iớ M c đínhụ
Inherits Classes Th a k t t c các thànhừ ế ấ ả viên c a l p th a k (trủ ớ ừ ế ừ
private)
MustInherit Classes Ch rõ l p này ch s d ngỉ ớ ỉ ử ụ nh l p c sư ớ ơ ở
NotInheritable Classes Ch rõ l p này không đỉ ớ ược s d ng nh l p c sử ụ ư ớ ơ ở
Overridable Procedures Ch rõ th t c có th vi tỉ ủ ụ ể ế ch ng trong class đồ ược th aừ k .ế
NotOverridable Procedures Ch rõ th t c không đỉ ủ ụ ược vi t ch ng trong class đế ồ ược th a k .ừ ế
MustOverride Procedures Ch đ nh các th t c ph iỉ ị ủ ụ ả vi t ch ng trong t t c cácế ồ ấ ả l p đớ ược k th aế ừ
Overrides Procedures Ch đ nh m t th t c đỉ ị ộ ủ ụ ược vi t ch ng t l p c sế ồ ừ ớ ơ ở
MyBase Code G i code c a l p c s tọ ủ ớ ơ ở ừ l p đớ ược th a kừ ế
MyClass Procedures G i code c a chính class đóọ ủ
Protected Procedures, fields Ch đ nh các th t c và cácỉ ị ủ ụ trường được truy c p trongậ cùng class và các class được th a kừ ế
Ví d : ụ
Public MustInherit Class Communication Public Sub New()
MsgBox("Constructor of Communication class", MsgBoxStyle.OKOnly)
End Sub
Public MustOverride Function Send() As Boolean End Class
Public Class Email
Inherits Communication Public Sub New()
MyBase.New()
MsgBox("Constructor of Email class", MsgBoxStyle.OKOnly)
End Sub
Overrides Function Send() As Boolean
MsgBox("Send function of Email class", MsgBoxStyle.OKOnly)
'Code specific to the Email class Return True
End Function End Class
Ví d 2: ụ
Public Class Fax
Inherits Communication Public Sub New()
MyBase.New()
MsgBox("Constructor of Fax class", MsgBoxStyle.OKOnly) End Sub
Overrides Function Send() As Boolean
MsgBox("Send function of Fax class", MsgBoxStyle.OKOnly)
'Code specific to the Fax class Return True
End Function End Class
Ví d 3:ụ
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim int1 As Integer
Dim communicate As Communication
int1 = InputBox("Enter 1 to send an e-mail message and 2 to send a faxmessage.")
Select Case (int1) Case "1"
communicate = New Email() communicate.Send()
Case "2"
communicate = New Fax() communicate.Send()
End Select End Sub
Gi i thích:ả
L p ớ Email và Fax k th a t l p c s ế ừ ừ ớ ơ ởCommunication
Tính đa hình th hi n th hi n ch b n có th ch ng nhi u phể ệ ể ệ ở ỗ ạ ể ồ ề ương th c.ứ Có th ghi ch ng phể ồ ương th c c a l p c s , nó có th th c hi n các hànhứ ủ ớ ơ ở ể ự ệ đ ng khác.ộ
2.3 Constructor (Th t c kh i t o)ủ ụ ở ạ
Được dùng đ kh i t o đ i tể ở ạ ố ượng
VB.Net, Th t c Sub New th c hi n nh m t Contructorủ ụ ự ệ ư ộ
Th t c Sub New đủ ụ ược th c hi n khi đ i tự ệ ố ượng c a class đủ ươ ạc t o, b n có thạ ể th c hi n các công vi c c n thi t trự ệ ệ ầ ế ước khi dùng đ i tố ượng.
T t c các class trong VB.Net đ u xu t phát t class Object. Vì v y khi t o m tấ ả ề ấ ừ ậ ạ ộ class, b n c n g i Contructor c a class Object. Đ làm vi c này b n thêm câu l nhạ ầ ọ ủ ể ệ ạ ệ MyBase.New() vào dòng đ u tiên c a Contructor class c a b n.ầ ủ ủ ạ
Public Class MyNewClass Public Sub New() MyBase.New()
'Code for Initializing objects and variables End Sub
'Other class members End Class
Contructor cũng có th mang đ i s :ể ố ố Public class Employer
Public Sub New(Optional ByVal iempcode As Integer = 0) 'code initiation here
End Sub 'code here End Class
Sau đó, chúng ta có th t o các đ i tể ạ ố ượng Employer:
Dim Emp1 As New Employee(1001)
Ho cặ
Dim Emp2 As Employee = New Employee(1001)
2.4 Destructors(Th t c kh i h y)ủ ụ ở ủ
VB.Net cũng cung c p th t c kh i h y Sub Finalize. Th t c kh i h y th cấ ủ ụ ở ủ ủ ụ ở ủ ự hi n ngệ ượ ạ ớc l i v i hàm kh i t o, th t c s t đ ng gi i phóng b nh và các tàiở ạ ủ ụ ẽ ự ộ ả ộ ớ nguyên đã được s d ng c a đ i tử ụ ủ ố ượng. Th t c Sub Finalize có ph m vi làủ ụ ạ Protected.
Ví d :ụ
Protected Overrides Sub Finalize() MyBase.Finalize()
'Add code here End Sub
T khóa ừ Overrides đượ ử ục s d ng b i vì Th t c ở ủ ụ Sub Finalize() k th a t l pế ừ ừ ớ
Object. Th t c ủ ụ Sub Finalize() không được g i khi ch y chọ ạ ương trình, .Net framework s g i th t c này khi đ i tẽ ọ ủ ụ ố ượng k t thúc đ gi i phóng b nh và tàiế ể ả ộ ớ nguyên đ i tố ượng s d ng, .Net Framework s t đ ng thu th p rác, vì v y ngử ụ ẽ ự ộ ậ ậ ười l p trình không c n thêm công vi c gi i phóng b nh và tài nguyên.ậ ầ ệ ả ộ ớ
Ngoài ra .Net Framework cung c p giao di n ấ ệ IDisposable giúp b n qu n lý tàiạ ả nguyên. IDisposable cung c p phấ ương th c ứ Dispose. Không gi ng th t c ố ủ ụ Sub Finalize(), b n có th g i phạ ể ọ ương th c ứ Dispose. B n có th thêm code trongạ ể phương th c Dispose đ gi i phóng tài nguyên. Th t c ứ ể ả ủ ụ Sub Finalize() đ m b o rácả ả được d n d p n u phọ ẹ ế ương th c Dispose không đư ược g i.ọ
2.5 Phương th c (Methods)ứ
Phương th c bao g m th t c (ứ ồ ủ ụ Sub) và hàm (Function) được khai báo trong class.
Th t c không tr v giá tr . Khi th t c đủ ụ ả ề ị ủ ụ ược g i, t t c các câu l nh trongọ ấ ả ệ th t c đủ ụ ược th c hi n cho đ n khi g p các câu l nh ự ệ ế ặ ệ End Sub, Exit Sub ho cặ
Return.
Khai báo phương th c là th t c: ứ ủ ụ
Public Sub <tên th t c>([danh sách tham s ])ủ ụ ố 'các câu l nhệ
End Sub
Hàm thường đượ ử ục s d ng trong các bi u th c ho c phép so sánh. Ngoài vi cể ứ ặ ệ th c hi n các câu l nh nh th t c, hàm còn ph i tr v m t giá tr .ự ệ ệ ư ủ ụ ả ả ề ộ ị
Khai báo phương th c là hàm:ứ
Public Function <tên hàm>([danh sách tham s ]) ố As <ki u d li u>ể ữ ệ 'các câu l nhệ
Return <giá tr >ị End Function
2.6 Trường (Fields) và thu c tính (Properties)ộ
Fields là các bi n đế ược khai báo trong class mà có th truy c p t class khác.ể ậ ừ Ví d :ụ
Public Class MyClass1
'Other declarations and code End Class
Dim MyObject As New MyClass1() MyObject.MyField = 6
Properties đ nh nghĩa các thu c tính c a đ i tị ộ ủ ố ượng, cú pháp t o Property:ạ Public Property NamProperty() As DataType
Get
Return PropertyValue End Get
Set(ByVal value As DataType) PropertyValue = value End Set
End Property
M c đ nh ặ ị Property có c hai thu c tính đ c và ghi. VB.Netả ộ ọ cũng đ nh nghĩaị thu c tính ch đ c ho c ch ghi.ộ ỉ ọ ặ ỉ
+ Thu c tính ch đ c dùng t khóa ộ ỉ ọ ừ ReadOnly
+ Thu c tính ch ghi dùng t khóa ộ ỉ ừ WriteOnly
Các t đ t trừ ặ ướ ừc t khóa AcessModifier.
2.7 Khai báo s ki n (Event)ự ệ
Event là hành đ ng c a ngộ ủ ười dùng tác đ ng vào ng d ng đang th c thi.ộ ứ ụ ự
Ch ng h n khi chúng ta nh n phím b t k trên bàn phím, kh năng đáp ngẳ ạ ấ ấ ỳ ả ứ l i s ki n c a ng d ng ph thu c ngạ ự ệ ủ ứ ụ ụ ộ ườ ậi l p trình. Ngườ ậi l p trình ph i vi tả ế đo n mã l nh, đo n l nh này s th c thi khi s ki n tạ ệ ạ ệ ẽ ự ự ệ ương ng x y ra. Đứ ả ể khai báo s ki n, chúng ta vào m c Properties c a đ i tự ệ ụ ủ ố ượng.
Hình 24
M i m c ng v i các hành đ ng riêng bi t, ch ng h n s ki n khi Click vàoỗ ụ ứ ớ ộ ệ ẳ ạ ự ệ m t button:ộ
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Đặt lệnh ở đây End Sub
2.8 T khóa Me, MyBase, MyClassừ
2.8.1 T khóa Meừ
T khóaừ Me được dùng khi ta mu n nói rõ (explicitly) r ng ta mu n dùng cácố ằ ố phương th c c a chính Class đang ch a code y.ứ ủ ứ ấ
Cũng có trường h p ta ph i dùng t khóa Me đ nói ta mu n dùng bi n c pợ ả ừ ể ố ế ở ấ đ l p (ộ ớ classlevel) chứ không ph i c p đ th t c (ả ấ ộ ủ ụ procedurelevel) có cùng tên. M t bi n procedurelevel, t c là bi n c c b (local variable) c a m t phộ ế ứ ế ụ ộ ủ ộ ương th c,ứ có cùng tên v i m t bi n classlevel. Ví d :ớ ộ ế ụ
Public Class TheClass
Private strName As String Public Sub DoSomething() Dim strName As String strName = "Quang" End Sub
End Class
đây, bi n
Ở ế strName được đ nh nghĩa classlevel và bên trongị ở Sub DoSomething. Bên trong phương th c y, local variables s đứ ấ ẽ ược dùng vì chúng che đ y các bi n classlevel tr khi ta nói rõ r ng ph i dùng bi n c a classlevel b ngậ ế ừ ằ ả ế ủ ằ cách dùng t khóa Me:ừ
Public Class TheClass
Private strName As String Public Sub DoSomething() Dim strName As String
strName = "Quang" ' thay đổi value của local (shadowed) variable
Me.strName = "Kim" ' thay đổi value của class-level variable
End Sub End Class
2.8.2 T khóa MyBaseừ
T khóa Me r t ti n d ng khi ta mu n dùng các thành viên c a chính Class ch aừ ấ ệ ụ ố ủ ứ code. Tương t nh v y, đôi khi ta mu n dùng phự ư ậ ố ương th c c a BaseClass (cũngứ ủ g i là SuperClass). ọ
T trong m t SubClass, n u mu n g i m t phừ ộ ế ố ọ ộ ương th c c a BaseClass ta dùngứ ủ t khóaừ MyBase nh sau:ư
Public Class ClassCon Inherits ClassCha
Public Overrides Sub ChaoHoi()
MessageBox.Show("Thưa các Bác", "Class Con") MyBase.ChaoHoi()
End Sub End Class
Bây gi n u ta ch y Sub ChaoHoi c a ClassCon ta s có hai thông báo, m t cáiờ ế ạ ủ ẽ ộ t ClassCon theo sau b i m t cái t ClassCha.ừ ở ộ ừ
MyBase ch nói đ n BaseClass tr c ti p, t c là Class cha thôi ch không nói đ nỉ ế ự ế ứ ớ ế Class ông n i. Không có cách nào đ nói đ n h n m t th h .ộ ể ế ơ ộ ế ệ
D u v y, t khóa Mybase có th đầ ậ ừ ể ược dùng cho b t c th gì đã đấ ứ ứ ược khai báo là Public, Friend hay Protected trong ParentClass. Đi u này k luôn c nh ng th màề ể ả ữ ứ ParentClass th a k t các th h trừ ế ừ ế ệ ước trong gia đình, t c là ClassÔngN i,ứ ộ ClassÔngC .v.v..ố
2.8.3 T khóa MyClassừ
Vì lý do virtual method, ta s g p nh ng trẽ ặ ữ ường h p r c r i nh khi code c aợ ắ ố ư ủ ParentClass l i ch y code c a SubClasses.ạ ạ ủ
Khi vi t code c a m t class, t phế ủ ộ ừ ương th c này chúng ta thứ ường g i nh ngọ ữ phương th c khác n m trong cùng class. Thí d nh :ứ ằ ụ ư
Public Class ClassCha Public Sub GapNhau() ChaoHoi()
End Sub
Public Overridable Sub ChaoHoi()
MessageBox.Show("Chào các cháu", "Class Cha") End Sub
End Class
Trong trường h p này,ợ GapNhau g iọ Sub ChaoHoi đ đón ti p. Đ ý là vìể ế ể ChaoHoi được đ nh nghĩa ch ng nên r t có th m t SubClass s th c thi phị ồ ấ ể ộ ẽ ự ương th c ChaoHoi và l n quy n nó. Thí d :ứ ấ ề ụ
Public Class ClassCon Inherits ClassCha
Public Overrides Sub ChaoHoi()
MessageBox.Show("Thưa các Bác", "Class Con") End Sub
Vì đ c tính o (virtual) c a ChaoHoi nên ta tặ ả ủ ưởng ClassCha th c hi n chính thự ệ ủ t c ChaoHoi c a nó nh ng th t ra ra nó l i th c hi n code c a ChaoHoi trongụ ủ ư ậ ạ ự ệ ủ ClassCon. Trong code dưới đây, m t đ i tộ ố ượng ClassCon g i th t c GapNhau c aọ ủ ụ ủ ClassCha:
Private Sub BtnSubClassObject_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSubClassObject.Click
Dim obj As New ClassCon() obj.GapNhau()
End Sub
Trong ClassCha, th t c GapNhau g i ChaoHoi c a chính nó, tuy nhiên th t củ ụ ọ ủ ủ ụ ChaoHoi y b đè b i th t c ChaoHoi trong ClassCon. Do đó, chấ ị ở ủ ụ ương trình s hi nẽ ể th thông báo "ị Th a các Bácư ".
N u ta không mu n nh v y, ta mu n GapNhau th c hi n chính code c aế ố ư ậ ố ự ệ ủ ChaoHoi trong ClassCha thì ph i dùng t khóaả ừ MyClass nh sau:ư
Public Class ClassCha Public Sub GapNhau() MyClass.ChaoHoi() End Sub
Public Overridable Sub ChaoHoi()
MessageBox.Show("Chào các cháu", "Class Cha") End Sub
End Class
2.9 Giao di n (Interface)ệ
Interface là m t phộ ương pháp l p trình giúp phân l p ph n v n hành và ph nậ ậ ầ ậ ầ giao ti p. Nói m t cách đ n gi n, interface là b m t c a m t thành ph n đ "giaoế ộ ơ ả ộ ặ ủ ộ ầ ể ti p" v i các thành ph n khác ngoài. Các thành ph n bên ngoài ch c n bi t thànhế ớ ầ ở ầ ỉ ầ ế ph n này cung c p ch c năng gì, xài ra sao, mà không c n quan tâm là n i b nó thầ ấ ứ ầ ộ ộ ế nào.
Cũng nh cái đ u máy, đ u máy nào cũng có nút Play, nút Stop, ngư ầ ầ ườ ử ụi s d ng không c n bi t là trong m ch đi n nó ch y làm sao. Ngầ ế ở ạ ệ ạ ười ta ch c n bi t là cóỉ ầ ế
nút Play b m thì hát, Stop b m thì im. B nút Play, Stop đó chính là interface mà t tấ ấ ộ ấ c đ u máy đ u cài đ t.ả ầ ề ặ
Ví d :ụ
' Giao diện cho bộ nút bấm Interface IDauMay
Sub PressPlay() Sub PressStop() End Interface
' Đầu máy Sony cài đặt bộ nút bấm Class DauMaySony
Implements IDauMay
Public Sub PressPlay() Implements IDauMay.PressPlay ' lệnh Play
End Sub
Public Sub PressStop() Implements IDauMay.PressStop ' lệnh Stop
End Sub End Class
' Đầu máy Panasonic cài đặt bộ nút bấm Class DauMayPanasonic
Implements IDauMay
Public Sub PressPlay() Implements IDauMay.PressPlay ' lệnh Play
End Sub
Public Sub PressStop() Implements IDauMay.PressStop ' lệnh Stop
End Sub End Class Class Demo
Public Shared Sub Main()
Dim dauMay As IDauMay = New DauMaySony() Test(dauMay)
Shared Sub Test(Dim dauMay As IDauMay) ' Kiểm tra chức năng PressPlay. dauMay.PressPlay()
End Sub End Class
3. Xây d ng các l p x lýự ớ ử
Trong ph n này, chúng ta s tìm hi u v mô hình l p trình 03 t ng/l p (3 layers)ầ ẽ ể ề ậ ầ ớ và cách xây d ng ng d ng trên m i t ng/l p.ự ứ ụ ỗ ầ ớ
3.1 Mô hình đa t ngầ
Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau. Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương, còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không cần biết. Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển trên nền .NET như sau:
3.1.1 Presentation Layer
L p này làm nhi m v giao ti p v i ngớ ệ ụ ế ớ ười dùng cu i đ thu th p d li u vàố ể ậ ữ ệ hi n th k t qu /d li u thông qua các thành ph n trong giao di n ngể ị ế ả ữ ệ ầ ệ ườ ử ụi s d ng. L p này s s d ng các d ch v do l p Business Logic cung c p. Trong .NET thìớ ẽ ử ụ ị ụ ớ ấ b n có th dùngạ ể Windows Forms, ASP.NET hay Mobile Forms đ hi n th c l pể ệ ự ớ này.
Trong l p này có 2 thành ph n chính làớ ầ User Interface Components và User Interface Process Components.
UI Components là nh ng ph n t ch u trách nhi m thu th p và hi n th thôngữ ầ ử ị ệ ậ ể ị tin cho người dùng cu i. Trong ASP.NET thì nh ng thành ph n này có th là cácố ữ ầ ể TextBox, các Button, DataGrid…
UI Process Components: là thành ph n ch u trách nhi m qu n lý các qui trìnhầ ị ệ ả chuy n đ i gi a các UI Components. Ví d ch u trách nhi m qu n lý các màn hìnhể ổ ữ ụ ị ệ ả nh p d li u trong m t lo t các thao tác đ nh trậ ữ ệ ộ ạ ị ước nh các bư ước trong m tộ Wizard…