程序設(shè)計方法概述_第1頁
程序設(shè)計方法概述_第2頁
程序設(shè)計方法概述_第3頁
程序設(shè)計方法概述_第4頁
程序設(shè)計方法概述_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

江西師范大學(xué)·計算機信息工程學(xué)院·計算機科學(xué)系《面向?qū)ο蟪绦蛟O(shè)計》課程組huazhizhang@面向?qū)ο蟪绦蛟O(shè)計目錄第1章程序設(shè)計語言概述第2章程序設(shè)計語言的基本成分第3章程序設(shè)計方法概述第4章面向?qū)ο笳Z言基礎(chǔ)第5章類的管理及常用工具類第6章異常處理和斷言第7章線程第8章GUI編程基礎(chǔ)和applet第9章I/O流第10章網(wǎng)絡(luò)通信第11章泛型與集合框架2/363.1問題規(guī)模對程序設(shè)計方法的影響3.2結(jié)構(gòu)化程序設(shè)計方法3.3面向?qū)ο蟪绦蛟O(shè)計方法3.4兩種方法的簡單評述第3章程序設(shè)計方法概述理解并掌握大程序開發(fā)的特點、難點和關(guān)注點;掌握SP核心思想、實施步驟及方法的優(yōu)缺點;掌握OOP的來龍去脈、核心思想,并結(jié)合大程序開發(fā)的關(guān)注點,理解面向?qū)ο蟮幕靖拍?。本章重點3/36問題規(guī)模的演化(決定了程序規(guī)模和復(fù)雜性)最初:面向科學(xué)計算,規(guī)模小、需求明確60-70年代:簡單管理應(yīng)用,如財務(wù)信息管理。這一階段,問題開始顯現(xiàn)。如程序的質(zhì)量差、完工時間不可預(yù)期、完工后難于維護,且生產(chǎn)率較低。人們將上述問題稱作軟件危機。各種程序設(shè)計方法涌現(xiàn)。90年代:從單機/局域網(wǎng)模式基于互聯(lián)網(wǎng)模式,任務(wù)由簡單數(shù)據(jù)處理決策支持。因同期程序設(shè)計科學(xué)的發(fā)展滯后于應(yīng)用的發(fā)展,軟件危機依舊存在3.1問題規(guī)模對程序設(shè)計方法的影響開發(fā)冒泡排序之類的程序很容易,綜合性業(yè)務(wù)管理系統(tǒng)卻比較困難。后者無難解算法,難在何處?這得從程序開發(fā)步驟說起。4/36說明:大程序:代碼量10萬行以上,用戶給出需求;小程序:代碼量小于10萬行,自己決定需求。程序的開發(fā)步驟(大/小程序均適合)3.1問題規(guī)模對程序設(shè)計方法的影響定義需求規(guī)約設(shè)計求解模型實現(xiàn)模型問題規(guī)模對程序開發(fā)的影響,或者說開發(fā)大程序和小程序的差別,主要體現(xiàn)在這三大步驟中。另外還需考慮人員溝通和軟件維護。5/36問題規(guī)模對小程序開發(fā)的影響需求規(guī)約簡單,易于精確定義;設(shè)計求解模型(即算法)的開發(fā)是重點;開發(fā)時關(guān)注算法的正確性和精巧性。算法完成后,編碼/測試(即實現(xiàn)模型)很簡單;人員溝通協(xié)作:無(個人獨立完成整個過程)后期維護:即使有,因程序規(guī)模小而變得簡單。3.1問題規(guī)模對程序設(shè)計方法的影響對面向?qū)嶋H應(yīng)用的小軟件的開發(fā)而言,也是如此。6/36問題規(guī)模對大程序開發(fā)的影響難于定義穩(wěn)定、精確的需求規(guī)約;難于搭建合理的求解模型;編碼測試很困難;人員溝通協(xié)作很復(fù)雜;維護貫穿整個生命周期,使用初期維護頻繁。3.1問題規(guī)模對程序設(shè)計方法的影響復(fù)雜系統(tǒng)的求解模型的搭建原本就比較困難,加上需求動態(tài)變化,使得求解模型要經(jīng)常修改,甚至推倒重來。正如蓋房子,房子的基本目的和用途都不清楚,結(jié)果……。大程序涉及領(lǐng)域廣、人員多,如雙方領(lǐng)導(dǎo)、管理人員、開發(fā)人員(需求、設(shè)計、編碼、測試)、終端用戶、風(fēng)險評估員等,相互間溝通問題大,牽涉很多非技術(shù)因素,影響開發(fā)質(zhì)量。需求難定義:規(guī)模大、涉獵廣、理不清;外行開發(fā)系統(tǒng)讓內(nèi)行使用;開發(fā)期間用戶無法對設(shè)計進(jìn)行驗證。需求在設(shè)計、開發(fā)、甚至在軟件使用的過程中,被逐步的“開發(fā)”出來。調(diào)試難度隨代碼量增大而呈現(xiàn)幾何級數(shù)增加,涉及子程序正確、子程序/模塊間協(xié)調(diào)正確,而且往往解決了舊錯,又引入了新問題。需求將在設(shè)計過程中“開發(fā)”出來,使用初期錯誤涌現(xiàn),維護將貫穿整個開發(fā)、使用過程。并且維護不僅將破壞已有的設(shè)計,更可能會引入許多新的錯誤。7/36大程序開發(fā)現(xiàn)狀:缺乏成熟理論支持,確保系統(tǒng)正確是一種夢想;目前希望在某些關(guān)鍵行為上不出錯;對求解模型,不求完全不變,但求有較規(guī)范的設(shè)計方法,模型要易于維護和擴充。3.1問題規(guī)模對程序設(shè)計方法的影響大程序開發(fā)應(yīng)注重什么?8/36大程序開發(fā)的側(cè)重點可靠性:在特定時間、特定環(huán)境、做特定操作不失敗的可能性。即系統(tǒng)“核心模塊”不會發(fā)生“特定類型”錯誤??芍赜眯裕簩σ延心K/子程序,無需修改或僅需少量修改就可拿到別處使用的難易程度;可維護性:實施各類維護活動的難易程度。3.1問題規(guī)模對程序設(shè)計方法的影響可重用性高,可減少工作量(需求、設(shè)計、編碼測試、維護),降低錯誤。因為重用模塊經(jīng)過多次復(fù)用,存在錯誤的可能性遠(yuǎn)比新開發(fā)程序低,可靠性更容易保證。維護包括糾錯、增/刪/改功能、換環(huán)境、系統(tǒng)重構(gòu)等,貫穿整個軟件生命周期??删S護性好,可大幅降低維護難度,減少因維護而引入的各類錯誤。對提高可維護性的重視,怎么說都不為過!軟件工程的核心,就是為了提高軟件的可維護性。以PC機架構(gòu)設(shè)計為例解釋上述側(cè)重點??傮w上,大程序重在如何處理復(fù)雜性,設(shè)計出結(jié)構(gòu)合理、易于維護的系統(tǒng)處理框架。9/36兩種經(jīng)典的程序設(shè)計方法概述發(fā)展至今,產(chǎn)生許多程序設(shè)計方法,其中結(jié)構(gòu)化程序設(shè)計和面向?qū)ο蟪绦蛟O(shè)計最為經(jīng)典。二者思想萌芽幾乎同時出現(xiàn)于1968年左右。但結(jié)構(gòu)化方法率先被業(yè)界接受,并占據(jù)主導(dǎo)地位。隨著程序規(guī)模擴大,結(jié)構(gòu)化方法在可重用性、可維護性方面遇到困難。人們發(fā)現(xiàn)OO方法的部分思想有助于解決;加之對游戲、GUI程序,結(jié)構(gòu)化方法難于奏效。于是OO逐漸被重視,并迅速走出實驗室,得以發(fā)展和流行。3.1問題規(guī)模對程序設(shè)計方法的影響10/36方法起源核心思想實例剖析方法的優(yōu)缺點3.2結(jié)構(gòu)化程序設(shè)計方法11/36起源:60年代末關(guān)于goto語句的爭論當(dāng)時軟件危機癥狀明顯:質(zhì)量差、低產(chǎn)出、難維護。Dijkstra、Wirth等人力主廢棄goto,并提出一些結(jié)構(gòu)化設(shè)計的方法和原則,以及語言支持;后Knuth將討論引到“好程序”的標(biāo)準(zhǔn)上,讓人們逐步認(rèn)識到結(jié)構(gòu)的重要性;爭論結(jié)束時,用結(jié)構(gòu)化思想進(jìn)行程序設(shè)計的模式基本為業(yè)界接受。后經(jīng)Yourdon、Constantine、DeMarco等人不斷豐富和完善,結(jié)構(gòu)化程序設(shè)計成為20世紀(jì)七、八十年代使用最廣泛的程序設(shè)計方法。3.2結(jié)構(gòu)化程序設(shè)計方法E.W.DijkstraN.Wirth12/36核心思想以功能為核心的,系統(tǒng)是功能模塊的組裝。“結(jié)構(gòu)化”是指可組合、可分解,即系統(tǒng)(或大模塊)由若干子模塊組成,各模塊獨立性較強。設(shè)計策略:自頂向下逐步求精3.2結(jié)構(gòu)化程序設(shè)計方法結(jié)合PC機構(gòu)造,解釋結(jié)構(gòu)化設(shè)計思想及其優(yōu)點。所謂結(jié)構(gòu)化程序設(shè)計,就是這樣一種編程方法:用自頂向下逐步求精策略指導(dǎo)開發(fā)過程;程序由若干模塊(或構(gòu)件)組裝而成;構(gòu)成模塊的每一子程序只能包含順序、分支、選擇等三種結(jié)構(gòu),且每種結(jié)構(gòu)只允許單入口和單出口?!吨袊嬎銠C百科全書(第二版)》輸入數(shù)據(jù)輸出數(shù)據(jù)結(jié)構(gòu)化就是功能可組合、可拆解。系統(tǒng)……功能1功能n13/36實例剖析實例1(問題需求):1、能夠記錄圖書的明細(xì)信息及分類信息(包括圖書本身的書名、作者、出版單位、出版年份、是否英文、原版等等,以及圖書的分類號、關(guān)鍵字等等);2、能記錄讀者具體情況,查詢讀者借閱信息;3、能夠查閱當(dāng)前圖書在庫及借出情況;4、能設(shè)置讀者借閱期限到或者某種條件拒絕借閱的處理;5、特殊情況的處理;6、打印各類相關(guān)報表,制作各種統(tǒng)計圖表……。3.2結(jié)構(gòu)化程序設(shè)計方法14/36實例剖析解決方案3.2結(jié)構(gòu)化程序設(shè)計方法……圖書資料管理系統(tǒng)信息維護數(shù)據(jù)檢索報表處理特殊處理圖書信息增刪改讀者信息增刪改員工信息增刪改管理權(quán)限增刪改15/36方案剖析簡單易用。以功能為核心搭建系統(tǒng)框架,目標(biāo)明確,方法簡單,易于學(xué)習(xí),易于實現(xiàn)。策略有效。自頂向下逐步求精思想貫穿分解過程,系統(tǒng)結(jié)構(gòu)為層次狀。分解過程即實現(xiàn)過程。模塊化。信息封裝于模塊,各模塊相互獨立。3.2結(jié)構(gòu)化程序設(shè)計方法結(jié)構(gòu)化方法究竟存在什么問題呢?16/36實例2(在實例1基礎(chǔ)上推廣)將系統(tǒng)推廣至校圖書館及各院系,并聯(lián)網(wǎng)共享即師生可跨院借閱;一些院系有特殊需求:地理系:有地圖管理,地圖管理涉及地形、地貌、天氣、資源分布、衛(wèi)星圖等不同地圖和關(guān)鍵字音樂系:樂譜、器械管理化學(xué)系:化學(xué)制劑和器械管理……3.2結(jié)構(gòu)化程序設(shè)計方法17/36實例-2解決方案策略:在原有基礎(chǔ)上,為不同用戶做個性修改后分發(fā),設(shè)計方案與前類似。存在問題有錯難改如:發(fā)現(xiàn)原系統(tǒng)一處算法設(shè)計缺陷,而不同用戶已對此算法可能做了調(diào)整,必須逐個處理,很難做雷同修改。模塊獨立性受數(shù)據(jù)結(jié)構(gòu)制約模塊以功能為核心構(gòu)建,功能本質(zhì)上是對數(shù)據(jù)的處理。數(shù)據(jù)的結(jié)構(gòu)若需要變動,很多模塊都將受影響。3.2結(jié)構(gòu)化程序設(shè)計方法即難維護、難重用,可靠性難保障。18/36優(yōu)勢特色以功能為核心構(gòu)建系統(tǒng),目標(biāo)明確,易于理解,措施(即自頂向下逐步求精)簡單有效;存在問題以功能為核心構(gòu)建軟件系統(tǒng),問題多;用戶和開發(fā)人員之間存在語義鴻溝。3.2結(jié)構(gòu)化程序設(shè)計方法以功能為核心,可以很好的踐行功能抽象策略:1、信息封裝在模塊中,便于在較高層面上分析和設(shè)計;2、層次/模塊獨立,設(shè)計時無需考慮其它層/模塊。1、功能易變(不精確、漏、變),系統(tǒng)結(jié)構(gòu)的穩(wěn)定性較差。2、模塊獨立性受限。(數(shù)據(jù)局部于模塊、需要全局變量)3、功能/模塊與具體需求聯(lián)系密切,限制模塊重用性??蛻裘枋龅男枨蟛痪_,涉及開發(fā)人員難懂的領(lǐng)域術(shù)語;開發(fā)人員使用的專業(yè)框圖/術(shù)語的描述,用戶難理解。這樣在軟件交付使用前,用戶很難對需求轉(zhuǎn)換的有效性和合理性進(jìn)行確認(rèn)。19/36方法學(xué)視角將系統(tǒng)是做一個給定輸入產(chǎn)生特定輸出功能體。核心思想以功能為核心構(gòu)建系統(tǒng),功能可組合、可拆解主要策略自頂向下逐步求精存在問題以功能為核心構(gòu)建軟件系統(tǒng),問題多多;用戶和開發(fā)人員之間存在語義鴻溝。3.2結(jié)構(gòu)化程序設(shè)計方法·小結(jié)20/36方法起源核心思想基本概念實例剖析3.3面向?qū)ο蟪绦蛟O(shè)計方法21/36面向?qū)ο蠓椒ǖ钠鹪?0~50年代,運籌學(xué)流行:雷達(dá)選址、水雷布陣60年代,挪威的Dahl幫助Nygaard用計算機求解運籌學(xué)問題,并發(fā)布Simula-62,67年正式發(fā)布。1972年,Alan.Kay研制世界上首個圖形用戶界面的計算機系統(tǒng)Alto。發(fā)布語言SmallTalk72,GUI界面的推廣使得OOP日漸受到重視。Smalltalk-80及其支撐環(huán)境(84年作為產(chǎn)品公開)的推出,使得面向?qū)ο蟪绦蛟O(shè)計進(jìn)入實用階段。之后,伴隨C++、Eiffel興起,OO方法開始走紅。3.3面向?qū)ο蟪绦蛟O(shè)計方法O.J.DahlK.NygaardAlan.Kay22/36面向?qū)ο蠓椒ǖ陌l(fā)展90年代,OO研究從語言轉(zhuǎn)到軟件開發(fā)方法方面,提出了一系列面向?qū)ο蟮拈_發(fā)方法和技術(shù),如:B.Henderson-Sellers和J.M.Edwards提出OO生存周期的噴泉模型及OO系統(tǒng)開發(fā)的七點框架方法OO方法G.Booch提出的面向?qū)ο箝_發(fā)方法學(xué)P.Coad和E.Yourdon提出的OO分析和OO設(shè)計J.Rumbaugh等提出的OMT方法學(xué)J.Rumbaugh、G.Booch和I.Jacobson等人又提出基于UML的統(tǒng)一方法3.3面向?qū)ο蟪绦蛟O(shè)計方法23/36核心思想軟件就是現(xiàn)實世界的仿真(或模擬)?!,F(xiàn)實世界系統(tǒng)=一組客觀對象+對象間交互面向?qū)ο笙到y(tǒng)=一組對象+對象間的消息傳遞實現(xiàn):客觀對象≈計算機對象、消息傳遞≈對象間協(xié)作設(shè)計重點抽象出對象;基于對象模擬客觀世界的運作。3.3面向?qū)ο蟪绦蛟O(shè)計方法小型圖書管理系統(tǒng)的模擬……(好處:系統(tǒng)穩(wěn)定性更高。日后功能可能變,但對象依舊,變得是對象間的交互。)24/36類和對象對象是現(xiàn)實對象的模擬,類是對象的描述模型。對象/類中包含屬性和行為。屬性:對象的數(shù)據(jù)成員;方法:描述對象的動作對象間交互:也稱對象間發(fā)送消息,就是一個對象調(diào)用另一對象的方法,已更改對象的狀態(tài)。對象狀態(tài):對象中所有屬性的值。程序執(zhí)行的目的就是通過交互來更改對象的狀態(tài)。3.3.3基本概念--類和對象25/36面向?qū)ο蟪绦蛟O(shè)計語言,要盡可能地把類、對象設(shè)計的簡單、安全、易用、易于拓展。轎車類{

屬性:顏色、排氣量、車重、里程、…

行為:啟動()、加速()、轉(zhuǎn)向()、……}包含哪些屬性、行為,由系統(tǒng)的功能需求、可擴展性來決定。classTV{

privateintvolume,channel;publicvoidsetCH(intn){channel=n;}}class遙控器{privateTVt;public遙控器(TVtt){t=tt;};

publicvoidsendCH(intch){

t.setCH(ch);}}TVt=newTV();遙控器rc=new遙控器(t);//建立關(guān)聯(lián)

rc.sendCH(9);//發(fā)消息遙控器向電視機發(fā)消息改變頻道遙控器向電視機發(fā)消息,更改電視機頻道;實現(xiàn)機制為遙控器調(diào)用電視機更改狀態(tài)的方法。在OO方法中,封裝有兩層含義:打包,將組成對象的各零件包成一個整體;隱藏,隱藏對象的細(xì)節(jié)。封裝的優(yōu)點隱藏細(xì)節(jié),可簡化認(rèn)知;只能借助對象使用接口來操控對象必須遵循設(shè)計者既定的操作條件;接口不變情況下,細(xì)節(jié)改變不影響使用。3.3.3基本概念--封裝即讓操作對象更簡單、更安全、更易于維護和重用。例如:電視機、遙控器26/36含義子類擁有父類的全部屬性和行為。作用重用:子類在父類的基礎(chǔ)上構(gòu)造;分散類復(fù)雜性:把類的家族特征分散于類層次結(jié)構(gòu),避免單個類的設(shè)計過于復(fù)雜;借助繼承關(guān)系建立家族體系,為多態(tài)奠定基礎(chǔ)。3.3.3基本概念--繼承狗咬人了咬的效果完全不同27/36含義:同一名稱在不同環(huán)境下有不同含義,如:行為多態(tài):某方法有多種方法體可供選用;如:狗擁有嗅的行為:

嗅(主人氣味)、嗅(老虎氣味)、……我有一只名為“毛頭”的寵物狗,毛頭.咬()值多態(tài):某變量可賦予不同類型的對象。動物

d=new貓();d=new狗();

3.3.3基本概念--多態(tài)重載:編譯時根據(jù)方法的參數(shù)來決定執(zhí)行哪一方法體。重寫/覆蓋:運行時根據(jù)名稱綁定的對象來決定執(zhí)行哪一方法體。多態(tài)賦予對象在不同環(huán)境下的自適應(yīng)能力,使程序更簡潔易懂,通用性也得到增強。多態(tài)特性,特別是動態(tài)綁定的多態(tài)特性,是面向?qū)ο蠓椒ㄗ钗说暮诵奶厣?8/36含義:只描述關(guān)心的屬性/行為,例如:功能抽象,如子程序;數(shù)據(jù)類型,如數(shù)據(jù)抽象;從一組對象抽象出類,如具體圖書圖書類;從一組相似類中抽象出層次結(jié)構(gòu)(即類家族結(jié)構(gòu)),如犬科-狗-藏獒從不同類中抽象出共性(即接口)如:飛機、飛鳥、飛人、會飛的子彈會飛的將相關(guān)但不同的含義用同一名稱表示,如狗.嗅()……3.3.3基本概念--抽象在這些概念和機制的支持下,OO中的類、對象,就如同int那樣具有高度的易用性、安全性和可重用性。29/36實例剖析實例1(問題需求):1、能夠記錄圖書的明細(xì)信息及分類信息(包括圖書本身的書名、作者、出版單位、出版年份、是否英文、原版等等,以及圖書的分類號、關(guān)鍵字等等);2、能記錄讀者具體情況,查詢讀者借閱信息;3、能夠查閱當(dāng)前圖書在庫及借出情況;4、能設(shè)置讀者借閱期限到或者某種條件拒絕借閱的處理;5、特殊情況的處理;6、打印各類相關(guān)報表,制作各種統(tǒng)計圖表……。3.3.4實例剖析30/36實例-1解決方案用例、對象模型、功能模型、動態(tài)模型、……3.3.4實例剖析管理員管理讀者管理圖書管理書目登記借/還書管理報表……登陸查詢?yōu)g覽注冊用戶系統(tǒng)用例圖specifyCriteria():LendItemForm:LendItemControl:Title:BorrowInfo:Loan:Itemsearch()selectTitle()selectItem()lend()search(criteria)getItem(title)lend(item)match(criteria)getItems()isAllowed(item)setStatus()[如果允許借此書]create(borrower,item)管理員借書用例基本流的順序圖相關(guān)類功能的說明LendItemForm:借書界面LendItemControl:管理員登記借書Title:圖書資料基本信息Borrowerinfo:讀者基本信息Loan:讀者借書記錄Item:書目分類信息LendItemFormspecifyCriteria()search()selectTitle()selectItem()lend()……LendItemControlsearch(criteria)getItem()lend(item)……Titlematch(criteria)getItems()……ItemsetStatus()……BorrowerInfoisAllowed(item)……Loancreate(borrower,item)……系統(tǒng)相關(guān)類的行為匹配疑問:用面向?qū)ο箝_發(fā)似乎并不比結(jié)構(gòu)化開發(fā)更簡單,甚至還更復(fù)雜。確實如此!31/36實例2(在實例1基礎(chǔ)上推廣)將系統(tǒng)推廣至校圖書館及各院系,并聯(lián)網(wǎng)共享即師生可跨院借閱;一些院系有特殊需求:地理系:有地圖管理,地圖管理涉及地形、地貌、天氣、資源分布、衛(wèi)星圖等不同地圖和關(guān)鍵字音樂系:樂譜、器械管理化學(xué)系:化學(xué)制劑和器械管理……3.3.4實例剖析32/36實例-2解決方案——所得設(shè)計方案與前類似派生新類,解決部分功能(地圖、樂譜等)構(gòu)造新類(化學(xué)制劑、器械),加入系統(tǒng);設(shè)計特點分析繼承/派生是簡單易用的重用機制;新增內(nèi)容對系統(tǒng)原有結(jié)構(gòu)影響很??;類/對象易被用戶理解,且開發(fā)過程中對象的語義不變,內(nèi)容逐步豐富,便于用戶驗證設(shè)計;系統(tǒng)的可擴充、易維護、易重用,可靠性較高3.3.4實例剖析注意:OO中程序員和用戶間

溫馨提示

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

評論

0/150

提交評論