程序設(shè)計方法
  • 更新時間:2024-11-07 18:15:19
  • 網(wǎng)站建設(shè)
  • 發(fā)布時間:1年前
  • 237

網(wǎng)站制作的節(jié)目就像一部電影。好的和壞的之間有很大的區(qū)別。一部好電影能讓人想再看一遍,但一部爛電影卻很少有人看。好的程序不僅能解決問題,而且還具有通俗易懂、運行效率高、易于修改等特點。所以。如何寫出好的程序?這是程序員在編程前必須考慮的問題,即需要選擇合適的編程方式。

程序設(shè)計

隨著計算機硬件技術(shù)的不斷發(fā)展,編程方法也在不斷發(fā)展。最早的編程方式叫做個體化方式,每個程序員按照自己的習(xí)慣和風(fēng)格來編寫程序,其結(jié)果是程序難以維護。特別是對于較大的程序。個性化的方法導(dǎo)致程序的生命周期縮短。成本增加了,不能滿足需要。經(jīng)過計算機工作者的努力,編程方法不斷改進。在過去的幾十年里,編程方法主要經(jīng)歷了兩次革命性的飛躍:結(jié)構(gòu)化方法和面向?qū)ο蠓椒āO鄳?yīng)地,產(chǎn)生了面向過程編程和面向?qū)ο缶幊?。下面分別介紹結(jié)構(gòu)化方法(Structured Method)和面向?qū)ο蠓椒ǎ∣bject-OrientedMethod)。

結(jié)構(gòu)化程序設(shè)計,曾被譽為“程序設(shè)計方法的革命”,使程序設(shè)計從主要依靠程序員的自由活動,轉(zhuǎn)變?yōu)橐婚T有規(guī)律可循的科學(xué)。它的主要貢獻是推動了編程風(fēng)格從“追求技巧和效率”向“清晰第一,效率第二”的轉(zhuǎn)變。這提高了程序的易讀性和可靠性。 1976年,瑞士的Nikiaus Wirth教授在他的經(jīng)典著作《算法十?dāng)?shù)據(jù)結(jié)構(gòu)二程序》序言中指出,“程序是基于數(shù)據(jù)的某些特定表示和結(jié)構(gòu),對算法進行抽象的具體描述”。 "如果不了解應(yīng)用于數(shù)據(jù)的算法,就不可能決定如何形成數(shù)據(jù);相反,算法的結(jié)構(gòu)和選擇往往在很大程度上取決于底層數(shù)據(jù)結(jié)構(gòu)。簡而言之,程序組成和數(shù)據(jù)結(jié)構(gòu)是兩個密不可分的問題?!?

Worth 的討論精彩地總結(jié)了當(dāng)時算法和數(shù)據(jù)結(jié)構(gòu)在編程中的地位和相互關(guān)系。 《算法+數(shù)據(jù)結(jié)構(gòu)兩種方案》。它影響和引導(dǎo)了一代又一代的程序員。從早期的編程語言Fortran、Cobol、ADA、Pascal到現(xiàn)代的C語言,都是面向過程的,都有一個特點:在分析或設(shè)計軟件時,開發(fā)者總是遵循“程序二次數(shù)據(jù)結(jié)構(gòu)” 10 “算法”的思想。程序理解為由一組被動數(shù)據(jù)和一組主動進程組成,這樣的編程方式稱為面向過程的編程方式。

結(jié)構(gòu)化程序設(shè)計的普及促進了軟件生產(chǎn)的產(chǎn)業(yè)化,緩解了當(dāng)時的軟件危機。但是,其面向過程的編程思想并不適合日益復(fù)雜的應(yīng)用系統(tǒng)。實踐表明,用結(jié)構(gòu)化技術(shù)處理代碼在5000行以內(nèi)的軟件確實非常有效,但面對當(dāng)今大型軟件產(chǎn)品的復(fù)雜性。但還是無能為力。但是,在客觀事物中,實體內(nèi)部的“狀態(tài)”(用數(shù)據(jù)表示)和“運動”(對數(shù)據(jù)的操作)是結(jié)合在一起的。這使得使用傳統(tǒng)范式開發(fā)的軟件模型(稱為“解決方案域”)人為地偏離了客觀實體本身的模型(稱為“問題空間”,Problem domain)。因此,面向?qū)ο蟮姆椒☉?yīng)運而生。

在面向?qū)ο缶幊讨?,?shù)據(jù)及其操作被封裝在稱為“對象”的實體中,對象之間通過“消息”相互連接。該機制取代了“數(shù)據(jù)結(jié)構(gòu)+算法”的思想,從而更好地實現(xiàn)了“解空間”和“問題空間”的一致性,為解決軟件危機帶來了新的希望,從結(jié)構(gòu)化編程到面向?qū)ο蟮南冗M程序設(shè)計是程序設(shè)計方法的又一次飛躍,其優(yōu)越性在軟件開發(fā)和維護中日益顯現(xiàn)。

面向?qū)ο蟮乃枷胱畛跗鹪从?0世紀(jì)60年代中期的模擬編程語言Simula 67。 20世紀(jì)80年代初出現(xiàn)的Smalltalk語言和1990年代推出的C++、Java語言及其編程環(huán)境,成為面向?qū)ο蠹夹g(shù)發(fā)展的重要里程碑。 20世紀(jì)80年代末以來,面向?qū)ο蟪绦蛟O(shè)計和面向?qū)ο笮枨蠓治龆嫉玫窖杆侔l(fā)展,特別是20世紀(jì)90年代中期,Booch、Rumbaugh和Jacobon共同提出了統(tǒng)一建模語言(Unified Modeling Language,CML)。許多面向?qū)ο蟮姆椒ū患傻揭粋€標(biāo)準(zhǔn)中,使得面向?qū)ο蟮姆椒ǔ蔀橹髁鞯木幊谭椒ā?

(1)對象((Object),對象是現(xiàn)實世界中個體或事物的抽象表示,是對其屬性和相關(guān)操作的統(tǒng)一封裝。屬性表示對象的性質(zhì),屬性值指定對象所有可能的狀態(tài),對象的操作是指對象可以對外展示的服務(wù),比如把卡車看成一個對象,它有位置、速度、顏色、容量等屬性。因為可以對對象進行啟動、停止、加速和維護。操作將是或更多

或少地改變卡車的屬性值。

(2)類(Class)。類用于表示某些對象的共同特征(屬性和操作),對象是類的實例。例如,汽車類可包含位置、速度、顏色等屬性,以及啟動、停車、加速等操作??ㄜ囀瞧囶惖囊粋€實例。

(3)繼承(Inheritance)類之間可以存在繼承關(guān)系,它是現(xiàn)實世界中遺傳關(guān)系的直接模擬,可用來表示類之間的內(nèi)在聯(lián)系以及對屬性和操作的共享。子類可以沿用父類(被繼承類)的某些特征,同時子類也可以具有自己獨有的屬性和操作,對于一個類的修改能自動反映到它的所有子類中。例如,飛行器、汽車和輪船都是交通工具類的子類,它們都可以繼承交通工具類的某些屬性和操作。除繼承關(guān)系外,現(xiàn)實世界中還大量存在著“部分和整體”關(guān)系。例如,飛機可由發(fā)動機、機身、機械控制系統(tǒng)、電子控制系統(tǒng)等構(gòu)成。這種關(guān)系在面向?qū)ο蠓椒▽W(xué)中可表示為類之間的聚集(Aggregation)關(guān)系。在聚集關(guān)系下,“部分”類的對象“整體”類對象的一個組成部分。

(4)消息(Message)。消息傳遞是對象與其外部世界相互關(guān)聯(lián)的唯一途徑。對象可以向其他對象發(fā)送消息以請求服務(wù),也可以響應(yīng)其他對象傳來的消息,完成自身固有的某些操作,從而服務(wù)于其他對象.例如。直升飛機可以響應(yīng)輪船的海難急救信號,起飛,加速,飛赴出事地點并實施救援作業(yè)。?對象的操作主要是用來響應(yīng)外來消息并為其他對象提供服務(wù)的,所以它們也被稱作“外部服務(wù)”。Coad和Yourdon認(rèn)為。采用上述4種概念進行開發(fā)的軟件系統(tǒng)可以認(rèn)為是面向?qū)ο蟮?。為此,他們把面向?qū)ο蠓椒w結(jié)為一個簡單的公式,即面向時象二對象+分類(Classification) +繼承+消息通信(Communication withmessages)。

我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

本文章出于推來客官網(wǎng),轉(zhuǎn)載請表明原文地址:https://www.tlkjt.com/web/12591.html
推薦文章

在線客服

掃碼聯(lián)系客服

3985758

回到頂部