UML、OOAD和OOP的實踐與思索UML_第1頁
UML、OOAD和OOP的實踐與思索UML_第2頁
UML、OOAD和OOP的實踐與思索UML_第3頁
UML、OOAD和OOP的實踐與思索UML_第4頁
UML、OOAD和OOP的實踐與思索UML_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

OOA、OOD和UML面向?qū)ο蠹夹g(shù)的開發(fā)實踐北京理工大學(xué)信息學(xué)院計算機科學(xué)系金旭亮2024/3/151主要內(nèi)容OOA、OOD與UML根底Rose如何介入軟件開發(fā)的全過程案例:編寫一個自己的簡化版WinZip軟件開發(fā)的哲學(xué)思考待研究的課題2024/3/152第一局部OOA與OOD根底2024/3/153OOAObject-OrientedAnalysis(OOA):面向?qū)ο蟮姆治鯫OA的側(cè)重點是業(yè)務(wù)領(lǐng)域分析,與軟件所要應(yīng)用的行業(yè)領(lǐng)域相關(guān),而與軟件技術(shù)關(guān)系不大,需要由領(lǐng)域?qū)<疫M(jìn)行。 這一局部的工作被稱為“需求分析”。2024/3/154OOA的成果業(yè)務(wù)領(lǐng)域用例圖活動圖協(xié)作圖大量的業(yè)務(wù)文檔資料2024/3/155OODObject-orienteddesign(OOD)用面向?qū)ο蟮姆椒檎鎸嵤澜缃⒁粋€計算機中的虛擬模型2024/3/156OOD的地位OOD的主要任務(wù)是跨越業(yè)務(wù)領(lǐng)域模型與可實際運行的軟件系統(tǒng)之間的鴻溝。OOD的難度是非常大的,負(fù)責(zé)OOD工作的人被稱為系統(tǒng)架構(gòu)設(shè)計師2024/3/157系統(tǒng)架構(gòu)設(shè)計師的任務(wù)確定系統(tǒng)的總體框架---大多采用已有的領(lǐng)域框架正確理解需求分析得出的領(lǐng)域模型,用面向?qū)ο蟮乃枷朐O(shè)計出軟件體系結(jié)構(gòu)---系統(tǒng)概要設(shè)計分析現(xiàn)實的可獲取的技術(shù)資源,分解出軟件的各個組件,安排好開發(fā)任務(wù)流程---系統(tǒng)詳細(xì)設(shè)計2024/3/158OOD的成果系統(tǒng)中有多少個類?系統(tǒng)中這些類間有什么關(guān)系〔系統(tǒng)靜態(tài)特性〕?系統(tǒng)中這些類生成的對象如何協(xié)作來完成工作〔系統(tǒng)動態(tài)特性〕?系統(tǒng)中如何管理這些類和對象?2024/3/159OOP流行的面向?qū)ο笳Z言O(shè)bject-orientedProgram(OOP)用一種面向?qū)ο蟮恼Z言來實現(xiàn)OOD完成的系統(tǒng)設(shè)計Java、C++、ObjectPascal、C#、VB.net……2024/3/1510關(guān)于OOP用面向?qū)ο蟮恼Z言編程不是OOP!OOP最重要的特征是面向?qū)ο罄碚摰膹V泛應(yīng)用OOP的成果是可運行的實際系統(tǒng)OOP中摻雜著OOD,OOP與OOD你中有我,我中有你,OOP是具體的OOD,二者的區(qū)別就在于應(yīng)用范圍的不同。2024/3/1511OOA、OOD、OOP與真實世界2024/3/1512面向?qū)ο罄碚摰脑僬J(rèn)識封裝封裝表達(dá)了數(shù)據(jù)信息的隱藏,從而使不同模塊的信息互不影響,這是OO的一大優(yōu)點,因為它從類這一程序根本單位開始就支持信息隱藏。2024/3/1513面向?qū)ο罄碚摰脑僬J(rèn)識繼承相對于結(jié)構(gòu)化編程中的模塊重用,面向?qū)ο笾械睦^承體系顯得更靈活,對代碼的控制手段更多,從而推動了代碼復(fù)用的程度,但卻加大了學(xué)習(xí)掌握的難度。2024/3/1514面向?qū)ο罄碚摰脑僬J(rèn)識多態(tài)的特點:所有可以發(fā)給baseclass對象的消息,也都同樣可以發(fā)給derivedclass。這是了解面向?qū)ο笳嫠璧年P(guān)鍵之一。2024/3/1515C++中的面向?qū)ο筇匦运姆N編程風(fēng)范:結(jié)構(gòu)化編程、基于對象、面向?qū)ο蟆⒎盒途幊藽程序員易犯的毛?。涸贑++中寫C程序。2024/3/1516軟件源代碼復(fù)用的方式組合(composition)與聚合(aggregation)繼承(inherit)其根本思想是以現(xiàn)有的類為根底創(chuàng)立新的類2024/3/1517STLStandardTemplateLibrary,標(biāo)準(zhǔn)模板庫STL是容器,算法和其他一些組件的集合2024/3/1518泛型編程在OOD中的應(yīng)用一種獨特的平面型編程風(fēng)范,大量使用C++的模板技巧典型案例:STL在標(biāo)準(zhǔn)的OOD設(shè)計方案中引入泛型編程技術(shù),可以起到減少類數(shù)目的作用泛型技術(shù)可以看成是C++類的“合并同類項”。2024/3/1519統(tǒng)一建模語言UMLUML圖形化的建模語言開發(fā)者用來為面向?qū)ο笙到y(tǒng)建立模型具有靈活性與可擴展性2024/3/1520統(tǒng)一軟件過程RUP三大特點:用例驅(qū)動、迭代開發(fā)和增量開發(fā)2024/3/1521OOAD的強大工具---ROSEROSE是采用UML進(jìn)行軟件系統(tǒng)設(shè)計的一個CASE工具,還有其他工具比方Visio,JBuilder7等。使用ROSE可以保證源代碼與系統(tǒng)模型的一致性,這在軟件開發(fā)過程中是非常有用的正向:UML模型軟件代碼框架逆向:軟件代碼

UML模型ROSE支持雙向工程2024/3/1522ROSE對軟件開發(fā)全過程的參與4+1視圖ProcessViewDeploymentViewLogical

ViewImplementationViewProgrammers

Softwaremanagement

PerformanceScalabilityThroughput

SystemIntegratorsSystemtopology

Delivery,installationcommunicationSystemEngineeringUse-CaseViewStructure

Analysts/

DesignersEnd-userFunctionality2024/3/1523用ROSE表達(dá)系統(tǒng)功能2024/3/1524用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)類圖ClassDiagram:說明了一個軟件中的各個類之間的關(guān)系2024/3/1525用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)2024/3/1526用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)2024/3/1527用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)2024/3/1528用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)小結(jié):用Rose來描述一個軟件的靜態(tài)結(jié)構(gòu),首先應(yīng)將整個系統(tǒng)劃分為假設(shè)干子系統(tǒng)或幾個組成局部,每個組成局部以一個包來表示。接著,需要設(shè)計具體的類,并用各種關(guān)聯(lián)符號表達(dá)出類間的關(guān)系,注意,每個類都必須歸屬于某一個包,這樣才便于查找某個類2024/3/1529用組件圖描述軟件組件一般用組件圖來生成代碼2024/3/1530用ROSE表達(dá)軟件的動態(tài)特性1:PerformResponsibility 客戶對象供應(yīng)者對象t消息:Client:Supplier調(diào)用周期說明……反身消息對象生命線1.1:PerformAnother

Responsibility 序列圖序列圖用于表達(dá)對象之間是如何發(fā)送消息,何時new一個對象,何時delete它,非常適合表達(dá)一種代碼流程。2024/3/1531用ROSE表達(dá)軟件的動態(tài)特性1:PerformResponsibilityClientObjectSupplierObjectMessageLink:Client:Supplier協(xié)作圖協(xié)作圖比較適合表達(dá)類之間的依賴關(guān)聯(lián)2024/3/1532用ROSE表達(dá)軟件的動態(tài)特性狀態(tài)圖當(dāng)系統(tǒng)可以明顯地劃分為幾個不同狀態(tài)時,狀態(tài)圖可以大顯身手,最明顯的是ADO記錄集的狀態(tài)轉(zhuǎn)換例如:需要給水分子的三種物理狀態(tài)建模2024/3/1533用ROSE表達(dá)軟件的動態(tài)特性活動圖活動圖最適合表達(dá)出一種處理流程2024/3/1534用ROSE表達(dá)軟件的動態(tài)特性小結(jié):〔1〕所有圖的最根本目的是要對系統(tǒng)運行過程中的各個對象之間的關(guān)系作出確定性的唯一性的描述,從而保證所有開發(fā)人員都能對系統(tǒng)有一個統(tǒng)一的認(rèn)識?!?〕一般在確定了軟件的靜態(tài)結(jié)構(gòu)之后才進(jìn)行描述系統(tǒng)的動態(tài)特性〔3〕在任何情況下,保證ROSE模型與實際代碼的一致都是至關(guān)重要的!〔4〕要根據(jù)實際情況選擇一種適宜的圖來表達(dá)系統(tǒng),不要強行要求用上所有類型的圖,牢記:我們的目的是為了交流!2024/3/1535參考資料2024/3/1536參考資料2024/3/1537參考資料2024/3/1538參考資料2024/3/1539參考資料2024/3/1540參考資料2024/3/1541參考資料2024/3/1542案例研究一再造一個WinZip麻雀雖小,五臟俱全2024/3/1543緣起:用一個規(guī)模小的工具軟件來說明OOD的實際應(yīng)用整個軟件完成周期:四天2024/3/1544開發(fā)過程形成軟件總體想法:5分鐘形成軟件技術(shù)想法:5分鐘實驗技術(shù)想法:1天設(shè)計系統(tǒng)詳細(xì)設(shè)計方案:1天正式編碼和測試:半天感觸:只要有技術(shù)積累,再加上合理的OOD,開發(fā)一個軟件會成為一種很有成就感的創(chuàng)作!2024/3/1545基于組件的用戶界面設(shè)計標(biāo)準(zhǔn)的分層體系結(jié)構(gòu):用戶界面類系統(tǒng)外部功能類系統(tǒng)底層基本功能類2024/3/1546功能設(shè)想2024/3/1547技術(shù)方案考慮采用C++流技術(shù)采用BorlandC++Builder開發(fā)BCBvsVC2024/3/1548軟件的工作原理〔一〕要編寫一個軟件,首先要知道人是如何完成某項工作的;接著,必須分析如何用計算機來完成這個工作,其結(jié)果是形成一個計算機算法,這要求有相關(guān)領(lǐng)域的理論知識2024/3/1549軟件的工作原理〔二〕計算機中文件的根本類型2024/3/1550軟件的工作原理〔三〕計算機中文件的根本類型2024/3/1551軟件的工作原理〔四〕考慮軟件的內(nèi)部總體數(shù)據(jù)處理流程2024/3/1552設(shè)計過程〔一〕---資源選擇選擇可以復(fù)用的代碼資源:C函數(shù)庫:用fopen〔〕、fclose()等翻開和關(guān)閉文件,然后,直接在內(nèi)存中對字節(jié)流進(jìn)行處理STL:用標(biāo)準(zhǔn)模板庫〔STL〕中的iostream類VCL:用TStream類2024/3/1553設(shè)計過程〔二〕---接口設(shè)計設(shè)計根本的流操作類接口請參看源代碼文件:FileStreamOpt.hFileStreamOpt.cpp2024/3/1554設(shè)計過程〔三〕---利用多態(tài)VCL的TStream類繼承樹圖注意:接口設(shè)計中采用了TStream*以利用多態(tài)2024/3/1555設(shè)計過程〔四〕---數(shù)據(jù)結(jié)構(gòu)StructVSClass2024/3/1556數(shù)據(jù)結(jié)構(gòu)設(shè)計結(jié)果2024/3/1557設(shè)計過程〔五〕---數(shù)據(jù)對象的管理?OO軟件的顯著特點之一是如何管理對象C++技術(shù)難點:=運算符重載STL在數(shù)據(jù)結(jié)構(gòu)方面有強大的表達(dá)能力!vectorVSlist利用VCL的現(xiàn)有特性改善設(shè)計2024/3/1558設(shè)計過程〔六〕---功能實現(xiàn)2024/3/1559設(shè)計結(jié)果2024/3/1560Key:先進(jìn)行非可視化功能類的設(shè)計設(shè)計過程中要綜合考慮各方面的要求,作出綜合平衡,然后才能形成可行的設(shè)計方案界面設(shè)計放在功能設(shè)計方案之后,它的目的是提供一個用戶接口以驅(qū)動功能類的運作.2024/3/1561界面設(shè)計案例:界面與功能代碼的完全別離2024/3/1562用戶界面設(shè)計〔一〕---窗體2024/3/1563用戶界面設(shè)計〔二〕---靈活性用戶界面編碼的分層原那么:(1)不在控件的事件處理過程中書寫大量的代碼!(2)盡可能減少代碼對具體控件的依賴(3)重復(fù)使用的某種功能的控件應(yīng)被封裝成新的控件(4)考慮窗體間的相似性,巧妙利用窗體的OO特性:繼承,多態(tài)與重載一個復(fù)雜的控件原那么上應(yīng)新建一個控制類以便于使用,這個控制類的接口成員應(yīng)是按邏輯來劃分而不是按技術(shù)來劃分的2024/3/1564用戶界面設(shè)計〔三〕---健壯性保證用戶界面層以正確的順序調(diào)用功能類

防止一個窗體過于復(fù)雜2024/3/1565提高軟件健壯性每一個函數(shù)都盡可能地保證是獨立完備的、平安的。程序根本完成后,從最底層的類開始,逐步找出每個對外接口的前條件〔前提〕和后條件〔結(jié)果〕,然后,判斷有無可能發(fā)生錯誤,并且決定這些錯誤應(yīng)該如何處理2024/3/1566開發(fā)高容錯程序三原那么

預(yù)防所有可以預(yù)料和防止的錯誤;處理所有可以預(yù)料但不能防止的錯誤;捕獲所有不能預(yù)料的錯誤;代碼實例分析2024/3/1567使用ROSE進(jìn)行正向代碼生成設(shè)計類接口新建一個組件將類賦與組件生成代碼2024/3/1568使用ROSE進(jìn)行正向代碼生成〔1〕設(shè)計類接口2024/3/1569使用ROSE進(jìn)行正向代碼生成〔2〕新建一個組件2024/3/1570使用ROSE進(jìn)行正向代碼生成〔3〕選定組件的語言2024/3/1571使用ROSE進(jìn)行正向代碼生成〔4〕給組件分配類2024/3/1572使用ROSE進(jìn)行正向代碼生成〔5〕分配了類的組件2024/3/1573使用ROSE進(jìn)行正向代碼生成〔6〕生成代碼2024/3/1574使用ROSE進(jìn)行逆向更新逆向更新的目的是用更改后的代碼刷新系統(tǒng)模型文件,以保證系統(tǒng)文檔與真實代碼的一致性2024/3/1575使用ROSE進(jìn)行逆向轉(zhuǎn)換選擇組件翻開AnsiC++specification窗口選擇文件生成模型2024/3/1576用已有代碼進(jìn)行逆向轉(zhuǎn)換〔1〕新建組件2024/3/1577用已有代碼進(jìn)行逆向轉(zhuǎn)換〔2〕翻開ANSIC++參數(shù)設(shè)置窗口2024/3/1578用已有代碼進(jìn)行逆向轉(zhuǎn)換〔3〕參加C++頭文件和CPP文件2024/3/1579用已有代碼進(jìn)行逆向轉(zhuǎn)換〔4〕從菜單中選逆向工程命令2024/3/1580用已有代碼進(jìn)行逆向轉(zhuǎn)換〔5〕ROSE工程資源瀏覽器中新生成的類2024/3/1581用已有代碼進(jìn)行逆向轉(zhuǎn)換〔6〕新生成的類的屬性窗口2024/3/1582用已有代碼進(jìn)行逆向轉(zhuǎn)換〔7〕在類圖中顯示逆向工程生成的類2024/3/1583OOAD理論總結(jié)與思索2024/3/1584軟件開發(fā)的最重要思維方式軟件開發(fā)的最重要思維方式是什么?抽象!軟件=對象+對象之間的關(guān)系結(jié)構(gòu)化編程時代

程序=數(shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο筌浖r代,軟件=?2024/3/1585組件化時代的軟件設(shè)計什么是軟件組件?注意:區(qū)分ROSE中的組件與軟件理論領(lǐng)域中的組件可以復(fù)用的,具備一定功能的類的組合。單個類不夠資格成為軟件組件!軟件組件可以以源代碼方式存在,也可以以二進(jìn)制形式存在2024/3/1586組件化時代的軟件設(shè)計OOD設(shè)計師制定組件的標(biāo)準(zhǔn),高級程序員實現(xiàn)這些可復(fù)用的組件現(xiàn)代軟件開發(fā)已成為組裝已有組件的過程,最典型的例子是Java與.net類庫2024/3/1587設(shè)計模式大型系統(tǒng)中良好的設(shè)計是關(guān)鍵為開發(fā)面向?qū)ο蟮能浖峁┮粋€架構(gòu)減少了軟件設(shè)計的復(fù)雜度為軟件設(shè)計方案的重用提供了可能性可以防止犯一些常規(guī)性的錯誤使設(shè)計獨立于語言建立了一套軟件架構(gòu)設(shè)計師的“通用語言”在軟件開發(fā)周期中縮短了設(shè)計周期設(shè)計模式〔Designpatterns〕2024/3/1588使用設(shè)計模式熟悉模式才能知道如何使用模式用模式的最好方法就是設(shè)計時忘掉所有的模式名,只從實踐出發(fā)尋找可行的方案,必要時才去翻模式書以獲得靈感。我們用UML來描述模式,ROSE是畫圖工具2024/3/1589設(shè)計模式經(jīng)典書籍四個老外權(quán)威:Gamma,Helm,JohnsonandVlissides“GangofFour”——四人幫DesignPatterns,ElementsofReusableObject-OrientedSoftware(AddisonWesley:1995)提出23種設(shè)計模式創(chuàng)立型設(shè)計模式:解決如何創(chuàng)立對象的問題結(jié)構(gòu)型設(shè)計模式:解決類和對象間的結(jié)構(gòu)關(guān)系問題行為型設(shè)計模式:解決對象間的動態(tài)關(guān)系問題2024/3/1590參考資料2024/3/1591參考資料2024/3/1592關(guān)于設(shè)計模式設(shè)計模式運用時,心中要無模式;關(guān)鍵在于把握其思想。應(yīng)仔細(xì)研究成熟的設(shè)計模式,將其活學(xué)活用模式不是數(shù)學(xué)公式!2024/3/1593結(jié)構(gòu)化編程與面向?qū)ο缶幊堂嫦驅(qū)ο蟮年P(guān)鍵是抽象面向?qū)ο蠓治鲈O(shè)計的成功實施要求更高,難度更大: 在理解對象根本理論和開發(fā)技術(shù)的前提下,加上豐富的程序開發(fā)實踐,才行。結(jié)構(gòu)化與面向?qū)ο蠓椒☉?yīng)該相輔相成,在適宜的地方用適宜的方法。2024/3/1594結(jié)構(gòu)化編程與面向?qū)ο缶幊淘陬惖膬?nèi)部代碼實現(xiàn)上采用結(jié)構(gòu)化編程的方式: 比方:將一個太長的函數(shù)按功能分解為假設(shè)干個小函數(shù),做為類的私有函數(shù)只有在調(diào)試代碼去除BUG中,才覺察OO的妙處和軟件工程理論的無比正確! 最重要的是兩點: 〔1〕代碼隔離; 〔2〕控制模塊規(guī)模;2024/3/1595對象的存儲對象的存儲不應(yīng)直接與數(shù)據(jù)庫打交道對象的管理通常都設(shè)計控制類采用STL容器進(jìn)行管理從數(shù)據(jù)庫記錄集生成對象,然后把對象放入STL容器中,是一個很好的設(shè)計方案數(shù)據(jù)庫表的一對多關(guān)聯(lián),表現(xiàn)為對象之間的組合,多對多關(guān)聯(lián)如何處理?請思索!2024/3/1596對象與關(guān)系數(shù)據(jù)庫對象實例的數(shù)據(jù)保存在數(shù)據(jù)庫表中,一般一條記錄對應(yīng)一個對象實例,盡量防止一個對象實例的數(shù)據(jù)分布在不同的表中,這樣就加大了移植的難度;對象與數(shù)據(jù)庫之間的關(guān)系問題是OOD與OOP必須解決的問題之一。2024/3/1597數(shù)據(jù)庫表關(guān)聯(lián)與對象的對應(yīng)表的一對一關(guān)聯(lián)可直接映射到對象間的一對一關(guān)聯(lián)2024/3/1598數(shù)據(jù)庫表關(guān)聯(lián)與對象的對應(yīng)一對多關(guān)聯(lián)2024/3/1599數(shù)據(jù)庫表關(guān)聯(lián)與對象的對應(yīng)多對多關(guān)聯(lián)需拆成兩個一對多的關(guān)聯(lián)2024/3/15100分而治之的設(shè)計方法“分而治之”是一個根本的方法,簡單地說,就是將一個復(fù)雜的系統(tǒng)劃分為幾個子系統(tǒng),然后,分別處理這些子系統(tǒng),最后再合成一個完整的系統(tǒng)。這是西方科學(xué)的主要思維方法之一:重視局部與細(xì)節(jié),用放大鏡去研究大象。2024/3/15101橫向與縱向可以利用多態(tài)、模板等機制簡化設(shè)計繼承是縱向的設(shè)計方案,STL是橫向的解決方案,繼承可以復(fù)用代碼,模板可以減少類的數(shù)量,相互配合才是良好的設(shè)計。基于組件的“搭積木”過程可以看成是將橫向與縱向設(shè)計相結(jié)合的典范2024/3/15102OOD的指導(dǎo)原那么為特定問題產(chǎn)生一個class,然后讓它在解決其他問題時,漸漸成長而成熟;設(shè)計Class及其接口,是OOD的主要任務(wù);開始寫程序,讓一局部先動起來,以驗證設(shè)計,或找出難點所在;保持類的小而簡潔,功能明確——《ThinkinginJava》p822024/3/15103OOAD的哲學(xué)方法論真學(xué)問把復(fù)雜的問題弄得簡單,它的目的是讓你能夠理解;偽學(xué)問把簡單的問題弄得復(fù)雜,它的目的是讓你感到神秘。不做就學(xué)不到2024/3/15104OOAD的哲學(xué)方法論一切都要從實際出發(fā),不迷信老外的一切,相信自己的直覺。采用“拿來主義”現(xiàn)在的OOD,大多是在采用已有的系統(tǒng)架構(gòu)根底上修修補補,以到達(dá)最大限度地利用現(xiàn)有資源的目的。所以,OOD不是獨立于語言與開發(fā)工具的。不存在界限清楚的OOD階段,事實上,OOD是與編

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論