VB.NET和Java的OOP設計

我使用Visual Basic .NET的時間越長,我就越是欣賞.NET集合的語言和結構。作爲一名VB程序員,得知這個消息——我寫Java和J2EE程序的經驗在轉換到.NET的過程中是非常有用的——後,我非常興奮。這兩個語言越成熟,它們也就越相似。盡管Java實際上是一種面向對象編程(object-oriented programming,OOP)語言,它的許多設計還是受到了C++和Smalltalk的影響。

VB.NET采納了包括Java在內的許多其它面相對象編程語言的功能和特點。Visual Basic .NET把基本數據類型(字符串、整型、雙精度等等)轉換成帶有屬性和方法的對象;它還引入了Java類型的錯誤捕捉機制(用Try和Catch);VB.NET還把代碼編譯成微軟中間語言(Microsoft Intermediate Language,IL);它還提供了基于XML的應用程序配置。更重要的是設計面向對象解決方案的能力可以用任何語言實現。在本文中,我將比較Visual Basic .NET語言和Java;不過與其它面相對象編程語言來說,VB.NET現在本質上在走它自己的路。

另一方面,Sun公司最近公布它將在2003年夏季推出一種.NET風格的開發環境。這個新環境是否會讓Java成爲主流,我們只能拭目以待。Java所欠缺的一個優點就是友好的用戶界面,程序員在用Java寫應用程序之前往往不得不花上更多的時間來學會Java編程和面相對象編程的基本知識。用Visual Basic,開發者可以用他們所希望的任何方法(經常是錯誤的方法)來寫程序,這樣,在維護程序時,這成了一個大問題。在Sun的新的Java IDE(集成開發環境)在這個夏天出現之前,Sun公司應該向Java編程新手介紹幾個基本指南,讓他們體會到OOP設計的重要性。

OOP語法是獨立的嗎?

在Visual Basic中,如同在Java中那樣,任何東西都是對象——字符、整型以及它所以包括的其它基本類型。Visual Basic語言的早先版本包括了一些內建函數來處理字符串;字符串或者整型沒有屬性和方法。現在,在Visual Basic中,字符串和Java中的字符串幾乎是相同的。諸如字符串和雙精度這項基本類型的相同是確實的。在Java中,int和double(基本類型)依然存在,但在VB.NET中,它們成功的被各自的對象所取代。

把字符串和數字轉換成對象可以讓代碼更清楚、更少依靠編程語言本身。我們給出一個例子,爲了從一個字符串中找到一個字符,用早先版本的VB,程序員可能會這麽寫:

sMyString = Mid(sMyString,3,4)

現在,它可以被替換爲:

sMyString = sMyString.substring(3,4)

VB命令現在依然得到了保留,假如轉換時出現問題,它們還可以使用;但是在上面例子中的第二部分,用VB、Java或是C#實現,其語法是相同的。以我的經驗,VB程序員抛棄老VB語法采用「新的」面向對象編程技術幾乎不會出現問題。

事件句柄(event handlers)是VB.NET所提供的另一個強大補充,它的功能也可以與Java相提並論。(事件句柄在Java中也成爲「監聽者(listerer)」。)利用事件句柄,程序員可以給對象分配默認方法。例如,VB.NET開發者可以給Datagrid添加一個句柄來處理數據的改變。事件句柄的工作方式與前兩版VB中的回叫函數(callback function)相似。

解決設計問題

在面相對象編程中,「has a」和「is a」語句用來進行對象之間的聯系。在VB.NET中,這種類型的OOP關系的最好例子就是窗體中的默認(default)按鈕和取消(cancle)按鈕。在VB 6.0中,程序員需要設置按鈕的默認值,這樣回車鍵就起到了點擊按鈕的效果。當我剛剛發現VB.NET中不再提供這個屬性時,我非常迷惑。實際上,這個功能依然存在,但是移到窗體本身中去了。現在,每個窗體「has a」默認按鈕屬性,由此,可以把窗體的這個屬性賦值給按鈕對象。由于窗體可能只有一個默認按鈕和一個取消按鈕,這個改變很有意義。

用VB.NET遷移到OOP環境的過程中,我最關心的一個問題是現在有了更多的設計問題。在Java中,使用OOP需要在設計類和類之間的關系之前花費許多時間。假如沒有花上這些時間,就需要開發團隊的程序員變通性強,並且理解按計劃或者項目進程進行設計修訂的重要性。

在VB6中,許多程序員還趨向于寫大塊的過程(procedural)代碼。盡管這些代碼依然被VB.NET所支持,VB程序員還是需要在編寫代碼解決手頭問題之前把OOP實踐和設計結合到解決方案(它由對象和模式組成)中去。

配置企業應用程序

Visual Studio已經開始實現了用與J2EE類似的技術來配置應用程序和方案,這主要通過XML配置文件。「app.config」文件組織了一種設置應用程序配置的標准方法。.NET安全可以通過控制面板進行配置。在Java中,這種配置的最近例子就是security.properties文件。

網絡應用程序現在同樣包括一個webconfig.xml的文件。在這個文件中,程序員可以選擇並配置數據庫連接字符串、安全以及其它選項。這種配置類型使得對Java程序員來說更輕易理解.NET是如何工作的,但是,更重要的是,它給了微軟開發員一種進行配置和展開應用程序的標准方法。

開發者的更多選項

很顯然,Java和VB越走越近了。我可以肯定,在OOP成熟之時,我們將會看到這些語言更加相似。例如,C#接近于Java的程度超過了它接近VB.NET的程度。

爲給定的應用做出一個好的設計一直都是一個挑戰。VB.NET使得這個挑戰變得簡單了一些。現在VB是一種面相對象編程語言,許多設計和編程選項已經向開發員開放了。同樣的,系統設計師可以更輕易的設計出OOP對象(如可重用的類)。這個挑戰將把OOP設計滲透到程序員的實踐之中,並讓我們確信設法增加分配給系統設計的時間是獲得最好的解決方案所必不可少的。

 
VB.NET和Java的OOP設計
  我使用Visual Basic .NET的時間越長,我就越是欣賞.NET集合的語言和結構。作爲一名VB程序員,得知這個消息――我寫Java和J2EE程序的經驗在轉換到.NET的過程中是非常有用的――後,我非常高興。這兩個語言越成熟,...查看完整版>>VB.NET和Java的OOP設計
 
Introduction to OOP in VB.NET
by 09/23/2002 Visual Basic .NET offers its users, among many other things, a fully object-oriented programming (OOP) experience. Some former VB6 developers have prepared themselves well to embrace thi...查看完整版>>Introduction to OOP in VB.NET
 
同Java一樣簡單!VB.NET多線程開發實例
  VB.NET(Visual Basic.NET)是爲適應Microsoft .NET框架的需要,對Visual Basic進行了重大改造後的開發工具。它比Visual Basic 6.0功能更強大,更易于使用。其中最重要的變化就是對象繼承,在VB.NET中,所有可管...查看完整版>>同Java一樣簡單!VB.NET多線程開發實例
 
UML工具推薦 Poseidon版本 可以免費下載,自動生成代碼 C++ Java C# VB.NET等 (來自德國漢堡的國際性建模軟件開發商Gentleware AG的)
Gentleware推出Poseidon for UML 2.3版本Gentleware推出Poseidon for UML 2.3版本 總部位于漢堡的國際性建模軟件開發商Gentleware AG今天向市場推出了Poseidon for UML的最新版本。和先前版本不同之處在于,新版本...查看完整版>>UML工具推薦 Poseidon版本 可以免費下載,自動生成代碼 C++ Java C# VB.NET等 (來自德國漢堡的國際性建模軟件開發商Gentleware AG的)
 
OOP語言技術比較:Java,C++,Object Pascal
本文將主要涉及三種面向對象語言:Internet上最流行的語言Java,最常見的OOP語言C++,以及Borland公司用于他們的集成開發環境Delphi中的Object Pascal。這三種語言具有很多相同點。本文將從多個技術角度對這三種語言...查看完整版>>OOP語言技術比較:Java,C++,Object Pascal