C# 面向?qū)ο缶幊痰暮x
面向?qū)ο缶幊探鉀Q了傳統(tǒng)編程技巧的許多問題。過程化編程(Procedural Programming)常會(huì)導(dǎo)致所謂的單一應(yīng)用程序,即所有功能都包含在幾個(gè)代碼模塊(常常是一個(gè)代碼模塊)中。而使用OOP技術(shù),通常要使用許多代碼模塊,每個(gè)模塊都提供特定功能。而且,每個(gè)模塊都是孤立的,甚至與其他模塊完全獨(dú)立。這種模塊化編程方法提供了非常豐富的多樣性,大大增加了重用代碼的機(jī)會(huì)。
為進(jìn)一步說明這個(gè)問題,把計(jì)算機(jī)上的一個(gè)高性能應(yīng)用程序想象成一輛一流賽車。如果使用傳統(tǒng)的編程技巧,這輛賽車就是一個(gè)單元。如果要改進(jìn)這輛車,就必須替換整車,把它送回廠商那里,讓汽車專家升級(jí)它,或者購買一輛新車。如果使用OOP技術(shù),就只需要從廠商處購買新引擎,自己按照其說明替換它,而不必用鋼鋸切割車體。
在傳統(tǒng)應(yīng)用程序中,執(zhí)行流常是簡單的、線性的。把應(yīng)用程序加載到內(nèi)存中,從A點(diǎn)開始執(zhí)行,在B點(diǎn)結(jié)束,然后從內(nèi)存中卸載,在這個(gè)過程中可能用到其他各種實(shí)體,例如在存儲(chǔ)介質(zhì)上的文件或顯卡的功能,但處理的主體總是位于一個(gè)地方。用到的代碼一般與使用各種數(shù)學(xué)和邏輯方式處理數(shù)據(jù)相關(guān)。處理方法通常比較簡單,使用基本的數(shù)據(jù)類型(例如整型和布爾值)建立比較復(fù)雜的數(shù)據(jù)表達(dá)方式。
而使用00P,事情就不是這么直接了。盡管可以獲得相同的效果,但其實(shí)現(xiàn)方式是完全不同的。OOP技術(shù)以結(jié)構(gòu)、數(shù)據(jù)的含義以及數(shù)據(jù)和數(shù)據(jù)之間的交互操作為基礎(chǔ)。這通常意味著要把更多精力放在項(xiàng)目的設(shè)計(jì)階段,其好處是項(xiàng)目的可擴(kuò)展性比較高。一旦對(duì)某種類型的數(shù)據(jù)的表達(dá)方式達(dá)成一致,這種表達(dá)方式就會(huì)應(yīng)用到應(yīng)用程序以后的版本中,甚至是全新的應(yīng)用程序中。這種一致的表達(dá)方式可以極大地縮短開發(fā)時(shí)間。這就是上述賽車示例的工作原理-這里的一致是指“引擎”的代碼是結(jié)構(gòu)化的,這樣就可以很容易地替換成新代碼(即新引擎), 而不需要找廠商幫忙。這也表示,引擎創(chuàng)建出來后可用于其他目的,可以把它安裝到另一輛車上,或者用它驅(qū)動(dòng)潛艇。
除了數(shù)據(jù)表達(dá)方式的一致性外,OOP編程還??梢院喕蝿?wù),因?yàn)檩^抽象實(shí)體的結(jié)構(gòu)和用法也是一致的。例如,不僅把輸出結(jié)果發(fā)送給設(shè)備(如打印機(jī))所使用的數(shù)據(jù)格式是一致的,而且與該設(shè)備交換數(shù)據(jù)的方法也是一致的,這包括它理解的指令等?;氐劫愜囀纠希_(dá)成的一致做法包括引擎如何連接到油箱,如何把驅(qū)動(dòng)力傳送給車輪等。
顧名思義,OOP技術(shù)要使用對(duì)象。
點(diǎn)擊加載更多評(píng)論>>