軟件工程基礎與實例分析第09章-面向?qū)ο蟮姆治鲈O計與實現(xiàn)_第1頁
軟件工程基礎與實例分析第09章-面向?qū)ο蟮姆治鲈O計與實現(xiàn)_第2頁
軟件工程基礎與實例分析第09章-面向?qū)ο蟮姆治鲈O計與實現(xiàn)_第3頁
軟件工程基礎與實例分析第09章-面向?qū)ο蟮姆治鲈O計與實現(xiàn)_第4頁
軟件工程基礎與實例分析第09章-面向?qū)ο蟮姆治鲈O計與實現(xiàn)_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、主要學習內(nèi)容:傳統(tǒng)方法學的缺點面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蠓治雒嫦驅(qū)ο笤O計面向?qū)ο髮崿F(xiàn)9.1 傳統(tǒng)方法學存在的缺點1、存在的問題生產(chǎn)率提高的幅度遠不能滿足需要。傳統(tǒng)的軟件工程方法需要的人力,物力都比較多,流程比較長,所以它的生產(chǎn)率的提高并不快軟件重用程度很低。作為結(jié)構(gòu)化軟件設計,程序設計,分析技術(shù)等,都是針對問題空間提出的解決方案,而沒有考慮提出一些能適用于另外一個程序的模塊軟件仍然很難維護個軟件項目。雖然有很多方法為軟件提供功能,性能的維護,但當軟件運行時,仍然有很多困難,所以不得不找到原來的開發(fā)人員。軟件往往不能真正滿足用戶需要。需求分析之后,后面的人就跟用戶沒關系了,直到驗收測試時才請用戶

2、過來,這時用戶說,這段時間為什么不找我,我們單位里面有些變化,所以不能真正滿足用戶需要。9.2 面向?qū)ο蟮幕靖拍?.2.1 基本概念1對象 對象是系統(tǒng)中描述客觀事物的一個實體,它是構(gòu)成系統(tǒng)的一個基本單位,由一組屬性和對這組屬性進行操作的一組服務組成。屬性是用來描述對象靜態(tài)特征的一個數(shù)據(jù)項2類 類是具有相同屬性和服務的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務兩個主要部分9.2.1 基本概念 3類對象 類對象指的是類和類中的對象,其符號表示如圖9-2所示,類分3個區(qū)域,對象用圍繞著類的三個區(qū)域的虛框表示,在表示類的3個區(qū)域內(nèi),標出類對象的名稱、屬性及服務,

3、這是具有對象的類,是一種具體類。4消息 消息是對象發(fā)出的服務請求,一般包含提供服務的對象標識、服務標識、輸入和應答等信息。5封裝性 封裝性是把對象的屬性和服務結(jié)合成一個獨立的系統(tǒng)單位。6繼承性 繼承性是指子類可以自動擁有 父類的全部屬性和服務7多態(tài)性 不同層次中的類可以共享或共用一個行為(方法)的名子,但在不同層次中,每個類卻可以各自按自己的需要來實現(xiàn)這個行為,并且得到不同的結(jié)果。8事件 事件是建立動態(tài)模型時常用的術(shù)語,是指某一時刻引發(fā)對象狀態(tài)改變的控制信息?,F(xiàn)實世界中,各對象之間相互觸發(fā),一個觸發(fā)行為就稱作是一個事件。9狀態(tài) 狀態(tài)也是建立動態(tài)模型時常用的術(shù)語,是對象所具有的屬性值的一種抽象,

4、按照影響對象顯著行為的性質(zhì)將值集中歸并到一個狀態(tài)中去。10行為 行為也是建立動態(tài)模型時常用的術(shù)語,是對象要達到某種狀態(tài)時所做的操作9.2.2 面向?qū)ο蠼?、 對象模型對象模型是用來描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)。主題層 通過劃分主題把一個大型,復雜的對象模型分解幾個不同的概念范疇。類與對象層 類實體結(jié)構(gòu)層 類與對象之間的關系屬性層 對象的固有數(shù)據(jù)服務層 服務或方法2.動態(tài)模型 動態(tài)模型是用來描述系統(tǒng)控制結(jié)構(gòu),描述對象在遇到某些事件時它的響應,意味著每個對象實際上有自已的狀態(tài),并且這個狀態(tài)是可保持的事件 :引發(fā)對象狀態(tài)改變的控制信息(瞬時)狀態(tài): 即對象的 attributes 所處的情形(可持續(xù))行為:對

5、象要達到某種 status 所做的操作(耗時)3功能模型 功能模型是用來描述系統(tǒng)功能。要考慮整個軟件系統(tǒng)是一個整體,具有什么樣的功能。在面向?qū)ο罄锩?,對象模型確定了發(fā)生操作的客體,動態(tài)模型確定操作什么時候發(fā)生,功能模型指出發(fā)生了什么操作,所以功能模型是操作的一個實體,由多張數(shù)據(jù)流圖組成,數(shù)據(jù)流圖說明數(shù)據(jù)流是如何從外部輸入,經(jīng)過操作和內(nèi)部存儲輸出到外部的。9.3 面向?qū)ο蠓治?.3.1 面向?qū)ο蠓治龅奶攸c 1有利于對問題及系統(tǒng)責任的理解 2有利于對人員之間的交流 3對需求變化有較強的適應性 4支持軟件重用9.3.2 需求陳述 需求陳述包括問題范圍、功能需求、性能要求、應用環(huán)境、假設條件等五個方面

6、。如一個遠程教育學院,想做一個學位查詢系統(tǒng),就可以發(fā)個招標公告向社會去招標,某公司想去應標,要根據(jù)招標書上的要求,寫出相應的應標書,應標書上有相當一大部分內(nèi)容是需求陳述,要寫出關于開發(fā)出的這個學位查詢系統(tǒng)所能具備的功能、性能、可靠性、接口和應用環(huán)境等方面的內(nèi)容,同時給出當某些特殊情況存在時的解決方案等等。9.3.3 建立對象模型1確定類-&-對象(1) 列出所有候選對象。 跟據(jù)需求陳述里面的名詞列出所有候選對象,這些對象可能是物理實體,也可以是人或組織或要處理的事件,也可以是對象間的活動,如上面提到的遠程教育學院學位查詢系統(tǒng)中,可以確定以下類-&-對象,分別是學生,系統(tǒng),服務器,客戶機,教師,

7、網(wǎng)絡,成績,科目,軟件,類別,院,系,班級,學年,家庭住址,聯(lián)系電話,及格,賬戶,事務,學校,學士,性別,分數(shù),學制,信息,密碼,類型,訪問,校園網(wǎng)。(2)去粗取精。 把以上所有可能的候選對象進行抽象,找到哪個是實體,哪一個是屬性。如學生,教師,院,學校等是實體,而成績,性別,分數(shù)等是屬性。2確定關聯(lián)(1)收集 要收集需求陳述中涉及對象的動詞短語。 關聯(lián)常用描述性動詞或動詞詞組來表示,如“服務器,客戶機組成網(wǎng)絡”,“學位錄入系統(tǒng)設置在學校內(nèi)部”等。 收集需求陳述中對象間隱含的關聯(lián) 如“學位的獲取由各個學年成績決定”,“學校保管學生和老師的帳戶”等。 根據(jù)問題域知識得出的關聯(lián) 如 “成績等于平時

8、成績和卷面折合成績之和”等。2確定關聯(lián)(2)篩選 刪除與已刪去的對象有關的關聯(lián)。 在上例中如果刪除對象“網(wǎng)絡”,則與“網(wǎng)絡”相關聯(lián)的“校園網(wǎng)”也刪去。 刪除與問題無關的或應在實現(xiàn)階段考慮的關聯(lián),包括瞬時事件、三元關聯(lián)和派生關聯(lián)。 瞬時事件要注意關聯(lián)描述的靜態(tài)結(jié)構(gòu)。如“學生訪問服務器查學位”描述了學生和服務器進行交互周期中的一個動作,它并不是服務器與學位之間的固有關系,因此應該刪去。三元關聯(lián)要分解為二元關聯(lián)或限定關聯(lián)。如“教師輸入針對成績的事務”可以分解成“教師輸入事務”和“事務修改成績”這樣兩個二元關聯(lián)。派生關聯(lián)是去掉可用其它關聯(lián)定義的冗余關聯(lián),如“學校管理帳戶”的實際含義是“學校保管賬戶”和

9、“事務修改賬戶”。(3)完善 完善包括正名、分解補充和標明階數(shù)幾部分, 正名就是給出個容易理解的名字。 分解補充是將一個綜合功能的事務分解為兩個單一功能的事務,如將查詢事務分解為遠程事務和終端事務。 標明階數(shù)就是這個對象或類跟多少個其它對象或類有關聯(lián)。3劃分主題關聯(lián) 主題,屬性都屬于對象模型里面的某一個視圖,劃分關聯(lián)一般注意兩方面.一方面是按問題域?qū)⑦@個問題大概分為幾塊 另一方面是主題間的依賴和交互盡可能少。4確定屬性 首先,要識別屬性,要明白某個類的對象應該描述什么東西,屬性不表示對象之間的關系,只表示其本質(zhì)性質(zhì),一些數(shù)字性的性質(zhì),如學生具有學號、姓名、性別等屬性。 另外,在確定屬性時暫不考

10、慮純用于實現(xiàn)的屬性(即單純的內(nèi)部狀態(tài))。還有在需求陳述中與已確定的對象有關的名詞、形容詞可能是選擇的線索。這些名詞、形容詞可能是屬性的后選,如每個學生都有成績,成績這就是一個屬性。5識別繼承關系 一般從兩方面識別繼承關系,一方面是自底向上,將具有相同屬性的類向上歸納出父類。一方面是自頂向下,將現(xiàn)有類向下細化出子類,識別出從上到下的繼承的層次,這樣便于在建立對象模型時的組織結(jié)構(gòu)。6反復修改 在以上五個步驟之后,還要對已經(jīng)得到的類-&-對象、關聯(lián)、屬性、結(jié)構(gòu)反復進行推敲和修改,并及時與用戶進行溝通,復審,以便得到更具體,準確的模型9.3.4 建立動態(tài)模型1編寫腳本 一般編寫腳本有以下三種情況的腳本

11、,一種是正常情況腳本,正常運行時執(zhí)行的腳本程序。另一種是特殊情況腳本,在輸入或輸出需要取邊界值時執(zhí)行的腳本程序。第三種是異常情況腳本,由于用戶不懂計算機程序,避免不了會在操作中出現(xiàn)失誤,這時需要執(zhí)行用戶進行異常中止或取消操作的腳本。2設想用戶界面 用戶界面的美觀程度、方便程度、易學程度、效率都是需要考慮的因素,一般這時會做幾個用戶界面方案,并用相關軟件畫出來,供用戶參考,讓用戶確定能夠令其滿意的界面。3畫事件跟蹤圖 在確定事件之后需要畫出事件跟蹤圖。 在事件跟蹤圖中,一條豎線代表一個對象,每個事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對象指向接受對象。 時間從上向下遞增,也就是說,畫在最

12、上面的水平箭頭線代表最先發(fā)生的事件,畫在最下面的水平箭頭線所代表的事件最晚發(fā)生。 箭頭線之間的間距并沒有具體含義,圖中僅用箭頭線在垂直方向上的相對位置表示事件發(fā)生的先后,并不表示兩個事件之間的精確時間差4畫狀態(tài)圖 狀態(tài)圖是描述一個實體基于事件反應的動態(tài)行為,顯示了該實體如何根據(jù)當前所處的狀態(tài)對不同的時間做出反應的。5審查動態(tài)模型9.3.5 建立功能模型1、 畫出基本系統(tǒng)模型圖 本系統(tǒng)模型由若干個數(shù)據(jù)源點/終點,及一個處理框組成,這個處理框代表了系統(tǒng)加工、變換數(shù)據(jù)的整體功能?;鞠到y(tǒng)模型指明了目標系統(tǒng)的邊界。由數(shù)據(jù)源點輸入的數(shù)據(jù)和輸出到數(shù)據(jù)終點的數(shù)據(jù),是系統(tǒng)與外部世界之間的交互事件的參數(shù)2 畫出

13、功能級數(shù)據(jù)流圖3描述處理框功能 為每個處理框添加詳細的功能描述,并形成一個說明文檔9.3.6 定義服務1對象的基本服務。 1)存在服務工:指最一般的服務,即創(chuàng)建、變動、刪除及選擇等操作。 2)計算服務:一個實例需要另一個實例加工結(jié)界時,所需的服務。 3)監(jiān)控服務:模型中某些部件需要快速實時處理時,所需的服務。2.對象的特殊服務3.認定消息關聯(lián)4.對服務進行說明9.4 面向?qū)ο笤O計9.4.1 面向?qū)ο笤O計準則1模塊化 對象被定義為模塊,對象把數(shù)據(jù)結(jié)構(gòu)和作用在數(shù)據(jù)上的操作封裝起來構(gòu)成模塊,成為組成系統(tǒng)的基本。2抽象 抽象是抽出事物的本質(zhì)、內(nèi)在的特性,忽略一些無關緊要的屬性。3信息隱藏 信息隱藏通過

14、對象的封裝性實現(xiàn),類結(jié)構(gòu)分離了接口和實現(xiàn),那么對于類用戶來講,屬性的表示方法和操作的實現(xiàn)算法是隱藏的。用戶只能通過公共接口訪問類中的屬性。4弱耦合5強內(nèi)聚 在面向?qū)ο笤O計中,內(nèi)聚可分為下述3類。 (1)服務內(nèi)聚。模塊是單一的,一個模塊只完成一項任務或一個服務只完成一種功能。 (2)類內(nèi)聚。類內(nèi)聚要求類的屬性和服務應該是高內(nèi)聚的,而且它們應該是系統(tǒng)任務所必須的。一個類只有一個功能或用途,如果這個類有多個功能,通常把它分解成多個專用的類。 (3)一般特殊內(nèi)聚。一般特殊結(jié)構(gòu)符合領域知識的表示形式,即特殊類應該盡量地繼承一般類的屬性和服務,它們是通用性和特殊性的一種方式,這種結(jié)構(gòu)是高內(nèi)聚的。6可重用

15、1)是盡量使用已有的類(包括弄好環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類)。 2)是如果確實需要創(chuàng)建新類,則在設計這些新類的協(xié)議時,應該考慮將來的可重復使用性。9.4.2 啟發(fā)規(guī)則1設計結(jié)果應該清晰易懂(1)命名一致。命名應該與專業(yè)領域中的名字一致,并且要符合人們的習慣。不同類中相似服務的名字應該相同。(2)重用協(xié)議(公共接口)。在設計中應該使用已經(jīng)建立了的類協(xié)議,避免重復勞動或重復定義帶來的差異,或不統(tǒng)一,這些協(xié)議或是其它設計人員已經(jīng)建立了的類協(xié)議,也可能是類庫中已有的協(xié)議。(3)減少消息連接。盡量采用已有標準的消息連接,去掉不必要的消息連接。采用統(tǒng)一模式建立自己需要的消息連接,也就是說

16、盡量減少消息模式的數(shù)目,增強可理解性和可使用性。(4)避免模糊定義。應該定義具有明確、有限用途的類,避免那些模糊的,不準確的類的定義。2一般特殊結(jié)構(gòu)的深度應適當 一般來說,在一個中等規(guī)模(大約包含100個類)的系統(tǒng)中,類層次數(shù)應保持為72。3設計簡單的類(1)避免包含過多的屬性。(2)避免提供太多服務。一般來說,一個類提供的公共服務不要超過7個。(3)明確精練的定義。通常用幾個簡單的語句描述一個類的任務。(4)簡化對象間的通信。4使用簡單的協(xié)議 一般來說,簡單消息中的參數(shù)不要超過3個,因為過多的參數(shù)會導致對象的修改復雜。5使用簡單的服務 類中的服務應該設計得既簡單又小,用35行源程序代碼比較合

17、適。6把設計變動減至最小 隨著設計方案逐漸成熟,改動也應該越來越小,這樣才能設計出優(yōu)良的結(jié)果9.4.3 系統(tǒng)分解 可以把面向?qū)ο笤O計模型的四大組成部分想象成整個模型的四個垂直切片。 1子系統(tǒng)之間的兩種交互方式 (1)客戶供應商關系 (2)平等伙伴關系2組織系統(tǒng)的兩種方案(1)水平層次組織 這種組織方案把軟件系統(tǒng)組織成一個層次系統(tǒng),每層是個子系統(tǒng)。(2)垂直塊組織 這種組織方案把軟件系統(tǒng)垂直地分解成若干個相對獨立的、弱耦合的子系統(tǒng),一個子系統(tǒng)相當于一塊,每塊提供一種類型的服務。3設計系統(tǒng)的拓撲結(jié)構(gòu) 構(gòu)成完整系統(tǒng)的拓撲結(jié)構(gòu)有:管道狀、樹狀、星型狀。為了減少系統(tǒng)之間的交互次數(shù),設計時應該采用與問題結(jié)

18、構(gòu)相適應的、盡可能簡單的拓撲結(jié)構(gòu)。9.4.4 設計問題域子系統(tǒng)1.調(diào)整需求 用戶需求或外部環(huán)境發(fā)生了變化; 分析員對問題域理解不透徹或缺乏領域?qū)<規(guī)椭?,以致面向?qū)ο蠓治瞿P筒荒芡暾蚀_地反映用戶的真實需求。2重用已有的類如果有可能重用已有的類,則重用已有類的典型過程如下。(1)選擇有可能被重用的已有類,標出這些候選類中對本問題無用的屬性和服務,盡量重用那些能使無用的屬性和服務降到最低程度的類。(2)在被重用的已有類和問題域類之間添加歸納關系(即從被重用的已有類派生出問題域類)。(3)標出問題域類中從已有類繼承來的屬性和服務。(4)修改與問題域類相關的關聯(lián),必要時改為與被重用的已有類相關的關聯(lián)

19、。3把問題域類組合在一起4增添一般化類以建立協(xié)議 9.4.5 設計人機交互子系統(tǒng)1設計人機交互子界面的準則(1)一致性(2)減少步驟(3)及時提供反饋信息(4)提供撤銷命令(5)無須記憶(6)易學(7)富有吸引力2、設計人機交互子系統(tǒng)的策略(1)將用戶分類(2)描述用戶的類型、水平、使用目的、其它特征(如年齡、性別、習慣等) , 寫出操作腳本(3)設計命令層次研究現(xiàn)有的人機交互含義和準則確精化命令層次定初始的命令層次(4)設計人機交互類9.4.6 設計任務管理子系統(tǒng)1、分析并發(fā)性 2、設計任務管理子系統(tǒng)(1)確定事件驅(qū)動型任務(2)確定時鐘驅(qū)動型任務(3)確定優(yōu)先任務(4)確定關鍵任務(5)確

20、定協(xié)調(diào)任務(6)盡量減少任務數(shù)(7)確定資源需求下述兩個因素可能是使用硬件實現(xiàn)某些子系統(tǒng)的主要原因。1)現(xiàn)有的硬件完全能滿足某些方面的需求。例如,買一塊浮點運算卡比用軟件實現(xiàn)浮點運算要容易得多。2)專用硬件比通用的CPU性能更高。例如,目前在信號處理系統(tǒng)中廣泛使用固件實現(xiàn)快速付里葉變換。9.4.7 設計數(shù)據(jù)庫管理子系統(tǒng)1選擇數(shù)據(jù)存儲管理模式(1)文件管理系統(tǒng)(2)關系數(shù)據(jù)庫管理系統(tǒng)為多種應用提供了一致的接口。標準化語言(大多數(shù)商品化關系數(shù)據(jù)庫管理系統(tǒng)都使用SQL語言)。(3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng) 擴展的關系數(shù)據(jù)庫管理系統(tǒng)是在關系數(shù)據(jù)庫的基礎上,增加了抽象數(shù)據(jù)類型和繼承機制,此外,還增加了創(chuàng)建

21、及管理類和對象的通用服務。 擴展的面向?qū)ο蟪绦蛟O計語言,擴充了面向?qū)ο蟪绦蛟O計語言的語法和功能,增加了在數(shù)據(jù)庫中存儲和管理對象的機制。9.4.7 設計數(shù)據(jù)庫管理子系統(tǒng)2設計數(shù)據(jù)管理子系統(tǒng)(1)文件系統(tǒng)定義第一范式表,列出每個類的屬性表,把屬性表規(guī)范成第一范式表的定義。為每個第一范式表定義一個文件。測量性能和需要的存儲容量。修改原設計的第一范式,以滿足性能和存儲需求(2)關系數(shù)據(jù)庫管理系統(tǒng)定義第三范式表,列出每個類的屬性表,把屬性表規(guī)范成第三范式,從而得出第三范式表的定義。為每個第三范式表定義個數(shù)據(jù)庫表。測量性能和需要的存儲容量。修改先前設計的第三范式,以滿足性能和存儲需求(3)面向?qū)ο髷?shù)據(jù)庫管

22、理系統(tǒng)擴展的關系數(shù)據(jù)庫途徑:使用與關系數(shù)據(jù)庫管理系統(tǒng)相同的方法。擴展的面向?qū)ο蟪绦蛟O計語言途徑9.4.8 設計類中的服務1確定類中應有的服務 2 設計實現(xiàn)服務的方法 (1)算法復雜度(2)容易理解與容易實現(xiàn)(3)易修改(4)選擇數(shù)據(jù)結(jié)構(gòu) (5)定義內(nèi)部類和內(nèi)部操作9.4.9 設計關聯(lián)1關聯(lián)的遍歷 在應用系統(tǒng)中,使用關聯(lián)有兩種可能的方式:單向遍歷和雙向遍歷2實現(xiàn)單向關聯(lián) 如果重數(shù)是多元的,則需要用個指針集合實現(xiàn)關聯(lián)。其中1+所在的一方表示1個或多個,也就是說一個公司有1個或多個職員。3實現(xiàn)雙向關聯(lián)第一種方法是只用屬性實現(xiàn)一個方向的關聯(lián),當需要反向遍歷時就執(zhí)行一次正向查找。第二種方法是兩個方向的關

23、聯(lián)都用屬性實現(xiàn)。4鏈屬性的實現(xiàn) 關聯(lián)對象不屬于相互關聯(lián)的任何一個類,它是獨立的關聯(lián)類的實例工資其實就是雇用這個鏈,這個關系的屬性,所以工資理論上應該不是雇員的屬性,而是雇用關系的屬性。9.4.10 設計優(yōu)化1確定優(yōu)先級2提高效率的幾項技術(shù)(1)增加冗余關聯(lián)以提高訪問效率 在面向?qū)ο蠓治鲞^程中,應該避免在對象模型中存在冗余的關聯(lián),因為冗余關聯(lián)不僅沒有增添關于問題域的任何信息,反而會降低模型的清晰程度。但是,在面向?qū)ο笤O計過程中,當考慮用戶的訪問模式,及不同類型訪問之間彼此的依賴關系時就會發(fā)現(xiàn),分析階段確定的關聯(lián)可能并沒有構(gòu)成效率最高的訪問路徑。(2)調(diào)整查找次序 改進了對象模型的結(jié)構(gòu),從而優(yōu)化了常用的遍歷之后,接下來就應該優(yōu)化算法了。優(yōu)化算法的一個途徑是盡量縮小查找范圍。 (3)保留派生屬性 3調(diào)整繼承關系(1)抽象與具體3調(diào)整繼承關系(2)為提高繼承程度而修改類定義 如果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論