1.面向過程(結構化程序設計)
采用自頂向下、分而治之的方法睹欲,將整個程序按功能劃分為幾個可獨立編程的子過程模塊供炼,每一子模塊完成指定的子任務,主過程通過調用各子過程完來成全部處理工作窘疮。
2.面向對象的程序設計(Object-Oriented Programming)
面向對象的程序設計方法強調直接以現(xiàn)實世界中的物體為中心來思考和認識問題袋哼,并按照這些事物的本質特征把它們抽象為類。采用數(shù)據(jù)抽象和數(shù)據(jù)隱藏考余,類之間互相交互先嬉,共同構成大型的面向對象基礎。
3.面向對象的相關概念
1)類(Class):具有相似屬性和行為的一組對象楚堤,就稱為類疫蔓『茫可見,有了類的概念以后衅胀,就可以對具有共同特征的事物進行統(tǒng)一描述岔乔;
2)對象(Object):類的實例,每個對象都具有屬性和方法這兩方面的特征滚躯。對象的屬性描述了對象的狀態(tài)和特征雏门,對象的方法說明了對象的行為和功能,并且對象的屬性值只應由這個對象的方法來讀取和修改掸掏,兩者結合在一起就構成了對象的完整描述茁影。癞揉;
3)封裝(Encapsulation):封裝把對象的屬性和方法看成了一個密不可分的整體偶惠,從而使對象能夠完整地描述并對應于一個具體事物 ;
4)繼承(Inheritance):在面向對象的程序設計中罗捎,允許在已有類的基礎上通過增加新特征而派生出新的類愿待,這稱為繼承浩螺。其原有的類稱為基類(base class),而新建立的類稱為派生類(derived class)仍侥;
5)消息(Message):當一個對象需要另外一個對象提供服務時要出,它向對方發(fā)出一個服務請求,而收到請求的對象會響應這個請求并完成指定的服務农渊。這種向對象發(fā)出的服務請求就稱為消息患蹂。所謂消息就是調用一個對象所提供的方法;
6)多態(tài)性(Polymorphism):多態(tài)性是面向對象的一個重要特征腿时。多態(tài)有兩種况脆,靜態(tài)的和動態(tài)的。在通過繼承而派生出的一系列類中批糟,可能存在一些名稱相同,但實現(xiàn)過程和功能不同的方法(Method)看铆。 當程序中的其他部分發(fā)出同樣的消息時徽鼎,按照接收消息對象的不同能夠自動執(zhí)行類中相應的方法。其好處是弹惦,用戶不必知道某個對象所屬的類就可以執(zhí)行多態(tài)行為否淤,從而為程序設計帶來更大方便。
4.面向對象編程的特點
1)OOP以“對象”或“數(shù)據(jù)”為中心棠隐。由于對象自然地反映了應用領域的模塊性石抡,因此具有相對穩(wěn)定性,可以被用作一個組件去構成更復雜的應用助泽,又由于對象一般封裝的是某一實際需求的各種成分啰扛,因此嚎京,某一對象的改變對整個系統(tǒng)幾乎沒有影響;
2)引入了“類”(class)的概念隐解。類與類以層次結構組織鞍帝,屬于某個類的對象除具有該類所描述的特性外,還具有層次結構中該類上層所有類描述的全部性質煞茫,OOP中稱這種機制為繼承帕涌;
3)OOP方法的模塊性與繼承性,保證了新的應用程序設計可在原有對象的數(shù)據(jù)類型和功能的基礎上通過重用续徽、擴展和細化來進行蚓曼,而不必從頭做起或復制原有代碼,這樣钦扭,大大減少了重新編寫新代碼的工作量纫版,同時降低了程序設計過程中出錯的可能性,達到了事半功倍的效果土全。
5.設計了良好的OOP系統(tǒng)具有的特性
1)可維護性:軟件在投入使用的過程中捎琐,隨著運行時間的延長,后期可能就不符合客戶的需求了裹匙,我們就需要對軟件進行修改瑞凑。后期維護的人員初期可能沒有參與到軟件的開發(fā)中,對軟件的結構是不熟悉的概页。那OOP系統(tǒng)就能保證后期的維護比較方便籽御,比較簡單;
2)可擴展性:在軟件運行后期我們需要對軟件新增一些功能的時候惰匙,不需要對軟件的架構進行大的更改就能非常方便的增加一些功能技掏;
3)可復用性:我們在這一個項目中使用的一些代碼和類,模塊可以很容易的拿到另外一個項目中去使用项鬼;
4)健壯性:軟件要比較穩(wěn)定哑梳,出錯的幾率比較小。
6.二者比較
1)傳統(tǒng)的結構化程序設計方法以過程為中心構造應用程序绘盟,數(shù)據(jù)和處理數(shù)據(jù)的過程代碼是分離的鸠真、相互獨立的實體,設計出的程序可重用代碼少龄毡,且當代碼量增加時維護數(shù)據(jù)和代碼的一致性困難吠卷;
2)面向對象程序設計方法中,對象所具有的封裝性和繼承性使得代碼重用成為可能沦零,并大大減少了程序出錯的可能性祭隔;
3)面向對象方法吸收了結構化程序設計方法的優(yōu)點,同時引入了新概念路操、新機制并建立了比傳統(tǒng)方法更高層次的抽象疾渴。面向對象內部也包含了面向過程千贯,比如我們在設計類中的一個方法時,我們就會采用面向過程的一些原則程奠,一些思想等等…….
7.一些誤區(qū)
1)面向對象優(yōu)于面向過程:面向對象與面向過程沒有絕對的優(yōu)劣之分丈牢,只有是否適用之別;
2)C++ = C +類瞄沙,C++的編程思想被很大的改變己沛,如果僅僅只是適用類將C封裝起來,那不是C++的面向對象的原則距境;
3)使用面向對象技術一定能構造出更優(yōu)秀的軟件:有人認為面向對象做出來的軟件一定是非常優(yōu)秀的申尼,但是面向對象不慎誤用,或者是面向對象編程的思想沒有掌握好的話垫桂,這樣的軟件只會比面向過程寫出的軟件更糟糕而已师幕;
4)學會了C++就學會了面向對象技術,這個我們前面也已經(jīng)說過诬滩,學習C++只是學習面向對象的第一步霹粥,后面還需要學習面向對象的一些原理,原則和方法疼鸟。更是需要自己去實踐后控,對面向對象不斷加深理解。