国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

面向對象軟件開發(fā)的十大原則

2019-11-17 04:52:15
字體:
來源:轉載
供稿:網友

  對于開發(fā)人員來說,時時回過頭來檢查一下應用程序是非常有用的??紤]一下這個應用程序是否達到了預期目的?是否遵循了最佳方案?要想實現(xiàn)目的是否還存在更好的方法?溫故而知新,也許你會從回顧中發(fā)現(xiàn)新的思路。

  本文就提出10種頂尖的面向對象的編程技術來幫助你對應用程序進行評價,希望你使用這10個頂尖技術從面向對象的編程中獲得最大利益。

  1. 重新審閱對象的聲明操作

  如何聲明對象變量會給對象的使用和性能帶來重大的影響。你應該使用這個語法:

    PRivate m_oCust As Ccustomer

注重一定要使用正確的范圍。在大多數(shù)情況下,你希望對象變量是私有的。假如只是在一個特定的程序中需要這個對象,就可以用Dim來聲明它是屬于那個程序私有的。假如在整個類或表單模塊中都需要它的話,就應該用Private 在那個類或表單的頂部聲明它。按照習慣,在模塊層聲明的變量要加一個前綴 "m_",以表示用于模塊層或成員變量。假如需要從類外部使用對象變量,就不要將變量設成Public,寧可定義一個Property Get程序來使用對象變量,這樣就防止了其它代碼不用你不希望的方法去使用變量。

  在聲明中,總是使用類名稱,而不要使用 "As Object",因為使用 "As Object" 會使對象變量成為后期捆綁(late-bound)。這就意味著在運行時間之前,Visual Basic不知道你將使用的對象類型,因此它不能給你提供自動列表成分(對象屬性和方法的下拉列表)。更重要的是,在運行時會對早期捆綁(early-bound)對象造成明顯的性能沖擊。

  最后,在聲明中不要使用"New"這個要害字。使用要害字"New"時,將在引用它的任何時間自動創(chuàng)建對象,這對性能會造成稍微的影響,因為每個對象的屬性和方法調用都必須進行校驗以確定對象是否被創(chuàng)建了。使用"New"這個要害字還會給調試帶來噩夢,因為在對象被破壞之后,假如你不經意地再次引用它的話,應用程序會自動地重新創(chuàng)建對象。當你預備移植到.NET時,理解這一點更加重要,因為在那里要害字"New"有一個不同的意義。在.NET中,要害字"New"答應你在聲明時創(chuàng)建一個對象,比如下面這條語句將創(chuàng)建一個新的Customer對象:

   Private mo_Cust as New CCustomer()

  2. 重視對象清除行為

  當不再需要對象變量時,一定要釋放它們,然后VB就會破壞與變量相聯(lián)系的對象,從而釋放應用程序中的內存。使用下面的代碼釋放一個對象:

   Set x = Nothing

  3. 封裝的重大作用

  Encapsulate(封裝)從字面上講就是放入封套或"放在一個殼子中"。從面向對象編程 (OOP) 的角度來看,這意味著將所有與一個對象相關的數(shù)據(jù)和處理都放在它的類中。

  封裝有時候指的是信息隱藏,因為你將對象的數(shù)據(jù)藏在了類的內部。假如其它的類需要使用數(shù)據(jù),可以使用屬性程序(.NET 中的屬性聲明)來暴露這些數(shù)據(jù)。這個行為為類提供了控制, 它控制用戶可以如何觀看或刷新數(shù)據(jù),并且防止其它對象誤用數(shù)據(jù)。

  封裝使得對象之間的交互作用變得簡單化。一個對象不用知道另一個對象的全部數(shù)據(jù)或者其數(shù)據(jù)是如何治理的,就能夠使用這個對象。例如,一個Customer對象可能有名字和地址屬性以及電話號碼、信用歷史和其它相關域。假如一個Invoice 對象想要使用一個 Customer 對象,它可以為發(fā)票請求名字和地址,而不需要知道Customer是從哪里獲取那個數(shù)據(jù)的,或者其它數(shù)據(jù)元素是什么。

  對于如何為可擴展的標記語言(xml)將文檔對象模型 (DOM) 封裝在一個包裝類中的解決方案,請參考此文,這使你能夠更輕易地與一個XML文件進行交互作用,而不需要知道DOM的細節(jié)。

  4. 狀態(tài)監(jiān)視問題

  良好的基于組件的開發(fā)技術會頻繁地要求無狀態(tài)的對象。無狀態(tài)對象沒有保持的屬性,只有方法。你可以訪問一個無狀態(tài)的組件,執(zhí)行方法,然后不需要獲取方法調用間的任何數(shù)據(jù)就可以完成處理。

  有一些OOP方面的文章提出沒有屬性的對象就不是對象。 但是我們現(xiàn)在忽略這個語義上的問題,你可以創(chuàng)建有方法而沒有屬性的類。當你從事COM+或Web開發(fā)時,經常會需要這樣做。一個asp頁面可以在一個組件上執(zhí)行一個方法來完成一個非凡的處理,然后再釋放組件,不用為治理對象狀態(tài)而費心。

  5. 傳遞參數(shù)的可擴展性

  參數(shù)提供了類的方法之間傳遞信息的途徑。你需要用參數(shù)向方法傳遞任何必要的數(shù)據(jù),非凡是當你需要無狀態(tài)對象的時候。

  例如,無狀態(tài)對象Customer 的PlaceOrder方法要求把客戶的信息作為參數(shù)傳遞給它,然后PlaceOrder方法就用這個信息來完成必要的處理。

  當定義方法的參數(shù)時,一定要使它們可以擴展。例如,下面這行代碼是不可擴展的:

   Public Function PlaceOrder(sLastName as String, sFirstName as String, sAddress as String)

  要想調用這個方法你必須傳遞這3個參數(shù)。但是假如你以后決定在定單上還需要電話號碼,就必須修改函數(shù)簽名,這就破壞了兼容性以及每個調用此方法的代碼段。為了防止這個問題的發(fā)生,一個更好的解決方法是:在一個容器中傳遞參數(shù)。你可以使用記錄集、變量數(shù)組或 XML字符串來傳遞更普通的參數(shù)。

  當轉移到.NET時,這個技巧就不是十分必要了,因為在.NET中你可以進行函數(shù)裝載,這樣就可以具有兩套不同參數(shù)的同一個函數(shù):

Public Function PlaceOrder(sLastName _
as String, sFirstName as String, sAddress as String)
Public Function PlaceOrder(sLastName _
as String, sFirstName as String, _
sAddress as String, sPhone as String)

更多的請看:http://www.QQread.com/windows/2003/index.Html
  6. 現(xiàn)在就使用XML

  XML提供了一個治理狀態(tài)和在應用程序的組件之間傳遞它的很好方法。 你可以用任何喜歡的格式來定義XML,然后可以從XML字符串插入、更新、刪除或回顧任何信息。

  XML最好的一點是它的跨平臺性并擁有獨立的銷售商。XML既不是Microsoft的技術也不是Sun的技術,是萬維網聯(lián)盟W3C控制著這個標準,具體細節(jié)請參見原文。

  XML成為了.NET中的數(shù)據(jù)存取標準,所以現(xiàn)在就使用會使你一路領先。

  7. 定義靈活的界面

  界面(Interfaces)提供了一個在運行時間插入組件的很好途徑。你可以定義一個界面,建立一個執(zhí)行它的類,然后就可以在任何時間,很輕易地用任何執(zhí)行同一界面的其它類來代替這個類。

  例如,你可以開發(fā)一個郵件列表的標簽打印組件,并且定義這個組件所要求的標準界面。在這個例子中,那個界面包括名字和地址信息。然后,任何執(zhí)行這個界面的類都可以使用這個組件,而不需要對其進行任何修改。一個執(zhí)行標簽打印界面的客戶類可以使用這個組件來打印客戶郵件標簽,一個執(zhí)行標簽打印界面的職員類可以使用這個組件來打印薪水標簽等。

  8. 繼續(xù)功能

  繼續(xù)是OOP的一個要害原則,它答應你定義一個對象的基礎功能,然后將那個功能應用于對象的特定子類中。

  例如,你可以為一個客戶(Customer)對象定義基礎功能,可以恢復和保存數(shù)據(jù)以及計算一個折扣。然后就可以定義一個政府客戶對象,讓它繼續(xù)客戶對象的所有功能,但是屏蔽掉折扣計算,因為給政府客戶的折扣更高。

  在VB.NET中,你很快就能實現(xiàn)這些。

  9. 按照模型進行處理

  開發(fā)一個描述交易的域模型對于理解應用程序的目的以及它應該解決的問題是非常有用的。 
但是有一個常見的錯誤是取得域的模型并試圖為它編碼。相反,你應該融合域模型到一個執(zhí)行模型中,這個執(zhí)行模型定義了如何建立類的方法。融合過程中,需要考慮許多因素,請參閱建立對象模型。

  10. 了解OOP,使用OOP

  所有的.NET都是面向對象的。現(xiàn)在你對OOP了解得越多,理解得越好,將來轉移到.NET就越輕易。在所有項目中都要預備好使用類模型。假如你不了解OOP,或者雖然你了解它但是并不真正理解它,可以采用一個OOP類。OOP技術很快就會成為你的第二個自我,你會發(fā)現(xiàn)想記起原來是怎么編碼的都很困難。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 岗巴县| 碌曲县| 乌兰县| 化德县| 麻城市| 南昌市| 清镇市| 昭苏县| 灯塔市| 南昌县| 定襄县| 唐山市| 满洲里市| 宁津县| 全州县| 邻水| 泊头市| 泾源县| 家居| 南乐县| 大庆市| 富民县| 彝良县| 得荣县| 平罗县| 错那县| 盐池县| 会泽县| 定安县| 阳朔县| 洪雅县| 麻城市| 康平县| 肇东市| 渝北区| 黎城县| 潍坊市| 浦城县| 陆良县| 县级市| 淳化县|