A. 編程語言中 什麼是面向過程 什麼是 面向對象 他們有什麼區別 都有什麼好處 求解
。。。。面向對象: 舉個例或汪子,蓋一座大樓,你想到的是樓怎麼蓋,哪裡要有柱子,哪裡要有梁,哪裡樓梯等等(這就是面向對象)、。
。。。。。。。。至於柱子該怎麼建,用什麼建,方的圓的,等等,這就是衡亮面向過程。
用面咐團寬向對象思考問題更符合我們人的思考方式。
其實我們人現實生活中都是在面向對象。比如:去飯店吃飯,你只要說明吃什麼就可以了,有必要還了解這個菜是怎麼做的,是哪裡來的,怎麼去種這個菜嗎?
面向對象也可以說是從宏觀方面思考問題,而面向過程可以說是從細節處思考問題。在面向對象中,也存在面向過程。
各有各的好處,主要是實際編程應用中,哪種思路適合,得結合實際情況看。
c++,java等都有面向對象。
只是一個邏輯思路,不要過於糾結於這個問題,理解就可以了。以後用不到、
望採納!
B. 高級語言和面向對象語言有什麼區別面向過程語言又是指的什麼語言,它是否屬於高級語言
按分類來說,計算機編程語言可以分為高級語言和非高級語言,也可以分為面向對象語言和非面向對象語言(可以說是分為面向對象和面向過程),當然,還要其他分類。
所以,高級語言和面向對象語言,兩者沒有可比性,屬於不同分類。好比高矮肥瘦。高和瘦,不可比,高和瘦的區別,我回答不上來。
面向對象語言,按等級來分的話,屬於高級語言吧。
面向過程語言么,就是語言代碼按演算法過程一步一步編寫的語言。好比跨欄,先跨第一個,再跨第二個,一個個來,這就是過程,面向過程語言差不多就是這么個意思,跨的時候,先左腳還是先右腳,這也是一個過程。那麼用面向過程的語言來寫一個跨欄程序,就要一步一步寫好怎麼走。
這就是面晌灶向過程語言。雀謹猜
至於面向過程語言是不是高級語言,就好像問這個人很瘦,他高不高?不一定。面向頃型過程的語言,有低級的(如匯編),也有高級的(如C)。
面向對象語言么,寫跨欄程序的時候,寫了一個對象叫人,這個人有個功能叫跨欄,使用的時候就對這個人說:你,給我跨欄去。至於你怎麼跨,隨便你。
個人認為,其實面向對象也是封裝了過程語言而已。本質上還是0和1的機器碼在執行。只不過更符合我們對現實世界的抽象觀念而已。比如那個跨欄的對象:人。裡面的跨欄功能還是過程化的,當然,你可以寫各種花樣的跨欄方法,比起單純的面向過程的跨欄要靈活。
C. 面向程序和面向對象有什麼異同
面向過程:即將問題轉化為關系和數值,通過關系和數值來描述問題,解決問題。模塊化程度低。
面向對象不是簡單的對編程對象的處理方式。它確切的說應該是這樣的樣子:首先將現實世界中,主體(即所謂對象)和主體間的關系進行想像(抽象),對應到編程中,強調程序中的各個主體(對象)和他們得關系(繼承,多態什麼的)一一對應現實世界中的主體棗缺山。
所謂面向對象,就是講編程的理念,從對數據的演算法分析,轉變為對現實世界問題的剖析,進而使編程擺脫數據的束縛,使得程序就像自然世界的主體和主體間的關系那樣,
先將程序變為為一個一個的主體的組合體,然後看主體間的關系,自然而然的使得代碼非常好維護,重用性也非常強,因為你知道dog就是現實中的狗,那麼狗這個主體有什麼功能你自然知道,狗和人是什麼關系,你也清楚,你就不必看代碼來分析這段代碼什麼意思,和那段又有什麼關系了。這是不是一種非常自然明了的編程方式呢。
很扮棚多教程上來就說這個怎麼用,那個怎麼回事,看代碼看到頭暈也不甚明了,編出的程序亂七八糟,想怎麼編就怎麼編,實際上,這樣子編程已經不是面向對象了,因為他即不剖析主體和主體間的關系,也不將程序中的主體與關系和現實一一對應主體。
其實我很想知道,寫那些編程書籍的人,本身是否是程序員,本身是否明白什麼凳中是面向對象,知不知道面向對象是一種程序的設計方式,而不是程序的編寫方式。
D. 編程語言中,面相對象與面向過程的區別是不是在於一個有類的存在,一個無類的存在
區別在於:面向對象語言直接支持面向對象編程。
為何這么說:
因為你可以使用C語言寫出面向對褲中早象程序(很費勁)!
舉個例子:
C++代碼:
#include<iostream>
#include<cstdlib>
classShape{
public:
virtualvoidDraw()=0;
virtual~Shape(){}
};
classTriangle:publicShape{
public:
Triangle(){}
voidDraw()override{
std::cout<<"繪制一個三角形"<<std::endl;
}
};
classCircle:publicShape{
public:
Circle(){}
voidDraw()override{
std::cout<<"繪制一個圓"<<std::endl;
}
};
//用戶代碼
voidDrawShape(Shape*shape){
shape->Draw();
}
intmain(){
Trianglet;
DrawShape(&t);
Circlec;
DrawShape(&c);
system("pause");
}
C語言代碼:
//定義Shape結構體的虛函數表結構體.
typedefstructVTableTag{
void(*Draw)(void*pThis);
}VTable;
//此結構體對應C++的Shape類.
typedefstructShapeTag{
VTable*pVTable;
}Shape;
//此結構體對應C++的Triangle類.
typedefstructTriangleTag{
Shapeshape;
}Triangle;
//此結構體對應C++的Circle類.
typedefstructCircleTag{
Shapeshape;
}Circle;
//對應C++Triangle類的Draw函數.
//參數pThis相當於C++的this指針.
voidDrawTriangle(void*pThis){
printf("繪制一個三角形 ");
}
//對應C++Circle類的Draw函數
//參數pThis相當於C++的this指針.
voidDrawCircle(void*pThis){
printf("繪制一個圓 ");
}
//Triangle結構體虛函數表,實現運行時多態.
staticVTableg_TriangleVTable={&DrawTriangle};
//Circle結構體虛函數表,實現運行時多態.
staticVTableg_CircleVTable={&DrawCircle};
//對應C++Triangle類的構造函數.
voidInitTriangle(Triangle*triangle){
triangle->shape.pVTable=&g_TriangleVTable;
}
//對應C++的Circle類構造函數.
voidInitCircle(Circle*circle){
circle->shape.pVTable=&g_CircleVTable;
}
//用戶代碼
voidDrawShape(Shape*shape){
shape->pVTable->Draw(shape);
}
intmain(){
Trianglet;
InitTriangle(&t);
DrawShape(&t.shape);
Circlec;
InitCircle(&c培昌);
DrawShape(&c.shape);
system("pause");
return0;
}
上面兩段代碼實現了同樣的效果,並且都體現了面向對象的 抽象、繼承和多態,但是代碼胡雀的編寫難度明顯差距很大。
再舉個真實的例子:
Windows API的介面大部分都是面向對象的並且通過C語言提供給用戶調用。
所以,面向對象語言和面向過程語言的區別是:一個直接支持面向對象編程,另外一個間接支持或者不支持面向對象編程。
面向對象和面向過程的區別:面向對象關注問題本身,而面向對象關註解決問題的過程。
E. 面向對象與面向過程編程語言的區別
C是面向過程 C++、 JAVA是面向對象 面向對象和面向過程的區別 一個博大,一個精深. 總體而言,面向對象簡單,面向過程對人員要求素質如旦過高 面向過程就是分析出解決問圓滑題所需要的步驟,然後用渣腔擾函數把這些步驟一步一步實現,使用的時候一個一個依次調用
F. 什麼是面向過程的編程語言和面向對象的編程語言
C語言是面向過程的編程,它的最重要特點是函數,通過主函數來調用一個個子函數。程序運行的順序都是程序員決定好了的。它是我學的第一種程序語言。
C++是面向對象的編程,類是它的主要特點,程序執行過程中,先由主函數進入,定義一些類,根據需要,執行類的成員函數,過程的概念被淡化了(實際上過程還是有的,就是主函數的那些語句),類就是對象,所以我們稱之為面向對象程序設計。 不同點:1.編程模型
所有計算機均由兩種元素組成:代碼和數據.精確的說,有些程序是圍繞著"什麼正在發生"而編寫,有些則是圍繞"誰正在受影響"而編寫的.
第一種編程方式叫做"面向過程的模型",按這種模型編寫的程序以一系列的線性步驟(代碼)為特徵,可被理解為作用於數據的代碼.如 C 等過程化語言.
第二種編程方式叫做"面向對象的模型",按這種模型編寫的程序圍繞著程序的數據(對象)和針對該對象而嚴格定義的介面來組織程序,它的特點是數據控制代碼的訪問.通過把控制權轉移到數據上,面向對象的模型在組織方式上有:抽象,封裝,繼承和多態的好處.
2.抽象
面向對象程序設計的基本要素是抽象,程序員通過抽象來管理復雜性.
管理抽象的有效方法是使用層次式的分類特性,這種方法允許用戶根據物理含義分解一個復雜的系統,把它劃分成更容易管理的塊.例如,一個計算機系統是一個獨立的對象.而在計算機系統內部由幾個子系統組成:顯示器,鍵盤,硬碟驅動器,DVD-ROM,軟盤,音響等,這些子系統每個又由專門的部件組成.關鍵是需要使用層次抽象來管理計算機系統(或其他任何復雜系統)的復雜性.
面向對象程序設計的本質:這些抽象的對象可以被看作具體的實體,這些實體對用來告訴我們作什麼的消息進行響應.
/* (我的理解)
*計算機是一個實體,我要輸入字元,顯示器顯示出來,那麼
*計算機(對象).輸入(鍵盤屬性).顯示(顯示方法)
*使用分層來引用,操作.而不用管計算機內部如何處理.
*只要有計算機對象,它就能響應我的操作,而我敲鍵盤,
*計算機對象就把這個消息傳給屏幕,屏幕顯示.
*/
計算機對象包含了它所有的屬性,以及操作,這就是面向對象程序設計的三大原則之一:封裝.
3.封裝
封裝是一種把代碼和代碼所操作的數據捆綁在一起,使這兩者不受外界干擾和誤用的機制.封裝可被理解為一種用做保護的包裝器,以防止代碼和數據被包裝器外部所定義的其他代碼任意訪問.對包裝器內部代碼與數據的訪問通過一個明確定義的介面來控制.封裝代碼的好處是每個人都知道怎樣訪問代碼,進而無需考慮實現細節就能直接使用它,同時不用擔心不可預料的副作用.
在JAVA中,最基本的封裝單元是類,一個類定義著將由一組對象所共享的行為(數據和代碼).一個類的每個對象均包含它所定義的結構與行為,這些對象就好象是一個模子鑄造出來的.所以對象也叫做類的實例.
在定義一個類時,需要指定構成該類的代碼與數據.特別是,類所定義的對象叫做成員變數或實例變數.操作數據的代碼叫做成員方法.方法定義怎樣使用成員變數,這意味著類的行為和介面要由操作實例數據的方法來定義.
由於類的用途是封裝復雜性,所以類的內部有隱藏實現復雜性的機制.所以JAVA中提供了私有和公有的訪問模式,類的公有介面代表外部的用戶應該知道或可以知道的每件東西.私有的方法數據只能通過該類的成員代碼來訪問.這就可以確保不會發生不希望的事情.
4.繼承
繼承是指一個對象從另一個對象中獲得屬性的過程.是面向對象程序設計的三大原則之二,它支持按層次分類的概念.例如,波斯貓是貓的一種,貓又是哺乳動物的一種,哺乳動物又是動物的一種.如果不使用層次的概念,每個對象需要明確定義各自的全部特徵.通過層次分類方式,一個對象只需要在它的類中定義是它成為唯一的 各個屬性,然後從父類中繼承它的通用屬性.因此,正是由於繼承機制,才使得一個對象可以成為一個通用類的一個特定實例.一個深度繼承的子類將繼承它在類層次中的每個祖先的所有屬性.
繼承與封裝可以互相作用.如果一個給定的類封裝了某些屬性,它的任何子類將會含有同樣得屬性,另加各個子類所有得屬性.這是面向對象程序在復雜性上呈線性而非幾何增長的一個重要概念.新的子類繼承其所有祖先的所有屬性.子類和系統中的其他代碼不會產生無法預料的交互作用.
5.多態
多態是指一個方法只能有一個名稱,但可以有許多形態,也就是程序中可以定義多個同名的方法,用"一個介面,多個方法"來描述.可以通過方法的參數和類型引用.
6.封裝,繼承,多態的組合使用
在由封裝,繼承,多態所組成的環境中,程序員可以編寫出比面向過程模型更健壯,更具擴展性的程序.經過仔細設計的類層次結構是重用代碼的基礎.封裝能讓程序員不必修改公有介面的代碼即可實現程序的移植.多態能使程序員開發出簡潔,易懂,易修改的代碼.例如:汽車
從繼承的角度看,駕駛員都依靠繼承性來駕駛不同類型(子類)的汽車,無論這輛車是轎車還是卡車,是賓士牌還是菲亞特牌,駕駛員都能找到方向盤,手剎,換檔器.經過一段時間駕駛後,都能知道手動檔與自動檔之間的差別,因為他們實際上都知道這兩者的共同超類:傳動裝置.
從封裝的角度看,駕駛員總是看到封裝好的特性.剎車隱藏了許多復雜性,其外觀如此簡單,用腳就能操作它.發動機,手剎,輪胎大小的實現對與剎車類的定義沒有影響.
從多態的角度看,剎車系統有正鎖反鎖之分,駕駛員只用腳踩剎車停車,同樣的介面可以用來控制若干種不同的實現(正鎖或反鎖).
這樣各個獨立的構件才被轉換為汽車這個對象的.同樣,通過使用面向對象的設計原則,程序員可以把一個復雜程序的各個構件組合在一起,形成一個一致,健壯,可維護的程序
G. 為什麼說java是面向對象編程語言,面向對象和面向過程最大的區別是什麼
java裡面全是類,實行的是萬事萬物皆對象
面向過程開發方式是對計算機底層結構的一層抽象,它明顯把程序的內容分為數據和操縱數據的操作兩部分。這種編程方式的核心問題是數據結構和演算法的開發和優化。C
語言所提供的機制就是典型的結構化編程設施。
需要一步步去實行
面向對象就不同了,抽象數據類型方法雖然也有一定的抽象能力,但其核心仍然是數據結構和演算法。而面向對象方法直接把所有事物都當作獨立的對象,處理問題過程中所思考的不再主要是怎樣用數據結構來描述問題,而是直接考慮重現問題中各個對象之間的關系。可以說,面向對象革命的最重要價值就在於改變了人們看待和處理問題的方式。
H. 面向對象程序設計語言和面向過程程序設計語言的區別有哪些
面向對象的特點是:封裝,多態,繼承。其中多態有分為重載和重寫。面向內對象的編程容思想更加接近現實的事物。
有這樣幾點好處:
1、是編程更加容易。因為面向對象更接近於現實,所以你可以從現實的東西出發,進行適當的抽象。
2、在軟體工程上,面向對象可以使工程更加模塊化,實現更低的耦合和更高的內聚。
3、在設計模式上(似乎只有面向對象才設計到設計模式),面向對象可以更好的實現開-閉原則。也使代碼更易閱讀。
相對而言,面向過程的程序設計是面向對象程序設計的基礎。面向對象的程序裡面一定會有面向過程的程序片斷的!
以上是小生的一點拙見,拿出來班門弄斧,實在不好意思。摟主的這個問題實在太大,還請各位大師給出更好的答案!
I. 面向過程語言和面向對象語言有什麼區別兩者誰更具優勢
區別方面,面向過程語言最基本的概困銷念是函數,面向過程語言將一個個功能封裝成一個個函數。因此程序的耦合度較高。而面向對象語言最基本的概念是對象(數據及其操作的方法)。各個對象負責自己的工作,為其他手做對象提高功能。相對而言程序的耦合度較低,內聚度高。x0dx0a 優勢方面,簡單來說,面向過程語言(C語言為代表)編程最大的優點的效率高,所以現在操作系統或者視頻編解碼(比如H.264)等主要是採用接近底層C語言;x0dx0a 而面向對象語言(Java語言為代表)最大的優點是符合抽象,封裝,細節隱藏等基本程序設計的原則。需求分析、程序設計、編碼實現等過程可以無縫銜接(利用UML建模)。面向對象的程序在結構上更加健壯和穩定。因此類似淘寶網這些效率和性能的需求不是至關重要(當然也是性能很重要,相比之下更重要的是系統的穩定性、安全性)的後台是用Java寫的。x0dx0a 不過這些只有等你做過很多很大很復雜的程序之後才會真正了解兩者的區別和優勢。汪薯游如果都是寫HelloWorld程序,那兩者基本不存在區別。