• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    淺談OOP在軟件開發(fā)中的應(yīng)用與優(yōu)勢

    2018-07-13 01:40:24
    軟件 2018年6期
    關(guān)鍵詞:子類面向?qū)ο?/a>數(shù)據(jù)結(jié)構(gòu)

    庾 佳

    (蘇州健雄職業(yè)技術(shù)學院,江蘇 太倉 215400)

    0 引言

    軟件開發(fā)人員在尋求問題的合格解決方案時通常會遵循某些軟件開發(fā)方法。這些解決方案作為計算機軟件來實現(xiàn)。

    1 軟件開發(fā)原則

    處理軟件復雜性的一種熟悉而且自然的方式是將系統(tǒng)劃分(或分解)為可管理的模塊(片段或組建)。將系統(tǒng)分解陳模塊由許多方式。有一些原則可以幫助我們獲得所期望的分解結(jié)果。

    1.1 模塊化和本地化

    軟件開發(fā)人員通過使用模塊化[3](modularity)原則來控制系統(tǒng)的復雜性。在系統(tǒng)開發(fā)的早期,系統(tǒng)被分解為一組模塊,這些模塊由過程和函數(shù)組成。通常,一種自上而下(top-down)的開發(fā)策略將系統(tǒng)不斷地分解為更小的模塊。一般而言,高層次模塊指定需要進行什么操作,而低層次模塊則解決如何實現(xiàn)這些操作。圖1說明了將一個用于解決某個問題的系統(tǒng)進行了層次化分解的示意圖。

    圖1 將系統(tǒng)分解成模塊Fig. 1 Decompose the system into modules

    1.2 抽象和信息隱藏

    解決問題人員通常使用抽象來處理系統(tǒng)的復雜性。使用抽象的重點在于定義系統(tǒng)的某個部分或組建,使得該組建能夠被看成是一個黑箱[5]。所有早期的編程語言都是通過子過程構(gòu)造(即過程和函數(shù))來支持都想,稱為過程抽象(procedural abstraction)。進一些年來,面向?qū)ο笳Z言所推崇的OOP技術(shù),支持數(shù)據(jù)抽象(data abstraction),其目的在于將每種數(shù)據(jù)結(jié)構(gòu)或?qū)ο罂醋魇怯蓴?shù)據(jù)屬性以及針對這些屬性的操作所組成。

    信息隱藏的目的在于使一些不會影響到系統(tǒng)中的其他模塊的細節(jié)不可訪問,這樣,數(shù)據(jù)類型和它的操作便組成了一個封閉的系統(tǒng)。其中的細節(jié)對于其他的模塊是隱藏的。

    1.3 松散耦合度和高內(nèi)聚度

    擁有一個松散耦合度的系統(tǒng)有兩個優(yōu)點:第一,使用其他的模塊來替換某個模塊,這樣只有很少的模塊會受這一變化的影響;第二,追蹤某個錯誤并隔離導致該錯誤的有缺陷模塊。

    模塊的內(nèi)在強度——模塊各個部分的相關(guān)性有多強——稱為內(nèi)聚度。如果模塊的組成部分之間關(guān)聯(lián)性很強,而且都與該模塊的用途和目的密切相關(guān),則稱該模塊具有很強的內(nèi)聚度,即高內(nèi)聚度。高內(nèi)聚是指一個軟件模塊是由相關(guān)性很強的代碼組成,只負責一項任務(wù),也就是常說的單一責任原則。

    2 面向?qū)ο蟪绦蛟O(shè)計(OOP)

    面向?qū)ο蟪绦蛟O(shè)計(Object Oriented Programming)方法簡稱 OOP方法[6-8],是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法。相比較傳統(tǒng)的開發(fā)方法,面向?qū)ο蟮某绦蛟O(shè)計方法采用了自底向上的歸納、自頂向下的分解的方法相結(jié)合,通過對對象模型的建立,能夠真正建立基于用戶的需求,而且系統(tǒng)的可維護性大大改善。它是歸納和演繹思想的綜合體現(xiàn),對于軟件設(shè)計起到了很好的作用。

    2.1 基本概念

    (1)對象:對象是人們要進行研究的任何事物,從最簡單的整數(shù)到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。

    (2)對象的狀態(tài)和行為:對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中。

    (3)類:具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的實體化就是對象。類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。 類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。

    (4)消息和方法:對象之間進行通信的結(jié)構(gòu)叫做消息。在對象的操作中,當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。類中操作的實現(xiàn)過程叫做方法,一個方法有方法名。

    2.2 特征

    (1)對象唯一性:每個對象都有自身唯一的標識,通過這種標識,可找到相應(yīng)的對象。 在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。

    (2)繼承性:繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。 在類層次中,子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承。在類層次中,子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。

    (3)多態(tài)性:多態(tài)性使指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同的結(jié)果。

    3 OOP在軟件開發(fā)中的應(yīng)用

    所謂面向?qū)ο缶褪腔趯ο蟾拍?,以對象為中心,以類和繼承為構(gòu)造機制,來認識、 理解、刻畫客觀世界和設(shè)計、構(gòu)建相應(yīng)的軟件系統(tǒng)。

    3.1 OOP與建模

    建模是一個確定外部世界的某些特性或方面與某個特定問題或應(yīng)用相關(guān)的過程,是抽象的一種形式?;诒疚?1.2所提及的抽象形式,即過程抽象和數(shù)據(jù)抽象,在面向?qū)ο箝_發(fā)中,著眼點在于對象和他們之間的交互作用。

    OOP方法首先是確定對象的數(shù)據(jù),然后確定針對數(shù)據(jù)的操作。因此,對應(yīng)用進行面向?qū)ο蠼5幕局埸c是確定顯示世界對象以及它們與應(yīng)用相關(guān)的交互作用。

    3.2 OOP在軟件開發(fā)中的優(yōu)勢

    (1)與人類的思維習慣一致:面向?qū)ο蟮乃季S方式是從人類考慮問題的角度出發(fā),把人類解決問題的思維過程轉(zhuǎn)變?yōu)槌绦蚰軌蚶斫獾倪^程。面向?qū)ο蟪绦蛟O(shè)計能夠讓我們使用“類”來模擬世界中的抽象概念,用“對象”來模擬現(xiàn)實世界中的實體,從而用計算機解決現(xiàn)實問題。

    (2)提高了程序的可重復性:一個類可以創(chuàng)建多個對象實例,增加了重用性。

    (3)易維護:采用面向?qū)ο笏枷朐O(shè)計的結(jié)構(gòu),可讀性高,由于繼承的存在,即使改變需求,那么維護也只是在局部模塊,所以維護起來是非常方便和較低成本的。

    (4)質(zhì)量高[10]:在設(shè)計時,可重用現(xiàn)有的,在以前的項目的領(lǐng)域中已被測試過的類使系統(tǒng)滿足業(yè)務(wù)需求并具有較高的質(zhì)量。

    (5)效率高:在軟件開發(fā)時,根據(jù)設(shè)計的需要對現(xiàn)實世界的事物進行抽象,產(chǎn)生類。使用這樣的方法解決問題,接近于日常生活和自然的思考方式,勢必提高軟件開發(fā)的效率和質(zhì)量。

    (6)易擴展:由于繼承、封裝、多態(tài)的特性,自然設(shè)計出高內(nèi)聚、低耦合的系統(tǒng)結(jié)構(gòu),使得系統(tǒng)更靈活、更容易擴展,而且成本較低。

    4 總結(jié)

    OOP面向?qū)ο蟮暮诵母拍钍欠庋b了屬性和方法的類,以數(shù)據(jù)為中心,實現(xiàn)了類級別的代碼重用,同時因為采用了類,具有集成和多態(tài)特征,可以進一步重用代碼和簡化編程。面向?qū)ο蟪绦蛟O(shè)計技術(shù)必將應(yīng)用到軟件設(shè)計中。

    猜你喜歡
    子類面向?qū)ο?/a>數(shù)據(jù)結(jié)構(gòu)
    卷入Hohlov算子的某解析雙單葉函數(shù)子類的系數(shù)估計
    面向?qū)ο蟮挠嬎銠C網(wǎng)絡(luò)設(shè)計軟件系統(tǒng)的開發(fā)
    電子測試(2018年15期)2018-09-26 06:01:34
    關(guān)于對稱共軛點的倒星象函數(shù)某些子類的系數(shù)估計
    面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
    “翻轉(zhuǎn)課堂”教學模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學為例
    高職高專數(shù)據(jù)結(jié)構(gòu)教學改革探討
    中國市場(2016年45期)2016-05-17 05:15:48
    面向?qū)ο骔eb開發(fā)編程語言的的評估方法
    TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學中的應(yīng)用
    面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
    河南科技(2014年10期)2014-02-27 14:09:03
    《數(shù)據(jù)結(jié)構(gòu)》教學方法創(chuàng)新探討
    河南科技(2014年5期)2014-02-27 14:08:57
    阿克苏市| 安庆市| 丰都县| 吉木萨尔县| 望江县| 武定县| 拜泉县| 朔州市| 景东| 徐水县| 峡江县| 黄石市| 宜兴市| 罗田县| 芦溪县| 吉安市| 莱芜市| 望江县| 米脂县| 甘谷县| 永仁县| 枞阳县| 改则县| 江油市| 舟山市| 濉溪县| 通渭县| 汶川县| 汶上县| 桐庐县| 常熟市| 镇赉县| 开江县| 公安县| 晋城| 东宁县| 钦州市| 芮城县| 紫金县| 乐至县| 嘉黎县|