劉雅菲 宇澳 齊笑甜

摘 ?要:面向過程和面向對象作為我們編程常用的方法,在高級領域中有廣泛的應用。在計算機編程中,各有其優(yōu)勢和長處,為寫出復雜度更低的程序,使之擁有更好的性能,我們要對其特點有明確的了解。該文主要通過具體實例分析面向過程和面向對象在不同語言中的用法,從而對其編程風格做出更明確的闡述,能夠更深入地使用、了解這兩種方法。
關鍵詞:程序設計 ?面向過程 ?面向對象
中圖分類號:TP31 ? 文獻標識碼:A 文章編號:1672-3791(2020)03(b)-0003-02
“面向過程”(Procedure Oriented)是一種以過程為中心的編程思想。也可被稱為“面向記錄”編程思想[1],主要語言有Pascal、C語言等。面向對象(Object Oriented)是一種以事物為中心的編程思想。采用對象、類以及一些相關概念所進行的程序設計。主要有Eiffel、C++、Java、PHP等[2]。
1 ?面向過程與面向對象基本特點分析
面向過程最常用的一個分析方法就是“功能分解”,即先將用戶需求分解成模塊,然后把模塊分解成大的功能,再把大的功能分解為小的功能,最終分解成不同的函數(shù),這種方式被稱為“自頂向下”,采用結構化思想,原則是“先整體后局部”“先大后小”[3],便于程序的后期調試和維護。
面向對象的核心為對象,對象是人們要研究的各種事物,它可以是日常生活中具體的事物,還能是一些抽象的規(guī)則、計劃等。對象的抽象化為類。簡單來講,類=數(shù)據(jù)+操作。其中,數(shù)據(jù)用來描述對象的性質和狀態(tài);操作是指對象的行為,而具有相同和相似性質的一組對象則稱為“類”。將繁瑣的步驟進行行為、功能,模塊化,就是面向對象,其核心為事物整體,是把構成問題的事物分解成各個對象,建立對象的目的不是為了完成某一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。
在面向對象和面向過程兩種方法中,面向對象方法的對象和面向過程的數(shù)據(jù)是相互對應的;類作為一種抽象的數(shù)據(jù)類型,與面向過程的結構存在相似點;而方法和函數(shù)則分別是兩種編程方法的主要組成部分。在面向對象編程思想中,對象以類的形式,用代碼寫成可描述的屬性或方法,通過相互傳遞消息來完成通信,又通過處理,形成抽象或具體的類;在面向過程的編程方法中,同理,我們以函數(shù)的形式,通過函數(shù)調用來完成,我們又能對數(shù)據(jù)做出新的處理。通過此圖(見圖1),我們可以明確地看出面向對象和面向過程的異同點。
2 ?程序執(zhí)行機制
為了更清晰地了解兩種方法之間的關系,我們以典型的“求長方形的周長和面積”為例,對比分析面向過程和面向對象程序設計方法之間的異同,從而明確分析二者的使用場景。
2.1 面向過程程序設計
我們首先要確定想做的內容,先定義求面積和周長的函數(shù),寫出周長和面積的相關算法,最后通過調用。具體代碼為:
int Area(int a,int b)//求面積
{int s;//定義面積變量
s=a*b;//面積公式
return s;}
int Perimeter(int a,int b)//求周長
{int c;//定義周長變量
c=2*(a+b);//周長公式
returnc;}
int main()
{intl,w,s,c;//定義長方形的長,寬,面積,周長
scanf("%d%d",&l,&w);//手動輸入長和寬
printf("長方形的面積為%d,周長為%d\n",Area(l,w),Perimeter(l,w));//輸出面積和周長
return0;}
2.2 面向對象程序設計
既然題目所求的對象為“長方形”,因此,我們這道題就要以長方形為中心展開。
而類作為對象的抽象化,就要先分離出“長方形”這個對象的屬性,具有長和寬,因此我們就書寫相應的方法與函數(shù),我們需要求其周長和面積。因此,我們定義了一個長方形類,最終在主函數(shù)中調用,從而求出某具體長方形的面積。詳細代碼如下。
public class Rect {//類代碼
public double length;
public double width;
public double getLength()
{return length;}
public void setLength(double l)
{ ?l = length;}
public double getWidth()
{ ? return width; ?}
public void setWidth(double w)
{ ?w = width; ?}
public Rect(double l, double w)
{ ?l = length;
w = width;}
public double SRect() ? //求面積
{ ?return length*width;}
public double CRect() ?//求周長
{return 2*(length+width);} ?}
3 ?結語
面向過程和面向對象,程序的編寫發(fā)生了根本性的變化:C語言作為典型的“面向過程”設計語言,我們發(fā)現(xiàn)面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟實現(xiàn),使用的時候按需調用。Java是典型的“面向對象”設計語言,從上文一小段代碼可以看出,面向對象就好比團隊合作,需要很多人完成。
面向過程思想是我們每一個人天生具備的。在編程時,我們總會不自覺地去考慮怎么來完成某一需求,分析出具體的步驟,然后按照步驟來一步步實現(xiàn)。但是在現(xiàn)實生活當中,并不是每一件事都可以自己獨立來完成,需要合作才可以完成某一項復雜的工作。這樣來看的話,面向對象思想似乎更符合人們的做事方式,也更生活化。
參考文獻
[1] 李廣松.完全面向對象項目式《C++程序設計》課程改革與創(chuàng)新[J].電腦知識與技術,2014,10(12):2781-2784.
[2] 劉雍.從面向過程到面向對象思路轉換[J].硅谷,2008(10):45.
[3] 卜麗娜.大型建筑用能管理監(jiān)測系統(tǒng)應用研究[D].湖南大學,2013.