【文章內(nèi)容簡(jiǎn)介】
打 印 F是否 流程圖中使用箭頭可隨意地將控制進(jìn)行轉(zhuǎn)移,這是不符合結(jié)構(gòu)程序設(shè)計(jì)精神的。程序流程圖的箭頭代表控制流而不是數(shù)據(jù)流,因此程序設(shè)計(jì)者可以不受任何約束,可以不顧任何結(jié)構(gòu)化程序設(shè)計(jì)原則,可隨意轉(zhuǎn)控制。設(shè)計(jì)出來(lái)的程序很可能是非結(jié)構(gòu)化的程序流程。 2. NS圖 (NassiSchneiderman Diagram) NS圖是流程圖的另一種表達(dá)形式,由 Nassi和Schneiderman提出,簡(jiǎn)稱 NS圖。與流程圖對(duì)應(yīng)的三種結(jié)構(gòu) (順序、分支、循環(huán) ),用圖形表示。 (a) 順序; (b) IFTHENELSE型分支; (c) CASE型多分支; (d) 循環(huán); (e) 調(diào)用子程序 A 盒圖沒(méi)有箭頭,因此不允許隨意轉(zhuǎn)移控制。堅(jiān)持使用盒圖作為詳細(xì)設(shè)計(jì)的工具,可以使程序員逐步養(yǎng)成用結(jié)構(gòu)化的方式思 a b 條 件 1 T F Case Xi, i=2,3,4 X2 X3 X4 當(dāng)條件 3成立 條 件 2 直到條件 4成立 直 到 條 件 成立 c d e f g h i j 順序結(jié)構(gòu) 選擇結(jié)構(gòu) 多分支選擇結(jié)構(gòu) 先判定型循環(huán)結(jié)構(gòu) 后判定型循環(huán)結(jié)構(gòu) F T T F N— S圖舉例 3. 程序設(shè)計(jì)語(yǔ)言 PDL 程序設(shè)計(jì)語(yǔ)言也稱 結(jié)構(gòu)化英語(yǔ) 或 偽代碼 ,它使用結(jié)構(gòu)化編程語(yǔ)言的風(fēng)格描述程序算法,但不遵循特定編程語(yǔ)言的語(yǔ)法。程序設(shè)計(jì)語(yǔ)言允許你在比源代碼更高的層次上進(jìn)行設(shè)計(jì)。 【 例 63】 使用程序設(shè)計(jì)語(yǔ)言描述打印 N的階乘 讀入 N 置 F的值為 1,置 M的值為 1 當(dāng) M = N時(shí),執(zhí)行: 使 F = F * M 使 M= M+ 1 打印 F 程序設(shè)計(jì)語(yǔ)言 PDL PDL具有嚴(yán)格的 關(guān)鍵字外部語(yǔ)法 ,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);另一方面, PDL表示實(shí)際操作和條件的 內(nèi)部語(yǔ)法通常又是靈活自由的 ,以便可以適應(yīng)各種工程項(xiàng)目的需要。 4. 決策表 (DT) 決策表以緊湊的形式描述復(fù)雜的邏輯。決策表與 ifelse、switchcase語(yǔ)句類似,將條件判斷與執(zhí)行的動(dòng)作聯(lián)系起來(lái)。 決策表通常分成四個(gè)區(qū)域,如右圖 69所示。 條件 條件選擇 動(dòng)作 動(dòng)作選擇 【 例 64】 條件對(duì)應(yīng)于一個(gè)變量、關(guān)系或預(yù)測(cè),其可能的組合在條件選擇中列出。動(dòng)作是一個(gè)函數(shù)或操作。動(dòng)作選擇當(dāng)條件滿足時(shí)所執(zhí)行的動(dòng)作,如右圖 610所示。 條件 不能打印 √ √ √ √ 紅燈閃 √ √ √ √ 不能識(shí)別打印機(jī) √ √ √ √ 動(dòng)作 檢查電源線 √ 檢查打印機(jī)數(shù)據(jù)線 √ √ 檢查是否安裝驅(qū)動(dòng)程序 √ √ √ √ 檢查墨盒 √ √ √ √ 檢查是否卡紙 √ √ 5. 日本的 PAD PAD是問(wèn)題分析圖( Problem Analysis Diagram)的英文縮寫,由日立公司發(fā)明,已經(jīng)得到推廣。 PAD圖有以下優(yōu)點(diǎn): PAD圖設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化的程序; b. PAD圖所描述的程序結(jié)構(gòu)非常清晰; c. PAD圖表現(xiàn)的程序邏輯易讀、易懂、易記; d. 容易將 PAD圖轉(zhuǎn)換成程序; e. PAD圖還可以描述數(shù)據(jù)結(jié)構(gòu); f. PAD圖支持自頂向下、逐步求精方法的使用。 PAD圖 使用 PAD T NAME A S1 S2 P NAME A i=n1,n2,n3 H C1 C2 def FIRST=K[I] SECOND=0 I: =2 to N K[I] SECOND K[I]FIRST SECOND =FIRST FIRST=K[I] SECOND =K[I] PAD圖 PAD圖應(yīng)用舉例 例:在數(shù)組 K中找出最大和次大的兩個(gè)數(shù) 面向數(shù)據(jù)詳細(xì)設(shè)計(jì) 面向數(shù)據(jù)設(shè)計(jì),它以實(shí)體 關(guān)系模型為基礎(chǔ),按照一定的規(guī)則將概念數(shù)據(jù)模型 CDM轉(zhuǎn)換成能被某種數(shù)據(jù)庫(kù)管理系統(tǒng)接受的物理數(shù)據(jù)模型 PDM,創(chuàng)建物理上的數(shù)據(jù)庫(kù)表、索引和視圖,并且用存儲(chǔ)過(guò)程和觸發(fā)器來(lái)實(shí)現(xiàn)各種業(yè)務(wù)規(guī)則。 實(shí)踐證明,凡是用存儲(chǔ)過(guò)程能實(shí)現(xiàn)觸發(fā)器功能的地方,就堅(jiān)決用存儲(chǔ)過(guò)程,而不用觸發(fā)器,因?yàn)檫^(guò)多的觸發(fā)器不但影響數(shù)據(jù)庫(kù)的運(yùn)行性能,而且可能導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)崩潰。 面向數(shù)據(jù)詳細(xì)設(shè)計(jì) 面向數(shù)據(jù)詳細(xì)設(shè)計(jì),實(shí)質(zhì)上就是面向元數(shù)據(jù)詳細(xì)設(shè)計(jì)。元數(shù)據(jù)是數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù)中的重要概念,元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),組織數(shù)據(jù)的數(shù)據(jù),領(lǐng)導(dǎo)數(shù)據(jù)的數(shù)據(jù),管理數(shù)據(jù)的數(shù)據(jù)。 在詳細(xì)設(shè)計(jì)時(shí),對(duì)于這些元數(shù)據(jù),都要用圖形、數(shù)據(jù)字典或文字進(jìn)行 詳細(xì)描述 。對(duì)存儲(chǔ)過(guò)程中的算法,也要進(jìn)行 詳細(xì)設(shè)計(jì) 。因此,面向數(shù)據(jù)詳細(xì)設(shè)計(jì)的描述工具,主要是概念數(shù)據(jù)模型 CDM、物理數(shù)據(jù)模型PDM和存儲(chǔ)過(guò)程。 80%以上的工作,可以在 CDM上完成。 0 , n0 , n圖書(shū)圖書(shū) ID書(shū)名I S B N類型價(jià)格頁(yè)數(shù)責(zé)任編輯 p i IV M B T 5 0V A 5 0V M B T 1 0D C 2IV M B T 1 0 M 出版社出版社 ID出版社名稱聯(lián)系地址聯(lián)系人聯(lián)系電話 p i IV M B T 5 0V M B T 1 0 0V M B T 1 0V A 2 0 M M 作者作者 ID姓名聯(lián)系地址郵政編碼聯(lián)系電話 p i IV M B T 1 0V M B T 1 0 0A6V A 2 0 M M M M M 圖冊(cè)圖冊(cè) ID圖冊(cè)編號(hào)圖冊(cè)狀態(tài) p i IV A 5 0I M M 圖書(shū)作者作者排序 I讀者讀者 ID姓名聯(lián)系地址聯(lián)系電話讀者類型讀者狀態(tài) p i IV M B T 1 0V M B T 1 0 0V A 2 0II M 借閱記錄借閱記錄 ID借閱時(shí)間歸還時(shí)間借閱狀態(tài) p i IDTDTI M 預(yù)約記錄預(yù)約記錄 ID借閱時(shí)間記錄狀態(tài) p i IDTI M 出版社 I D = 出版社 ID作者 I D = 作者 ID圖書(shū) I D = 圖書(shū) ID圖書(shū) I D = 圖書(shū) ID讀者 I D = 讀者 ID圖冊(cè) I D = 圖冊(cè) ID讀者 I D = 讀者 ID圖冊(cè) I D = 圖冊(cè) ID圖書(shū)圖書(shū) ID書(shū)名I S B N類型出版社 ID價(jià)格頁(yè)數(shù)責(zé)任編輯in tn v a r ch a r ( 5 0 )v a r ch a r ( 5 0 )n v a r ch a r ( 1 0 )in td e ci m a l( 2 )in tn v a r ch a r ( 1 0 ) p k f k出版社出版社 ID出版社名稱聯(lián)系地址聯(lián)系人聯(lián)系電話in tn v a r ch a r ( 5 0 )n v a r ch a r ( 1 0 0 )n v a r ch a r ( 1 0 )v a r ch a r ( 2 0 ) p k作者作者 ID姓名聯(lián)系地址郵政編碼聯(lián)系電話in tn v a r ch a r ( 1 0 )n v a r ch a r ( 1 0 0 )ch a r ( 6 )v a r ch a r ( 2 0 ) p k圖冊(cè)圖冊(cè) ID圖書(shū) ID圖冊(cè)編號(hào)圖冊(cè)狀態(tài)in tin tv a r ch a r ( 5 0 )in t p k f k圖書(shū)作者作者 ID圖書(shū) ID作者排序in tin tin t p k, f k1 p k, f k2 讀者讀者 ID姓名聯(lián)系地址聯(lián)系電話讀者類型讀者狀態(tài)in tn v a r ch a r ( 1 0 )n v a r ch a r ( 1 0 0 )v a r ch a r ( 2 0 )in tin t p k借閱記錄借閱記錄 ID讀者 ID圖冊(cè) ID借閱時(shí)間歸還時(shí)間借閱狀態(tài)in tin tin td a t e t im ed a t e t im ein t p k f k1 f k2 預(yù)約記錄預(yù)約記錄 ID讀者 ID圖冊(cè) ID借閱時(shí)間記錄狀態(tài)in tin tin td a t e t im ein t p k f k1 f k2 面向數(shù)據(jù)詳細(xì)設(shè)計(jì) 由于 CASE工具 Power Designer具有正向和逆向的雙向功能,所以既可以從 CDM生成 PDM,又可以從 PDM生成 CDM。由此可見(jiàn),數(shù)據(jù)模型設(shè)計(jì),也可以從 PDM開(kāi)始進(jìn)行。 在詳細(xì)設(shè)計(jì)時(shí),對(duì)于圖 612中物理數(shù)據(jù)模型中的表名和字段名,以及在此基礎(chǔ)上產(chǎn)生的索引名、視圖名、存儲(chǔ)過(guò)程名都要進(jìn)行詳細(xì)定義與解釋,對(duì)存儲(chǔ)過(guò)程中的算法也要具體說(shuō)明。同時(shí),還要對(duì) 數(shù)據(jù)庫(kù)的表結(jié)構(gòu)與系統(tǒng)的錄入界面及輸出報(bào)表之間的關(guān)系,作出詳盡的描述 。 面向?qū)ο笤敿?xì)設(shè)計(jì) 軟件系統(tǒng)的架構(gòu)設(shè)計(jì)完成后, 利用 UML的描述工具: 類圖、順序圖、狀態(tài)圖、部件圖、部署圖,分別將架構(gòu)中的部件 (組件 /構(gòu)件 )進(jìn)行實(shí)現(xiàn)設(shè)計(jì),直到可以編程為止; 在實(shí)現(xiàn)設(shè)計(jì)中,對(duì)類類的屬性定義、類的方法算法、接口說(shuō)明、接口實(shí)現(xiàn)、類之間的關(guān)系、對(duì)象與消息之間的關(guān)系、實(shí)體之間的狀態(tài)轉(zhuǎn)換,均要詳細(xì)說(shuō)清楚。 OOSD ( ObjectOriented Software Development) 法 是一種 把面向?qū)ο蟮乃枷霊?yīng)用于軟件開(kāi)發(fā)過(guò)程,指導(dǎo)開(kāi)發(fā)活動(dòng)的系統(tǒng)方法。 面向?qū)ο蟮姆椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來(lái)構(gòu)造系統(tǒng)的軟件開(kāi)發(fā)方法。 按照以下 4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的系統(tǒng),稱為是面向?qū)ο蟮摹? 面向?qū)ο?=對(duì)象 (object) +類 (classification) +繼承 (inheritance) +通信 (munication with messages) 面向?qū)ο蠹夹g(shù)的特點(diǎn) 對(duì)軟件開(kāi)發(fā)過(guò)程所有階段進(jìn)行綜合考慮。 軟件生存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性,用符合人類認(rèn)識(shí)世界的思維方式來(lái)分析、解決問(wèn)題。 將 OOA、 OOD、 OOP有機(jī)地集成在一起 。 OOA( ObjectOriented Analysis) OOD( ObjectOriented Design) OOP( ObjectOriented Program) 面向?qū)ο蟮母拍? 對(duì)象 (Object) 對(duì)象( Object)是客觀事物或概念的抽象表述,即 對(duì)客觀存在的事物的描述統(tǒng)稱為對(duì)象,對(duì)象可以是事、物、或抽象概念 ,是將一組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作或過(guò)程封裝在一起的實(shí)體 。 可以給對(duì)象定義一組運(yùn)算( operation),對(duì)象通過(guò)其運(yùn)算所展示的特定行為稱為對(duì)象行為( behavior),對(duì)象本身的性質(zhì)稱為屬性(attribute),對(duì)象將它自身的屬性及運(yùn)算 “ 包裝起來(lái) ” ,稱為 “ 封裝 ” ( encapsulation). 對(duì)象的最基本的特征是封裝性和繼承性。 類 ( Class) 類又稱對(duì)象類 ( Object Class) , 是 一組具有相同屬性和相同操作的對(duì)象的集合 。 在一個(gè)類中 , 每個(gè)對(duì)象都是類的實(shí)例 (instance) , 它們都可以使用類中提供的函數(shù) 。 類具有屬性 , 用數(shù)據(jù)結(jié)構(gòu)來(lái)描述類的屬性 , 類具有操作 , 它是對(duì)象的行為的抽象 , 操作實(shí)現(xiàn)的過(guò)程稱為方法 ( method) , 方法有方法名 , 方法體和參數(shù) 。 由于對(duì)象是類的實(shí)例,在進(jìn)行分析和設(shè)計(jì)時(shí),通常把注意力集中在類上,而不是具體的對(duì)象上。 幾何對(duì)象 顏色 位置 移動(dòng)( delta:矢量) 選擇( P:指針型) :布爾型 旋轉(zhuǎn) (角度 ) ? 對(duì)象類的描述 人