網(wǎng)站制作的節(jié)目就像一部電影。好的和壞的之間有很大的區(qū)別。一部好電影能讓人想再看一遍,但一部爛電影卻很少有人看。好的程序不僅能解決問(wèn)題,而且還具有通俗易懂、運(yùn)行效率高、易于修改等特點(diǎn)。所以。如何寫出好的程序?這是程序員在編程前必須考慮的問(wèn)題,即需要選擇合適的編程方式。
隨著計(jì)算機(jī)硬件技術(shù)的不斷發(fā)展,編程方法也在不斷發(fā)展。最早的編程方式叫做個(gè)體化方式,每個(gè)程序員按照自己的習(xí)慣和風(fēng)格來(lái)編寫程序,其結(jié)果是程序難以維護(hù)。特別是對(duì)于較大的程序。個(gè)性化的方法導(dǎo)致程序的生命周期縮短。成本增加了,不能滿足需要。經(jīng)過(guò)計(jì)算機(jī)工作者的努力,編程方法不斷改進(jìn)。在過(guò)去的幾十年里,編程方法主要經(jīng)歷了兩次革命性的飛躍:結(jié)構(gòu)化方法和面向?qū)ο蠓椒?。相?yīng)地,產(chǎn)生了面向過(guò)程編程和面向?qū)ο缶幊?。下面分別介紹結(jié)構(gòu)化方法(Structured Method)和面向?qū)ο蠓椒ǎ∣bject-OrientedMethod)。
結(jié)構(gòu)化程序設(shè)計(jì),曾被譽(yù)為“程序設(shè)計(jì)方法的革命”,使程序設(shè)計(jì)從主要依靠程序員的自由活動(dòng),轉(zhuǎn)變?yōu)橐婚T有規(guī)律可循的科學(xué)。它的主要貢獻(xiàn)是推動(dòng)了編程風(fēng)格從“追求技巧和效率”向“清晰第一,效率第二”的轉(zhuǎn)變。這提高了程序的易讀性和可靠性。 1976年,瑞士的Nikiaus Wirth教授在他的經(jīng)典著作《算法十?dāng)?shù)據(jù)結(jié)構(gòu)二程序》序言中指出,“程序是基于數(shù)據(jù)的某些特定表示和結(jié)構(gòu),對(duì)算法進(jìn)行抽象的具體描述”。 "如果不了解應(yīng)用于數(shù)據(jù)的算法,就不可能決定如何形成數(shù)據(jù);相反,算法的結(jié)構(gòu)和選擇往往在很大程度上取決于底層數(shù)據(jù)結(jié)構(gòu)。簡(jiǎn)而言之,程序組成和數(shù)據(jù)結(jié)構(gòu)是兩個(gè)密不可分的問(wèn)題?!?
Worth 的討論精彩地總結(jié)了當(dāng)時(shí)算法和數(shù)據(jù)結(jié)構(gòu)在編程中的地位和相互關(guān)系。 《算法+數(shù)據(jù)結(jié)構(gòu)兩種方案》。它影響和引導(dǎo)了一代又一代的程序員。從早期的編程語(yǔ)言Fortran、Cobol、ADA、Pascal到現(xiàn)代的C語(yǔ)言,都是面向過(guò)程的,都有一個(gè)特點(diǎn):在分析或設(shè)計(jì)軟件時(shí),開發(fā)者總是遵循“程序二次數(shù)據(jù)結(jié)構(gòu)” 10 “算法”的思想。程序理解為由一組被動(dòng)數(shù)據(jù)和一組主動(dòng)進(jìn)程組成,這樣的編程方式稱為面向過(guò)程的編程方式。
結(jié)構(gòu)化程序設(shè)計(jì)的普及促進(jìn)了軟件生產(chǎn)的產(chǎn)業(yè)化,緩解了當(dāng)時(shí)的軟件危機(jī)。但是,其面向過(guò)程的編程思想并不適合日益復(fù)雜的應(yīng)用系統(tǒng)。實(shí)踐表明,用結(jié)構(gòu)化技術(shù)處理代碼在5000行以內(nèi)的軟件確實(shí)非常有效,但面對(duì)當(dāng)今大型軟件產(chǎn)品的復(fù)雜性。但還是無(wú)能為力。但是,在客觀事物中,實(shí)體內(nèi)部的“狀態(tài)”(用數(shù)據(jù)表示)和“運(yùn)動(dòng)”(對(duì)數(shù)據(jù)的操作)是結(jié)合在一起的。這使得使用傳統(tǒng)范式開發(fā)的軟件模型(稱為“解決方案域”)人為地偏離了客觀實(shí)體本身的模型(稱為“問(wèn)題空間”,Problem domain)。因此,面向?qū)ο蟮姆椒☉?yīng)運(yùn)而生。
在面向?qū)ο缶幊讨?,?shù)據(jù)及其操作被封裝在稱為“對(duì)象”的實(shí)體中,對(duì)象之間通過(guò)“消息”相互連接。該機(jī)制取代了“數(shù)據(jù)結(jié)構(gòu)+算法”的思想,從而更好地實(shí)現(xiàn)了“解空間”和“問(wèn)題空間”的一致性,為解決軟件危機(jī)帶來(lái)了新的希望,從結(jié)構(gòu)化編程到面向?qū)ο蟮南冗M(jìn)程序設(shè)計(jì)是程序設(shè)計(jì)方法的又一次飛躍,其優(yōu)越性在軟件開發(fā)和維護(hù)中日益顯現(xiàn)。
面向?qū)ο蟮乃枷胱畛跗鹪从?0世紀(jì)60年代中期的模擬編程語(yǔ)言Simula 67。 20世紀(jì)80年代初出現(xiàn)的Smalltalk語(yǔ)言和1990年代推出的C++、Java語(yǔ)言及其編程環(huán)境,成為面向?qū)ο蠹夹g(shù)發(fā)展的重要里程碑。 20世紀(jì)80年代末以來(lái),面向?qū)ο蟪绦蛟O(shè)計(jì)和面向?qū)ο笮枨蠓治龆嫉玫窖杆侔l(fā)展,特別是20世紀(jì)90年代中期,Booch、Rumbaugh和Jacobon共同提出了統(tǒng)一建模語(yǔ)言(Unified Modeling Language,CML)。許多面向?qū)ο蟮姆椒ū患傻揭粋€(gè)標(biāo)準(zhǔn)中,使得面向?qū)ο蟮姆椒ǔ蔀橹髁鞯木幊谭椒ā?
(1)對(duì)象((Object),對(duì)象是現(xiàn)實(shí)世界中個(gè)體或事物的抽象表示,是對(duì)其屬性和相關(guān)操作的統(tǒng)一封裝。屬性表示對(duì)象的性質(zhì),屬性值指定對(duì)象所有可能的狀態(tài),對(duì)象的操作是指對(duì)象可以對(duì)外展示的服務(wù),比如把卡車看成一個(gè)對(duì)象,它有位置、速度、顏色、容量等屬性。因?yàn)榭梢詫?duì)對(duì)象進(jìn)行啟動(dòng)、停止、加速和維護(hù)。操作將是或更多
或少地改變卡車的屬性值。(2)類(Class)。類用于表示某些對(duì)象的共同特征(屬性和操作),對(duì)象是類的實(shí)例。例如,汽車類可包含位置、速度、顏色等屬性,以及啟動(dòng)、停車、加速等操作。卡車是汽車類的一個(gè)實(shí)例。
(3)繼承(Inheritance)類之間可以存在繼承關(guān)系,它是現(xiàn)實(shí)世界中遺傳關(guān)系的直接模擬,可用來(lái)表示類之間的內(nèi)在聯(lián)系以及對(duì)屬性和操作的共享。子類可以沿用父類(被繼承類)的某些特征,同時(shí)子類也可以具有自己獨(dú)有的屬性和操作,對(duì)于一個(gè)類的修改能自動(dòng)反映到它的所有子類中。例如,飛行器、汽車和輪船都是交通工具類的子類,它們都可以繼承交通工具類的某些屬性和操作。除繼承關(guān)系外,現(xiàn)實(shí)世界中還大量存在著“部分和整體”關(guān)系。例如,飛機(jī)可由發(fā)動(dòng)機(jī)、機(jī)身、機(jī)械控制系統(tǒng)、電子控制系統(tǒng)等構(gòu)成。這種關(guān)系在面向?qū)ο蠓椒▽W(xué)中可表示為類之間的聚集(Aggregation)關(guān)系。在聚集關(guān)系下,“部分”類的對(duì)象“整體”類對(duì)象的一個(gè)組成部分。
(4)消息(Message)。消息傳遞是對(duì)象與其外部世界相互關(guān)聯(lián)的唯一途徑。對(duì)象可以向其他對(duì)象發(fā)送消息以請(qǐng)求服務(wù),也可以響應(yīng)其他對(duì)象傳來(lái)的消息,完成自身固有的某些操作,從而服務(wù)于其他對(duì)象.例如。直升飛機(jī)可以響應(yīng)輪船的海難急救信號(hào),起飛,加速,飛赴出事地點(diǎn)并實(shí)施救援作業(yè)。?對(duì)象的操作主要是用來(lái)響應(yīng)外來(lái)消息并為其他對(duì)象提供服務(wù)的,所以它們也被稱作“外部服務(wù)”。Coad和Yourdon認(rèn)為。采用上述4種概念進(jìn)行開發(fā)的軟件系統(tǒng)可以認(rèn)為是面向?qū)ο蟮?。為此,他們把面向?qū)ο蠓椒w結(jié)為一個(gè)簡(jiǎn)單的公式,即面向時(shí)象二對(duì)象+分類(Classification) +繼承+消息通信(Communication withmessages)。
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對(duì)接開發(fā)等。十余年開發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿意為止,多一次對(duì)比,一定讓您多一份收獲!