(回答這種問題我們需要知道啥是物件導向?基本特徵有哪些及其含義與作用?)
面向過程:面向過程就是解決問題的具體步驟:第一步幹啥,第二步幹啥等等一系列的步驟......
優點:效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、 linux/unix等一般採用面向過程開發,效能是最重要的因素。
缺點:沒有物件導向易維護、易復用、易擴充套件
物件導向:物件導向就是發明一些東西,這乙個東西解決這一模組的內容,另乙個東西解決另乙個模組的內容,許多個東西組合起來就是解決這個問題的方法了。
優點:易維護、易復用、易擴充套件,由於物件導向有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易於維護
缺點:效能比面向過程低。
基本特性:
封裝:
封裝就是隱藏物件的屬性和實現細節,僅對外公開介面,控制在程式中屬性的讀和修改的訪問級別,將抽象得到的資料和行為(或功能)相結合,形成乙個有機的整體,也就是將資料與運算元據的源**進行有機的結合,形成「類」,其中資料和函式都是類的成員。封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過外部介面,以特定的訪問許可權來使用類的成員。
繼承:
物件導向程式設計 (oop) 語言的乙個主要功能就是「繼承」。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。
通過繼承建立的新類稱為「子類」或「派生類」。
被繼承的類稱為「基類」、「父類」或「超類」。
繼承的過程,就是從一般到特殊的過程。
要實現繼承,可以通過「繼承」(inheritance)和「組合」(composition)來實現。
在某些 oop 語言中,乙個子類可以繼承多個基類。但是一般情況下,乙個子類只能有乙個基類,要實現多重繼承,可以通過多級繼承或者介面來實現。
繼承概念的實現方式有三類:實現繼承、介面繼承和可視繼承。
實現繼承是指使用基類的屬性和方法而無需額外編碼的能力;
介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;
可視繼承是指子窗體(類)使用基窗體(類)的外觀和實現**的能力。
多型:
多型同乙個行為具有多個不同表現形式或形態的能力。是指乙個類例項(物件)的相同方法在不同情形有不同表現形式。多型機制使具有不同內部結構的物件可以共享相同的外部介面。這意味著,雖然針對不同物件的具體操作不同,但通過乙個公共的類,它們(那些操作)可以通過相同的方式予以呼叫。
重視基礎,打好基本功
看到 演算法與資料結構考研試題精析 這本書有感。現在會看感覺以前沒有認識到基礎的意義,就那些考試還有面試問題左移,指標那些你覺得沒有意義,你當時覺得學那些東西沒有意義。你當時的意義好像就是激情,而且反正激情也能做出東西,所以那些對你而言就覺得沒什麼意義 現在回看這種想法很錯誤。你以前確實非常不重視基...
C語言基本功教程系列 1
看了那麼多文章,感覺到大家學習遊戲程式設計的熱情.經常看到很多人提出關於opengl directx,和computer graphics的問題.但是我個人人為,遊戲程式設計,最最最重要的還是c c 語言的基本功.如何編寫高效率,整潔,和盡可能少的bug的 是成為乙個遊戲程式設計員的關鍵.所以我開拉...
技術TL的基本功
時間這麼寶貴,因為時間是 絕對的 對於明天的1小時,或者是後天的1小時,它們都是等價的,過去就不會再回來。因此我們對於時間的焦慮,本質還是對於 絕對的時間觀 產生的,這也是伽利略和牛頓倡導的。但萊布尼茨 哥德爾和愛因斯坦,卻不這麼看,他們認為時間 不過是一些因果關係鏈上先後發生的事件的次序 前面一件...