Visual Basic .NET中的語言創(chuàng)新
2024-07-10 13:07:37
供稿:網(wǎng)友
 
visual basic .net中的語言創(chuàng)新 
引言 
要快速地創(chuàng)建企業(yè)web應(yīng)用程序,開發(fā)人員必須依靠可伸縮的、健壯的、可重用的商務(wù)邏輯。在過去的幾年中,面向?qū)ο蟮某绦蛟O(shè)計已經(jīng)成為了創(chuàng)建滿足這些需求的系統(tǒng)的主要技術(shù)。使用面向?qū)ο蟮某绦蛟O(shè)計語言可以使得大型系統(tǒng)更容易理解,更容易調(diào)試,并且更新速度更快。 
為了使visual basic開發(fā)人員從面向?qū)ο蟮脑O(shè)計中獲益,簡化企業(yè)web應(yīng)用程序的開發(fā),將在visual basic的下一個版本 - visual basic .net中支持包括實現(xiàn)繼承在內(nèi)所有的面向?qū)ο蟮恼Z言特性。利用這些新的語言特性,visual basic .net將迅速有效地提供開發(fā)企業(yè)關(guān)鍵的應(yīng)用程序所需的所有強大功能,而同時保持使其成為世界上最流行的開發(fā)工具的即時可達性。 
visual basic .net將提供第一流的面向?qū)ο蟮?、擁有新特性的程序設(shè)計語言,如實現(xiàn)繼承、重載和帶參數(shù)的構(gòu)造函數(shù)。此外,開發(fā)人員將能夠創(chuàng)建高度可伸縮的具有明確的自由線程(free threading)代碼,以及加入了現(xiàn)代化的語言結(jié)構(gòu),如結(jié)構(gòu)化的異常處理的高度可維護的代碼。visual basic將提供開發(fā)人員使用下面的新特性,創(chuàng)建健壯的、可伸縮的分布式web應(yīng)用程序所需的所有語言特性: 
新的面向?qū)ο蟮某绦蛟O(shè)計特性 
繼承 
重載 
帶參數(shù)的構(gòu)造函數(shù) 
其他現(xiàn)代化的語言特性 
自由線程 
結(jié)構(gòu)化的異常處理 
嚴格的類型檢查 
共享成員 
初始化工具 
語言創(chuàng)新的歷史 
visual basic語言有一個很長的更新歷史,它反映了windows平臺中的根本性的變化。例如,使quickbasic?為支持windows 3.0 gui開發(fā)所作出的重大變化導(dǎo)致了visual basic的首次發(fā)布。在visual basic 4.0中,向基于com的程序設(shè)計轉(zhuǎn)移導(dǎo)致了用于創(chuàng)建dll的語言結(jié)構(gòu)的出現(xiàn)。而在visual basic 5.0中,語言發(fā)展為支持創(chuàng)建com控件。 
利用每次成功的修訂,visual basic的普及有了飛速的增長。新的面向?qū)ο蟮恼Z言特性提供給創(chuàng)建企業(yè)web應(yīng)用程序的開發(fā)人員的啟動功能,將最有可能繼續(xù)這種趨勢。 
面向?qū)ο蟮某绦蛟O(shè)計 
對于傳統(tǒng)的結(jié)構(gòu)化的程序設(shè)計(數(shù)據(jù)與程序式的代碼分別存儲),存在幾個缺點。作為結(jié)構(gòu)化的代碼編寫的任何代碼都不是模塊化的。由于數(shù)據(jù)元素可以從任何代碼中訪問,因此在沒有開發(fā)人員的知識的情況下,修改數(shù)據(jù)是不可能的。這可能會導(dǎo)致非常難調(diào)試的運行錯誤。此外,維護也可能會成為一項實質(zhì)性的任務(wù)。試圖理解使用程序式設(shè)計改變一行代碼的全局影響可能會非常困難。最后,依靠程序員來管理代碼和數(shù)據(jù)將導(dǎo)致非常低的重用率。 
面向?qū)ο蟮某绦蛟O(shè)計(oop,object-oriented programming)解決了這些問題。它將數(shù)據(jù)以及在數(shù)據(jù)上采取行動的方法打包成一個稱為對象的單位中。一個對象的數(shù)據(jù)可以被隱藏起來,以避免出現(xiàn)未授權(quán)的修改。此外,這個對象提供了一組公共方法對這個數(shù)據(jù)進行操作。這種概念被稱為封裝。由于實現(xiàn)細節(jié)與接口分離,底層的程序設(shè)計邏輯可以在日后修改,而不用擔(dān)心破壞調(diào)用這個對象的代碼。 
oop還允許開發(fā)人員通過繼承重用代碼和數(shù)據(jù)。通過繼承預(yù)定義的對象,開發(fā)人員可以更迅速地構(gòu)造更復(fù)雜的應(yīng)用程序。由于編寫新代碼通常有可能加進錯誤,因此重用代碼可以使出現(xiàn)額外錯誤的機會降到最低。 
為了解決這些需求,visual basic .net將提供這些額外的語言特性,這將使得它稱為第一流的具有上述的所有好處的、面向?qū)ο蟮某绦蛟O(shè)計語言。 
繼承 
一貫地,對visual basic最突出的請求是支持實現(xiàn)繼承(implementation inheritance)。internet時代的程序開發(fā)需要快速的編譯和大量的重用。visual basic 現(xiàn)在包括了包括可視化窗體繼承在內(nèi)的全部實現(xiàn)繼承。 
開發(fā)人員可以使用新的關(guān)鍵字inherits來從一個已有的類派生。 
class1
    function getcustomer()
    ...
    end function
class2
    inherits class1 
    function getorders()
    ...
    end function
inherits語句支持與繼承相關(guān)的所有可視化屬性。派生類的實例支持這個基類所支持的所有方法和接口。當(dāng)然,派生類可以擴展基類所支持的方法和接口集合。 
派生類可以使用關(guān)鍵字overrides重載基類中定義的方法。為了減少程序設(shè)計錯誤,visual basic可以防止你意外地重載一個函數(shù);只有被聲明為"overridable(可重載)"地函數(shù)才能在派生類中被重載。 
重載 
visual basic現(xiàn)在允許進行函數(shù)重載,這使得開發(fā)人員可以創(chuàng)建有相同名稱,但卻有不同的自變量類型的、不同版本的sub或function。 
當(dāng)你的對象模型規(guī)定,對于操作不同數(shù)據(jù)類型的過程使用類似的名稱時,重載尤其有用。例如,一個可以顯示幾種數(shù)據(jù)類型的類可能會有如下所示的display過程: 
overloads sub display (thechar as char)
...
overloads sub display (theinteger as integer)
...
overloads sub display (thedouble as double)
如果沒有重載,你將不得不為每個過程使用截然不同的名稱,或者使用一個variant參數(shù)。重載提供了一個處理多種數(shù)據(jù)類型的更明確、更有效的方法。 
帶參數(shù)的構(gòu)造函數(shù) 
帶參數(shù)的構(gòu)造函數(shù)(或簡單地稱為構(gòu)造函數(shù))允許你創(chuàng)建類的新的實例,而同時將變量傳遞給新的實例。構(gòu)造函數(shù)對于面向?qū)ο蟮某绦蛟O(shè)計至關(guān)重要,因為它們允許實例的創(chuàng)造者向用戶定義的構(gòu)造代碼傳遞參數(shù)。它們通過允許在單個表達式中創(chuàng)建和初始化一個新的實例,簡化了客戶代碼。 
其他現(xiàn)代化的語言特性 
visual basic .net添加了許多額外的結(jié)構(gòu),簡化了更健壯、更具可伸縮性的應(yīng)用程序的開發(fā)。這些特性包括自由線程、結(jié)構(gòu)化的異常處理、嚴格的類型安全性,以及生產(chǎn)力特性,如初始化工具和共享成員。 
自由線程 
今天當(dāng)開發(fā)人員在visual basic中創(chuàng)建應(yīng)用程序時,他們編寫的代碼是同步的。這意味著,每行代碼必須在下一行代碼之前執(zhí)行。當(dāng)開發(fā)web應(yīng)用程序時,可伸縮性是關(guān)鍵。開發(fā)人員需要支持并發(fā)處理的工具。 
通過包含自由線程,開發(fā)人員可以產(chǎn)生一個執(zhí)行某些長期任務(wù)、執(zhí)行復(fù)雜的查詢或運行多部分的計算的線程,而應(yīng)用程序的其他部分則繼續(xù)執(zhí)行,從而提供了異步處理功能。 
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
結(jié)構(gòu)化的異常處理 
開發(fā)企業(yè)應(yīng)用程序需要構(gòu)造可重用的、可維護的組件。在以前版本的visual basic中,basic語言的一個具有挑戰(zhàn)性的方面就是支持錯誤處理。開發(fā)人員發(fā)現(xiàn),一個一致的錯誤處理模式意味著可以大量的復(fù)制代碼。使用現(xiàn)有的on error goto語句進行錯誤處理使大型應(yīng)用程序的開發(fā)和維護速度變得很慢。它的名字就反映了某些問題:正如goto所暗示的,當(dāng)一個錯誤發(fā)生時,控制被轉(zhuǎn)移給子程序中某個標(biāo)記的位置。一旦錯誤代碼運行,通常它必須通過標(biāo)準(zhǔn)的goto依靠另一個清除位置轉(zhuǎn)移,它最終將使用另一個goto或exit來推出這個過程。利用各種resume和next組合快速地處理幾個不同的錯誤,將產(chǎn)生難讀地代碼,并且在執(zhí)行路徑?jīng)]有完全考慮到時將會導(dǎo)致出現(xiàn)頻繁的錯誤。 
利用try...catch...finally,這些問題迎刃而解,開發(fā)人員可以嵌套他們的異常處理,并且有一個控制結(jié)構(gòu)用于編寫在正常和異常條件下都執(zhí)行的清除代碼。 
sub seh() 
    try
        open "testfile" for output as #1 
      write #1, customerinformation
    catch
         kill "testfile"
    finally
      close #1
    end try
end sub
嚴格的類型檢查 
今天,visual basic語言在其產(chǎn)生的隱含類型強制方面非常自由。對于變量以及傳遞而非引用的參數(shù)類說,visual basic編譯器通過產(chǎn)生運行強制,可以將允許幾乎所有的數(shù)據(jù)類型轉(zhuǎn)換成任何其他類型。如果要轉(zhuǎn)換的數(shù)值不能在沒有數(shù)據(jù)丟失的情況下進行轉(zhuǎn)換,則運行強制操作將實效。通過添加一個新的編譯選項,visual basic可以對于可能會在運行時引起錯誤的任何強制生成編譯錯誤。選項"strict"通過在需要進行轉(zhuǎn)換而轉(zhuǎn)換可能會在運行時失敗,或像數(shù)字類型和字符串之間的自動類型轉(zhuǎn)換不是用戶所預(yù)期的時候生成錯誤,從而提高了類型安全性。 
共享成員 
共享成員是指可以被類的所有實例共享的類的數(shù)據(jù)和函數(shù)成員。在一個類的所有實例間共享一個數(shù)據(jù)成員或函數(shù)成員的實例,在使用繼承的visual basic應(yīng)用程序中是必需的。一個共享的數(shù)據(jù)成員獨立于這個類的任何一個具體的實例而存在。一個共享的方法是與普通的方法不同,它并不被隱含地傳遞類的實例。由于這個原因,在一個共享的方法中,不允許不合格的引用非共享的數(shù)據(jù)成員。公共的共享成員可以遠程訪問,并且可以從這個類的某個實例中對它們進行晚綁定。 
初始化工具 
visual basic .net支持在變量被聲明的一行中對其進行初始化。初始化可以用在任何位置,包括框架結(jié)構(gòu)內(nèi)部。包括初始化工具的過程層次的聲明的語義,與緊跟一個賦值語句的聲明語句相同。換句話說,這個語句" 
dim x as integer = 1
與下面的這些語句意義相同: 
dim x as integer 
x = 1
結(jié)論 
visual basic現(xiàn)在已經(jīng)成了第一流的面向?qū)ο蟮某绦蛟O(shè)計語言。使用visual basic .net,開發(fā)人員將能夠創(chuàng)建高度可伸縮的、具有明確的自由線程(free threading)代碼。他們的代碼使用了現(xiàn)代化的語言結(jié)構(gòu),如結(jié)構(gòu)化的異常處理(structured exception handling),具有很高的可維護性。visual basic將提供開發(fā)人員創(chuàng)建健壯的、可伸縮的分布式web應(yīng)用程序所需的所有特性。