馬金霞 宋傳磊
【摘要】 面向過(guò)程程序設(shè)計(jì)方法在上世紀(jì)八九十年代被廣泛接受和使用,并占據(jù)主導(dǎo)地位。面向?qū)ο蟪绦蛟O(shè)計(jì)方法問(wèn)世后,軟件開(kāi)發(fā)方法面臨著從面向過(guò)程范型到面向?qū)ο蠓缎偷霓D(zhuǎn)變,對(duì)象作為該方法的核心技術(shù),正在得到新的開(kāi)發(fā)語(yǔ)言和新的系統(tǒng)架構(gòu)的支持,兩種開(kāi)發(fā)方法存在質(zhì)的區(qū)別。
【關(guān)鍵詞】 面向過(guò)程 面向?qū)ο?開(kāi)發(fā)方法 區(qū)別
在軟件開(kāi)發(fā)過(guò)程中,有兩個(gè)非常成熟、經(jīng)典的開(kāi)發(fā)方法:面向過(guò)程方法和面向?qū)ο蠓椒?。本文就個(gè)人認(rèn)識(shí)對(duì)這兩種方法的區(qū)別和聯(lián)系做出簡(jiǎn)要闡述。
一、面向過(guò)程程序設(shè)計(jì)
面向過(guò)程程序設(shè)計(jì)基于結(jié)構(gòu)化程序設(shè)計(jì)思想,強(qiáng)調(diào)程序結(jié)構(gòu)規(guī)范為順序、選擇和循環(huán)三種基本結(jié)構(gòu),利用這三種結(jié)構(gòu)的組合、嵌套,可以實(shí)現(xiàn)任何復(fù)雜的程序設(shè)計(jì)。遵循結(jié)構(gòu)化程序設(shè)計(jì)思想設(shè)計(jì)的程序具有結(jié)構(gòu)簡(jiǎn)單、規(guī)范、易理解、易維護(hù)等特點(diǎn),這給程序的設(shè)計(jì)和維護(hù)帶來(lái)了質(zhì)的飛躍。
面向過(guò)程的程序設(shè)計(jì)方法,以算法為核心,把數(shù)據(jù)和處理過(guò)程作為相互獨(dú)立的部分,數(shù)據(jù)代表問(wèn)題域中的實(shí)體,而程序代碼則用于處理這些數(shù)據(jù)。把數(shù)據(jù)和代碼作為分離的實(shí)體,采用計(jì)算機(jī)的觀點(diǎn)處理問(wèn)題。計(jì)算機(jī)處理問(wèn)題是分步進(jìn)行的,要想讓計(jì)算機(jī)實(shí)現(xiàn)某種功能,必須告訴計(jì)算機(jī)詳細(xì)的解題步驟,即向計(jì)算機(jī)詳細(xì)描述求解算法。所以,面向過(guò)程程序設(shè)計(jì)就是按照計(jì)算機(jī)的要求,圍繞算法進(jìn)行程序設(shè)計(jì)。
面向過(guò)程的程序設(shè)計(jì)方法,實(shí)質(zhì)上是自頂向下的功能分解法,通過(guò)逐步求精的設(shè)計(jì)過(guò)程把程序分解成單一處理功能的模塊,進(jìn)而通過(guò)參數(shù)傳遞調(diào)用相應(yīng)模塊以實(shí)現(xiàn)程序的功能。系統(tǒng)功能的實(shí)現(xiàn)最終落實(shí)在相應(yīng)的功能模塊上,此功能模塊可以理解為函數(shù)、過(guò)程、子程序、宏等。
以下通過(guò)C語(yǔ)言程序案例表述面向過(guò)程程序設(shè)計(jì)。
案例:
主功能模塊main(),通過(guò)調(diào)用子功能模塊swap(),實(shí)現(xiàn)兩個(gè)整型變量值的交換。
編碼實(shí)現(xiàn):
#include “stdio.h”
int swap(int *p,int *q)
{int t; t=*p;*p=*q;*q=t;}
void main()
{int x,y;
scanf(“%d%d”,&x;,&y;);
printf(“交換前x=%d,y=%d\n",x,y);
swap(&x;,&y;);
printf(“交換后x=%d,y=%d\n",x,y);
}
二、面向?qū)ο蟪绦蛟O(shè)計(jì)
面向?qū)ο蟪绦蛟O(shè)計(jì)方法是盡可能模擬人類(lèi)的思維方式,使得軟件的開(kāi)發(fā)方法與過(guò)程盡可能接近人類(lèi)認(rèn)識(shí)世界、解決現(xiàn)實(shí)問(wèn)題的方法和過(guò)程,也即使得描述問(wèn)題的問(wèn)題空間與問(wèn)題的解決方案空間在結(jié)構(gòu)上盡可能一致,把客觀世界中的實(shí)體抽象為問(wèn)題域中的對(duì)象。
面向?qū)ο蟪绦蛟O(shè)計(jì)以對(duì)象為核心,該方法認(rèn)為程序由一系列對(duì)象組成。類(lèi)是對(duì)現(xiàn)實(shí)世界的抽象,包括表示靜態(tài)屬性的數(shù)據(jù)和對(duì)數(shù)據(jù)的操作,對(duì)象是類(lèi)的實(shí)例化。對(duì)象間通過(guò)消息傳遞相互通信,來(lái)模擬現(xiàn)實(shí)世界中不同實(shí)體間的聯(lián)系。
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象是組成程序的基本模塊。
以下通過(guò)C++語(yǔ)言程序案例表述面向?qū)ο蟪绦蛟O(shè)計(jì)。
案例:
主功能模塊main(),通過(guò)調(diào)用swap類(lèi)的對(duì)象change,實(shí)現(xiàn)兩個(gè)整型變量值的交換。
編碼實(shí)現(xiàn):
#include “iostream.h”
class swap
{private:
int t;
public:
void exchange(int &x;,int &y;){t=x;x=y; y=t;}
};
void main()
{int m,n;
cin>>m>>n;
swap change;
cout<<”交換前m=”< change.exchange(m,n); cout<<”交換后m=”< } 三、總結(jié) 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和面相過(guò)程的程序設(shè)計(jì)方法有著本質(zhì)的區(qū)別。面向?qū)ο蟪绦蛟O(shè)計(jì)使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題,進(jìn)而自然地解決問(wèn)題,強(qiáng)調(diào)對(duì)現(xiàn)實(shí)世界的模擬而不強(qiáng)調(diào)算法,鼓勵(lì)項(xiàng)目組人員在軟件開(kāi)發(fā)的過(guò)程中用應(yīng)用領(lǐng)域的概念去思考,用對(duì)象的分解取代面向過(guò)程方法學(xué)中的功能分解,不再?gòu)?qiáng)調(diào)計(jì)算機(jī)解決問(wèn)題的觀點(diǎn),而是重視現(xiàn)實(shí)世界的模型創(chuàng)建。 參 考 文 獻(xiàn) [1] 張海藩,呂云翔.軟件工程.人民郵電出版社.2015 [2] 王育堅(jiān).Visual C++面向?qū)ο缶幊?清華大學(xué)出版社.2015