資源描述:
《最新學(xué)習(xí)障礙簡(jiǎn)析教學(xué)講義PPT.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、學(xué)習(xí)障礙簡(jiǎn)析軟件工程SoftwareEngineering武漢大學(xué)計(jì)算機(jī)學(xué)院第7章面向?qū)ο蟪绦蛟O(shè)計(jì)語言程序設(shè)計(jì)語與軟件設(shè)計(jì)方法幾種典型面向?qū)ο蟪绦蛟O(shè)計(jì)語言面向?qū)ο蟪绦蛟O(shè)計(jì)語言的選擇面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格一、程序設(shè)計(jì)語與軟件設(shè)計(jì)方法語言研究先于方法研究過程性語言與結(jié)構(gòu)化程序設(shè)計(jì)方法過程性語言:50—60年代末,F(xiàn)ORTRAN、ALGOL、COBOL、APL/I等寫程序方便、程序規(guī)模越來越大,正確性與可靠性成為主要矛盾結(jié)構(gòu)化程序設(shè)計(jì)方法,并發(fā)展為SA/SD的軟件開發(fā)方法,方法又促進(jìn)結(jié)構(gòu)化程序設(shè)計(jì)語言的發(fā)展,如Pasca
2、l、Ada等一、程序設(shè)計(jì)語與軟件設(shè)計(jì)方法面向?qū)ο笳Z言與面向?qū)ο蠓椒?0年代末:Simula(67)、Smalltalk、Eiffel等80年代初:抽象數(shù)據(jù)類型ADT(AbstractDataType)+OOPL導(dǎo)制OOM方法的研究OOM又促進(jìn)傳統(tǒng)語言向面對(duì)象語言發(fā)展如object-C、C++、JavaOOD的結(jié)果可以用OOPL/非OOPL實(shí)現(xiàn)OOPL是一種程序設(shè)計(jì)風(fēng)格,而不是一種具有構(gòu)造繼承性、封裝性和多態(tài)的程序設(shè)計(jì)語言族的命名OOPL功能強(qiáng)于非OOPL?任何通用語言都可實(shí)現(xiàn)OO概念OOPL實(shí)現(xiàn)OO概念遠(yuǎn)比非OO
3、PL方便!選擇編程語言的關(guān)鍵一致的表達(dá)能力可重用性可維護(hù)性錯(cuò)誤!1.OOPL的優(yōu)點(diǎn)一致的表達(dá)方式OOA→OOD→OOP使用統(tǒng)一的概念可重用性好可重用OOA、OOD、OOP的結(jié)果可維護(hù)性好程序顯式陳述問題域語義幾種典型OOPLSimula語言67年Simula的基礎(chǔ)是ALGOL60,它沿用了ALGOL60的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu),其主要特點(diǎn):具有主程序概念、具有分程概念、引用了虛擬子程序概念與協(xié)同子程序概念。幾種典型OOPLSmalltalk語言70年代初Smalltalk不是一種單純的程序設(shè)計(jì)語言,而是反映面向?qū)ο蟪?/p>
4、序設(shè)計(jì)思想的程序設(shè)計(jì)環(huán)境。其主要特點(diǎn):無主程序概念,類是唯一構(gòu)造程序的最小單位、每個(gè)對(duì)象都是某個(gè)類的實(shí)例、對(duì)象間通過消息通信、支持單繼承。Eiffel語言主要特點(diǎn):類是唯一程序構(gòu)造單元、靜態(tài)類與動(dòng)態(tài)對(duì)象概念、支持多繼承、提供有斷言機(jī)制、延遲類。幾種典型OOPLC++是目前使用最廣泛的OOPL之一,其主要原因是它完全保留了傳統(tǒng)優(yōu)秀語言C的優(yōu)點(diǎn),并與C完全兼容。C++是C超集,增加了數(shù)據(jù)抽象、繼承性機(jī)制、虛擬函數(shù)以及其他改善C語言結(jié)構(gòu)的成分,使之成為一個(gè)靈活、高效和易移植的OOPL??偨Y(jié):SimulaSmallta
5、lkEiffelC++對(duì)象對(duì)象對(duì)象對(duì)象類類類類屬性變量實(shí)例變量屬性成分子程序方法程式函數(shù)子程序調(diào)用消息發(fā)送程式調(diào)用函數(shù)調(diào)用虛擬子程序抽象方法延遲程式虛擬函數(shù)繼承單繼承多繼承多繼承子類子類后繼類派生類2.OOPL的技術(shù)特點(diǎn)60年代SIMULA,類,繼承70年代末,Modula_2,Ada,數(shù)據(jù)抽象機(jī)制80年代,OOPL純OOPL(Smalltalk,Eiffel)混合型OOPL(C++)支持OO概念支持類和對(duì)象概念實(shí)現(xiàn)整體-部分結(jié)構(gòu)實(shí)現(xiàn)一般-特殊結(jié)構(gòu)實(shí)現(xiàn)屬性和服務(wù)提供類庫和強(qiáng)大的開發(fā)環(huán)境類型檢查按編譯時(shí)進(jìn)行類型檢查
6、的嚴(yán)格程度,分為強(qiáng)類型(StrongTyping)每個(gè)變量(屬性)必須準(zhǔn)確屬于某個(gè)類C++,Eiffel等弱類型(WeakTyping)僅要求每個(gè)變量(屬性)隸屬于一個(gè)對(duì)象Smalltalk無類型,F(xiàn)oxpro等強(qiáng)類型語言的優(yōu)點(diǎn)可靠利于在編譯時(shí)發(fā)現(xiàn)程序錯(cuò)誤高效增加了程序可讀性可生成高效率目標(biāo)代碼強(qiáng)類型編譯型語言?弱類型解釋型語言?開發(fā)軟件產(chǎn)品快速開發(fā)原型效率問題許多人認(rèn)為OOPL的主要缺點(diǎn)是效率低早期OOPL是解釋型而非編譯型的?類庫運(yùn)行時(shí)dynamicbinding實(shí)現(xiàn)多態(tài)性,要在運(yùn)行時(shí)查找繼承樹?優(yōu)化了查找過
7、程,高效率查找C++:虛函數(shù)表虛函數(shù)名虛函數(shù)入口點(diǎn)m1函數(shù)指針……ClassAInstancea13.選擇OOPL應(yīng)考慮的因素將來能否占主導(dǎo)地位可重用性類庫、開發(fā)環(huán)境其它因素二、程序設(shè)計(jì)風(fēng)格提高可重用性提高方法的內(nèi)聚減小方法的規(guī)模保持方法的一致性把策略與實(shí)現(xiàn)分開全面覆蓋盡量不使用全局信息利用繼承機(jī)制提高可擴(kuò)充性封裝實(shí)現(xiàn)策略不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈避免使用多分支語句精心確定公有方法提高健壯性預(yù)防用戶的操作錯(cuò)誤檢查參數(shù)合法性小結(jié)面向?qū)ο笳Z言的優(yōu)點(diǎn)—與OOM概念一致面向?qū)ο笳Z言的技術(shù)特點(diǎn)—重用性、高內(nèi)聚、獨(dú)立性強(qiáng)選
8、擇面向?qū)ο笳Z言的實(shí)際因素程序設(shè)計(jì)風(fēng)格思考題有人認(rèn)為:“應(yīng)該盡量用面向?qū)ο笳Z言來實(shí)現(xiàn)面向?qū)ο蠓治龊驮O(shè)計(jì)的結(jié)果”。你認(rèn)為他的觀點(diǎn)對(duì)嗎?請(qǐng)說明理由。選擇面向?qū)ο蟪绦蛟O(shè)計(jì)語言時(shí)應(yīng)該主要考慮哪些因素?