• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      淺談面向?qū)ο蠛兔嫦蜻^程程序設(shè)計(jì)

      2017-04-14 09:16:03河北農(nóng)業(yè)大學(xué)渤海校區(qū)理工學(xué)院石博文
      電子世界 2017年1期
      關(guān)鍵詞:類庫多態(tài)程序員

      河北農(nóng)業(yè)大學(xué)渤海校區(qū)理工學(xué)院 石博文

      淺談面向?qū)ο蠛兔嫦蜻^程程序設(shè)計(jì)

      河北農(nóng)業(yè)大學(xué)渤海校區(qū)理工學(xué)院 石博文

      主要論述了面向過程程序設(shè)計(jì)的結(jié)構(gòu)化思想和面向?qū)ο蟪绦蛟O(shè)計(jì)的抽象、封裝、繼承、多態(tài)技術(shù),并詳細(xì)介紹了兩種思維方式的特點(diǎn)、優(yōu)缺點(diǎn)以及相互聯(lián)系。

      程序設(shè)計(jì);面向?qū)ο螅幻嫦蜻^程;模塊;封裝;繼承;多態(tài)

      1 引言

      程序設(shè)計(jì)是給出解決特定問題程序的過程。程序設(shè)計(jì)的本質(zhì)是把人們在現(xiàn)實(shí)生活中遇到的問題經(jīng)過抽象處理,再利用計(jì)算機(jī)語言轉(zhuǎn)換到機(jī)器能夠理解的層面上去。如今,在程序設(shè)計(jì)中,有兩個(gè)非常成熟的設(shè)計(jì)方式:面向過程的程序設(shè)計(jì)和面向?qū)ο蟮某绦蛟O(shè)計(jì)。

      2 面向過程的程序設(shè)計(jì)

      2.1 設(shè)計(jì)思想

      面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候再一個(gè)一個(gè)調(diào)用。結(jié)構(gòu)化程序設(shè)計(jì)是其核心思想。

      2.2 設(shè)計(jì)特點(diǎn)

      (1)模塊化

      模塊化即功能分解,實(shí)質(zhì)是采用自頂向下、逐步求精的設(shè)計(jì)過程把程序分解成單一處理功能的模塊,進(jìn)而通過調(diào)用相應(yīng)模塊并傳遞參數(shù)以實(shí)現(xiàn)程序的功能,此功能模塊可以理解為函數(shù)、過程、子程序;每一模塊內(nèi)部均是由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成,利用這三種結(jié)構(gòu)的組合、嵌套,可以實(shí)現(xiàn)任何復(fù)雜的程序設(shè)計(jì)。功能分解使得系統(tǒng)是模塊的組件即:程序=(模塊+模塊+模塊+…)、模塊=(數(shù)據(jù)結(jié)構(gòu)+算法)[1]。

      模塊設(shè)計(jì)應(yīng)堅(jiān)持“高內(nèi)聚,低耦合”的設(shè)計(jì)原則。其中“高內(nèi)聚”是指每一個(gè)模塊都執(zhí)行一個(gè)完整的功能,具有一個(gè)完整功能的業(yè)務(wù)都組合在一個(gè)模塊當(dāng)中,而不會分散到兩個(gè)或者多個(gè)模塊當(dāng)中;“低耦合”是指每一個(gè)模塊之間的共用信息應(yīng)該盡量少,每個(gè)模塊之間的交集應(yīng)盡可能小,應(yīng)該盡量降低每個(gè)模塊之間的耦合度。

      (2)數(shù)據(jù)和操作分離

      面向過程的程序設(shè)計(jì)把重點(diǎn)放在解決問題的功能模塊劃分上,將數(shù)據(jù)和操作這些數(shù)據(jù)的函數(shù)分開。數(shù)據(jù)處于次要地位,而過程即模塊劃分是關(guān)心的焦點(diǎn)[2]。

      2.3 設(shè)計(jì)優(yōu)點(diǎn)

      早期的程序設(shè)計(jì)屬于面向計(jì)算機(jī)的程序設(shè)計(jì),程序員需要考慮大量的機(jī)器細(xì)節(jié)。面向過程的程序設(shè)計(jì)優(yōu)點(diǎn)是相對前期程序設(shè)計(jì)而論的。

      (1)模塊化思想將一個(gè)較復(fù)雜的問題分解為若干個(gè)子問題,各子問題分別由不同的人員解決,提高了開發(fā)效率,便于程序的調(diào)試;

      (2)面向過程的設(shè)計(jì)按解決問題的過程劃分模塊,直接針對求解關(guān)系,集中處理數(shù)據(jù),運(yùn)行效率很高[3];

      (3)自頂向下逐步求精的方法使程序具有清晰的層次結(jié)構(gòu),容易閱讀和理解,也較容易保證程序的正確性。

      2.4 設(shè)計(jì)缺陷

      (1)軟件模塊重用難。當(dāng)開發(fā)一個(gè)新的軟件系統(tǒng)時(shí),以前開發(fā)的軟件模塊很難直接使用;

      (2)軟件系統(tǒng)功能擴(kuò)展難。一旦用戶的需求發(fā)生變化,要改進(jìn)系統(tǒng)或升級版本時(shí),程序員要面對調(diào)用關(guān)系復(fù)雜的許多函數(shù)模塊,系統(tǒng)的功能擴(kuò)展很困難;

      (3)軟件維護(hù)難。軟件的模塊即函數(shù)越來越多,模塊間的調(diào)用關(guān)系越來越復(fù)雜,程序容易出錯(cuò),而且一旦出錯(cuò)很難查找[4]。

      3 面向?qū)ο蟮某绦蛟O(shè)計(jì)

      3.1 設(shè)計(jì)思想

      面向?qū)ο缶褪前褬?gòu)成問題的事務(wù)分解成各個(gè)對象,建立對象的目的不是為了完成一個(gè)步驟,而是為了描述某個(gè)事物在整個(gè)解決問題步驟中的行為。

      3.2 設(shè)計(jì)特點(diǎn)

      (1)抽象、類、對象

      抽象就是把事物共同點(diǎn)抽取出來,以統(tǒng)一的方式進(jìn)行概要描述的一種過程。面向?qū)ο笾校愂菍ΜF(xiàn)實(shí)世界事物的抽象,包括屬性和方法。其中屬性是對事物靜態(tài)特征的描述,方法是對事物動態(tài)特性即行為的描述[5]。一旦建立了類,就可以基于類初始化成員變量,實(shí)例化出一個(gè)對象,而程序就是由這一系列對象組成即:程序=(對象+對象+對象+…)、對象=(數(shù)據(jù)結(jié)構(gòu)+算法)。

      (2)封裝

      封裝又稱數(shù)據(jù)隱藏,就是將一個(gè)事物的屬性和方法放在一個(gè)類中,對外只提供訪問該數(shù)據(jù)的方法,程序的其它部分不能直接作用于此數(shù)據(jù)。這一特性大大降低了面向過程中模塊間的耦合性,從而提高了程序的可靠性,盡可能地排除了對數(shù)據(jù)進(jìn)行任意訪問造成的隱患[6]。

      (3)繼承

      類的繼承實(shí)質(zhì)上是先定義一個(gè)基類(父類),然后用該基類派生出其它的子類,子類在沿襲父類的屬性和方法的同時(shí)可以添加自己特有的屬性和方法。繼承性使得程序得以最大限度地實(shí)現(xiàn)代碼重用,同時(shí)在父類上所做的改動可以直接反映到它的所有子類中,軟件可維護(hù)性大為提高。

      (4)多態(tài)

      多態(tài)是指在一般類中定義的屬性或方法被特殊類繼承以后,通過重寫,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。多態(tài)性使得程序員可以將所定義的方法應(yīng)用于多個(gè)類,同一個(gè)屬性和方法在一般類及各個(gè)特殊類中具有不同的語義,并使得程序更加容易擴(kuò)展[7]。

      3.3 設(shè)計(jì)優(yōu)點(diǎn)

      面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)越性是基于它的特點(diǎn)而論的。對客觀現(xiàn)實(shí)世界事物的抽象,使軟件開發(fā)可以按照人類習(xí)慣的思維方式建立起問題領(lǐng)域的模型從而模擬客觀世界,有利于大型軟件的開發(fā);事物屬性和方法的封裝避免了數(shù)據(jù)的隨意訪問,保證了數(shù)據(jù)的安全性;類與類之間的繼承關(guān)系,最大程度實(shí)現(xiàn)了代碼的重用;繼承關(guān)系下的多態(tài)性增強(qiáng)了程序的靈活性和擴(kuò)展性。

      3.4 設(shè)計(jì)缺陷

      (1)運(yùn)行效率較低。類的大量加載會犧牲系統(tǒng)性能,降低運(yùn)行速度。雖然CPU速度在提高,內(nèi)存容量在增加,但這一問題仍會隨著系統(tǒng)規(guī)模變大而逐漸顯示出來,變得越發(fā)嚴(yán)重。

      (2)類庫龐大。由于類庫都過于龐大,程序員對它們的掌握需要一段時(shí)間,從普及、推廣的角度來看,類庫應(yīng)在保證其功能完備的基礎(chǔ)上進(jìn)行相應(yīng)的縮減。

      (3)類庫可靠性。越龐大的系統(tǒng)必會存在我們無法預(yù)知的問題隱患,程序員無法完全保證類庫中的每個(gè)類在各種環(huán)境中百分之百的正確,當(dāng)使用的類發(fā)生了問題,就會影響后續(xù)工作,程序員也有可能推翻原來的全部工作[8,9]。

      4 結(jié)束語

      面向?qū)ο笾匾晫ΜF(xiàn)實(shí)世界的抽象,面向過程重視對問題的功能模塊化,但兩種技術(shù)不是非此即彼的對立關(guān)系。面向?qū)ο蟮某橄?、封裝、繼承、多態(tài)是建立在面向過程的順序、選擇、循環(huán)三種控制結(jié)構(gòu)之上。因此,如果將一個(gè)軟件任務(wù)分為兩層,那么面向?qū)ο蠹夹g(shù)用于解決“做什么”,而面向過程技術(shù)用于解決“怎么做”。

      [1]馬金霞,宋傳磊.面向過程和面向?qū)ο蟪绦蛟O(shè)計(jì)分析[J].中國新通信,2016(11).

      [2]錢能.C++程序設(shè)計(jì)教程(第2版)[M].北京:清華大學(xué)出版社,2005(09):13-16.

      [3]許偉剛,梁大周.面向?qū)ο蟪绦蛟O(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,1990(12).

      [4]朱戰(zhàn)立,宋新愛.面向?qū)ο蟪绦蛟O(shè)計(jì)與C++語言[M].北京:電子工業(yè)出版社,2010(07):31-46.

      [5]張海藩.軟件工程導(dǎo)論(第5版)[M].北京:清華大學(xué)出版社,2008(02):203-211.

      [6][美]Grady Booch等.面向?qū)ο蠓治雠c設(shè)計(jì)(第3版)[M].王海鵬,潘加宇譯.北京:人民郵電出版社,2009(08):35-38.

      [7][加]Scott W.Ambler.面向?qū)ο筌浖_發(fā)教程(第2版)[M].車皓陽,劉銳譯.北京:機(jī)械工業(yè)出版社,2003(06):97-130.

      [8]徐向陽.面向?qū)ο蟪绦蛟O(shè)計(jì)現(xiàn)狀及發(fā)展趨勢研究[J].光盤技術(shù),2006(01).

      [9]胡玲.面向?qū)ο蟪绦蛟O(shè)計(jì)和設(shè)計(jì)技術(shù)思考[J].電子技術(shù)與軟件工程,2016(06).

      The Summary between Object-oriented Programming and Process-oriented Programming

      ShiBowen
      (College of Science and Engineering,Agricultural University of Hebei,Cangzhou,061000,China)

      The summary is mainly about structured ideas of process-oriented programming and some important technologies in objectoriented programming like abstract,encapsulation,inheritance and polymorphism.At the same time,the article expatiates the feature,merits and drawbacks as well as the relationship between process-oriented and object-oriented programming.

      programming;object-oriented;process-oriented,module;encapsulation;inheritance;polymorphism

      猜你喜歡
      類庫多態(tài)程序員
      為了讓媽媽看懂地圖,一位“野生程序員”做了個(gè)小程序
      分層多態(tài)加權(quán)k/n系統(tǒng)的可用性建模與設(shè)計(jì)優(yōu)化
      怎樣成為一名優(yōu)秀程序員
      幼兒100(2020年29期)2020-10-21 06:17:58
      參差多態(tài)而功不唐捐
      用Java編寫客戶機(jī)/服務(wù)器端應(yīng)用程序
      Python在數(shù)據(jù)可視化中的應(yīng)用
      數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革方案和應(yīng)用效果
      軟件工程(2017年12期)2018-01-29 17:35:55
      數(shù)據(jù)結(jié)構(gòu)可視化類庫的設(shè)計(jì)與實(shí)現(xiàn)
      程序員之子
      意林(2017年24期)2018-01-02 22:49:14
      加班
      三月三(2016年6期)2016-06-21 10:25:33
      江达县| 遵义县| 昂仁县| 高雄县| 建瓯市| 外汇| 长宁县| 涿鹿县| 宜都市| 盐池县| 朔州市| 延寿县| 汝城县| 邵阳县| 连山| 新平| 裕民县| 玛沁县| 克拉玛依市| 资中县| 荃湾区| 罗平县| 龙口市| 九江县| 平果县| 江北区| 包头市| 石家庄市| 九龙坡区| 锡林郭勒盟| 昌宁县| 紫阳县| 威海市| 五家渠市| 买车| 比如县| 福州市| 武定县| 穆棱市| 剑阁县| 甘南县|