老生常談的一個問題: 面向對象和麵向過程區別是什麼? 1.面向對象:把一系列對事物描述封裝成類,則由對象來完成業務中特定的功能 他有屬性,構造器,方法,以及這個對象的行為,冒個特定的方法封裝成一個類,從而由類產生多個對象 2.面向過程:就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現 ...
老生常談的一個問題:
面向對象和麵向過程區別是什麼?
1.面向對象:把一系列對事物描述封裝成類,則由對象來完成業務中特定的功能 他有屬性,構造器,方法,以及這個對象的行為,冒個特定的方法封裝成一個類,從而由類產生多個對象
2.面向過程:就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了 (個人觀點 PL/SQL里存儲函數就是面向過程開發)
具一個小列子:做飯需要幾步,買菜生火炒菜 面向過程自己買菜->生火->做飯->吃飯 面向對象 由對象(廚師)去幫我完成 我只需要吃飯即可
我們都知道OOP是java的核心編碼,把一系列對事物描述封裝成類,則由對象來完成業務中的功能,還有數據存儲,模型定義等等。。。。
面向對象的編程方法具有四個基本特征:
1.抽象:
抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地註意與當前目標有關的方面。抽象並不打算瞭解全部問題,而只是選擇其中的一部分,暫時不用部分細節。比如,我們要設計一個學生成績管理系統,考察學生這個對象時,我們只關心他的班級、學號、成績等,而不用去關心他的身高、體重這些信息。抽象包括兩個方面,一是過程抽象,二是數據抽象。過程抽象是指任何一個明確定義功能的操作都可被使用者看作單個的實體看待,儘管這個操作實際上可能由一系列更低級的操作來完成。數據抽象定義了數據類型和施加於該類型對象上的操作,並限定了對象的值只能通過使用這些操作修改和觀察。
2.繼承:繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增加新的方法使之更適合特殊的需要。這也體現了大自然中一般與特殊的關係。繼承性很好的解決了軟體的可重用性問題。比如說,所有的Windows應用程式都有一個視窗,它們可以看作都是從一個視窗類派生出來的。但是有的應用程式用於文字處理,有的應用程式用於繪圖,這是由於派生出了不同的子類,各個子類添加了不同的特性。
3.封裝:
封裝是面向對象的特征之一,是對象和類概念的主要特性。封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。一旦定義了一個對象的特性,則有必要決定這些特性的可見性,即哪些特性對外部世界是可見的,哪些特性用於表示內部狀態。在這個階段定義對象的介面。通常,應禁止直接訪問一個對象的實際表示,而應通過操作介面訪問對象,這稱為信息隱藏。事實上,信息隱藏是用戶對封裝性的認識,封裝則為信息隱藏提供支持。封裝保證了模塊具有較好的獨立性,使得程式維護修改較為容易。對應用程式的修改僅限於類的內部,因而可以將應用程式修改帶來的影響減少到最低限度。
4. 多態性:
多態性是指允許不同類的對象對同一消息作出響應。比如同樣的加法,把兩個時間加在一起和把兩個整數加在一起肯定完全不同。又比如,同樣的選擇編輯-粘貼操作,在字處理程式和繪圖程式中有不同的效果。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共用、代碼共用的優勢,很好的解決了應用程式函數同名問題。
面向對象程式設計具有許多優點:
1、開發時間短,效率高,可靠性高,所開發的程式更強壯。由於面向對象編程的可重用性,可以在應用程式中大量採用成熟的類庫,從而縮短了開發時間。
2、應用程式更易於維護、更新和升級。繼承和封裝使得應用程式的修改帶來的影響更加局部化。