Các bài tập Microsoft .NET 1 phần 4 potx

18 246 0
Các bài tập Microsoft .NET 1 phần 4 potx

Đ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

Các tập Microsoft NET 55 Try result = a / b ' if this section has error jump to Catch section Catch ' only get here if an error occurs between Try and Catch result = Finally ' This section is optional, but is always executed whether there is an error or not Console.WriteLine( result) End Try Nếu ta khơng code phần Catch có nghĩa có Handle Error lại khơng làm hết, Program khơng té Ngược lại, ta khơng dùng Try Catch, program té Nếu muốn nhảy khỏi Try Structure lúc ta dùng Exit Try, Những cách CATCH error Ta dùng Catch giống Select Case để có cách xử lý cho error: Try ' Main code goes here Catch When Err.Number=5 ' handle Error Catch ' handle other errors End Try Ta Catch Error Exception data variable để dùng sau: Catch e as Exception MessageBox.Show (e.ToString) Hai cách code gợp lại thành: Các tập Microsoft NET 56 Catch e As Exception When Err.Number = Thay đổi cách viết Sub/Function Dùng dấu ngoặc gọi Procedure Trong VB6, không dùng keyword Call ta không dùng dấu ngoặc gọi Sub Trong VB.NET ta luôn dùng cặp dấu ngoặc, khơng có parameter Thí dụ: ProcessData() x = New Customer() ByVal Default cho Parameters Trong VB6, ByRef default cho parameters passed vô Sub/Function Tức là, Sub/Function vơ tình làm thay thổi trị số nguyên thủy parameter variables Trong VB.NET, ByVal default cho parameters passed vô Sub/Function Do đó, tránh lỗi lầm nói Optional Parameter cần có trị số Default Trong VB6 ta dùng IsMissing để biết xem Optional parameter có diện không VB.NET bỏ IsMissing bắt buộc ta phải cung cấp trị số Default cho Optional parameter phần procedure declaration giống sau : Public Sub VerifyInput (Optional ByVal InputData As String="") thí dụ ta cho Default value Optional parameter InputData Empty string Return Statement Hãy xem thí dụ dùng Function để return Customer Object VB6: Public Function GetCustomer (ByVal CustID As Long) As Customer Dim objCust As Customer Set objCust = New Customer objCust.Load CustID Các tập Microsoft NET 57 Set GetCustomer = objCust End Function Trong VB.NET ta dùng Return Statement để Return kết Function thay dùng tên Function Public Function GetCustomer (ByVal CustID As Long) As Customer Dim objCust As New Customer(CustID) Return objCust End Function Delegate Delegate cách giúp ta pass procedure parameter vào method Ý niệm gọi Function Pointer hay Callback Một trường hợp cổ điển ta dùng Delegate cung cấp dataArray để sort với Function để so sánh hai items array Trong VB.NET ta dùng AddressOf operator để pass procedure Ta declare Delegate cách nói procedure dạng nào, có parameters, parameter thuộc loại data type Thí dụ: Delegate Function IsGreater (ByVal v1 As Integer, ByVal v2 As Integer) as Boolean Khi viết code ta yên tâm cung cấp Function có dạng đại khái code sau: Public Sub DoSort (ByRef DataArray() As Integer, Greater As IsGreater) Dim outer As Integer Dim inner As Integer Dim temp As Integer For outer = To UBound(DataArray) For inner = outer + To UBound(DataArray) If GreaterThan.Invoke( DataArray(outer), DataArray(inner)) Then temp = DataArray(outer) DataArray(outer) = DataArray(inner) DataArray(inner) = temp Các tập Microsoft NET 58 End If Next Next End Sub Để ý cách dùng Method Invoke để gọi Delegate Bây ta cần cung cấp Delegate routine mà ta hứa: Public Function myIsGreater (ByVal v1 As Integer, ByVal v2 As Integer) as Boolean Return ( v1 > v2) End Function Tiếp theo cách ta dùng Delegate nói trên: Dim myData() As Integer = { 2, 5, 8, 13, 26} DoSort (myData, AddressOf myIsGreater) Khi Subscriber registers với Publisher routine để Handle loại Event, ta dùng delegate sau: AddHandler Button4.Click, AddressOf Button4_Click Khi Event Click xãy Button4, system execute Sub Button4_Click Các tập Microsoft NET 59 Bài Những chức Đối Tượng VB.NET (phần I) V B.NET khắc phục giới hạn Đối Tượng (Object-Oriented) VB6 mang đến cho ta ngôn ngữ lập trình hồn tồn ObjectOriented (OO) Gần thứ VB.NET liên hệ với Object Nếu bạn với lập trình theo hướng đối tượng (Object Oriented Programming) phần giải thích sau giúp bạn làm quen với Classes Objects, nguyên tắc Abstraction Theo phương pháp đối tượng, program thiết kế để phần code đại diện cho vật tương đương đời Nó gọi Class Khi lập trình VB6 ta dùng controls từ Toolbox Textbox, Label, Listbox v.v Textbox Class Objects Text1, Text2 Cũng Label1, Label2 Objects tạo từ Class Label Ta hay dùng hai từ Class Object lẫn lộn Điều khơng quan trọng, miễn ta biết Class ý niệm Trừu tượng (Abstraction), Object vật thực hữu Giống Class CaSĩ ý niệm trừu tượng, Object KhánhHà Class CaSĩ người da, thịt với tiếng hát nhiều người ngưỡng mộ Ta nói Object Instance Class, ta instantiate Class để có Object Các tập Microsoft NET 60 Thường thường ta phân tích vấn đề để thiết kế chương trình Danh từ (Nouns) Classes Giả dụ ta phân tích hoạt động Nhà Kho (warehouse) Ta có phịng chứa, ngăn tủ, bãi nhận hàng, xe nâng hàng, nhân viên v.v., thứ Object nên ta thiết kế Class cho Fields, Properties, Methods Events, nguyên tắc Encapsulation Class CaSĩ diễn tả CaSĩ người Như SốBàiHát Public Variable Class, gọi Field đọc/viết trực tiếp Cịn Kiểu tóc (dài, ngắn, màu đen, có sọc nâu ), Giọng hát (cao, trầm, ) Properties Chúng giống Field implemented (thi hành) cách dùng procedures Property Get Property Set Property Set coded để kiểm sốt "Kiểu tóc" khơng thích hợp bị loại bỏ Ngược lại, "Kiểu tóc" thích hợp áp dụng ta thấy kết CaSĩ lại đẹp thêm Thường thường Fields Properties Danh từ (Nouns) Một CaSĩ có khả ĐơnCa, KýTênLưuNiệm, TrìnhDiễn Ta gọi Methods mà ta implemented Subs Functions (thí dụ Function KýTênLưuNiệm return chữ ký) Thường thường Methods Động từ (Verbs) Đối với code bên Class Property giống Method cịn Client (tức program dùng Class) Property giống Field Đơi khi, trình diễn lâu, CaSĩ cần ly nước CaSĩ Raise Event Khát Nước để nhân viên hậu trường phục vụ Ta gọi chung Fields, Properties, Methods Events Class Members (Các Thành viên Class) Có ngoại lệ khác biệt giữ Class Member, ta dùng Shared Class Members Class ta khơng thiết phải instantiate Object Ta dùng thẳng tên Class Object Cái lợi điểm Object Oriented Programming ta gói tất đặc điểm, khả Class vào Unit of Code (Đơn vị mã) tự túc Khi lịch yêu cầu CaSĩ ĐơnCa Ta biết Các tập Microsoft NET 61 CaSĩ ca thu hút lịng người, ta khơng cần biết CaSĩ đạt đến trình độ Đó chuyện để quan tâm Đối với ta Class CaSĩ Black Box, ta khơng cần biết chuyện xãy bên Nếu sau CaSĩ thay đổi kỹ thuật đơn ca để hát dễ hay hơn, điều khơng ảnh hưởng đến Đặc tính OO gọi Encapsulation (Gói kín) Cách ta lập trình với Class khác cách ta lập trình trước chút thơi Nếu trước ta phải tự làm, ta instantiate Object Class chuyên trị chuyện ta muốn làm, bảo làm cho ta So với ngồi đời, thí dụ bạn có mở tiệm photocopy Sau năm bạn tự trông coi, cơng chuyện làm ăn ổn định có kết tốt Bạn muốn mở thêm tiệm photocopy chỗ khác Trước lo chỗ khác bạn huấn luyện nghề photocopy cho người làm công trung thành, giao cho người làm quản lý để thay bạn Người mơt Object Class QuảnLýTiệmPhotoCopy Các tập Microsoft NET 62 Trở lại cách lập trình, cơng việc bạn làm ngày tiệm photocopy Methods Tất đồ đạc, sổ sách tiệm Properties Bạn đặt tuần phải gọi người lại quét dọn tiệm, tháng phải bảo trì máy photocopiers, Events Bây bạn gói tất thứ lại thành Class QuảnLýTiệmPhotoCopy Lần đầu bạn instantiate Class QuảnLýTiệmPhotoCopy làm thành ChúTưThông, người thay bạn làm quản lý tiệm photocopy Khi bạn muốn mở thêm tiệm thứ ba, bạn instantiate Class QuảnLýTiệmPhotoCopy lần làm thành DìSáuHương , người thay bạn làm quản lý tiệm photocopy thứ nhì Khi phân chia trách nhiệm phần code thành Class, bạn tập trung tư tưởng vào Class một, không cần phải cố nhớ thứ đầu giải chuyện Vì code Class làm việc ảnh hưởng phạm vi hoạt động nó, khơng đụng chạm đến khác Nếu có trục trặc, thường thường ta xác định lỗi Class tương đối dễ dàng Có câu hỏi đùa theo phương pháp OO thì: "Thay bóng đèn cần programmers?" Đáp: "Khơng cần programmer hết, bạn bảo đèn tự thay bóng nó." (Lời đáp khác: "Khơng cần programmer hết, Microsoft đổi tiêu chuẩn bóng đêm.") Do đó, trước bạn lập trình để tự lo liệu cơng chuyện giao cho Objects tự lo cho chúng Tức trước đây, bạn chủ điền năm bạn phải góp lúa ruộng, bạn bảo tá điền phải tự đem nộp lúa vào kho cho bạn Sướng khơng? Chỉ giới lập trình OO, ta mơ mộng Inheritance (Thừa Kế) Nguyên tắc Encapsulation nói cho phép ta dùng nhiều Objects hay nhiều Classes cách an tồn, tức khơng sợ Methods Objects giẫm chân lên Giả sử ta muốn dùng lại Class để làm Class mới, đặc biệt hơn, thí dụ ta muốn làm nên Class CaSĩ từ Class NghệSĩ Cách làm Các tập Microsoft NET 63 gọi Inheritance (Thừa kế) Công việc thừa kế thực qua trình gọi Subclassing Ở ta dùng lại Class NghệSĩ mà hoàn tồn khơng đụng đến Source Code (Nguồn Mã) Class NghệSĩ Nguyên tắc gọi Reusability (Dùng lại) Lưu ý ta dùng lại Source code mà có sửa đổi chút Source Code khơng thể gọi Reuse việc sửa đổi Source Code gây bugs Ta phải cần Inherit từ Object Code Class thật Reuse Ta dùng Inheritance thêm Class Members, tức thêm đặc tính chức Thí dụ NghệSĩ có Property TâmHồn (NhạyCảm (Sentitive) , ThơMộng (Romantic), ), Methods KýTênLưuNiệm, TrìnhDiễn Class CaSĩ giữ y đặc tính chức thêm Sub ĐơnCa, Function HátNhạcYêuCầu, v.v Tương tự vậy, ta thừa kế từ Class NghệSĩ để tạo Class HọaSĩ Class HọaSĩ giữ y đặc tính chức Class NghệSĩ thêm Function VẽChânDung, Sub TrangTrí Trong thí dụ nói trên, người ta gọi Class NghệSĩ Parent Class, Super Class hay Base Class Còn Class CaSĩ Class HọaSĩ gọi Child Class hay SubClass Các tập Microsoft NET 64 Nếu ta lại Inherit Class CaSĩ để tạo Class CaSĩTânNhạc Class CaSĩCổNhạc trường hợp CaSĩ Parent Class CaSĩTânNhạc với CaSĩCổNhạc Child Classes Mỗi Casĩ NghệSĩ nên ta có mối liên hệ "IS (Là)" hai classes Nó khác với mối liên hệ "HAS (Có)" Thí dụ Class CaSĩ có Object thuộc Class ĐầuBếp, CaSĩ cho ta bữa ăn ngon khơng hẳn cho CaSĩ nấu Nó giống ngồi đời CaSĩ KhánhHà mướn đầu bếp để đãi khách Ta nói Class CaSĩ có mối liên hệ HAS (Có) với Class ĐầuBếp trường hợp này, Class CaSĩ IS (Là) Class ĐầuBếp Trong NET ta có Single (Đơn) Inheritance, tức Class Inherit từ hai hay ba Classes khác Giống nói Con thừa kế từ Cha Cha thừa kế từ ƠngNội, khơng có nhắc đến Mẹ hay BàNội Một Child Class có Parent Class, ngược lại, Parent Class có nhiều Child Classes Polymorphism (Đa dạng) Polymorphism khả dùng Class Members trùng tên Objects thuộc Classes khác Thí dụ Objects KháchHàng NhânViên có Property Name Nếu ta lập trình để dùng Name Các tập Microsoft NET 65 mà khơng cần nói rõ thuộc Object KháchHàng hay NhânViên Polymorphism Polymorphism thể nhiều hình thức: Late Binding (Hiệu lực trễ): Có nghĩa đợi đến chót, execution, code biết làm việc với loại Object Chữ binding nói đến "hiệu lực", late binding có hiệu lực trễ Điều thực cách hứa hẹn Object thuộc Parent Class để lúc runtime ta giao cho code Object thuộc Child Class Thí dụ ta hứa với khán giả có CaSĩ trình diễn, lúc mở ta cung cấp CaSĩTânNhạc hay CaSĩCổNhạc Overloading (Quá tải, có mà cịn cho thêm) : Overloading cho phép ta viết Class nhiều versions khác Property hay Method Chúng phân biệt nhờ dùng parameters khác data type hay số parameters khác Thí dụ version Sub passed cho Integer Parameter, version khác passed cho String Parameter, version khác lại passed cho hai parameters Khi ta gọi Method Class, dựa vào data type parameters ta pass số parameters ta pass để execute version Method Một thí dụ Overloading ngồi đời ta yêu cầu CaSĩ đơn ca ta phép đề nghị CaSĩ hát theo Các tập Microsoft NET 66 Karaoke, hay Ban Nhạc Sống phụ họa, hay thêm nhóm ca sĩ khác phụ họa v.v Overriding (Lấn quyền) : Overriding áp dụng cho Child Class Parent Class Trong Child Class ta cung cấp Method tên, số parameters parameter data type với Method Parent Class (ở không thiết phải Cha, ƠngNội hay nhiều đời trước) để dùng thay cho Parent Class Method Ta nói Child Class thay đổi behaviour (tánh tình, cách xử sự) Parent Class Đại khái giống cụ LữLiên trước Hát nhạc hài hước, cô KhánhHà thừa kế từ cụ override Method Hát cụ cô implement Method Hát dùng cho nhạc trử tình Lúc runtime, Object khơng có implementation Method CLR (Common Language Runtime) dùng Method Parent Class Trong thí dụ KhánhHà có implementation cho method Hát nên system dùng method đó, thay dùng method Hát cụ LữLiên Dùng OO VB.NET Tạo Class Bạn tạo Class VB.NET IDE cách dùng Menu Command Project | Add Class Dialog Add New Item ra, chọn Class số hình Icons nằm khung bên phải Dialog Các tập Microsoft NET 67 Source code Class chứa VB source file với extension vb Trong VB.NET tất VB source files có extension vb System nhận diện loại VB file (form, class, module,.v.v ) nhờ đọc content file, không dựa vào file extension Nếu bạn muốn đặt tên cho Class TheClass chẳng hạn, bạn sửa tên Dialog Khi bạn click button Open file cho thêm vào Project chứa hai hàng code sau: Public Class TheClass End Class Các tập Microsoft NET 68 Bài Những chức Đối Tượng VB.NET (phần II) Dùng OO VB.NET Tạo Class Class Keyword Trong vb file ta viết nhiều Classes, code Class nằm Class End Class block Thí dụ: Public Class TheClass Public Sub Greeting() MessageBox.Show("Hello world", MsgBoxStyle.Information, "TheClass") End Sub End Class MessageBox.Show MsgBoxStyle.Information VB.NET thay MsgBox vbInformation VB6 Classes Namespaces Nhắc lại NET dùng Namespace để đặt Classes cho thứ tự theo nhóm, loại Namespaces declared với Block Structure giống sau: Namespace Vovisoft Public Class TheClass Public Sub Greeting() MessageBox.Show("Hello world", MsgBoxStyle.Information, "TheClass") End Sub End Class End Namespace Các tập Microsoft NET 69 Muốn nói đến Class, Structure, hay thứ declared bên Namespace End Namespace block ta phải dùng tên Namespace trước Thí dụ: Private myObject As Vovisoft.TheClass Một source file chứa nhiều Namespaces, bên Namespace lại có nhiều Classes Ngồi ra, Classes thuộc Namespace nằm nhiều files khác VB.NET project Thí dụ ta có source file với code sau: Namespace Vovisoft Public Class TheClass ' Code End Class End Namespace Và source file khác project với code: Namespace Vovisoft Public Class TheOtherClass ' Code End Class End Namespace Vậy Namespace Vovisoft ta có hai Classes TheClass TheOtherClass Nhớ là, by default, Root Namespace VB.NET project tên project Khi ta dùng Namespace block structure thêm tầng tên vào Root Namespace Do đó, thí dụ tên project MyProject thì, từ bên ngồi project ấy, ta declare variable sau: Private myObject As MyProject.Vovisoft.TheClass Các tập Microsoft NET 70 Tạo Methods Methods VB.NET có hai thứ: Sub Function Function phải return kết By default, parameters Method ByVal ByRef Tức muốn parameter ByRef phải nhớ khai rõ ràng Nhắc lại variable passed vào method ByVal system cho method copy (bản sao) variable, đó, trị số variable khơng bị thay đổi công tác method Ngược lại, variable passed vào method ByRef method dùng variable đó, đó, trị số variable bị thay đổi cơng tác method Ta giới hạn việc sử dụng method cách áp đặt Access Modifier (sửa đổi quyền truy nhập) hay gọi Scoping keyword (phạm vi hoạt động): • Private - cho phép code Class gọi • Friend - cho phép code project/component gọi • Public - cho phép gọi • Protected - cho phép code subclasses (classes con, cháu) gọi • Protected Friend - cho phép code project/component hay code subclasses gọi Tạo Properties Trong VB.NET ta dùng routine cho Property, với hai chữ Get Set sau (không dùng chữ Let VB6 nữa): Private mdescription As String Public Property Description() As String Set (ByVal Value As String) mdescription = Value Các tập Microsoft NET 71 End Set Get Description = mdescription End Get End Property ReadOnly WriteOnly property Bây Property ReadOnly ta lấy phần Set viết: Public ReadOnly Property Age() As Integer Get Age = End Get End Property hay WriteOnly ta phần Get viết: Private _data As Integer Public WriteOnly Property Data() As Integer Set (ByVal Value As Integer) _data = Value End Set End Property Default Properties Default Property property Object mà program dùng ta cho tên Object khơng nói rõ property Thí dụ VB6 ta code: TextBox1 = "The house of rising sun" VB6 hiểu ta muốn dùng Default Property text Textbox1 nên code tương đương với: TextBox1.text = "The house of rising sun" Trong VB6 ta dùng keyword Set với tên Object, thí dụ như: Dim myTextBox As Textbox Các tập Microsoft NET 72 Set myTextBox = TextBox1 program hiểu ta muốn nói đến Object myTextBox Nếu khơng biết ta muốn nói đến Object Default Property mà làm biếng code cho rõ Trong VB.NET Default Property phải Property array Một Property array property Indexed (nói đến Item số Index) giống array Lý bắt buộc để khỏi lẫn lộn hai trường hợp ta nói đến Default property Object hay Object ấy, VB.NET ta khơng cịn dùng Set keyword cho Object assignment (ta dùng keyword Set Property mà thôi) Bây muốn nói đến Default Property Object phải dùng Index Thí dụ để nói đến Object, ta code: myValue = myObject để nói đến Default Property Item Object, ta code: myValue = myObject(3) Sự thay đổi từ VB6 có nghĩa property array procedure phải nhận parameter Thí dụ: Private theData(100) As String Default Public Property Data(ByVal Index As Integer) As String Get Data = theData(Index) End Get Set(ByVal Value As String) theData(Index) = Value End Set End Property Từ ta code: TextBox1 = "Good morning!" VB6 nữa, mà phải code: ... AddHandler Button4.Click, AddressOf Button4_Click Khi Event Click xãy Button4, system execute Sub Button4_Click Các tập Microsoft NET 59 Bài Những chức Đối Tượng VB.NET (phần I) V B.NET khắc phục... Project chứa hai hàng code sau: Public Class TheClass End Class Các tập Microsoft NET 68 Bài Những chức Đối Tượng VB.NET (phần II) Dùng OO VB.NET Tạo Class Class Keyword Trong vb file ta viết nhiều... LữLiên Dùng OO VB.NET Tạo Class Bạn tạo Class VB.NET IDE cách dùng Menu Command Project | Add Class Dialog Add New Item ra, chọn Class số hình Icons nằm khung bên phải Dialog Các tập Microsoft NET

Ngày đăng: 31/07/2014, 09:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan