c語言面向對象
① c語言是面向過程的還是面向對象的
c語言是面向過程的。面向過程是著重於其中程序設計的演算法、語言的運用,如設計不同功能的函數。
C++是面向對象的。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。
c語言的特點:
1、代碼具有較好的可移植性
C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大的減少了程序移植的工作強度。
2、可生成高質量、目標代碼執行效率高的程序
與其他高級語言相比,C語言可以生成高質量和高效率的目標代碼,故通常應用於對代碼質量和執行效率要求較高的嵌入式系統程序的編寫。
② 「C語言」面向過程和面向對象的區別是什麼
「C語言」面向過程和面向對象的區別是:面向過程是著重於其中程序設計的演算法、語言的運用,如設計不同功能的函數。面向對象,按書上說是在C語言的基礎上發展起來的,通俗說也就是更高一級的C語言,也就是C++,保留了大部分C語言的功能,而在設計方面卻著重於對象的處理,獲得更好地性能。
面向過程與面向對象的區別,由「如何把大象裝進冰箱」來看:
一、面向過程
為了把大象裝進冰箱,需要3個過程。
/* 思路:
1、把冰箱門打開(得到打開門的冰箱)。
2、把大象裝進去(打開門後,得到裡面裝著大象的冰箱)。
3、把冰箱門關上(打開門、裝好大象後,獲得關好門的冰箱)。
*/
//每個過程有一個階段性的目標,依次完成這些過程,就能把大象裝進冰箱。
//寫法一:
1:冰箱開門(冰箱)。
2:冰箱裝進(冰箱,大象)。
3:冰箱關門(冰箱) 。
//寫法一變體:
1:(冰箱開門 冰箱)。
2:(冰箱裝進 冰箱大象)。
3:(冰箱關門 冰箱)。
//寫法二:
冰箱關門(冰箱裝進(冰箱開門(冰箱),大象))。
//寫法二變體:
(冰箱關門 (冰箱裝進 (冰箱開門 冰箱) 大象))。
二、面向對象
為了把大象裝進冰箱,需要做三個動作(或者叫行為)。每個動作有一個執行者,它就是對象。
/* 思路:
1、冰箱,你給我把門打開。
2、冰箱,你給我把大象裝進去(或者說,大象,你給我鑽到冰箱里去)。
3、冰箱,你給我把門關上。
*/
//依次完成這些動作,你就可以把大象裝進去。
//寫法一:
1:冰箱.開門()
2:冰箱.裝進(大象)
3:冰箱.關門()
//寫法二:
冰箱.開門().裝進(大象).關門()
③ C語言 面向對象語言
1.設計對象:就是要搞清楚對角包含的數據(屬性),如學生對象可能包含學號、姓名、性別、成績等信息。還要搞清楚對該對象的數據進行的操作有哪些,如:設置類操作Set...(設置姓名、設置信息等),取得類操作Get...(取得姓名、取得成績等),還有顯示以象操作等。清楚了對象的屬性與操作後,就可以按類(像C中結構體)的設計原則,設計對象類了,如:
class CStudent
{
public:
void SetName(char *name);
void SetScore(int score);
char *GetName();
int GetScore();
int PrintInfo();
...
private:
int xh;
char name[20];
char sex[3];
int score;
...
};
CStudent a[30]; //定義存儲30個學生的信息
(2)通知對象完成任務,主要靠「消息」來實現的,具體來講,消息可以理解為以象的public類的函數(如SetName函數),只有public類的屬性,對象類的外部函數或對象才能直接使用。
如果設置學生i對象的姓名和成績,可以在函數中把水消息傳遞a[i]對角,傳遞的方法如下:
a[i].SetName("zhangshan");
a[i].SetScore(80);
等。
對象a[i]收到SetName的消息後,把name賦值為zhangshan,把score賦值為80了。
不知這樣解釋,你能明明白嗎?實際上
面向對象編程就是:
對象+對象+對象
而結構化編程是:
數據結構+演算法
兩種思想的區別是,前者把「數據結構」和「演算法」捆綁為「對象類」,後者數據結構與演算法是分離的,當數據結構發生變化時,演算法必須跟著改變,否則不能正常工作。
④ 如何用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語言中,什麼叫做面向對象,什麼叫做面向過程
面向對象和面向過程都是編程思想,分別以對象和過程為主要目標進行編程。
1、面向對象:面向對象(ObjectOriented)是一種軟體開發方法。ObjectOriented的概念和應用已經超越了編程和軟體開發。面向對象是一種理解和抽象現實世界的方法。它是計算機編程技術發展的產物。
2、面向過程:面向過程(Procere Oriented)是一種以過程為中心的編程思想。面向過程都是以正在發生的過程為主要目標進行編程,與面向對象明顯的不同就是封裝、繼承、類。
(5)c語言面向對象擴展閱讀:
面向對象和面向過程的區別:
1、分析問題方式的不同:
面向過程是分析解決問題所需的步驟,然後使用函數逐步實現這些步驟,使用時一個接一個。
面向對象是將問題事務分解為各種對象。對象的建立不是為了完成一個步驟,而是為了描述一個事物在解決問題的整個過程中的行為。
2、解決問題的方法的不同:
面向過程其實是最為實際的一種思考方式,就算是面向對象的方法也是含有面向過程的思想。可以說面向過程是一種基礎的方法。它考慮的是實際地實現。一般的面向過程是從上往下步步求精,所以面向過程最重要的是模塊化的思想方法。
對比面向過程,面向對象的方法主要是把事物給對象化,對象包括屬性與行為。當程序規模不是很大時,面向過程的方法還會體現出一種優勢。
參考資料來源:網路-面向對象
參考資料來源:網路-面向過程
⑥ C語言,里的面向對象是什麼意思
如果是C++對象是用來去訪問的,因為在C++中,你沒有許可權訪問一些私有的部分,你必須定義一個對象去訪問,例:class cat;cat tiger;這里的tiger就是對象,他可以去訪問任何參數。樓主,祝你成功
⑦ C語言能不能面向對象
C++,objective-c肯定可以。
標准c,普遍的說法是不行。我說我自己的想法,如果編寫過面向對象的代碼,類這個名詞跟用戶不陌生吧!類基本上是面向對象編程的精髓。類無非就是,成員數據與成員方法的集合,通過某個指針我們能訪問到成員與方法。抽象、繼承、多態、重載是類的基本特種。
一般而言,c語言是面向過程的,函數式編程。用標准c求解問題。無非就是,定義結構體、共用體、枚舉、基本數據類型等,再定義一堆函數,來訪問操作這些數據。如果吧這些東西,劃分成在適當的文件,授予適當的許可權。c語言的每個源文件就相當於類。
抽象、多態,利用c99的無類型指針很好實現。繼承實現難度高,實現思想是利用指針可訪問到父對象成員。重載,c實現更簡單!此段別認為我是在瞎B吹牛。objective-c,swift這兩門編程語言,如果你要懂一點。可以看到這個理論的影子。當然這兩門語言有專用編譯器。跟c實現的面向對象編程有區別。
總結下來,用c實現面向對象,編程,難度大,不是寫應用程序開發人員該考慮的。建議別往這方向編寫程序。如java,c++,swift等等這些語言,能面向對象編程:
1、編譯器的難題別人解決了;
2、很多很多的基礎功能,按系統類庫已經提供,我們不用去編寫。
⑧ C語言是面向對象還是面向過程的
「C語言」面向過程和面向對象的區別是:面向過程是著重於其中程序設計的演算法、語言的運用,如設計不同功能的函數。面向對象,按書上說是在C語言的基礎上發展起來的,通俗說也就是更高一級的C語言,也就是C++,保留了大部分C語言的功能,而在設計方面卻著重於對象的處理,獲得更好地性能。
面向過程與面向對象的區別,由「如何把大象裝進冰箱」來看:
一、面向過程
為了把大象裝進冰箱,需要3個過程。
/* 思路:
1、把冰箱門打開(得到打開門的冰箱)。
2、把大象裝進去(打開門後,得到裡面裝著大象的冰箱)。
3、把冰箱門關上(打開門、裝好大象後,獲得關好門的冰箱)。
*/
//每個過程有一個階段性的目標,依次完成這些過程,就能把大象裝進冰箱。
//寫法一:
1:冰箱開門(冰箱)。
2:冰箱裝進(冰箱,大象)。
3:冰箱關門(冰箱) 。
//寫法一變體:
1:(冰箱開門 冰箱)。
2:(冰箱裝進 冰箱大象)。
3:(冰箱關門 冰箱)。
//寫法二:
冰箱關門(冰箱裝進(冰箱開門(冰箱),大象))。
//寫法二變體:
(冰箱關門 (冰箱裝進 (冰箱開門 冰箱) 大象))。
二、面向對象
為了把大象裝進冰箱,需要做三個動作(或者叫行為)。每個動作有一個執行者,它就是對象。
/* 思路:
1、冰箱,你給我把門打開。
2、冰箱,你給我把大象裝進去(或者說,大象,你給我鑽到冰箱里去)。
3、冰箱,你給我把門關上。
*/
//依次完成這些動作,你就可以把大象裝進去。
//寫法一:
1:冰箱.開門()
2:冰箱.裝進(大象)
3:冰箱.關門()
//寫法二:
冰箱.開門().裝進(大象).關門()