1. 程式人生 > >c++面向物件和c面向過程的一些概念

c++面向物件和c面向過程的一些概念

1.面向物件和麵向過程的概念

面向過程是分析解決問題的步驟,然後用函式把這些步驟一步一步的實現,然後在使用的時候一一呼叫則可。

面向物件是把構成問題的事務分解成各個物件,而建立物件的目的也不是為了完成一個個步驟,而是為了描述某個事物在解決整個問題的過程中所發生的行為。

2.舉例說明面向過程和麵向物件程式設計

象棋系統的實現:

(1)首先使用面向過程

1、開始遊戲,2、黑子先走,3、繪製畫面,4、判斷輸贏,5、輪到白子,6、繪製畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。

(2)面向物件的設計則是從另外的思路來解決問題

1、黑白雙方,這兩方的行為是一模一樣的,

2、棋盤系統,負責繪製畫面,

3、規則系統,負責判定諸如犯規、輸贏等。

第一類物件(玩家物件)負責接受使用者輸入,並告知第二類物件(棋盤物件)棋子佈局的變化,棋盤物件接收到了棋子的變化就要負責在螢幕上面顯示出這種變化,同時利用第三類物件(規則系統)來對棋局進行判定。

  面向物件保證了功能的統一型,從而為擴充套件打下基礎。現在要加入悔棋的功能,如果要改動面向過程的設計,那麼從輸入到判斷到顯示這一連串的步驟都要改動,甚至步驟之間的循序都要進行大規模調整。如果是面向物件的話,只用改動棋盤物件就行了,棋盤系統儲存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規則判斷則不用顧及,同時整個對物件功能的呼叫順序都沒有變化,改動只是區域性的。由此可以看出面向物件更易於擴充套件。

3.面向物件三大特徵

封裝:

  封裝是指將資料與具體操作的實現程式碼放在某個物件內部,使這些程式碼的實現細節不被外界發現,外界只能通過介面使用該物件,而不能通過任何形式修改物件內部實現,正是由於封裝機制,程式在使用某一物件時不需要關心該物件的資料結構細節及實現操作的方法。使用封裝能隱藏物件實現細節,使程式碼更易維護,同時因為不能直接呼叫、修改物件內部的私有資訊,在一定程度上保證了系統安全性。

繼承:

  繼承來源於現實世界,一個最簡單的例子就是孩子會具有父母的一些特徵,即每個孩子都會繼承父親或者母親的某些特徵,當然這只是最基本的繼承關係,現實世界中還存在著更復雜的繼承,面向物件之所以使用繼承機制主要是用於實現程式碼的複用多個類所公用的程式碼部分可以只在一個類中提供,而其他類只需要繼承即可。

多型:

  多型與繼承纖細緊密,是面向物件程式設計中另一個突出的特徵,所謂的多型是指在繼承體系中,所有派生類都從基類繼承介面,但由於每個派生類都是獨立的實體,因此在接收同一訊息的時候,可能會生成不同的響應。多型的作用作為隱藏程式碼實現細節,使得程式碼能夠模組化;擴充套件程式碼模組,實現介面重用。簡單來說:一種行為產生多種效果。

總的來說:封裝可以隱藏實現細節同時包含私有成員,使得程式碼模組化並增加安全指數;繼承可以擴充套件已存在的模組,目的是為了程式碼重用;多型則是為了保證:類在繼承和派生的時候,保證家譜中任何類的例項被正確呼叫,實現了介面重用。

4.面向物件和麵向過程的區別

(1)面向過程程式設計方法的實質上是從計算機處理問題的觀點來進行程式設計工作:輸入、運算、輸出。面向過程程式設計者需要變更習慣的思維方法以貼近計算機的內部工作機理。面向過程程式設計所具有的流的工作性質,試圖通過資訊流及其轉換來認識系統,不僅加大了程式設計的難度,同時亦使得程式的可理解性比較差。面向過程程式設計方法一般適宜採用自上而下的設計方法。
面向過程程式設計方法需要在一開始就全面的,自上而下的設計整個應用程式的架構,因此要求程式設計者對問題域有全面的瞭解。
面向過程程式設計方法很難複用以前已經設計完成的軟體。
(2)面向物件程式設計是一種自下而上的程式設計方法,往往從問題的一部分著手,一點一點地構建出整個程式。面向物件設計以資料為中心,類作為表現資料的工具,成為劃分程式的基本單位。
面向物件有以下幾個重要特點:客觀世界有物件組成;物件抽象為類;類與類之間存在繼承關係;物件之間通過傳遞訊息而彼此聯絡

(3)各自優缺點
面向過程:
  優點:效能比面向物件高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、Linux/Unix等一般採用面向過程開發,效能是最重要的因素。
  缺點:沒有面向物件易維護、易複用、易擴充套件
面向物件:
  優點:易維護、易複用、易擴充套件,由於面向物件有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護
  缺點:效能比面向過程低

相關推薦

c++面向物件c面向過程一些概念

1.面向物件和麵向過程的概念 面向過程是分析解決問題的步驟,然後用函式把這些步驟一步一步的實現,然後在使用的時候一一呼叫則可。 面向物件是把構成問題的事務分解成各個物件,而建立物件的目的也不是為了完成一個個步驟,而是為了描述某個事物在解決整個問題的過程中所發生的行為。 2.

類比JS面向物件JAVA面向物件的設計思想

(個人理解,如有誤導請指正) 我們都知道JS面向物件是採用原型鏈的方式設計的,JAVA是採用正統的面向物件的思想設計的,通過我的類比分析,我得出一個結論,它們之間本質上是沒有區別的。 先講一講面向物件的特點: 封裝和繼承和多型。 封裝: 最原始的結構化程式設計理念是 “資料結構+操作

C#之面向物件類的關係及類的構造方法

一、前言 既然看到面向物件了,那麼什麼是面向物件,而在講到面向物件的時候還有類,而且物件和類是不可分離的,相輔相成的,在看完小楊老師講的課之後根據自己的理解和筆記總結出以下部落格。 二、物件和類的定義 1.萬物皆物件,物件由靜態屬性和動態行為組成。 在我們的生活中有很多物件,但是

面向物件程式設計 C++》類資料成員類成員函式

類資料成員 C++類中有一種型別成員,屬於類本身,而不屬於類的物件,這種型別成員成為類成員,而屬於物件的成員成為物件成員或例項成員。可以使用關鍵字static來建立一個類成員。 static宣告與定義 class C { public: //... private:

面向物件c++和麵向過程c語言

c++既支援面向物件也支援面向過程,c語言面向過程。c語言的侷限性:資料後於功能,嵌入式產品開發中,早期的小型化產品能滿足,且c語言語法使用靈活,但開發效率、可維護性、UI開發等都比c++弱很多。嵌入式產品開發使用的開發語言常常多種配合,c語言完成系統底層核心功能的編寫,c+

C++面向物件

class cellphone{ 每個物體都有誕生和消亡——建構函式與構析函式 public:     cellphone();  建構函式,類的同名函式,當定義一個物件時會自動呼叫建構函式,                 也就是初始化函式,建構函式可以有引數,預設的建構函式是沒有引數的     ~cell

面向物件程式設計——C++語言描述》學習筆記(二)

第二章 從C到C++  2.1main函式 1.C++中需要寫int main()不能只是main() 2.main()函式裡面最後有一個return 0; 3.main()被啟動程式碼呼叫,而啟動程式碼是編譯器新增到程式中的,是程式和作業系統的橋樑。 4.C++中main()中

C語言面向物件程式設計:面向介面程式設計(4)

 Java 中有 interface 關鍵字,C++ 中有抽象類或純虛類可以與 interface 比擬,C 語言中也可以實現類似的特性。     在面試 Java 程式設計師時我經常問的一個問題是:介面和抽象類有什麼區別。  &n

面向物件程式設計—C++語言描述》下載

2018年11月02日 13:54:20 緣份的ヾ天椌 閱讀數:1 標籤: 程式設計 資料 區

面向物件程式設計 C++》指向物件的指標

成員選擇運算子. class C{ public: void m(){ /*...*/ } }; void f( C& ); int main(){ C c1; c1.m(); // object f(c1); } void f( C& c){ c.m(); /

面向物件程式設計 C++》解構函式

解構函式 建立類的物件時,會自動呼叫某個合適的建構函式,同樣,當物件被摧毀時,也會自動呼叫一個解構函式。 解構函式的名稱與類的名稱是完全相同的,只是在前面加了個波浪號(~)作為字首,它不會返回任何值,也不能帶有任何引數。解構函式有助於在跳出程式(比如關閉檔案、釋放記憶體等)前釋放資源。

面向物件程式設計 C++》建構函式

什麼是建構函式 建構函式為類物件進行初始化。 建構函式是一種與類名相同的成員函式。 建構函式沒有返回型別。 一個類可以擁有多個建構函式,也可對建構函式進行過載。 例如: class Person { public: Person(); //預設建構函式 Person( const

面向物件程式設計 C++》 類

類宣告 class Human { public: //...data private: //...data } class是個關鍵字,用其來宣告類 類範圍 類的私有成員具有類範圍性質,類的私有成員僅能由類的成員函式訪問。 例如: class C{ publ

面向過程面向物件泛型程式設計

1、面向物件和麵向過程 面向物件是儘可能模擬人類習慣的思維方式,使開發軟體的方法與過程儘可能接近人類認識世界解決問題的方法與過程。以事物為中心的程式設計思想,把構成問題事務分解成各個物件,建立物件的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

C++面向物件程式設計:面向物件-類之間的關係

OOP 面向物件:類與類之間的關係,分為三種:Inheritance(繼承)、Composition(組合)、Delegation(委託) **基於物件:單一類的封裝 Composition組合,表示has-a關係 看一個栗子,如圖此class裡有(ha

資料結構之迴圈佇列(面向物件思想c++實現)

佇列是一種資料結構,它具有先進先出的特點,即FIFO(first in first out)。佇列一般有普通佇列和迴圈佇列兩種形式。我們用陣列來實現佇列,使用一般的普通佇列,當我們把隊頭元素out的時候,隊頭後的元素會逐一向前挪動,這樣就大大降低了處理效率。

Trie樹(字典樹、字首樹)面向物件思想C++實現

Trie樹的功能、思想、實現都寫在程式碼註釋中了 使用: Trie trie = new Trie([TypeCase]); trie. TypeCase= Bit //二進位制 Number // 0-9數字 LowerCase //小寫字母

面向物件C++基礎

建一個基礎的類,一個人,成員變數記錄他的生日 類檔案 #include<string> #include<iostream> #include<cmath> us

面向物件程式設計(C++) 示例程式——集合類

#include <iostream> #include <string> #include <memory.h> using namespace std; class Set {  int maxsize; //集合的當前最大容量  i

Java面向物件方法

Java 方法 那麼什麼是方法呢? Java方法是語句的集合,它們在一起執行一個功能。 方法是解決一類問題的步驟的有序組合 方法包含於類或物件中 方法在程式中被建立,在其他地方被引用 方法的優點 1. 使程式變得更簡