C++概述



學習目標


1.掌握C++語言的用法


C++的特性繼承,多態,封裝,運算符重載,輸入輸出流,以及標準模板庫的使用。


2.初步掌握面向對象的基本概念和基本思想


為什么是初步掌握吶?面向對象的理論是比較深奧的,只有在實踐中不斷學習,不斷總結。并不是你通過學習一門C++語言就可以學會的。


3.可以使用C++解決相關問題


這個需要大家多練,多寫代碼,編程是一門實踐性的學科。在課程中我會帶著大家寫代碼。



C++的歷史


1980年,貝爾實驗室的Bjarne Stroustrup開始對C進行改進和擴充。


1983年正式命名為C++。


1.從C語言發展演變而來的;


2.兼容C;


3.支持C的面向過程方法;


4.支持面向對象方法;


大家已經學習了C語言的基礎部分,從C語言轉向學習C++并不是兩門語言的變化,而是面向過程到面向對象的編程理念的變化—是一種思維方式的轉變。如果大家有C語言的基礎學習C++的語法是非常輕松的,但是學習面向對象編程來說可能就有一些難度。因為面向過程和面向對象是兩種完全不同的思維方式。由于面向過程思想的先入為主,這為轉向面向對象編程增加了難度。



面向過程和面向對象的介紹


1.面向過程(結構化程序設計)


采用自頂向下、分而治之的方法,將整個程序按功能劃分為幾個可獨立編程的子過程模塊,每一子模塊完成指定的子任務,主過程通過調用各子過程完來成全部處理工作 。 


2.面向對象的程序設計(Object-Oriented Programming)


面向對象的程序設計方法強調直接以現實世界中的物體為中心來思考和認識問題,并按照這些事物的本質特征把它們抽象為類。采用數據抽象和數據隱藏,類之間互相交互,共同構成大型的面向對象基礎。


3.面向對象的相關概念


1)類(Class):具有相似屬性和行為的一組對象,就稱為類。可見,有了類的概念以后,就可以對具有共同特征的事物進行統一描述;


2)對象(Object):類的實例,每個對象都具有屬性和方法這兩方面的特征。對象的屬性描述了對象的狀態和特征,對象的方法說明了對象的行為和功能,并且對象的屬性值只應由這個對象的方法來讀取和修改,兩者結合在一起就構成了對象的完整描述。;


3)封裝(Encapsulation):封裝把對象的屬性和方法看成了一個密不可分的整體,從而使對象能夠完整地描述并對應于一個具體事物 ;


4)繼承(Inheritance):在面向對象的程序設計中,允許在已有類的基礎上通過增加新特征而派生出新的類,這稱為繼承。其原有的類稱為基類(base class),而新建立的類稱為派生類(derived class);


5)消息(Message):當一個對象需要另外一個對象提供服務時,它向對方發出一個服務請求,而收到請求的對象會響應這個請求并完成指定的服務。這種向對象發出的服務請求就稱為消息。所謂消息就是調用一個對象所提供的方法;


6)多態性(Polymorphism):多態性是面向對象的一個重要特征。多態有兩種,靜態的和動態的。在通過繼承而派生出的一系列類中,可能存在一些名稱相同,但實現過程和功能不同的方法(Method)。 當程序中的其他部分發出同樣的消息時,按照接收消息對象的不同能夠自動執行類中相應的方法。其好處是,用戶不必知道某個對象所屬的類就可以執行多態行為,從而為程序設計帶來更大方便。 


4.面向對象編程的特點 


1)OOP以“對象”或“數據”為中心。由于對象自然地反映了應用領域的模塊性,因此具有相對穩定性,可以被用作一個組件去構成更復雜的應用,又由于對象一般封裝的是某一實際需求的各種成分,因此,某一對象的改變對整個系統幾乎沒有影響;


2)引入了“類”(class)的概念。類與類以層次結構組織,屬于某個類的對象除具有該類所描述的特性外,還具有層次結構中該類上層所有類描述的全部性質,OOP中稱這種機制為繼承;


3)OOP方法的模塊性與繼承性,保證了新的應用程序設計可在原有對象的數據類型和功能的基礎上通過重用、擴展和細化來進行,而不必從頭做起或復制原有代碼,這樣,大大減少了重新編寫新代碼的工作量,同時降低了程序設計過程中出錯的可能性,達到了事半功倍的效果。


5.設計了良好的OOP系統具有的特性


1)可維護性:軟件在投入使用的過程中,隨著運行時間的延長,后期可能就不符合客戶的需求了,我們就需要對軟件進行修改。后期維護的人員初期可能沒有參與到軟件的開發中,對軟件的結構是不熟悉的。那OOP系統就能保證后期的維護比較方便,比較簡單;


2)可擴展性:在軟件運行后期我們需要對軟件新增一些功能的時候,不需要對軟件的架構進行大的更改就能非常方便的增加一些功能;


3)可復用性:我們在這一個項目中使用的一些代碼和類,模塊可以很容易的拿到另外一個項目中去使用;


4)健壯性:軟件要比較穩定,出錯的幾率比較小。


6.二者比較 


1)傳統的結構化程序設計方法以過程為中心構造應用程序,數據和處理數據的過程代碼是分離的、相互獨立的實體,設計出的程序可重用代碼少,且當代碼量增加時維護數據和代碼的一致性困難;


2)面向對象程序設計方法中,對象所具有的封裝性和繼承性使得代碼重用成為可能,并大大減少了程序出錯的可能性;


3)面向對象方法吸收了結構化程序設計方法的優點,同時引入了新概念、新機制并建立了比傳統方法更高層次的抽象。面向對象內部也包含了面向過程,比如我們在設計類中的一個方法時,我們就會采用面向過程的一些原則,一些思想等等…….


7.一些誤區


1)面向對象優于面向過程:面向對象與面向過程沒有絕對的優劣之分,只有是否適用之別;


2)C++ = C + 類, C++的編程思想被很大的改變,如果僅僅只是適用類將C封裝起來,那不是C++的面向對象的原則;


3)使用面向對象技術一定能構造出更優秀的軟件:有人認為面向對象做出來的軟件一定是非常優秀的,但是面向對象不慎誤用,或者是面向對象編程的思想沒有掌握好的話,這樣的軟件只會比面向過程寫出的軟件更糟糕而已;


4)學會了C++就學會了面向對象技術,這個我們前面也已經說過,學習C++只是學習面向對象的第一步,后面還需要學習面向對象的一些原理,原則和方法。更是需要自己去實踐,對面向對象不斷加深理解。 



推薦書籍


1. C++程序設計(譚浩強)


2.C++ Primer Plus(特別適合初學者,內容全面且是經典)


3. C++ Primer(類似于一本工具書,內容全面,可以用來查閱,不適合初學者)


4. C++  Program Language(C++之父的一本書,里面介紹了一些C++的高級特性)


5.C++ 對象模型(講述C++內部實現的一些機制)


6.Effect C++ (后面兩本書描述了一些C++常犯的錯誤,一些小技巧,可以當做閑書翻閱)


7.More effective C++



【本文由麥子學院獨家原創,轉載請注明出處并保留原文鏈接】

logo
? 2012-2016 www.jvbprd.live
蜀ICP備13014270號-4 Version 5.0.0 release20160127

免費領取價值1888元求職寶典!

客服熱線 400-862-8862

回到頂部

彩票安徽25选5