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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

再說面向?qū)ο?/h1>
2019-11-18 12:06:56
字體:
供稿:網(wǎng)友

  假如你采用了或者考慮采用面向?qū)ο缶幊蹋∣OP)技術(shù),那么你至少應(yīng)該弄清楚OOP到底具備什么含義、為什么要采用OOP技術(shù)。下面我提出一些你應(yīng)該了解的有關(guān)技術(shù)術(shù)語,同時談?wù)勥@些概念對你的解決方案而言所具備的意義。
  
  為什么要使用OOP?
  對象概念對軟件解決方案具有莫大的好處,在設(shè)計優(yōu)秀合理的情況下尤其如此。你可以只編寫一次代碼而在今后反復(fù)重用,而在非OOP的情況下你則多半要在應(yīng)用程序內(nèi)部各個部分反復(fù)多次編寫同樣的功能代碼。所以說,由于面向?qū)ο缶幊虦p少了編寫代碼的總量,從而加快了開發(fā)的進(jìn)度同時降低了軟件中的錯誤量。
  
  用來創(chuàng)建對象的代碼還可能用于多個應(yīng)用程序。比方說,你的團(tuán)隊可以編寫一組標(biāo)準(zhǔn)類來計算你的可用資源,然后用這些代碼在所有需要同類對象的解決方案中創(chuàng)建對象,比如客戶定單接口、股票價值報表和發(fā)給銷售隊伍的通知等等。
  
  OOP的另一優(yōu)點是對代碼結(jié)構(gòu)的影響。像繼續(xù)之類的面向?qū)ο蟾拍钔ㄟ^簡化變量和函數(shù)的方式而便利了軟件的開發(fā)過程。OOP可以更輕易地在團(tuán)隊之間劃分編碼任務(wù)。同時,由于采用OOP,辨別子類代碼的依附關(guān)系也變得更簡單了(比如說繼續(xù)對象的代碼)。此外,軟件的測試和調(diào)試也得以大大簡化。
  
  但是OOP也存在一些固有的缺點。假如某個類被修改了,那么所有依靠該類的代碼都必須重新測試,而且還可能需要重新修改以支持類的變更。還有,假如文檔沒有得到仔細(xì)的維護(hù),那么我們很難確定哪些代碼采用了父類(被繼續(xù)的代碼)。假如在開發(fā)后期發(fā)現(xiàn)了軟件中的錯誤,那么它可能影響應(yīng)用程序中的相當(dāng)大部分的代碼。
  
  面向?qū)ο缶幊淘诰幊趟枷肷贤瑐鹘y(tǒng)開發(fā)不同,需要開發(fā)人員轉(zhuǎn)變傳統(tǒng)開發(fā)中所具備的慣性思維方式。對一個有經(jīng)驗的OOP開發(fā)隊伍來說,采用OOP的好處是顯而易見的。假如你正在考慮轉(zhuǎn)向OOP,那么你必須保證已經(jīng)擁有了富有經(jīng)驗的主要開發(fā)人員能負(fù)責(zé)地檢查軟件中的缺陷和體系結(jié)構(gòu)。
  
  下面我們就看看OOP技術(shù)到底能為你做些什么;了解了解有關(guān)的概念和術(shù)語。
  
  對象定義
  對象是建立面向?qū)ο蟪绦蛩揽康幕締卧S酶鼘I(yè)的話來說,所謂對象就是一種代碼的實例,這種代碼執(zhí)行特定的功能,具有自包含或者封裝的性質(zhì)。這種封裝代碼通常叫做類、對象類或者模塊或者在不同編程語言中所應(yīng)用的其他名稱。以上這些術(shù)語在含義上稍微有些不同,但它們都是代碼的集合。
  
  正如我上面提到的那樣,對象本身是類或者其他數(shù)據(jù)結(jié)構(gòu)的實例。這就是說,現(xiàn)有的物理代碼起到了創(chuàng)建對象的模版作用。執(zhí)行特定功能的代碼只需要編寫一次卻被引用多次。每一種對象具有自己的標(biāo)識,也就是令對象相互區(qū)別的對象名稱。
  
  對象并不是類的實際拷貝。每一對象都有自己的名稱空間,在這種名稱空間中保存自己的標(biāo)識符和變量,但是對象要引用執(zhí)行函數(shù)的原有代碼。
  
  “封裝”的對象具有自己的函數(shù),這種函數(shù)被稱作“方法”,而對象的變量則被稱為屬性。當(dāng)對象內(nèi)部定義了屬性的時候,它們通常不能擴(kuò)展到實例以外。假設(shè)我現(xiàn)有一個類叫vegetable(蔬菜),同時又創(chuàng)建了兩個對象實例 carrot(胡蘿卜)和 celery(芹菜),那么我給carrot設(shè)置的值就不會影響到celery內(nèi)部的值。vegetable自身內(nèi)部的變量卻永遠(yuǎn)不會得到定義,因為vegetable類只是一種模版。
  
  在特定的場合下,有些函數(shù)確實會影響類而不是由類所創(chuàng)建的對象。類屬性指的是專門設(shè)計來保留對象之間所用的值。類方法則用來定義和跟蹤類屬性。
  
  某些編程語言可以讓用戶調(diào)用類的函數(shù)而不是創(chuàng)建整個實例。假如函數(shù)被分配以標(biāo)識符(或者句柄),在某些情況下它們可以被視做具有自身權(quán)限的對象。不過,在大多數(shù)的情況下函數(shù)只是用來實現(xiàn)某種結(jié)果的方法。
  
  現(xiàn)在你已經(jīng)明白了對象的含義,接下來我,們就談?wù)剬ο笫窃趺词褂玫摹?br />  
  使用對象
  在主程序里,定義對象的類通過實例化的方式構(gòu)造對象。對象所具有的所有方法都可以用來創(chuàng)建所希望的結(jié)果,而屬性則可以被引用和操作。當(dāng)對象不再需要的情況下,主程序可以破壞對象。
  
  對象類有一種功能強(qiáng)大的特性,這就是它們可以繼續(xù)其他類。這就意味著,假如我們編寫了某個potato(土豆)類,那么它就可以繼續(xù)vegetable類而防止我們重新編寫已經(jīng)存在的功能。Vegetable類可用的所有函數(shù)都可以被potato類使用。進(jìn)而,vegetable又可以繼續(xù)food(食品)類,以此類推。
  
  某些OOP編程語言還具有動態(tài)綁定(dynamic binding)的概念。這項技術(shù)也被稱做多重繼續(xù)。比如說,potato類可以繼續(xù)vegetable和starch(淀粉)類。不過這樣可能會產(chǎn)生一些問題,比如兩種類都具有同樣名稱的一些屬性。在具體處理多重繼續(xù)概念的時候各種語言的方式是不同的,某些語言完全禁用這一概念。
  
  在繼續(xù)了類后,我們可以通過重載方法來獲得希望的結(jié)果。比如,我的vegetable類可能有一個函數(shù)名叫PRepare,該方法主要指導(dǎo)你如何備菜。可是,在實例化potato類的時候我希望其中包含與土豆有關(guān)的非凡定義,于是我創(chuàng)建了一個函數(shù),它的名字和蔬菜類中的備菜函數(shù)名一樣但卻修改了原有的函數(shù)行為。假如我沒有重載prepare方法,則用到的是vegetable類中的函數(shù)。這就叫多態(tài)性(polymorphism)。
  
  多態(tài)性的另一方面涉及到對象方法的類型一致性問題。這樣有助于保證所引用的函數(shù)具有以下關(guān)系:假如我能夠?qū)嵗痸egetable對象,那么我就應(yīng)該能夠?qū)嵗痯otato對象。這是因為potato是vegetable.的子類。可是,因為vegetable并不是potato的子類,所以反過來的實例化卻是不答應(yīng)的。假如我實例化了potato對象,那么我就不需要實例化vegetable對象了。
  
  如何定義多態(tài)性有各種觀點,而其最終用途卻是同樣的。無論如何,這是一種重要的OOP概念。再結(jié)合繼續(xù)技術(shù),顯然OOP為什么具有如此強(qiáng)大開發(fā)功能的原因不言自明。
  
  小結(jié)
  本文的意圖并不在于深度解釋面向?qū)ο缶幊碳夹g(shù),我介紹的要害詞和術(shù)語只是對現(xiàn)有只是的淺嘗輒止。假如你初次接觸OOP或者頭一回讀到有關(guān)的概念,我希望你現(xiàn)在能明白OOP技術(shù)成為現(xiàn)代軟件開發(fā)主流的原因。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

主站蜘蛛池模板: 巴中市| 亚东县| 潞城市| 旅游| 青铜峡市| 岳西县| 乐东| 慈溪市| 紫云| 宝山区| 厦门市| 揭阳市| 平罗县| 城步| 延安市| 九寨沟县| 四川省| 罗源县| 遵义县| 万安县| 盖州市| 资阳市| 宣威市| 壶关县| 汝州市| 左贡县| 河间市| 修水县| 西宁市| 龙胜| 祥云县| 望城县| 勐海县| 昌邑市| 容城县| 青神县| 海兴县| 德惠市| 新干县| 泰来县| 五大连池市|