BÀI 3 L P TRÌNH H Ậ ƯỚ NG Đ I T Ố ƯỢ NG TRONG VISUAL BASIC NET

Một phần của tài liệu Giáo trình Lập trình windows (VB.net) (Trang 46 - 72)

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 (ộ ớ class­level) chứ không ph i c p đ  th  t c (ả ấ ộ ủ ụ procedure­level) có cùng tên.  M t bi n procedure­level, 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 class­level. 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     class­level   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 class­level tr  khi ta nói rõ r ng ph i dùng bi n c a class­level 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…

Một phần của tài liệu Giáo trình Lập trình windows (VB.net) (Trang 46 - 72)

Tải bản đầy đủ (PDF)

(132 trang)