Visual Basic.NET 中的語言新變化
發表于:2007-07-14來源:作者:點擊數:
標簽:
簡介 要快速創建企業級的Web應用程序, 開發 人員必須依賴于可伸縮性、強壯性和可重用性等商業邏輯。在過去的幾年中, 面向對象 的程序設計成為符合這些要求的系統的首要方法。使用面向對象的編程語言有助于使大規模的系統更易于理解、更易于調試、升級更迅
簡介
要快速創建企業級的Web應用程序,
開發人員必須依賴于可伸縮性、強壯性和可重用性等商業邏輯。在過去的幾年中,
面向對象的程序設計成為符合這些要求的系統的首要方法。使用面向對象的編程語言有助于使大規模的系統更易于理解、更易于調試、升級更迅速。
為了使Visual Basic開發人員能夠從面向對象設計中受益并簡化企業級Web應用程序的開發,Visual Basic的下一個版本­——Visual Basic.NET將支持包括實現繼承在內的全部面向對象的語言特性。有了這些語言特性,Visual Basic.NET將具有快速開發企業級關鍵應用所需要的所有能力,同時保持使其成為世界上最流行的開發工具的直接訪問性。
Visual Basic.NET提供了一流的
面向對象的程序設計語言特性,諸如實現繼承、重載和參數化的構造器。此外,開發人員可以通過顯式的自由線程編寫具有高度可伸縮性的代碼,同時通過其它現代化的語言概念如結構化的異常處理等編寫具有較高可維護性的代碼。Visual Basic.NET將提供開發人員創建強壯、可伸縮的分布式Web應用所需要的所有語言特性:
新增的面向對象編程特性
l 繼承
l 重載
l 參數化的構造器
其他的現代化的語言特性
l 自由線程
l 結構化的異常處理
l 嚴格類型檢查
l 共享成員
l 初始化設置
語言更新的歷史
Visual Basic語言有很長的更新歷史,這與
Windows平臺的基本性變化是相關的。例如:對QuickBasic的顯著改變是支持Windows3.0的GUI開發并產生了第一個版本的Visual Basic。在Visual Basic4.0中向基于COM編程的轉變產生了創建DLL的語言概念。在Visual Basic5.0中,其語言發展到支持COM控件的創建。
隨著每一次連續的修改,Visual Basic的流行程度越來越高。新Visual Basic面向對象的語言特性為開發人員提供了創建企業級Web應用程序的能力,這必將延續這種趨勢。
面向對象的程序設計
在傳統的結構化程序設計中數據存儲分離與程序代碼,這存在著一些弊端。所有的代碼被書寫成結構化的,而不是模塊。因為數據元素可以從任何代碼中訪問,它可能在開發人員不知道的情況下別修改。這可能會導致非常難于調試的運行時錯誤。此外,程序維護可能成為一項重要的任務。理解結構化編程中修改一行代碼所造成的全局影響是非常困難的。最后,依賴于開發人員控制代碼和數據結果會導致較低的可重用性。
面向對象的程序設計(OOP)解決了這些問題,它將數據和在其上實施的方法包裝成一個獨立的單元,叫做對象。一個對象的數據可以隱藏以防止未經授權的修改。此外,對象公開一組可以在數據上進行操作的公共方法。這種概念叫做封裝。由于實現細節和接口相分離,底層的編程邏輯可以在后期改變而不必擔心破壞調用對象的代碼。
OOP還允許開發人員通過繼承同時重用代碼和數據。通過從先前確定的對象中繼承,開發人員可以更迅速地構造復雜的應用程序。由于編寫新的代碼總是會有帶入錯誤的潛在可能,重用經過
測試的代碼可以使產生額外錯誤的可能性達到最小。
為了適應這些需要,Visual Basic.NET將提供一些新增的語言特性,這些特性可以使其擁有以上所描述的種種益處,使其成為一流的面向對象的編程語言。
繼承
一直以來對Visual Basic特性的要求中呼聲最高的就是對繼承的支持。在Inte
.net時代的開發要求快速地組裝和大量的重用。Visual Basic現在完全實現繼承,包括可視化窗體的繼承。
開發人員可以使用新的關鍵字Inherits從一個已存在的類中派生。
Class1
Function GetCustomer()
...
End Function
Class2
Inherits Class1
Function GetOrders()
...
End Function
繼承語句支持所有與繼承相關的性質。派生類的實例支持所有基類所支持的方法和接口。當然,派生類可以擴展基類所支持的方法和接口的集合。派生類可以使用Overrides關鍵字來替代基類中定義的方法。為減少編程錯誤,Visual Basic會防止意外的替代一個函數。只有聲明為“可替代”的函數被允許在派生類中被替代。
重載
Visual Basic現在允許函數重載,這使開發人員具有建立一個擁有相同名稱,但參數類型不同的過程或函數的能力。
當對象模型中規定了要使用名稱相近但操作于不同類型的數據之上的過程時,繼承尤其有用。例如:一個可能表現為幾種不同數據類型的類可以有這樣一個Display過程:
Overloads Sub Display (theChar As Char)
...
Overloads Sub Display (theInteger As Integer)
...
Overloads Sub Display (theDouble As Double)
如果沒有繼承,你就需要為每個過程使用不同的名稱或使用Vari
ant參數。重載提供了一種更為清晰、更為有效的方法來處理多種數據類型。
參數化的構造器
參數化的構造器(或簡稱為“構造器”)允許創建一個類的新實例的同時向這個實例傳遞參數。構造器對于面向對象的編程來說是必需的。因為它允許用戶定義的構造代碼通過實例的創建者傳遞參數。它們通過允許一個新的對象實例在一個單獨的表達式中創建并初始化以簡化客戶機程序的代碼。
其他的現代化語言特性
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應用提供所需要的一切語言特性。
原文轉自:http://www.anti-gravitydesign.com