Visual Basic.NET 中的語言新變化 (轉)

gugu99發表於2008-05-03
Visual Basic.NET 中的語言新變化 (轉)[@more@]

 

 

簡介:namespace prefix = o ns = "urn:schemas--com::office" />

要建立企業級的應用,開發人員必須依賴於可伸縮性、強壯性和可重用性等商業邏輯。在過去的幾年中,面向的成為符合這些要求的的首要方法。使用物件導向的語言有助於使大規模的系統更易於理解、更易於、升級更迅速。

為了使開發人員能夠從物件導向設計中受益並簡化企業級Web應用程式的開發,Visual Basic的下一個版本­——Visual Basic將支援包括實現繼承在內的全部物件導向的語言特性。有了這些語言特性,Visual Basic.NET將具有快速開發企業級關鍵應用所需要的所有能力,同時保持使其成為世界上最流行的開發工具的直接訪問性。

Visual Basic.NET提供了一流的物件導向的程式設計語言特性,諸如實現繼承、過載和引數化的構造器。此外,開發人員可以透過顯式的自由執行緒編寫具有高度可伸縮性的程式碼,同時透過其它現代化的語言概念如結構化的異常處理等編寫具有較高可維護性的程式碼。Visual Basic.NET將提供開發人員建立強壯、可伸縮的分散式Web應用所需要的所有語言特性:

新增的物件導向程式設計特性

l  繼承

l  過載

l  引數化的構造器

其他的現代化的語言特性

l  自由執行緒

l  結構化的異常處理

l  嚴格型別檢查

l  共享成員

l  初始化設定

語言的歷史

Visual Basic語言有很長的更新歷史,這與平臺的基本性變化是相關的。例如:對QuickBasic的顯著改變是支援Windows3.0的GUI開發併產生了第一個版本的Visual Basic。在Visual Basic4.0中向基於COM程式設計的轉變產生了建立DLL的語言概念。在Visual Basic5.0中,其語言發展到支援COM的建立。

隨著每一次連續的修改,Visual Basic的流行程度越來越高。新Visual Basic物件導向的語言特性為開發人員提供了建立企業級Web應用程式的能力,這必將延續這種趨勢。

物件導向的程式設計

在傳統的結構化程式設計中資料分離與程式程式碼,這存在著一些弊端。所有的程式碼被書寫成結構化的,而不是模組。因為資料元素可以從任何程式碼中訪問,它可能在開發人員不知道的情況下別修改。這可能會導致非常難於除錯的執行時錯誤。此外,程式維護可能成為一項重要的任務。理解結構化程式設計中修改一行程式碼所造成的全域性影響是非常困難的。最後,依賴於開發人員控制程式碼和資料結果會導致較低的可重用性。

物件導向的程式設計()解決了這些問題,它將資料和在其上實施的方法包裝成一個獨立的單元,叫做物件。一個物件的資料可以隱藏以防止未經授權的修改。此外,物件公開一組可以在資料上進行操作的公共方法。這種概念叫做封裝。由於實現細節和介面相分離,底層的程式設計邏輯可以在後期改變而不必擔心破壞物件的程式碼。

OOP還允許開發人員透過繼承同時重用程式碼和資料。透過從先前確定的物件中繼承,開發人員可以更迅速地構造複雜的應用程式。由於編寫新的程式碼總是會有帶入錯誤的潛在可能,重用經過測試的程式碼可以使產生額外錯誤的可能性達到最小。

為了適應這些需要,Visual Basic.NET將提供一些新增的語言特性,這些特性可以使其擁有以上所描述的種種益處,使其成為一流的物件導向的程式語言。

繼承

一直以來對Visual Basic特性的要求中呼聲最高的就是對繼承的支援。在Internet時代的開發要求快速地組裝和大量的重用。Visual Basic現在完全實現繼承,包括視覺化窗體的繼承。

開發人員可以使用新的關鍵字Inherits從一個已存在的類中派生。

Class1

Function GetCustomer()

...

End Function

Class2

Inherits Class1

Function GetOrders()

...

End Function

繼承語句支援所有與繼承相關的性質。派生類的例項支援所有基類所支援的方法和介面。當然,派生類可以擴充套件基類所支援的方法和介面的集合。派生類可以使用Overrs關鍵字來替代基類中定義的方法。為減少程式設計錯誤,Visual Basic會防止意外的替代一個。只有宣告為“可替代”的函式被允許在派生類中被替代。

過載

Visual Basic現在允許函式過載,這使開發人員具有建立一個擁有相同名稱,但引數型別不同的過程或函式的能力。

當物件模型中規定了要使用名稱相近但操作於不同型別的資料之上的過程時,繼承尤其有用。例如:一個可能表現為幾種不同資料型別的類可以有這樣一個Display過程:

Overloads Sub Display (theChar As Char)

...

Overloads Sub Display (theInteger As Integer)

...

Overloads Sub Display (theDouble As Double)

如果沒有繼承,你就需要為每個過程使用不同的名稱或使用Variant引數。過載提供了一種更為清晰、更為有效的方法來處理多種資料型別。

引數化的構造器

引數化的構造器(或簡稱為“構造器”)允許建立一個類的新例項的同時向這個例項傳遞引數。構造器對於物件導向的程式設計來說是必需的。因為它允許定義的構造程式碼透過例項的建立者傳遞引數。它們透過允許一個新的物件例項在一個單獨的中建立並初始化以簡化客戶機程式的程式碼。

其他的現代化語言特性

Visual Basic.NET增加了一些簡化具有強壯性和可伸縮性應用開發的新概念。這些特性包括自由執行緒、結構化的異常處理、嚴格的型別等以及諸如初始化設定和共享成員等能夠提高生產率的新特性。

自由執行緒

現在當開發人員在Visual Basic中建立應用程式時,他們所編寫的程式碼是同步的。這意味著每行程式碼要在下一行程式碼之前。開發Web應用程式的時候,可伸縮性是關鍵。開發人員需要是並行處理成為可能的工具。

透過自由執行緒,開發人員可以生成一個執行緒來完成一些執行時間長的任務、執行一個複雜的查詢或執行一個多部分的計算,而應用程式的其它部分繼續執行,提供了非同步處理。

Sub CreateMyThread()

Dim b As BackGroundWork

Dim t As Thread

Set b = New BackGroundWork()

Set t = New Thread(New ThreadStart(AddressOf  b.Doit))

t.Start

End Sub

Class BackGroundWork

Sub DoIt()

...

End Sub

End Class

結構化的異常處理

開發企業級的應用程式要求建立可重用的、可維護的部件。在過去的Visual Basic版本中,Basic語言的一個具有爭議的方面是其對錯誤處理的支援。開發人員已經發現一致的錯誤處理方案意味著大量的賦值程式碼。利用現存的On Error Goto語句的錯誤處理方法有時會減緩大規模應用程式的開發和維護。其叫法就反映出這樣一些問題:如Goto所意味的,當一個錯誤發生時,控制權轉移到子程式中一個有標記的位置。一旦錯誤程式碼執行,它必須時常透過另外的清除位置來轉向,而後者又要經過一個標準的Goto,最後還是要透過其他的Goto或Exit來退出過程。使用Resume和Next的多種組合來處理幾個不同的錯誤將會產生難以讀懂的程式碼並且在執行路徑沒有被完全考慮到的時候會導致頻繁的錯誤。

利用Try...Catch...Finally,這些問題將不復存在,開發人員可以巢狀其異常處理,同時這是一種用於編寫在正常條件和異常條件下執行清潔程式碼的控制結構。

Sub SEH()

Try

    Open "TESTFILE" For Output As #1

  Write #1, CustomerInformation

Catch

    Kill "TESTFILE"

Finally

  Close #1

End try

End Sub

嚴格的型別檢查

當前的Visual Basic語言在其可能產生隱式的型別強制轉換上是非常自由的。對於賦值和除了引用方式之外的引數傳遞,Visual Basic可以允許幾乎任何一種資料型別透過發生執行時強制型別轉換向其他資料型別轉換。如果要轉換的值不能在沒有資料損失的情況下被轉換,那麼執行時的強制轉換可能會失敗。透過增加一個新的編譯選項,Visual Basic可以對任何可能在執行時發生錯誤的轉換產生編譯時錯誤。選項Strict透過在要求一個可能在執行時失敗的轉換或諸如在數字型別和字串之間的在使用者預期之外的自動轉換時產生錯誤來改善型別安全。

共享成員

共享成員是指由類的所有例項所共享的資料和函式成員。在類的所有例項中共享一個資料成員或函式的單個例項是使用繼承的Visual Basic應用程式所需要的。一個共享資料成員獨立地存在於類的每個例項中。共享方法不同於普通的方法,它並不是隱式的傳遞類的一個例項。由於這個原因,在共享方法中對非共享資料成員的無限制引用是不允許的。共有的共享成員可以被間接地訪問,而且它們可以從類的例項後期繫結。

初始化設定

Visual Basic.NET支援在變數的宣告行中對其初始化。初始化設定可以在包括控制結構的任何地方使用。含有初始化設定的過程級宣告的語義與一個宣告語句後緊跟一個賦值語句是相同的。換句話說,語句

Dim X As Integer=1與

Dim X As Integer

X=1是相同的。

結束語

Visual Basic現在是一流的物件導向程式語言,使用Visual Basic.NET,開發人員可以透過顯式的自由執行緒建立高度可伸縮的程式碼。他們所編寫的程式碼增加了如結構化異常處理等現代化語言概念的使用,將具有很高的可維護性。Visual Basic將為開發人員建立強壯的、可伸縮的分散式Web應用提供所需要的一切語言特性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1003247/,如需轉載,請註明出處,否則將追究法律責任。

相關文章