[工學(xué)]項(xiàng)目五-軟件項(xiàng)目實(shí)現(xiàn)ppt課件



單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,目 錄,上一頁,下一頁,結(jié) 束,軟件工程,項(xiàng)目五,軟件項(xiàng)目的實(shí)現(xiàn),軟件工程案例教程 清華大學(xué)出版社,項(xiàng)目五軟件項(xiàng)目的實(shí)現(xiàn)軟件工程案例教程 清華大學(xué)出版社,項(xiàng)目五 軟件項(xiàng)目的實(shí)現(xiàn),任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),任務(wù)二,面向?qū)ο蟪绦蛟O(shè)計(jì),任務(wù)三,程序設(shè)計(jì)語言,任務(wù)四 程序復(fù)雜度,小結(jié),實(shí)驗(yàn)實(shí)訓(xùn),項(xiàng)目五 軟件項(xiàng)目的實(shí)現(xiàn)任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì),2,任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),5.1.1,結(jié)構(gòu)化程序的提出,結(jié)構(gòu)化程序設(shè)計(jì)的特征主要有以下幾點(diǎn):,1,以三種基本結(jié)構(gòu)的組合來描述程序2,整個程序采用模塊化結(jié)構(gòu)3,有限制地使用轉(zhuǎn)移語句,在非用不可的情況下,也要十分謹(jǐn)慎,并且只限于在一個結(jié)構(gòu)內(nèi)部跳轉(zhuǎn),不允許從一個結(jié)構(gòu)跳到另一個結(jié)構(gòu),這樣可縮小程序的靜態(tài)結(jié)構(gòu)與動態(tài)執(zhí)行過程之間的差異,使人們能正確理解程序的功能任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì) 5.1.1 結(jié)構(gòu)化程序的提出,3,任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),4,以控制結(jié)構(gòu)為單位,每個結(jié)構(gòu)只有一個入口,一個出口,各單位之間接口簡單,邏輯清晰;,5,采用結(jié)構(gòu)化程序設(shè)計(jì)語言書寫程序,并采用一定的書寫格式使程序結(jié)構(gòu)清晰,易于閱讀;,6,注意程序設(shè)計(jì)風(fēng)格。
我們現(xiàn)在用到的譬如,C,、,FORTRAN,、,PASCAL,等語言都屬于典型結(jié)構(gòu)化程序設(shè)計(jì)語言任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì) 4以控制結(jié)構(gòu)為單位,每個結(jié)構(gòu)只有,4,任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),5.1.2,程序的三種基本結(jié)構(gòu),順序結(jié)構(gòu)表示程序中的各操作是按照它們出現(xiàn)的先后順序執(zhí)行的,其流程如圖所示圖中的,S1,和,S2,表示兩個處理步驟,例如在我們學(xué)生信息管理系統(tǒng)中,S1,可以代表增加學(xué)生紀(jì)錄、,S2,代表標(biāo)記學(xué)生學(xué)號、,S3,代表確定學(xué)生院系等這些處理步驟可以是一個非轉(zhuǎn)移操作或多個非轉(zhuǎn)移操作序列,甚至可以是空操作,也可以是三種基本結(jié)構(gòu)中的任一結(jié)構(gòu)整個順序結(jié)構(gòu)只有一個入口點(diǎn),a,和一個出口點(diǎn),b,這種結(jié)構(gòu)的特點(diǎn)是:程序從入口點(diǎn),a,開始,按順序執(zhí)行所有操作,直到出口點(diǎn),b,處,所以稱為順序結(jié)構(gòu)事實(shí)上,不論程序中包含了什么樣的結(jié)構(gòu),而程序的總流程都是順序結(jié)構(gòu)的S1,S2,S3,順序結(jié)構(gòu),b,a,任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì) 5.1.2程序的三種基本結(jié)構(gòu) S1,5,任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),選擇結(jié)構(gòu)表示程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個分支執(zhí)行選擇結(jié)構(gòu)有單選擇、雙選擇和多選擇三種形式。
雙選擇結(jié)構(gòu),單選擇結(jié)構(gòu),多選擇結(jié)構(gòu),任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì) 選擇結(jié)構(gòu)表示程序的處理步驟出現(xiàn)了分,6,任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)表示程序反復(fù)執(zhí)行某個或某些操作,直到某條件為假(或?yàn)檎妫r才可終止循環(huán)在循環(huán)結(jié)構(gòu)中最主要的是:什么情況下執(zhí)行循環(huán)?哪些操作需要循環(huán)執(zhí)行?循環(huán)結(jié)構(gòu)的基本形式有兩種:當(dāng)型循環(huán)和直到型循環(huán),,(a),當(dāng)型循環(huán)結(jié)構(gòu),(b),直到型循環(huán)結(jié)構(gòu),任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì) 循環(huán)結(jié)構(gòu) (a)當(dāng)型循環(huán)結(jié)構(gòu)(,7,5.1.3 N-S,流程圖,N-S,流程圖是結(jié)構(gòu)化程序設(shè)計(jì)方法中用于表示算法的圖形工具之一對于結(jié)構(gòu)化程序設(shè)計(jì)來說,傳統(tǒng)流程圖已很難完全適應(yīng)了因?yàn)閭鹘y(tǒng)流程圖出現(xiàn)得較早,它更多地反映了機(jī)器指令系統(tǒng)設(shè)計(jì)和傳統(tǒng)程序設(shè)計(jì)方法的需要,難以保證程序的結(jié)構(gòu)良好另外,結(jié)構(gòu)化程序設(shè)計(jì)的一些基本結(jié)構(gòu)在傳統(tǒng)流程圖中沒有相應(yīng)的表達(dá)符號例如,在傳統(tǒng)流程圖中,循環(huán)結(jié)構(gòu)仍采用判斷結(jié)構(gòu)符號來表示,這樣不易區(qū)分到底是哪種結(jié)構(gòu)特別是傳統(tǒng)流程圖由于轉(zhuǎn)向的問題而無法保證自頂而下的程序設(shè)計(jì)方法,使模塊之間的調(diào)用關(guān)系難以表達(dá)為此,兩位美國學(xué)者,Nassi,和,Shneiderman,于,1973,年就提出了一種新的流程圖形式,這就是,N-S,流程圖,它是以兩位創(chuàng)作者姓名的首字母取名,也稱為,Nassi Shneiderman,圖,任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),(a),順序,(b),循環(huán),(c),當(dāng)型循環(huán),(d),直到型循環(huán),5.1.3 N-S流程圖任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì)(a)順序,8,任務(wù)一,結(jié)構(gòu)化程序設(shè)計(jì),5.1.4,結(jié)構(gòu)化程序設(shè)計(jì)方法,結(jié)構(gòu)化程序設(shè)計(jì)方法是公認(rèn)的面向過程編程應(yīng)遵循的基本方法和原則。
結(jié)構(gòu)化程序設(shè)計(jì)方法主要包括:只采用三種基本的程序控制結(jié)構(gòu)來編制程序,從而使程序具有良好的結(jié)構(gòu);程序設(shè)計(jì)自頂而下;用結(jié)構(gòu)化程序設(shè)計(jì)流程圖表示算法有關(guān)結(jié)構(gòu)化程序設(shè)計(jì)及方法有一整套不斷發(fā)展和完善的理論和技術(shù),對于初學(xué)者來說,完全掌握是比較困難的但在學(xué)習(xí)的起步階段就了解結(jié)構(gòu)化程序設(shè)計(jì)的方法,學(xué)習(xí)好的程序設(shè)計(jì)思想,對今后的實(shí)際編程是很有幫助的任務(wù)一 結(jié)構(gòu)化程序設(shè)計(jì)5.1.4 結(jié)構(gòu)化程序設(shè)計(jì)方法,9,任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì),面向?qū)ο蟪绦蛟O(shè)計(jì)(,OOP,)技術(shù)汲取了結(jié)構(gòu)化程序設(shè)計(jì)中好的思想,并將這些思想與一些新的、強(qiáng)大的理念相結(jié)合,從而給你的程序設(shè)計(jì)工作提供了一種全新的方法通常,在面向?qū)ο蟮某绦蛟O(shè)計(jì)風(fēng)格中,你會將一個問題分解為一些相互關(guān)聯(lián)的子集,每個子集內(nèi)部都包含了相關(guān)的數(shù)據(jù)和函數(shù)同時,你會以某種方式將這些子集分為不同等級,而一個對象就是已定義的某個類型的變量當(dāng)你定義了一個對象,你就隱含的創(chuàng)建了一個新的數(shù)據(jù)類型任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)技術(shù)汲取,10,任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì),5.2.1,數(shù)據(jù)抽象和封裝,把數(shù)據(jù)和函數(shù)包裝在一個單獨(dú)的單元(稱為類)的行為稱為封裝數(shù)據(jù)封裝是類的最典型特點(diǎn)。
數(shù)據(jù)不能被外界訪問,只能被封裝在同一個類中的函數(shù)訪問這些函數(shù)提供了對象數(shù)據(jù)和程序之間的接口避免數(shù)據(jù)被程序直接訪問的概念被稱為“數(shù)據(jù)隱藏”抽象指僅表現(xiàn)核心的特性而不描述背景細(xì)節(jié)的行為類使用了抽象的概念,并且被定義為一系列抽象的屬性如尺寸、重量和價格,以及操作這些屬性的函數(shù)類封裝了將要被創(chuàng)建的對象的所有核心屬性因?yàn)轭愂褂昧藬?shù)據(jù)抽象的概念,所以它們被稱為抽象數(shù)據(jù)類型(,ADT,)封裝:封裝機(jī)制將數(shù)據(jù)和代碼捆綁到一起,避免了外界的干擾和不確定性它同樣允許創(chuàng)建對象簡單的說,一個對象就是一個封裝了數(shù)據(jù)和操作這些數(shù)據(jù)的代碼的邏輯實(shí)體在一個對象內(nèi)部,某些代碼和(或)某些數(shù)據(jù)可以是私有的,不能被外界訪問通過這種方式,對象對內(nèi)部數(shù)據(jù)提供了不同級別的保護(hù),以防止程序中無關(guān)的部分意外的改變或錯誤的使用了對象的私有部分任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì)5.2.1數(shù)據(jù)抽象和封裝,11,任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì),5.2.2,繼承,繼承是指一個對象從另一個對象中獲得屬性的過程繼承是軟件重復(fù)使用的一種方式,新的類可以吸收已存類的數(shù)據(jù)與方法,并增加新的數(shù)據(jù)和方法它支持按層次分類的概念任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì)5.2.2 繼承,12,任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì),例如,學(xué)生管理系統(tǒng)涉及學(xué)生對象類,每一學(xué)生均擁有他們共同的屬性,例如:,name,(姓名)、,idNo,(身份證號)、,sex,(性別)、,stNo,(學(xué)號)、,coarseId,(某公共課成績)等。
但是不同系的學(xué)生由于專業(yè)不同,他們又有各自與專業(yè)相關(guān)的課程的學(xué)分,例如,信息系的學(xué)生應(yīng)該具有其屬類,student,類全部特征和行為規(guī)則,同時還具有這個系學(xué)生獨(dú)有東西,以,Student,類為基礎(chǔ)建立的信息系學(xué)生類,C_student,既具有學(xué)生類的特點(diǎn),也具有信息系學(xué)生自己的特點(diǎn),這里,我們稱,Student,類是,C_student,類的父類,類,C_student,稱為,Student,的子類,,C_Student,類繼承學(xué)生類,Student,任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì)例如,學(xué)生管理系統(tǒng)涉及學(xué)生對象類,,13,任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì),5.2.3,多態(tài),多態(tài)是指一個方法只能有一個名稱,但可以有許多形態(tài),也就是程序中可以定義多個同名的方法,用“一個接口,多個方法”來描述可以通過方法的參數(shù)和類型引用例如,學(xué)生類應(yīng)該有一個計(jì)算成績的操作,信息系學(xué)生、會計(jì)系學(xué)生和機(jī)械系學(xué)生都繼承自學(xué)生類顯然對于各種不同的學(xué)生類型需要統(tǒng)計(jì)的課程不一樣,這就需要計(jì)算成績的操作在不同的學(xué)生類中有不同的實(shí)現(xiàn),但使用同一個操作名稱,我們稱為多態(tài)繼承和多態(tài)的結(jié)合可以輕易構(gòu)造一系列功能類似但又各異的類和對象由于繼承性,這些類和對象具有相似的特征。
但由于多態(tài)性,同樣一種行為在不同類和對象上又有不同的實(shí)現(xiàn)和結(jié)果任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì)5.2.3多態(tài),14,任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì),面向?qū)ο蟪绦蛟O(shè)計(jì)的一些顯著的特性包括:,程序設(shè)計(jì)的重點(diǎn)在于數(shù)據(jù)而不是過程;,程序被劃分為所謂的對象;,數(shù)據(jù)結(jié)構(gòu)為表現(xiàn)對象的特性而設(shè)計(jì);,函數(shù)作為對某個對象數(shù)據(jù)的操作,與數(shù)據(jù)結(jié)構(gòu)緊密的結(jié)合在一起;,數(shù)據(jù)被隱藏起來,不能為外部函數(shù)訪問;,對象之間可以通過函數(shù)溝通;,新的數(shù)據(jù)和函數(shù)可以在需要的時候輕而易舉的添加進(jìn)來;,在程序設(shè)計(jì)過程中遵循由下至上(bottom-up)的設(shè)計(jì)方法任務(wù)二 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)的一些顯著的特性包括,15,任務(wù)三程序設(shè)計(jì)語言,5.3.1,計(jì)算機(jī)語言與程序設(shè)計(jì)語言,什么是計(jì)算機(jī)語言?,狹義的指計(jì)算機(jī)可以執(zhí)行的機(jī)器語言廣義的指一切用于人與計(jì)算機(jī)通訊的語言包括程序設(shè)計(jì)語言,各種專用的或通用的命令語言,查詢語言,定義語言等現(xiàn)在一般采用后一種說法,.,程序設(shè)計(jì)語言“泛指一切用于書寫計(jì)算機(jī)程序的語言,包括匯編語言、機(jī)器語言,以及一般稱為高級語言的完全符號形式的獨(dú)立于具體計(jì)算機(jī)的語言任務(wù)三程序設(shè)計(jì)語言5.3.1計(jì)算機(jī)語言與程序設(shè)計(jì)語言,16,任務(wù)三程序設(shè)計(jì)語言,上面兩段話很清楚地說明了計(jì)算機(jī)語言與程序設(shè)計(jì)語言之間的區(qū)別和聯(lián)系。
計(jì)算機(jī)語言是外延較大的概念,程序設(shè)計(jì)語言只是計(jì)算機(jī)語言下的一個子概念有人說:“人們交流要通過語言,人要和計(jì)算機(jī)打交道,也要通過語言,所以要使用計(jì)算機(jī)必須學(xué)習(xí)程序設(shè)計(jì)語言前半句話指的是計(jì)算機(jī)語言,而后半句話指的是程序設(shè)計(jì)語言,由于“偷換”了概念,推理不合邏輯,結(jié)論也就不可靠了由于概念的混亂,出現(xiàn)了這種說法我們和計(jì)算機(jī)打交道,就要用計(jì)算機(jī)語言”這句話是對的,但用計(jì)算機(jī)語言與計(jì)算機(jī)打交道,不一定要用程序設(shè)計(jì)語言任務(wù)三程序設(shè)計(jì)語言上面兩段話很清楚地說明了計(jì)算機(jī)語言與程序,17,任務(wù)三程序設(shè)計(jì)語言,我們用,DOS,命令,就是在用計(jì)算機(jī)語言:命令語言;我們學(xué)習(xí),Windows,操作,用鼠標(biāo)單擊某一圖標(biāo),讓計(jì)算機(jī)執(zhí)行某一操作也是一種計(jì)算機(jī)語言;我們學(xué)習(xí)某種應(yīng)用軟件的操作,也是學(xué)習(xí)計(jì)算機(jī)語言總之,我們在學(xué)習(xí)計(jì)算機(jī)知識的過程中一直在學(xué)習(xí)計(jì)算機(jī)語言,一直是通過計(jì)算機(jī)語言和計(jì)算機(jī)打交道,但它們都不是程序設(shè)計(jì)語言程序設(shè)計(jì)語言是根據(jù)計(jì)算機(jī)的特點(diǎn)而編制的,它沒有自然語言那么豐富多樣,而只是有限規(guī)則的集合,所以它“簡單易學(xué)”但是,也正因?yàn)樗歉鶕?jù)機(jī)器的特點(diǎn)編制的,所以交流中無法意會和言傳,而更多地表現(xiàn)了說一不二,表現(xiàn)了“規(guī)則”的嚴(yán)謹(jǐn)。
例如該是“;”的地方不能寫成“,.”,,該寫“,a”,的地方不能寫成“,A”,,這使得學(xué)習(xí)程序設(shè)計(jì)語言在一開始會有些不習(xí)慣任務(wù)三程序設(shè)計(jì)語言我們用DOS命令,就是在用計(jì)算機(jī)語言:,18,任務(wù)三程序設(shè)計(jì)語言,5.3.2,程序語言分類,1.,機(jī)器語言,電子計(jì)算機(jī)所使用的是由“,0”,和“,1”,組成的二進(jìn)制數(shù),二進(jìn)制是計(jì)算機(jī)語言的基礎(chǔ)計(jì)算機(jī)發(fā)明之初,人們只能降貴紆尊,用計(jì)算機(jī)的語言去命令計(jì)算機(jī)干這干那,一句話,就是寫出一串串由“,0”,和“,1”,組成的指令序列交由計(jì)算機(jī)執(zhí)行,這種語言,就是機(jī)器語言2.,匯編語言,為了減輕使用機(jī)器語言編程的痛苦,人們進(jìn)行了一種有益的改進(jìn):用一些簡潔的英文字母、符號串來替代一個特定的指令的二進(jìn)制串,比如,用“,ADD”,代表加法,“,MOV”,代表數(shù)據(jù)傳遞等等,這樣一來,人們很容易讀懂并理解程序在干什么,糾錯及維護(hù)都變得方便了,這種程序設(shè)計(jì)語言就稱為匯編語言,即第二代計(jì)算機(jī)語言任務(wù)三程序設(shè)計(jì)語言5.3.2程序語言分類,19,任務(wù)四,程序復(fù)雜度,5.4.1,程序復(fù)雜度,同一問題可用不同,算法,解決,而一個算法的質(zhì)量優(yōu)劣將影響到算法乃至程。
