1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Toán tin: Lập trình hướng đối tượng trong VB.Net và mô hình MVC

136 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình Hướng Đối Tượng Trong VB.Net Và Mô Hình MVC
Người hướng dẫn ThS. Lê Minh Trung
Trường học Trường Đại Học Sư Phạm TP.HCM
Chuyên ngành Toán - Tin
Thể loại graduation project
Năm xuất bản 2007
Thành phố TP. HCM
Định dạng
Số trang 136
Dung lượng 93,55 MB

Nội dung

Các đổi tương 14 minh dụ instance của một class cỏ thê truy cập vả thực hiệnvác thành viên dữ liệu,phương thức.... Cae thành viên đữ liệu & phương thức của một Class có hgat vi Class và

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHAM TP.HCM

KHOA TOÁN - TIN

Trang 2

LỜI CẢM ƠN

-Em xin chan thành cam ơn đền tat ca các thay cô trong Khoa Toán Tin đã tận tinh chi bao truyền đạt những kinh nghiệm kiến thức cho chúng em dé chủng em cỏ

được những cơ sơ kiến thức can thiết hoàn thành đỏ an nay.

Thực hiện đồ án tốt nghiệp là một dip rất tốt dé chúng em có thẻ rèn luyện ki năng

chuyên món, biết tông hợp các kiến thức đã học trên mọi phương điện Rèn luyện

tính tự chu sang tạo va tinh than trách nhiệm trong công việc Phát huy tinh doc

lập sang tạo và tự nghiên cứu đẻ tạo ra một sản phẩm một báo cáo trình bảy hoản

chinh.

Dé có được thành qua tốt đẹp cho hôm nay và mai sao, em xin chan thành cam ơn

den tắt ca thay có đã tan tinh giảng day hướng dẫn em trong suốt 4 năm học.

-Xin chan thành cam on thay Lê Minh Trung đã tận tinh hướng dẫn, tạo điều kiện

cho em trong suốt thời gian thực hiện đồ án tốt nghiệp Nhờ thay ma em da có

được những kiện thức quý báo vẻ lập trình hướng đối tượng trong vb.net và mô

Trang 3

1.2 Khai bao lop VB.net

1.3 Bai Toán: Can thiết kế 1 lớp tượng trưng | thời điểm GIHTESesnsnnneaessssno 7

1.3] Xác định các tập thực thẻ can thiết! KỄ:s=:z=cnocptreitsgrtessoiiiEtigieriobaseia 7 1.3.2 Xác định các thuộc tinh (can thiết, chung) của các thực thẻ -. : 7

1.3.7 Khởi tạo một đối tượng từ một cÌass cseoeseroserosersoseee 10

14 Thực thi kiểu đữ liệu trừu tương Time với Class 2-5255525555s2 HH

1.5 OARS ESS ing iniitiinannenc nnn heen rE ANNIE ONT NN NMUNCA EN tinneNeNy II 1.6 Constructor (Phương thức khởi tạo ) c1 12

1.6.1 Quá tải constructor (Overload conStructOr ) - o5 sc<<s se sec se ceezxecee 12 1.6.2 NVIIDŨttrdnrrtinegttrrGTGTTGGENIAGGERINIGKINHIGtRRGiGSiSiGNIdiSXISGWGSIERIS0MSI4M1703/0018S§ 12

lÿ dct intretha Clast.:/(PTDDENY::()Lssssecrnsicpnnntoittoiiuiietteuiiitoiiiriiittiatiasrdie 19

li (GAMPOSHION CHSS:aornsrnn-ftntrãadunntiff6Yryntểfasqurnitadwwaaaa 20

1.8.1 HIỜI MEGA |, sassnsansiarennsassamnsasconssannpunpannspssasehiaensaspannédensasasddiiaennse eausiiiioiasaiiaaiaaaaiea 20

1.8.2 VÀ VỤ tri noingiioioiintuiá00012685551160101086686088150338/518551460783810818631854888311662129118X701125616E83 20

1.9 Tham chiều Me (Me Referrence ) - sư g1 2110110111 111112522 26

CIO GafDREEiGGIIEE(Dfsvurauơaruansdiitirdiieutiniiirtitrtittritrirddtietifsrrtgffitrtr0St'G1 26 I.II Shared Member(Thanh viên được chia sẻ } - HH HH Y1 xài 26

AD TH THHHH TH HH HH TH HH HH HH Hưng cry 27

I.II.3 _ Tính chat Shared Member(Thanh viên được chia sẻ ) s55 562522522 29

[.I? Const và ReadOnly Data) MemiĐer : ccccieeeiieiicooociicciecieeooaecea 29

I 12.1 GOT EG cacnsaninirititirtitttcpttt1001010001100 0011371100 0EEEEEEEREGEENOSYNNISTrrrrờ 29

BS VD uuasenisintniatiinaiiijiaeBiiniiraiiiiitGi555311ã812ã s6 E4 š853004514558111ý15194815Y9148484ã201178128 29

I.12.3 Kha biệt giữa Const && ReadOnly à Seo BI

1.13 Reuse ability && RAD (Object Browser) -Ặ Soi

aN INBMESDNDEiuoarerrrrrrerorritrotirtititiiiiiiirttiiradtafiiitiitiit@ 0 Giãn ESISE 32

A Ec) - GiớitiiÐUtcsasasecesreerrrcrrrrroetrrotitGtidhtlfifltyStiEnalasgfiogfavfositiie 32

Trang 4

Pts?) Uu điểm của Inhcritance? ¬— Ề ẽ Re)

IIÁ3 — Nhược điểm của Inheritance, . ccccccececesecessecssecseessssesssessssssananansnsesscesenee BO

PIS4 — Một xố khái niệm cua Inheritance se cố tense teens 34 11SS IsA Relationship Has A Relationship 44

WS) Abaca fh ie na emesis nan meen an ecsnennonesnennasnesnanmannsnnapssnsesasnnzansonsonssoesinnn 35 1.18.7 Cách khai bảo kế thừa trongVB.NEI ciieeeeouer để

We | a 36

1.15.9 — Protected và Friend (Access MODEL) che 36

\.1§.10— Một số điều nói thêm cccccccssssseesoossssveesssssenenvansenns woeeeonnneeenennsseeenneeesenunnseeee 37 1.06) TỈNH ĐA HỈNHIPDIYHGNMISÌbscresreeeeeeerrrnrersnsereeasertinnaaniansssrtirinn 38

1161 Khải niệm Tinh đa hình (Polymorphism) ¬ XÀ8886/2A83268ã8255458ãÿ4585ã35385ã8853538535E 38

11063 tinh đa hình trong cuộc song đời thực tín ốc À9

116.3 Lớp trưu tượng & Lớp cụ the Abstract & Concrete eC lass J123sa3808858332385353342437 40

1164 Vidụ

Llos Vee khóa MustOveride

1166 — Nottheritable Class(NotOveridable Method) eer |

1.167 Giao etic intertace) TẢ" "ẢAẢ"' 4l

lia9 Kiến chết wanna “sẽ san X4ã51584453X558 5 VE8522G2812858695655555858359a2s8553ã2a88sả 42

1.16.10 [)clegate STL HeLa aL TL 42

Lod QỰ KiED(EVERbeoieoiaioeeaatissesieiiaeneten1014452104193221185288032858ã88ã28ãã515/888ã58188ã85888aS8ã58 43

Chuong 2 MO HINH MVC VA DO AN MINH HOA

\ NMG TRAD A osc sccccersesscscensseaseszzassesesceseascassescesvesssassaossosnactssxeescasseresucsesszecceonssvesseessessceses + 44

2 Dé An Minh Họa =—— oacaiT TaN eanaeeSeua RTT INRTTNTTaRaAaNRaRRRTOU NATTA TTENeaTe 46

a 0D) 46

2.1.1 IMUGIGONNI gguanttrtritroirtrettrtritrtttattttrrritiiitottrititii110171091800711100900000099111317V08808W0/f5 46

ze TỐC! SƯ IKICHÍ!oi:z:01503655682575135382g675381353155582740532855583558A333553858ã388845388538458155 855858 TH: 46

131 Public Event LineCountChanged As LineCountl ventHandler đag28s3g3£ 46

3.1.3.3 Public Event LongestLineCharCountC hanged As [.ongestl.ineEventl landler

281 Mục dich GSìït4Y428ã651ã851504830410010863si1vìvfÄiT2Eftfffigt0YNititd18461801111032(10043021308: 72

22 TRUQGiỦfN :‹.-s¿:::s:2::sp:c22255023525503525223535050285530593538513958583635857583039503157514058008588/188 72

1x»

Trang 5

2143 CAC phương thỨC cong sen kieceeesecerreeisIAA020001089 73

234 lớp Styled Textarea cccscccsesssssseeesnereeeeseseeeeseeeseseeeeneneneenananansessncunarrareeeseseseenceneases 74

341 NET HD Socncceeenirrccnorntseeestaigx6i00604029230606031888000030080008105008868005)528380108 14

DULY Củc sự KIỆN:azcoicsra-iniiriiiraraifgigaiatsiiitldilifsiitifsùïsurStðtissisiNeiäfSsãss3isgssãse 14

2.4.1.2 ColumnChanged csseseeneennnnennnhheinsessneeeeeerersEreesesdeerrse 74

2.4.1.3 LimeChanged csccssssssseseerssssnssessececscssssecesssscenesssssansssnsnanunresrensnetesssees 74

2.4.2 Các thành viên dit liệu: cà Share 75

24.3 Các phương WUC cccccsscsesssscssessssstevsessserseecscessesssssenssssssssssnsecssssnseesssnsstecsnane 86

Chương 3 SỬ DUNG DIEU KHIEN STYLEDTEXTAREA TRONG

CAC DO AN KHAC

3.1 Biển dịch thành StyleđTextA rea.dÏÌ chien 116

3 Nhiúng điều KHiến vào Unig đÙP:c::occcccaccccn in tnngi ion nnnngnt0118888s 8 88886 119

8) Các bước nhúng StyledTextArea vảo ứng dụng c:ccccccc sec 1193.3 Thiet kể giao diện va VIỆT CODE ceccccsssssssssovssssssssssevsssssvsssesovsvessevesvvesseessssessenseseessesee 122

31 Lhiết kế form chính: Ung dung muinh họa (seo 122

3.3.1.1 Các chức năng trong menu ÍiÍe ¿- cịc cccccercererrrerrrrrrererrrrier 1223.3.1.2 Cac chức năng trong menu Window - càng 125

3.3.2 Thiết kế form con: Nhung điều khiển vào ứng dụng -. -:-55- 128

S321 Các chức nang trong menu Pile oo cece cee eeeenese nee eseeneeseesessasenneeens 128

3.3.2.2 Các chức năng trong menu Eit ccsscsssssesssecsssssssessessersssersessssesesesereres lầu

1.3.3.3 Các chức năng trong menu Formai co cenineieeree 133

DM a0 aw Ani ¢ cae xueh

nh đz\ dạn 40 Ty +i eG, hy de’

Xiếu Ghar mac WAG tis caw tC let bey Pu

avs Chay thu clude

Trang 6

LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG

TRONG VB.NET VÀ MÔ HÌNH MVC

Chương 1 LAP TRÌNH HƯỚNG BOI TƯỢNG TRONG VB.NET

© Class thường được mô ta như là một mô hình hoặc thiết kế mô hình qua đó Object

(doi tượng) có thẻ được tạo.

® OOP thương dùng class để bao bọc (che dau chỉ tiết encapsulate) của instance

variables (dữ liệu) và method (phương thức).

1.1.2 Ví dụ

® Giá sử tạ can “cải dat” các hình chữ nhật trong một chương trình Ta sẽ phản tích

đẻ tìm ra những thuộc tinh và hành động chung nhất mà một hình chữ nhật noi

chung phải có Ta sẽ “bao bọc” "che giấu chỉ tiết” thuộc tính và hành động nay

trong một lớp Class Rectangle.

Trang 7

sub SetHeight(value As Double)

sub Set Width(value As Double)

‘unction Area() As Double

unction Perimetter() As Double Phương thức |

sub MoveTo(X As Integer.Y As Integer)

sub Draw(L.ineColor As Integer.BackColor As Integer)

sub IncementSize( wBias As Double,hBias As Double)

1.1.3 Khởi tạo đối tượng

Sau khi khai bao mot Class chúng ta có thé khởi tao (instantiate) các doi tuong

tử nó.

» Các đôi tượng có thẻ truy cập và sử dụng các thành viên (dữ liệu phương thức)

có access modifier là Public

lập hyp các thành viên dữ liệu và phương thức Public gọi là “giao diện” cua

một lớp.

1.1.4 Tóm lại

„ Class là khuôn mô hình tạo nên đối tương.

„ Class là sự bao bọc cả dit liệu (instance variable, data member,propcrty ) lần

hanh động (method.function member behavior )

Có thẻ khởi tạo các đối tương that sự từ các Class đã được khai báo.

Trang 8

Các đổi tương 14 minh dụ (instance) của một class cỏ thê truy cập vả thực hiện

vác thành viên (dữ liệu,phương thức ) có access modifier public,

Class ¿jŠ Objects

Giồng như

Khuan làm bánh Nhung cải bánh that su

Hình 1.1

1.2 Khai báo lớp VB.net

+ [Private|Protected|Public] Class <Tén Class>

Biến thé hiện

+ [Private|Protected|Public] mtenbien As <kiêu dữ liệu>

Thuộc tính (Property)

+ [Private|Protected|Publie] Property tenThuoctinh() As < kiểu dữ liệu

“Truy xuất giá trị của thuộc tính (truy xuất đến giá trị của biến)

Trang 9

End Get

* End Property

Phuong thirc (Method)

* |Private|Protected|Public] Sub <tén thu tục >({<ds các tham sd>})

+ End Sub

* Hoặc

+ |Private|Protected|Public] Function <tén hàm>{{<ds các tham sỏ>|)

Return <gia tri>

* End Function

* End Class

I.3 Bài Toán: Can thiết kế I lop tượng trưng | thời điểm CTime

1.3.1 Xác định các tập thực thé cần thiết kế.

Mot thời điểm cụ thé (1:30:20).

1.3.2 Xác định các thuộc tính (cần thiết, chung) của các thực thể.

1:30:33 >Hour=1.Minute=30,Second=23

13:45:16=>>Hour= 13.Minute=45.Second= 16

22:0:1 S®Hour=22,Minute=0.Second= I

Trang 10

1.3.3 Case study (Thiết kế Class CTime )

‘Khai báo các instance variables

'0-23

‘0-59

Trừu tượng hóa là quá trình triw tượng những cái chung nhét |

Hinh 1.2

1.3.4 Xác định constructor(phương thức xây đựng) và các phương

thức khác liên quan tới thiết lập giá trị cho instance variables.

Môi Class có một hoặc một vải constructor:

La phương thức xây dựng được gọi một cách tự động khi một đối

tương được khởi tạo từ Class

Dùng dé khởi tao (instantiate) đối tượng cho class.

Thiết lập giá trị ban đầu cho các instance variables.

Public Sub New() ——

Hinh 1.3

Trang 11

1.3.5 Xác định các hành động có thé thực thi với thực thể,đối tượng

Public Class CTimev1

ÔÔÖÔÖÔÖÔÒÔÖÒÔÖÔÖÒÔÖÔÖÔÖÐÖÐSŠ5SŠ` `

Public Function toStandardTi ime() As Sưing

Public Function toUniversalTime() As String

Hinh 1.4

1.3.6 Sur dụng lớp trong các đồ án khác

Biên dịch lớp thành tập tin thư viện dll

» Làm thẻ nao sử dụng class trong các ứng dụng?

Server Client

Hinh 1.5

Trang 12

1.3.7 Khởi tạo một đối tượng từ một class

- Cú pháp:

Dim anObject As New ClassName( gument )

~Vi du:

Dim aTime As CTimev1 aTime | id

“Tham chiêu aTime đưa tham chiếu tới

đôi tương nào

aTime=New CTimev1() #fm |

‘bay giờ aTime them chiều vào một đói

tương thật sự trong bộ nhớ Heap

Trang 13

1.4 Thực thi kiều dữ liệu trừu tương Time với Class

Sự tách biệt minh bạch giữa “phía sử dụng client” và "phía cung cấp server” làm

cho chương trình:

Mềm dẻo, linh hoat.dé thay đôi hơn.

Việc tai sử dụng các class cho phép RAD (Rapid Application

Development) làm tăng khả năng sản xuất (productivity).

Hệ thông chương trình là sự tương tac của các Object độc lập họat đồng

ding dé lập trình, bao trì và gỡ rồi

Sự tách biệt minh bạch giữa “phía sử dụng client” và “phía cung cap server” làm

cho chương trinh:

Mềm déo,linh hoat.dé thay đổi hơn.

Việc tai sử dụng các class cho phép RAD (Rapid Application

Development) làm tăng khả năng sản xuất (productivity).

1.5 Hoat vi Class

Cae thành viên (đữ liệu & phương thức) của một Class có hgat vi Class và có

the được truy cập bởi các thành viên khác của Class.

Cúc thành viên Public có thẻ được tham chiều từ các đổi tương của Class.

Cúc biến của các method cỏ họat vi cục bộ trong method (block scope).

Truy cập các thành viên

Nỗ lực từ một đối tương khởi tạo từ một Class truy cập vào thành viên Private

của Class sẽ gây ra một lỗi lập trình.

VD: Trong Client sử dụng Class Time

Dim aTime As Time = New Time()

aTime.mHour=7 “gay ra lỗi

II

Trang 14

Tom tat Access Modifier

Access | Thành viên khác của class Di

Modifier

‘6 thê truy cập Không thẻ truy cập

1.6 Constructor (Phương thức khởi tạo )

1.6.1

Chúng ta ding Constructor đẻ khởi tao giá trị cho các instance variable.

Constructor tự động được gọi (invoke) khi có một đối tượng được khởi tạo

(instantiate) từ Class.

Nếu không có constructor nao trong khai bao của Class thi VB.NET sé dùng

constructor mặc định (defalut constructor) va khởi tạo gia trị ngằm định cho các

instance variable.

ons fi constructor (Overload constructor )

Irone một Class có thé có nhiều constructor (overloaded constructors) cung

cap nhiều cách dé khơi tao đối tượng.

Các constructor có cùng tên New chỉ khác nhau danh sách các tham sé

Các constructor là Sub và không trả vẻ gì cả.

lay thuộc vào danh sách đổi số cung cấp lúc khởi tạo đối tượng VB.NET sẽ

Trang 15

4 Inherits Object

3 “declare Integers for hour minute and second

6 Private milour As Integer ‘0 - 23 ~

7 Private mMinute As Integer ' 0 - 59

8 Private mSecond As Integer ' 0 - 59

9 ‘ constructor initializes each variable to zero and

If

11 Public Sub New()

12 Set Vime()

13 End Sub‘ New

ensures that each CTime2 object starts in consistent state

14.° CTime2 constructor: hour supplied:

1Š,” minute and second default to 0

16 Public Sub New(By Val hourValue As Integer)

17 Set Vime(hourValue) Contructor |

18 End Sub ' New

19." C Lime? constructor: hour and minute supplied:

20." second defaulted to 0

21 Public Sub New(ByVal hourValue As Integer.

———?' Contructor 2

22 ByVal minuteValue As Integer)

23 Setlime(hourValue minute Value)

24 End Sub ' New

Trang 16

35.' CTime2 constructor: hour, minute and second supplied

26 Public Sub New(By Val hourValue As Integer _

27 ByVal minuteValue As Integer, ByVal secondValue As Integer)

28 SetTime(hourValue, minute Value, secondValuc)

29 End Sub ' New —— CC Camwetw 3 —

3U." CTime2 constructor: another CTime2 object supplied

31 Public Sub New(By Val time Value As CTime2)

32 SetTime(time Value.mHour, time Value.mMinute, timeValue.mSecond)

33 End Sub ' New

Copy Contructor

34." set new time value using universal time;

35." perform validity checks on data;

36.’ set invalid values to zero

37 Public Sub SetTime(Optional By Val hourValue As Integer = 0

38 Optional By Val minute Value As Integer - 0, _

39 Optional By Val secondValue As Integer = 0)

40.' perform validity checks on hour, then set hour

41.1f (hourValue >= 0 AndAlso hourValue < 24) Then

mblour = hourValue

Else

milour = 0 42.End If

43.' perform validity checks on minute, then set minute

14

Trang 17

44 1f (minute Value >= 0 AndAlso minuteValue < 60) Then

mMinute = minute Value

Else

mMinute = 0

45 End If

46." perform validity checks on second, then set second

47 1f (secondValue >= 0 AndAlso second Value < 60) Then

mSccond = second Value

48 Else mSecond = 0

49 End If

50 End Sub ' SctTime

31.” convert String to universal-time format

$2 Public Function ToUniversalString() As String

53 Return String.Format("{0}:{1:D2}:{2:D2}", _

mHour, mMinute, mSecond)

34 End Function ' ToUniversalString

35.° convert to String in standard-time format

%6 Public Function ToStandardString() As String

$7 Dim suffix As String = " PM"

$8 Dim format As String = "{0}:{1:D2}:{2:D2}"

59 Dim standardHour As Integer

60." determine whether time is AM or PM

61.1f mllour < 12 Then suffix = " AM"

15

Trang 18

62.End If

6Ầ.` convert from universal-time format to standard-time format

64.1f(mHour 12 OrElse mllour = 0) Then

standard} four = 126S Else suandardHour = mHour Mod 12

66 End If

67 Return String.Format(format standardHour, mMinute.

mSecond) & suffix

68 End Function ' ToStandardString

69 End Class ' CTime2

\ "Fig 8.5: TimeTest2.vb

Lộ ‘Demonstrates overloading constructors.

3 Imports System Windows.Forms

4 Module modTimeTest2

Š, Sub Main()

6 ‘use overloaded constructors

7 Dim time] As New CTime2()

8 Dim time2 As New CTime2(2)

9 Dim time} As New CTime2(21 34)

10 Dim ume4 As New CTime2(12, 25, 42)

11 Dim times As New CTime2(27, 74, 99)

(2 Dim time6é As New CTime2(time4) ' use timed as initial value L3 Const SPACING As Integer = 13' spacing between output text

16

Trang 19

14." invoke timel methods

15 Dim output As String = “Constructed with: " & vbCri.f& _

16." tmel: all arguments defaulted" & vbCrLf & _

17 Space(SPACING) & time ToUniversalString() & _

18 vbCrlt & Space(SPACING) & time! ToStandardString()

19." invoke time2 methods

20 output &= vbCrLf & _

21," time2: hour specified; minute and second defaulted" &

22 vbCri.f & Space(SPACING) & _

23 time2 VoUniversalString() & vbCrLf & Space(SPACING) & _

24 time2 FoStandardString()

25.‘ invoke time3 methods

26 output &= vbCrLf & _

37.” time3: hour and minute specified; second defaulted” & _

28 vhCrl.f & Space(SPACING) & time3.ToUniversalString() & _

29 vbCri.f & Space(SPACING) & time3.ToStandardString()

30." invoke time4 methods

3] output &= vbCrLfF & _

32." time4: hour, minute and second specified” & _

33 vbCrl.f & Space(SPACING) & time4 ToUniversalString() & _

34 vbCri.f & Space(SPACING) & time4.ToStandardString()

35." invoke times methods

%6 output &= vbCrLf &

-37." timeS: hour, minute and second specified" &

38 vbCrLf & Space(SPACING) & timeS.ToUniversalString() & |

39 vbCri.f & Space(SPACING) & timeS ToStandardString()

40." invoke time6 methods

17

Trang 20

41 output &= vbCrLf &

42." time6: Time2 object timed specified" & vbCrLf &

43 Space(SPACING) & time6 ToUniversalString() &

44 vbCrLf & Space(SPACING) & time6.ToStandardString()

4Š MessugeBox.Show(output,

46 "Demonstrating Overloaded Constructors”)

47 End Sub ' Main

48 End Module ' modTimeTest2

Demonstrating Overloaded Constructors xi

Constructed with:

time1: all arguments defaulted

0:00:0012:00:00 AM

time2: hour specified; minute and second defaulted

2:00:002:00:00 AM

time3: hour and minute specified; second defaulted

time6: Time2 object time4 specified

12:25:4212:25:42 PM

Lo

18

Trang 21

Ding overloaded Constructors

‘use overloaded constructors

Dim time! As New CTime2()

Dim time2 As New CTime2(2)

Dim time3 As New CTime2(21, 34)

Dim time4 As New CTime2(12 25, 42)

Dim times As New CTime2(27 74 99)

Dim timc6 As New CTime2(time4)

‘use timed as initial value

Minh họa overloaded constructors

- Tao ra một Console appication Test

- Thêm vào ứng dung Test class CTimev2 với Š constructors có chữ ki khác nhau.

> 0 tham số được gọi

> | tham sé được gọi

> 2 tham số được gọi

> 3 tham số được gọi

> 3 tham số được gọi

> Copy

- Viết code trong module của Test sử dung class trên.

Nhược điểm của instance variables

Access Modifier của các instance variables nên là Private.Không thé truy cập &

pan giả trị cho các instance variables của một đối tượng một cách trực tiếp.

‹ Chúng ta ao ước có thé dùng cú pháp anObject.instance_ variable dé truy cập &&

gảán giá tri

17 Thuộc tính của Class (Property )

VB.Net khắc phục điều nay bằng khái niệm Property(thuộc tính).

Một property gắn với một instance variable va cung cấp:

Get accessor cho phép truy cập giá trị

Set accessor cho phép thiết lập gia trị.

Trang 22

anObj.Hour=x = mHour=x

M=anObj.Hour M=mlHour

1.8 Composition Class

1.8.1 Giới Thiệu

[rong một so trường hợp thiết kế class sẽ rõ rang hơn.tiện hơn nếu class có

thành viên dữ liệu tham chiếu tới đối tượng thuộc lớp khác.

Cac lớp như vậy được gọi là composition class.

5 Private mlirstName As String

6 Private ml.astName As String

7 Private mBirthDate As CDay ' member object reference

8 Private mHireDate As CDay ' member object reference

9 "Chmplovee constructor

10 Public Sub New(By Val firstNameValue As String.

ByVal lastNameValue As String ByVal birthMonthValue As Integer.

ByVal birthDay Value As Integer, ByVal birthYcarValue As Integer.

ByVal hireMonthValue As Integer, ByVal hirelay Value As Integer.

ByVal hireYearValue As Integer)

20

Trang 23

II mfirstName - firstNameValue

I3 ml astName - lasUNameValue

13.‘ reate CDay instance for employee birthday

14 mBirthDate = New CDay(birthMonthValue birthDayValue, birthYearValue)

15.‘ create CDay instance for employee hire date

I6 mblireDate - New CDay(hireMonthValue hireDay Value hire YearValue)

1? End Sub ' New

I# ` return employee information as standard-format String

19 Public Function ToStandardString() As String

30 Return mLastName & "," & mFirstName & " Hired:

"-& mHireDate.ToStandardString() "-& " Birthday: ""-&mBirthDate ToStandardString()

21 End Function’ ToStandardString

22 End Class ' Cemployce

21

Trang 24

6 Private mMonth As Integer ' 1-12

7 Private mDay As Integer ' 1-31 based on month

8 Private mYear As Integer ' any year

9 * constructor confirms proper value for month, then calls

10," method CheckDay to confirm proper value for day

I1 Public Sub New(ByVal monthValuc As Integer.

12 ByVal day Value As Integer, By Val ycarValuc As Integer)

13." ensure month value is valid

14 H (monthValue > 0 AndAlso monthValue <= 12) Then

15 mMonth = monthValue

Else

16.mMonth = |

17." inform user of error

18 Dim crrorMessage As String = "Month invalid Set to month 1."

tw tv

Trang 25

I9 MessageBox.Show(errorMessage, "", MessapeBoxButons.OK,_

MessageBoxlcon.Error)

20 End If

21.mYear = yearValue

22 mDay = CheckDay(dayValue) ' validate day

23 End Sub ' New

24." confirm proper day value based on month and year

25 Private Function CheckDay(By Val testDay Value As Integer) As Integer

26 Dim daysPerMonth() As Integer = {0 31 28 31 30 31,30 31 31, 30 31

30 31)

27.1f (testDay Value > 0 AndAlso

-testDayValue <= daysPerMonth(mMonth)) Then

28 Return testDayValue

29 End If

30.' check for leap year in February

31.1f (mMonth = 2 AndAlso testDayValue = 29 AndAlso _

mYcar Mod 400 = 0 OrElse mYecar Mod 4 = 0 AndAlso

-mYcar Mod 100 <> 0) Then

32 Return testDayValue

Else

Trang 26

33.' inform user of error

34 Dim errorMessage As String

“day " & testDayValue & “invalid Set to day |."

35 MessageBox .Show(crrorMessage ""

MessageBoxButtons.OK, MessageBoxlcon.Error)

36 Return | ' leave object in consistent state

37 End If

38 End Function ' CheckDay

39." create string containing month/day/year format

40 Public Function ToStandardString() As String

41 Return mMonth & "/" & mDay & "/" & mYear

42, End Function ` ToStandardString

43 End Class ' CDay

Trang 27

"big 8.10: CompositionTest.vb

1 ' Demonstrate an object with member object reference.

2 Imports System Windows.Forms

"Testing Class Employee")

7 End Sub ' Main

8 End Module’ modCompositionTest

Testing Class Employee

Jones, Bob Hired: 3/12/1988 Birthday: 7/24/1949

Lt)

Trang 28

1.9 Tham chiếu Me (Me Referrence )

Trong một class cỏ thê dùng tham chiếu Me dé tham chiếu tat cả các thành

viên (Public/Private) của nó.

Tham chiều Me tham chiều chính class (chính xác hơn đổi tượng khởi tạo từ

class)

1.10 Garbage Collector

Constructor New( ) dùng dé khởi tao va cap phat bộ nhớ cho các dối tượng.

Khi một đổi tượng trong bộ nhớ không còn được tham chiếu đến nữa thi sao??

Chúng ta có phải viết mã giải phóng bộ nhớ và tài nguyên như trong C&&C | +.

VB.Net thực hiện giải phóng bộ nhớ.tải nguyên một cách tự dong bằng kĩ thuật

Garbage Collector

Cứ định ki Garbage Collector sẽ được kích họat gom lại và giải phóng doi

tượng khỏng còn dùng nữa

Dựa hoàn tòan và GC không giải là giải pháp tốt Một số tài nguyên như

Network Connection,Stream, nên được giải phóng chu động tường minh (tìm

cho mọi đối tượng.

Cách tốt nhất là cai đặt thành viên mCount là một thành viên được chia sẻ bơi

mọi doi tượng (shared member) Thanh viên mCount sẽ được cập nhật giá trị

mỗi khi cỏ doi tượng được khởi tao hay hủy.

Trang 29

1.11.2 VíDụ

1 ' Fig 8.17: CEmployee3.vb

2 'Class Œ:mployee3 uses Shared variable.

3 Public Class CEmployee3

4 InheritsObject

5 Private nl irstName As String

6 Privaten].astName As String

7 ‘numbe: of objects in memory

Chia sẽ bởi tat ca các

8 PrivateShared mCount As Integer HH SOE

đôi tượng của Class

9 *Cl:mnlsyee3 constructor

10 Public Sub New(ByVal firstNameValue As String,

ByVal lastNameValue As String)

11 mFirstName = firstNameValue

12 mLastName = lastNameValue

13 mCoun: | * increment shared count of employees

14 Console.WriteLine (“Employee object constructor: " & mFirstName &

"" & mi astName)

15 End Sub ' New

16.' finalizer method decrements Shared count of employces

17 Protected Overrides Sub Finalize()

Trang 30

18 mCount -= |” decrement mCount, resulting in one fewer object

19 Console WriteLine ("Employee object finalizer: " & mFirstName &

""& mLastName & ": count =" & mCount)

20 End Sub ' Finalize

21 'return first name

22 Public ReadOnly Property FirstName() As String

Get

23 Return mFirstName

24 End Get

25, End Property ` FirstName

26.' return last name

27 Public ReadOnly Property LastName() As String

Trang 31

31, Return mCount

34 End Get

35 End Property ‘ Count

36 End Class ' CI'mployee3

1.11.3 Tinh chat Shared Member(Thanh viên được chia sẻ )

- Thudng ding Shared Data Member cho những thành viên chung cho mọi dai

tượng của Class (mCount)

lat ca các đối tượng chia sẻ chung một shared member.

Public Shared member có thẻ được truy cập thậm chi khi chưa có doi tượng nao

cua Class được khởi tạo thong qua cú pháp:

+ Class Name.SharedMember

Có thé khai bao Shared method

[rong shared method không thẻ truy cập non-shared member.

1,12 Const va ReadOnly Data Member

1121 — Giới thiệu

Ding cho những thành viên dữ liệu không thay doi giá trị.

- Thanh viên Const hoặc ReadOnly không thay dôi giá trị khi được khởi tạo (cung

Trang 32

9.

Class CCircleConstants

‘PL is constant data member

Pulblic Const Pl As Double = 3.14159

* radius is uninitialized constant

Pulblic ReadOnly RADIUS As Integer

‘constructor of class CCircleConstants

Public Sub New(By Val radiusValue As Integer)

10 RADIUS © radiusValue

II End Sub ` New

12 End Class‘ CcireleConstants

* Fig 8.16: ConstAndReadOnly.vb

tv

~ aw

* Demonstrates Const and ReadOnly members.

Imports System Windows.Forms

Trang 33

& Dim radius As String = Convert ToString(circle RADIUS)

9 Dim output As String = "Radius = ” & radius & vbCrLf

yn

10 & “Circumlerence =" + String.Format("{0:N3}".

LÍ circle RADIUS * 2 * CCireleConstants.P[)

12 MessapeBox.Show(output “Circumference”,

13 MessageBox Buttons.OK MessageBoxlcon.Intormation)

I4 End Sub ' Main

Lš End Module ' modConstAndReadOnly

Circumference

Lx |

Hinh 1.10

1.123 Khác biệt giữa Const && ReadOnly

Điểm khác biệt giữa Const && ReadOnly ? Khi nao dùng Const ? Khi nao dùng ReadOnly?

Const :hang số chung cho Class.

ReadOnly:thanh viên dit liệu khởi tao giá trị 1 lần trong constructor

New( ) && không bao giờ thay dõi.

31

Trang 34

1.13 Reuse ability && RAD (Object Browser)

Class được bién dich thành file dll (dynamic link library), có thẻ tải sử dụngtrong các ứng dụng khác

Tai sử dụng các đọan mã tốt đã đựợc kiêm tra cân thận cho

phép(RAD:Rapid Application Development)

Có thé dùng Object Browser dé xem một class phù hợp với nhu cầu hay

khéng?

1.14 Namespace

Mỗi class sé gắn với một namespace.

Được tô chức theo cau trúc phân cap.

Tránh va chạm tên (name collision)

Không cỏ hai class trong cùng namespace có cùng tên.

Hai class trong namespace khác nhau có thé có cùng tên.

System Windows Forms TextBox

Trang 35

Khi tạo ra một class thay vì phải viết ma cho class từ dau đến cuối ta có the

cho phép class mới “kẻ thừa” tòan bộ instance variables.thuộc tinh &

phương thức cua class cũ

Ké thừa

Lớp cơ sở (Base class)

Hinh 111

1.15.2 Uu điểm của Inheritance?

- Cho phép tai sử dụng class đã được kiêm nghiệm họat động hiệu qua.

lai sử dụng, Tiết kiệm thời gian.

Reusability RAD

1.4m rõ rang cau trúc đối tượng lập trình

1.15.3 Nhược diem của Inheritance

» Class dan xuất (derived class) có thé kế thừa những thuộc tính tinh chat không

mong muốn.

Người thiết kẻ class phải dam bảo thiết ké ra những class vừa du.

Class dẫn xuất có the không hai lòng vẻ một phương thức, thuộc tinh nó được kẻ

thừa.

Lrong class dẫn xuất có thê định nghĩa lại (cưỡi lên - overridden) thuộc

tính.phương thức cua class cơ sở.

33

Trang 36

1.15.4 Một số khái niệm của Inheritance

Class B kế thừa trực tiếp class A.

Class B là class dẫn xuất class A là class cơ sở.

Class B là class con(subclass).class A là class cha(supperelass)

Mỗi doi tượng của B cũng là doi tượng của A (ISA relationship) (ngược

lại không đúng)

Class C kế thừa gián tiếp class A.

Tip:

Các thuộc tinh,phuong thức của class B không thé truy cập các

instance variables, thuộc tính và phương thức Private của class A.

(đảm bảo information hiding)

Trang 37

CTriangle CRectangle

CCarLoan

CHomeImprovementLoan CMortgageLoan

Trang 38

1.15.9 Protected và Friend (Access modifier)

- Ching ta dã biết hai lọai access modifier là Public/Private.

Thanh viên Public của lớp cơ sở có thé được truy cập mọi nơi.

Than của base class và derived class

Các đôi tượng tham chiéu base class && derived class.

‹ Thanh viên Private của lớp cơ sở chỉ có thẻ được truy cập trong than của lớp cơ

SO,

Protected cung cấp kha nang truy cập ở mức giữa Public va Private.

[hành viên Protected của lớp cơ sở có thẻ truy cập bởi các thành viên khác của

base class va derived class

36

Trang 39

[hành viên Friend của base class có the truy cập boi các doi tượng trong cùng

mot assembly

Bang tom tat

1.15.10 Một số điều nói thêm

Mọi class déu được kẻ thừa từ System.Object

- Muôn trong class dẫn xuất có thé cưỡi lên (overridden) một phương thức của

class cơ sở thì can phải khai báo class cơ sở với từ khóa Overridable.

lim trong System.Object những phương thức có thẻ cưỡi lên.

Public Overridable Function ToString() As String

37

Trang 40

1.16 TINH DA HÌNH Polymorphism

1.16.1 Khai niém Tinh da hinh (Polymorphism)

- Là một khái niệm cơ bản và tương đối khó hiểu của OOP(lập trình hướng đổi

tượng).

liên quan mật thiết tới tính kẻ thừa.

Co the hiệu như : một đối tượng biết cách thực hiện đúng "phương thức” cua nó.

Với cơ chế polymorphism việc lập trình trở nên "thuận tiện” hơn.

pomtl - New CPoint(30 50)circle] New CCircle(120 89 2.7)point2 circle] 'hòan toan cho phép

point2 ToString( )

Phương thức được thực thi la 2 phương thức cua kiều đối tượng được

[ham chiều tới chứ không phải phương thức của kiểu của biến tham

[ham chiếu thuộc lớp con "tham chiếu” vào đôi tượng thuộc lớp cha >

NGUY HiEM => Phát sinh lỗi lập trình

Can phải dùng hàm chuyên đôi kiêu Ctype

38

Ngày đăng: 20/01/2025, 02:49

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN