當前位置:首頁 » 編程軟體 » 面向對象的c編程

面向對象的c編程

發布時間: 2022-05-22 07:49:07

『壹』 c語言的面向過程和C++的面向對象分別是什麼意思

C++和C的差別還是比較多的。
初學的話,可以認為C++是C的超集,除了支持C的面向過程,還支持面向對象編程
面向過程就是以過程為中心的編程思想。分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。以公共汽車為例,在面向過程的思想里,汽車啟動是一個事件,汽車到站是另一個事件。在編程序的時候我們關心的是某一個事件,而不是汽車本身,所以要分別對啟動和到站編寫程序。
面向對象是一種以事物為中心的編程思想。以公共汽車為例,我們關心的是由汽車抽象成的對象,這個對象有自己的屬性,像輪胎、顏色等;有自己的方法,像象啟動、行駛等,方法是汽車的行為,而不是汽車的每個事件。面向對象需要建立一個汽車的實體,由實體引發事件,所以要分別針對汽車的屬性和行為編寫程序。

『貳』 c語言是面向過程的還是面向對象的

c語言是面向過程的。面向過程是著重於其中程序設計的演算法、語言的運用,如設計不同功能的函數。

C++是面向對象的。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

c語言的特點:

1、代碼具有較好的可移植性

C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大的減少了程序移植的工作強度。

2、可生成高質量、目標代碼執行效率高的程序

與其他高級語言相比,C語言可以生成高質量和高效率的目標代碼,故通常應用於對代碼質量和執行效率要求較高的嵌入式系統程序的編寫。

『叄』 C語言能不能面向對象

C++,objective-c肯定可以。
標准c,普遍的說法是不行。我說我自己的想法,如果編寫過面向對象的代碼,類這個名詞跟用戶不陌生吧!類基本上是面向對象編程的精髓。類無非就是,成員數據與成員方法的集合,通過某個指針我們能訪問到成員與方法。抽象、繼承、多態、重載是類的基本特種。
一般而言,c語言是面向過程的,函數式編程。用標准c求解問題。無非就是,定義結構體、共用體、枚舉、基本數據類型等,再定義一堆函數,來訪問操作這些數據。如果吧這些東西,劃分成在適當的文件,授予適當的許可權。c語言的每個源文件就相當於類。
抽象、多態,利用c99的無類型指針很好實現。繼承實現難度高,實現思想是利用指針可訪問到父對象成員。重載,c實現更簡單!此段別認為我是在瞎B吹牛。objective-c,swift這兩門編程語言,如果你要懂一點。可以看到這個理論的影子。當然這兩門語言有專用編譯器。跟c實現的面向對象編程有區別。
總結下來,用c實現面向對象,編程,難度大,不是寫應用程序開發人員該考慮的。建議別往這方向編寫程序。如java,c++,swift等等這些語言,能面向對象編程:
1、編譯器的難題別人解決了;
2、很多很多的基礎功能,按系統類庫已經提供,我們不用去編寫。

『肆』 C語言中的「面向對象的編程思想」是什麼意思

面向對象的編程思想是這樣的:萬事萬物皆對象,說白了就封裝.
將程序所有用的所有東西都封裝起來.
簡單的說:你需要一輛車。
非面向對象的程序是這個樣的:你需要定義一個車屬性(即變數):顏色,時速,車的類型。
當然這是一輛車你可以這樣定義:但是如果10輛車呢,你需要定義30個不同名的變數,復雜可維護性極差,有時候自己都搞不清哪個變數對應的那輛車。
但是面向對象的是容易多了,定義一個車的類:顏色,時速,車的類型。
要10輛車,定義10輛車的變數就可以,10兩車就擁有顏色,時速,車的類型的屬性了。你只需要操作者10個變數就等於操作10車。

『伍』 在C語言中,什麼叫做面向對象,什麼叫做面向過程

面向對象和面向過程都是編程思想,分別以對象和過程為主要目標進行編程。

1、面向對象:面向對象(ObjectOriented)是一種軟體開發方法。ObjectOriented的概念和應用已經超越了編程和軟體開發。面向對象是一種理解和抽象現實世界的方法。它是計算機編程技術發展的產物。

2、面向過程:面向過程(Procere Oriented)是一種以過程為中心的編程思想。面向過程都是以正在發生的過程為主要目標進行編程,與面向對象明顯的不同就是封裝、繼承、類。

(5)面向對象的c編程擴展閱讀:

面向對象和面向過程的區別:

1、分析問題方式的不同:

面向過程是分析解決問題所需的步驟,然後使用函數逐步實現這些步驟,使用時一個接一個。

面向對象是將問題事務分解為各種對象。對象的建立不是為了完成一個步驟,而是為了描述一個事物在解決問題的整個過程中的行為。

2、解決問題的方法的不同:

面向過程其實是最為實際的一種思考方式,就算是面向對象的方法也是含有面向過程的思想。可以說面向過程是一種基礎的方法。它考慮的是實際地實現。一般的面向過程是從上往下步步求精,所以面向過程最重要的是模塊化的思想方法。

對比面向過程,面向對象的方法主要是把事物給對象化,對象包括屬性與行為。當程序規模不是很大時,面向過程的方法還會體現出一種優勢。

參考資料來源:網路-面向對象

參考資料來源:網路-面向過程

『陸』 C語言可以實現面向對象編程嗎

c
語言是面向過程的,它不能面向對象,但c++能實現面向對象的程序設計,這涉及到了類和命名空間,只有學了才能具體了解。

『柒』 如何用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語言進行面向對象編程

面向對象本身是一種思想,而用哪種語言實現只是一種技術手段。事實上思想和技術的關系本身就是class和object的關系。
class oo {
//這是面向對象的思想類
};
oo java; //java是oo的一個具體的技術實現
oo cxx; //c++是oo的一個具體的技術實現
拿Windows系統來講,它是有C語言編寫的,但是使用的卻是面向對象的思想,這方面可以參考reactos(一個免費開源的用於大學教授操作系統原理的windows系統)。

舉一個例子也許更實際一些,比如,操作系統有兩種操作界面,一種是GUI界面,一種是控制台界面,在windows平台上編寫一個程序,在cmd中運行時,執行控制台界面的代碼,在GUI中運行的時候,執行圖形界面的代碼。這實際上也算是一種面向對象編程中的多態實例。以下示例代碼在vc6.0編譯通過。
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <TLHELP32.H>
char what_shell_run()
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap==0){
return _T('E');
}
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof pe32;
DWORD dwSelfPid = GetCurrentProcessId();
DWORD dwParentPid = ~0;
for (BOOL bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32))
{
if (dwSelfPid==pe32.th32ProcessID){
dwParentPid = pe32.th32ParentProcessID;
break;
}
}
if (dwParentPid==~0) return _T('U');
for (bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32))
{
if (dwParentPid==pe32.th32ProcessID){
if (lstrcmpi(pe32.szExeFile, _T("cmd.exe"))==0)
{
CloseHandle(hSnap);
return _T('C');
}else if (lstrcmpi(pe32.szExeFile, _T("explorer.exe"))==0){
CloseHandle(hSnap);
return _T('G');
}
}
}
CloseHandle(hSnap);
return _T('U');
}
void console(void) {
printf("這是一控制台程序\n");
}
void gui (void) {
MessageBox(0, _T("這是一個GUI程序"), _T("GUI"), MB_OK);
}
int main()
{
char ch = what_shell_run();
switch (ch)
{
case 'C':
console();break;
case 'G':
gui(); break;
}
return 0;
}

『玖』 如何用C語言實現面向對象編程

相對於PASCAL、C一類的語言都是面向過程的語言。它的運行順序是固定的(按順序執行)。但C++面向對象,也就是說它的運行隨著你的觸發。假如你現在按了一個按鈕,那麼程序就會運行觸發按鈕的相應函數,所以它並不是按順序執行的。

『拾』 如何用C語言編寫面向對象的程序

面向對象本身是一種思想,而用哪種語言實現只是一種技術手段。事實上思想和技術的關系本身就是class和object的關系。
class oo {//這是面向對象的思想類}; oo java; //java是oo的一個具體的技術實現oo cxx; //c++是oo的一個具體的技術實現

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:705
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:968
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:676
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:828
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:737
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1076
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:308
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:188
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:875
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:829