面向對象(Object Oriented),如何翻譯這個詞有不少說法,有人說這個翻譯不夠準確,應該是「物件導向」更準確,我的認爲後者更直白更好理解,以「物件」爲導向目標。程序員
1.面向對象(OO) 編程
編寫軟件是爲了解決某一問題,OO思想就是在編程過程當中把「問題域」中的內容映射到軟件系統中的一個個"物件"上,「物件」做爲一個獨立的個體,有本身的功能、狀態以及與其餘「物件」之間的聯繫,這些個體互相做用最終解決問題。函數
oo是把「問題域」中的內容通過抽象分析,在軟件的世界中創造與之對應的對象,這樣在思考問題的解決時,更符合人對世界的認識思惟模式,畢竟人在現實世界中碰到的問題、思考的問題造成的思惟模式更易於理解並具備廣泛性。而這些好處,對於軟件的開發的可維護性、可擴展性以及可複用性等都是有極大的好處的。性能
2.面向對象和麪向過程 編碼
與面向對象對應的是「面向過程(Procedure Oriented)」,它是以過程爲中心,分析出解決問題須要的步驟,而後這些步驟一步一步實現,使用的時候一個一個依次調用。這種解決問題的思惟模式和咱們上學時解數學方程式的方式差很少。咱們在學寫程序的時候,最開始學的通常也是這種方式,因此對與這種方式應該也不陌生,它也影響了咱們在coidng過程當中的實現,或者說潛意識的實現。spa
面向對象和麪向過程按發展的時間順序來看,面向過程在前,面向對象是軟件行業發展的必定程度時慢慢興起的,這是的軟件系統所涉及的內容更加多,解決的問題更加複雜,實現的方案更加龐大,這些問題驅使着更加適合的編程思想的出現。咱們不能說面向對象的變成就比面向過程的思想好,由於它們在解決不一樣的問題時,有各自的優點,對於系統級的應用以及須要性能和實時性的模塊中,對於那些對系統掌控能力比較強的程序員來講面向過程的編程思想更適合。不少時候,面向對象的編程思想設計實現的代碼中包含面向過程的思想。翻譯
3.OOA、OOD和OOP設計
面向對象(OO)更詳細的能夠分爲OOA,OOD,OOP。採用面向對象進行分析的方式稱爲OOA,採用面向對象進行設計的方式稱爲OOD,採用面向對象進行編碼的方式稱爲OOP。面向過程(OP)和麪向對象(OO)本質的區別在於分析方式的不一樣,最終致使了編碼方式的不一樣。咱們在拿到一個軟件需求時,確定要先分析需求,而後概要設計、詳細設計,最後編碼。這和咱們習慣的人類基本行爲方式的是同樣的:先想作什麼,再想如何去作,最後纔是作事情。對象
4.面向對象的四個基本特徵 繼承
面向對象的四個基本特徵 抽象、封裝、繼承、多態。
抽象就是把事物的信息細節進行提煉、抽象,找到事物的本質和重要屬性,以求簡化、歸納所觀察到的現實世界,併爲人們所用。抽象包括兩個方面,一是過程抽象,二是數據抽象。過程抽象是指任何一個明肯定義功能的操做均可被使用者看做單個的實體看待,儘管這個操做實際上可能由一系列更低級的操做來完成。數據抽象定義了數據類型和施加於該類型對象上的操做,並限定了對象的值只能經過使用這些操做修改和觀察。抽象是軟件開發的基礎。
封裝是將數據以及加在這些數據上的操做組織在一塊兒,成爲有獨立意義的對象或構件。這些構件隱藏了外部沒法直接訪問的一些數據,並提供必定的訪問接口來進行操做這些數據。信息隱藏是用戶對封裝性的認識,封裝則爲信息隱藏提供支持。封裝保證了模塊具備較好的獨立行、自治性,使得程序維護修改較爲容易。
繼承是一種聯結類的層次模型,而且容許和鼓勵類的重用,它提供了一種明確表述共性的方法。這也是對事物進行抽象分析以後得出的結果。對象的一個新類能夠從現有的類中派生,這個過程稱爲類的繼承,新類能夠從它所派生的類那裏繼承方法和實例變量,而且能夠修改或增長新的變量、方法使之更適合特殊的需求。繼承性很好地解決了軟件的可重用性問題。
多態是指對同一操做或消息不一樣的對象能作出不一樣的響應。多態性包括參數化多態性和包含多態性。多態性語言具備靈活、抽象、行爲共享、代碼共享的優點,很好的解決了應用程序函數同名問題。其中會涉及的兩個概念覆蓋和重載,是多態性的表現形式。覆蓋,是指子類從新定義父類的虛函數的作法。重載,是指容許存在多個同名函數,而這些函數的參數表不一樣(或許參數個數不一樣,或許參數類型不一樣,或許二者都不一樣)。
面向對象的編程思想可以使得人們在編寫程序、設計軟件的過程當中有跡可循,以更加熟悉和廣泛的思惟模式,更高效地編寫出更具備可維護性、可擴展性、可複用性的程序軟件,這也是每個程序員現階段編程必須具有的基本素質,也是成爲更加優秀程序員的必備的知識。