㈠ 在c語言中,什麼叫做「面向對象」,什麼叫做「面向過程」
面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。把上面每個步驟用分別的函數來實現,問題就解決了。
而面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪制畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類對象(玩家對象)負責接受用戶輸入,並告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的i變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。
可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設計中分散在了總多步驟中,很可能出現不同的繪製版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。
功能上的統一保證了面向對象設計的可擴展性。比如我要加入悔棋的功能,如果要改動面向過程的設計,那麼從輸入到判斷到顯示這一連串的步驟都要改動,甚至步驟之間的循序都要進行大規模調整。如果是面向對象的話,只用改動棋盤對象就行了,棋盤系統保存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規則判斷則不用顧及,同時整個對對象功能的調用順序都沒有變化,改動只是局部的。
㈡ C語言是面向對象還是面向過程的
「C語言」面向過程和面向對象的區別是:面向過程是著重於其中程序設計的演算法、語言的運用,如設計不同功能的函數。面向對象,按書上說是在C語言的基礎上發展起來的,通俗說也就是更高一級的C語言,也就是C++,保留了大部分C語言的功能,而在設計方面卻著重於對象的處理,獲得更好地性能。
面向過程與面向對象的區別,由「如何把大象裝進冰箱」來看:
一、面向過程
為了把大象裝進冰箱,需要3個過程。
/* 思路:
1、把冰箱門打開(得到打開門的冰箱)。
2、把大象裝進去(打開門後,得到裡面裝著大象的冰箱)。
3、把冰箱門關上(打開門、裝好大象後,獲得關好門的冰箱)。
*/
//每個過程有一個階段性的目標,依次完成這些過程,就能把大象裝進冰箱。
//寫法一:
1:冰箱開門(冰箱)。
2:冰箱裝進(冰箱,大象)。
3:冰箱關門(冰箱) 。
//寫法一變體:
1:(冰箱開門 冰箱)。
2:(冰箱裝進 冰箱大象)。
3:(冰箱關門 冰箱)。
//寫法二:
冰箱關門(冰箱裝進(冰箱開門(冰箱),大象))。
//寫法二變體:
(冰箱關門 (冰箱裝進 (冰箱開門 冰箱) 大象))。
二、面向對象
為了把大象裝進冰箱,需要做三個動作(或者叫行為)。每個動作有一個執行者,它就是對象。
/* 思路:
1、冰箱,你給我把門打開。
2、冰箱,你給我把大象裝進去(或者說,大象,你給我鑽到冰箱里去)。
3、冰箱,你給我把門關上。
*/
//依次完成這些動作,你就可以把大象裝進去。
//寫法一:
1:冰箱.開門()
2:冰箱.裝進(大象)
3:冰箱.關門()
//寫法二:
冰箱.開門().裝進(大象).關門()
㈢ C語言中的對象是什麼
對象在C語言中廣義上指的是在內存中的一段有意義的區域。狹義上講,對象具有特定長度的類型,可以稱作為對象類型,但其函數不具有特定長度,所以不是對象類型。
面向對象(Object Oriented,OO)是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的范圍。如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。
(3)c語言中的面向對象擴展閱讀:
C語言軟體設計時經常使用面向對象的方法:
面向對象技術在不同級別上促進了共享。同一類中的共享,同一類中的對象有著相同數據結構。這些對象之間是結構、行為特徵的共享關系。
在同一應用中共享。在同一應用的類層次結構中,存在繼承關系的各相似子類中,存在數據結構和行為的繼承,使各相似子類共享共同的結構和行為。使用繼承來實現代碼的共享,這也是面向對象的主要優點之一。
在不同應用中共享。面向對象不僅允許在同一應用中共享信息,而且為未來目標的可重用設計准備了條件。通過類庫這種機制和結構來實現不同應用中的信息共享。
參考資料來源:網路-對象
㈣ Java裡面的面向對象和C語言裡面的面向過程分別是什麼意思
java和c語言面向對象與面向過程程序設計有如下不同:
(1)面向過程程序設計方法採用函數(或過程)來描述對數據的操作,但又將函數與其操作的數據分離開來;面向對象程序設計方法將數據和對數據的操作封裝在一起,作為一個整體來處理。 函數與數據是否分離
(2)面向過程程序設計方法以功能為中心來設計功能模塊,難於維護;而面向對象程序設計方法以數據為中心來描述系統,數據相對於功能而言具有較強的穩定性,因此更易於維護。
(3)面向過程程序的控制流程由程序中預定順序來決定;面向對象程序的控制流程由運行時各種事件的實際發生來觸發,而不再由預定順序來決定,更符合實際需要。 預定順序;由運行時各種事件的實際發生來觸發
(4)面向對象程序設計方法可以利用框架產品(如MFC,Microsoft Foundation Classes)進行編程。 面向對象可利用框架 面向對象和面向過程的根本差別,在於封裝之後,面向對象提供了面向過程不具備的各種特性,最主要的,就是繼承和多態。
在實際的開發中,如果使用c語言開發更注重於底層的交互,可以提升速度,在一些應用層面比如網頁、手機系統的開發,大多數會選擇java語言,比較容易快的構建出應用。目前來說大部分的游戲都是使用C語言開發還有一些腳本語言,比如lua,但考慮到市場上的佔有率,如果不想花很多時間來學習的話,java語言是一門可以快速入門的。
㈤ 如何用C語言實現面向對象
可以通過以下方法實現面向對象:
1、封裝
封裝就是把數據和方法打包到一個類裡面。其實C語言編程者應該都已經接觸過了,C 標准庫 中的 fopen(), fclose(), fread(), fwrite()等函數的操作對象就是 FILE。
數據內容就是 FILE,數據的讀寫操作就是 fread()、fwrite(),fopen() 類比於構造函數,fclose() 就是析構函數。
2、繼承
繼承就是基於現有的一個類去定義一個新類,這樣有助於重用代碼,更好的組織代碼。在 C 語言裡面,去實現單繼承也非常簡單,只要把基類放到繼承類的第一個數據成員的位置就行了。
例如,我們現在要創建一個 Rectangle 類,我們只要繼承 Shape 類已經存在的屬性和操作,再添加不同於 Shape 的屬性和操作到 Rectangle 中。
3、多態 C++
語言實現多態就是使用虛函數。在 C 語言裡面,也可以實現多態。 現在,我們又要增加一個圓形,並且在 Shape 要擴展功能,我們要增加 area() 和 draw() 函數。
但是 Shape 相當於抽象類,不知道怎麼去計算自己的面積,更不知道怎麼去畫出來自己。而且,矩形和圓形的面積計算方式和幾何圖像也是不一樣的。
4、虛表和虛指針
虛表(Virtual Table)是這個類所有虛函數的函數指針的集合。
虛指針(Virtual Pointer)是一個指向虛表的指針。這個虛指針必須存在於每個對象實例中,會被所有子類繼承。
5、在構造函數中設置vptr
在每一個對象實例中,vptr 必須被初始化指向其 vtbl。最好的初始化位置就是在類的構造函數中。
事實上,在構造函數中,C++ 編譯器隱式的創建了一個初始化的vptr。在 C 語言裡面, 我們必須顯示的初始化vptr。下面就展示一下,在 Shape 的構造函數裡面,如何去初始化這個 vptr。
㈥ C語言能不能面向對象
C++,objective-c肯定可以。
標准c,普遍的說法是不行。我說我自己的想法,如果編寫過面向對象的代碼,類這個名詞跟用戶不陌生吧!類基本上是面向對象編程的精髓。類無非就是,成員數據與成員方法的集合,通過某個指針我們能訪問到成員與方法。抽象、繼承、多態、重載是類的基本特種。
一般而言,c語言是面向過程的,函數式編程。用標准c求解問題。無非就是,定義結構體、共用體、枚舉、基本數據類型等,再定義一堆函數,來訪問操作這些數據。如果吧這些東西,劃分成在適當的文件,授予適當的許可權。c語言的每個源文件就相當於類。
抽象、多態,利用c99的無類型指針很好實現。繼承實現難度高,實現思想是利用指針可訪問到父對象成員。重載,c實現更簡單!此段別認為我是在瞎B吹牛。objective-c,swift這兩門編程語言,如果你要懂一點。可以看到這個理論的影子。當然這兩門語言有專用編譯器。跟c實現的面向對象編程有區別。
總結下來,用c實現面向對象,編程,難度大,不是寫應用程序開發人員該考慮的。建議別往這方向編寫程序。如java,c++,swift等等這些語言,能面向對象編程:
1、編譯器的難題別人解決了;
2、很多很多的基礎功能,按系統類庫已經提供,我們不用去編寫。
㈦ C語言的面向過程和C++的面向對象分別是什麼意思
過程貌似什麼都得自己做.....方法.函數什麼的
而對象中很多方法都可以從類中直接調用,不用自己編了....
呵呵.這好象也是區別之一吧.
還有對象做界面方便....可以直接拖拖拉拉...不知道算不算區別...