模塊4 面向?qū)ο笏枷肱c范型《軟件工程》教學(xué)課件_第1頁
模塊4 面向?qū)ο笏枷肱c范型《軟件工程》教學(xué)課件_第2頁
模塊4 面向?qū)ο笏枷肱c范型《軟件工程》教學(xué)課件_第3頁
模塊4 面向?qū)ο笏枷肱c范型《軟件工程》教學(xué)課件_第4頁
模塊4 面向?qū)ο笏枷肱c范型《軟件工程》教學(xué)課件_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《軟件工程》?精品課件合集第X章XXXX模塊4

面向?qū)ο笏枷肱c范型4.1模塊4.1模塊計算機硬件系統(tǒng)的設(shè)計原則:模塊內(nèi)部的交互程度最高模塊之間的交互程度最低4.1模塊軟件模塊是一個由聚合標識符所標識的、由邊界元素界定范圍的、詞匯上鄰接的程序語句序列。{、}、begin、end模塊內(nèi)部的交互程度稱為內(nèi)聚

Cohesion。模塊之間的交互程度稱之為耦合

Coupling。4.2內(nèi)聚內(nèi)聚Cohesion由低到高分為7個分類/級別:偶然性內(nèi)聚邏輯性內(nèi)聚時間性內(nèi)聚過程性內(nèi)聚通信性內(nèi)聚功能性內(nèi)聚信息性內(nèi)聚低高1、偶然性內(nèi)聚如果一個模塊執(zhí)行多個完全不相關(guān)的操作,則該模塊具有偶然性內(nèi)聚CoincidentalCohesion1、偶然性內(nèi)聚2個嚴重的缺點:這樣的模塊極難讀懂、難以理解它到底要做什么;進而導(dǎo)致該模塊難調(diào)試、難修改、難維護、難升級。這樣的模塊根本不可能被其他軟件產(chǎn)品重用,因為不可能其他軟件產(chǎn)品“恰好”需要這樣一個做相同的雜事的模塊。1、偶然性內(nèi)聚改進:將其分成更小的模塊,使每個模塊分別只執(zhí)行一個操作2、邏輯性內(nèi)聚當一個模塊進行一系列相關(guān)的操作,每個操作由調(diào)用模塊來選擇時,該模塊就具有邏輯性內(nèi)聚LogicalCohesion。2、邏輯性內(nèi)聚邏輯性內(nèi)聚的模塊有三個問題:接口傳遞的數(shù)據(jù)和變量復(fù)雜,難以理解;增加了其與調(diào)用模塊之間的耦合度,邏輯性內(nèi)聚模塊必然導(dǎo)致調(diào)用模塊與被調(diào)用模塊之間的控制耦合;完成多個操作的代碼互相交織在一起,導(dǎo)致嚴重的調(diào)試問題和維護問題。2、邏輯性內(nèi)聚具有邏輯性內(nèi)聚的模塊難讀、難懂、難調(diào)試、難重用。設(shè)計和開發(fā)人員應(yīng)避免邏輯性內(nèi)聚。3、時間性內(nèi)聚如果一個模塊執(zhí)行多個操作,這些操作出現(xiàn)在同一個模塊中的理由只是因為它們都要在同一個時間發(fā)生,則該模塊具有時間性內(nèi)聚TemporalCohesion。典型的時間性內(nèi)聚模塊有初始化模塊、終止模塊、異常處理模塊等。3、時間性內(nèi)聚時間性內(nèi)聚模塊也是難讀、難讀,不太可能在另一個產(chǎn)品中被重用。對時間性內(nèi)聚要慎用。4、過程性內(nèi)聚如果一個模塊執(zhí)行一系列與要遵循的步驟順序相關(guān)的操作,也就是說這些操作必須按指定的過程執(zhí)行,則該模塊具有過程性內(nèi)聚ProceduralCohesion。4、過程性內(nèi)聚4、過程性內(nèi)聚過程性內(nèi)聚比時間性內(nèi)聚好些,因為模塊內(nèi)的那些操作是過程關(guān)聯(lián)的。這樣的模塊被其他產(chǎn)品重用的可能性也不太大。5、通信性內(nèi)聚如果一個模塊執(zhí)行一系列與產(chǎn)品要遵循的步驟順序有關(guān)的操作,而且這些操作都在同一個數(shù)據(jù)結(jié)構(gòu)上進行,或者各操作使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的輸出數(shù)據(jù),則該模塊具有通信性內(nèi)聚CommunicationalCohesion。5、通信性內(nèi)聚6、功能性內(nèi)聚如果一個模塊只執(zhí)行一個操作或只達到單一目的,則該模塊具有功能性內(nèi)聚FunctionalCohesion。例如模塊計算圓面積、計算圓周長、計算平均分、打印成績單、生成工資報表、計算利息等。6、功能性內(nèi)聚功能性內(nèi)聚模塊易讀、易懂,能夠隔離錯誤,易維護。功能性內(nèi)聚模塊易擴充和升級。具有功能性內(nèi)聚的模塊可以重用,而且機會非常大,因為其功能單一。一個經(jīng)過設(shè)計和測試,并且文檔齊備的功能性內(nèi)聚模塊對于軟件團隊來說是很有價值的,無論是經(jīng)濟層面還是技術(shù)層面,都應(yīng)該盡可能地重用良好的功能性內(nèi)聚模塊。7、信息性內(nèi)聚如果一個模塊進行多個操作,每個操作都有自己的入口點,每個操作的代碼相對獨立,且所有操作都基于相同的數(shù)據(jù)結(jié)構(gòu)來完成,則該模塊具有信息性內(nèi)聚InformationalCohesion。7、信息性內(nèi)聚7、信息性內(nèi)聚信息性內(nèi)聚模塊可以用來實現(xiàn)一種抽象的數(shù)據(jù)類型,信息性內(nèi)聚模塊可以得到實現(xiàn)抽象數(shù)據(jù)類型的所有優(yōu)點。一個類就是一個具有信息性內(nèi)聚的模塊,就是一個抽象數(shù)據(jù)類型abstractdatatype。小節(jié)低內(nèi)聚模塊普遍存在著執(zhí)行多個操作、難讀、難懂、難調(diào)試、難維護、難重用的問題,而信息性內(nèi)聚和功能性內(nèi)聚這樣的高內(nèi)聚模塊成功地解決了低內(nèi)聚模塊的問題。功能性內(nèi)聚是結(jié)構(gòu)化技術(shù)能做到的最好,信息性內(nèi)聚是面向?qū)ο蠹夹g(shù)能做的最好。但無論是采用結(jié)構(gòu)化技術(shù)還是面向?qū)ο蠹夹g(shù),高內(nèi)聚都是做軟件設(shè)計和實現(xiàn)所要追求的目標。4.3耦合模塊之間的耦合Coupling按照從強到弱分為5個級別:強弱內(nèi)容耦合公共耦合控制耦合印記耦合數(shù)據(jù)耦合1、內(nèi)容耦合如果兩個模塊中的一個直接引用了另一個模塊的內(nèi)容,則它們之間就是內(nèi)容耦合ContentCoupling。模塊由語句和數(shù)據(jù)構(gòu)成,所謂訪問另一個模塊的內(nèi)容,就是指訪問另一個模塊中的語句或數(shù)據(jù)。1、內(nèi)容耦合例子1.在結(jié)構(gòu)化系統(tǒng)中,把指向變量的指針作為參數(shù)傳遞,則調(diào)用模塊將不僅能夠獲得該變量的值,還能直接訪問該指針所指向的存儲單元,也就是說它可以直接重寫該存儲單元的數(shù)值。例子2.一個對象直接訪問另一個對象的屬性。1、內(nèi)容耦合publicclassProduct{ publicfloatunitPrice; ……}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountedPrice){

myProduct.unitPrice=discountedPrice; } …...}1、內(nèi)容耦合內(nèi)容耦合非常不好,因為這會造成很多問題和危險:必然造成兩個模塊的耦合度高,互相的交織和滲透較多,導(dǎo)致這兩個模塊的可讀性、可理解性差、可維護性差。模塊之間的高度耦合。必然導(dǎo)致模塊的獨立性差,可重用性差。模塊中的內(nèi)容可以被直接訪問,能夠篡改或損壞系統(tǒng)中重要的數(shù)據(jù),給計算機犯罪以可乘之機。1、內(nèi)容耦合publicclassProduct{

privatefloatunitPrice; publicvoidsetUnitPrice(floatdiscountPrice){ unitPrice=discountPrice; }}publicclassOrder{ privateProductmyProduct; …... publicvoiddiscount(floatdiscountPrice){

myProduct.setUnitPrice(100.0); } …...}2、公共耦合如果兩個模塊都可以存取相同的全局數(shù)據(jù),則它們之間是公共耦合,也稱為公共耦合CommonCoupling。2、公共耦合如某C語言開發(fā)的系統(tǒng)中模塊A和模塊B都直接訪問、讀寫某些全局變量,則模塊A和B之間具有公共耦合。再如Java或C++等面向?qū)ο笳Z言中利用存取控制定義符public來定義公共數(shù)據(jù),類似于全局變量。2、公共耦合問題和危險:(1)具有公共耦合的模塊的可讀性很差do{ ...... f1(); ...... f2(); ......}while(globalFlag<0||globalFlag>100)2、公共耦合問題和危險:(2)公共耦合的模塊很難維護(3)公共耦合的模塊很難重用(4)存在公共耦合的軟件系統(tǒng)的潛在危險很大盡量避免使用公共耦合慎用finalget*()和set*()3、控制耦合如果兩個模塊中的一個模塊向另一個模塊傳遞控制元素,則它們之間具有控制耦合ControlCoupling,即一個模塊明確地控制另一個模塊的邏輯。3、控制耦合3、控制耦合控制耦合導(dǎo)致被調(diào)用模塊模塊的邏輯性內(nèi)聚。反之,邏輯性內(nèi)聚的模塊必然導(dǎo)致與其調(diào)用模塊之間的控制耦合。應(yīng)該盡量避免控制耦合。4、印記耦合一些編程語言支持模塊之間傳遞復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如數(shù)據(jù)集合、記錄集等,如果被調(diào)用模塊只利用到傳遞的數(shù)據(jù)結(jié)構(gòu)中的一部分數(shù)據(jù),則這兩個模塊之間具有印記耦合StampCoupling。4、印記耦合printStudentNameList(ResultSetrsStudent){ ArrayListalStudent=newArrayList(); while(rsStudent.next()){ StringStudentName= rsStudent.getString("StudentName"); alStudent.add(StudentName); }}4、印記耦合傳遞的數(shù)據(jù)多于所需要,這將占用多于所必要的資源;接口復(fù)雜,難讀、難懂、難維護;如果預(yù)重用該模塊,那么就得向該模塊提供同樣的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),這給重用造成很大的麻煩;多余的數(shù)據(jù),將增加危險性;對于系統(tǒng)運行環(huán)境資源有限的情況,更要注意避免出現(xiàn)空間資源被不必要地占用的情況。設(shè)計和開發(fā)軟件時,應(yīng)該盡量避免印記耦合。5、數(shù)據(jù)耦合如果兩個模塊之間傳遞的參數(shù),無論是簡單數(shù)據(jù)類型還是復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在被調(diào)用模塊中都被全部利用,則這兩個模塊之間具有數(shù)據(jù)耦合DataCoupling。數(shù)據(jù)耦合是低耦合,是最理想的情況,它克服了前面四種耦合的不足,既不會造成模塊之間過多的依賴性,也不會造成接口的復(fù)雜性,也不會造成過多數(shù)據(jù)的傳遞,這種模塊易讀、易懂、易維護、易重用。小節(jié)理想的低耦合,如數(shù)據(jù)耦合,模塊之間的接口簡單,所傳遞的參數(shù)數(shù)據(jù)在調(diào)研模塊中全部被使用,模塊有較強的獨立性,而且易讀、易懂、易維護、易重用。低耦合能夠促進模塊的高內(nèi)聚,反之,高耦合則增加模塊之間的依賴程度,導(dǎo)致模塊的低內(nèi)聚。因此低耦合應(yīng)該是設(shè)計與實現(xiàn)軟件系統(tǒng)時所追求的。小節(jié)內(nèi)聚與耦合是不能割離的兩個概念,它們息息相關(guān),相輔相成。耦合必然對內(nèi)聚產(chǎn)生影響,同樣,內(nèi)聚也對耦合產(chǎn)生必然的影響:高內(nèi)聚必然使低依賴性、低耦合成為可能,而低內(nèi)聚必然導(dǎo)致高依賴性、高耦合。軟件系統(tǒng)的設(shè)計原則應(yīng)該是高內(nèi)聚且低耦合。小節(jié)

跟其他行業(yè)一樣,做軟件也要有工匠精神,要精益求精。只有這樣,才能保證我們做出來的軟件具有良好的質(zhì)量,經(jīng)得起考驗,才能夠為廣大用戶以及全社會提供優(yōu)質(zhì)可靠的軟件。4.4數(shù)據(jù)封裝圖書館管理信息系統(tǒng),考慮其中的借書、還書、續(xù)借、和預(yù)約業(yè)務(wù)功能。4.4數(shù)據(jù)封裝3.4數(shù)據(jù)封裝m_Encapsulation成為一個抽象數(shù)據(jù)類型

abstractdatatype4.4數(shù)據(jù)封裝信息性內(nèi)聚使數(shù)據(jù)封裝成為可能。利用面向?qū)ο笳Z言中類的機制,就可以實現(xiàn)信息性內(nèi)聚模塊。4.4數(shù)據(jù)封裝使用數(shù)據(jù)封裝設(shè)計軟件產(chǎn)品的優(yōu)點體現(xiàn)在2個方面:1、數(shù)據(jù)封裝與開發(fā)數(shù)據(jù)封裝

抽象數(shù)據(jù)類型先高層次,然后低層次設(shè)計數(shù)據(jù)抽象、過程抽象

逐步求精2、數(shù)據(jù)封裝與維護改變將僅限于該方法的內(nèi)部,使將來修改產(chǎn)品的影響最小化,數(shù)據(jù)封裝對程序易維護性、易修改性的提高非常有益處。publicclassBook{StringbookNo;//圖書編號StringbookStatus;//圖書狀態(tài)......voidborrow_book(){//借該圖書對象

bookStatus="已借出";

......//生成一條借書記錄

......//刪除一條預(yù)約記錄,如果有}voidreturn_book(){//還該圖書對象

bookStatus="在架可借";......//生成一條還書記錄}//續(xù)借該圖書對象voidrenew_book(){bookStatus="在架可借";......//生成一條續(xù)借記錄

}//續(xù)借該圖書對象voidreserve_book(){

bookStatus="已預(yù)約";......//生成一條預(yù)約記錄

}}classOperation{publicvoidoper(){ ...... BookaBook;

...... aBook=......;//獲取將被操作的圖書對象

aBook.borrow_book();//借該圖書對象

...... aBook=......;//獲取將被操作的圖書對象

aBook.return_book();//還該圖書對象

...... aBook=......;//獲取將被操作的圖書對象

aBook.renew_book();//續(xù)借該圖書對象

...... aBook=......;//獲取將被操作的圖書對象

aBook.reserve_book();//預(yù)約該圖書對象

......

}}4.4數(shù)據(jù)封裝數(shù)據(jù)封裝對程序易維護性、易修改性的提高非常有益處。4.5信息隱藏publicclassBook{StringbookNo;//圖書編號StringbookStatus;//圖書狀態(tài)......voidborrow_book(){//借該圖書對象

bookStatus="已借出";

......//生成一條借書記錄

......//刪除一條預(yù)約記錄,如果有}voidreturn_book(){//還該圖書對象

bookStatus="在架可借";......//生成一條還書記錄}//續(xù)借該圖書對象voidrenew_book(){bookStatus="在架可借";......//生成一條續(xù)借記錄

}//續(xù)借該圖書對象voidreserve_book(){

bookStatus="已預(yù)約";......//生成一條預(yù)約記錄

}}classOperation{publicvoidoper(){......BookaBook;

......aBook=......;//獲取將被操作的圖書對象

aBook.bookStatus=“已借出”;//借該圖書對象

......aBook=......;//獲取將被操作的圖書對象

aBook.bookStatus=“在架可借”;//還該圖書對象

......aBook=......;//獲取將被操作的圖書對象

aBook.bookStatus=“已借出”;//續(xù)借該圖書對象

......aBook=......;//獲取將被操作的圖書對象

aBook.bookStatus=“已預(yù)約”;//預(yù)約該圖書對象

......}}

內(nèi)容耦合可能的應(yīng)用代碼面向?qū)ο笳Z言提供了實現(xiàn)信息隱藏的機制,類內(nèi)部的屬性以及方法的訪問控制可以有4種定義,其私有性從低到高為:publicprotecteddefaultprivate4.5信息隱藏publicclassBook{

privateStringbookNo;//圖書編號

privateStringbookName;//書名

privateStringauthor;//作者

privateStringpress;//出版社

privateStringpressYearMonth;//出版時間

privateStringISBN;//國際標準圖書編號

privatefloatunitPrice;//價格

privateStringbookStatus;//圖書狀態(tài)

......publicvoidborrow_book(){//借該圖書對象

bookStatus="已借出"; ......//生成一條借書記錄

......//刪除一條預(yù)約記錄,如果有}publicvoidreturn_book(){//還該圖書對象

bookStatus="在架可借"; ......//生成一條還書記錄}……publicStringget_bookStatus(){//獲取該圖書對象的狀態(tài)

returnbookStatus;}}classOperation{publicvoidoper(){......BookaBook;

......aBook=......;//獲取將被操作的圖書對象

aBook.borrow_book();//借該圖書對象

......aBook=......;//獲取將被操作的圖書對象

aBook.return_book();//還該圖書對象

......aBook=......;//獲取將被操作的圖書對象

aBook.renew_book();//續(xù)借該圖書對象

......aBook=......;//獲取將被操作的圖書對象

aBook.reserve_book();//預(yù)約該圖書對象

......}}小節(jié)數(shù)據(jù)封裝和信息隱藏能夠提高程序的可復(fù)用性和可維護性徹底消除了傳統(tǒng)結(jié)構(gòu)方法中數(shù)據(jù)與操作分離所帶來的種種問題,非常完美地避免了內(nèi)容耦合的問題,最大限度地降低了模塊之間的耦合度。對模塊進行修改所造成的影響將僅限于該模塊內(nèi)部,而對其接口沒有影響,也即對其他與之有交互的模塊不造成任何影響。數(shù)據(jù)封裝和信息隱藏還可以把模塊中的私有數(shù)據(jù)和公共數(shù)據(jù)分離開,保護了私有數(shù)據(jù),減少了可能的模塊間干擾,達到降低程序復(fù)雜性、提高可控性的目的。小節(jié)設(shè)計良好的數(shù)據(jù)封裝和信息隱藏使程序更安全,更易讀、易懂、易修改、和易維護,且增強程序的安全性。數(shù)據(jù)封裝和信息隱藏是面向?qū)ο髾C制所特有的優(yōu)勢。4.6類之間的關(guān)系繼承聚合關(guān)聯(lián)4.6.1繼承關(guān)系繼承關(guān)系Inheritance父類parent子類child超類superclass子類sub-class基類baseclass派生類derivedclass4.6.1繼承關(guān)系4.6.1繼承關(guān)系4.6.1繼承關(guān)系4.6.1繼承關(guān)系classHuman{StringID;Stringname;voideat(){……}voidsleep(){……}}classStudentextendsHuman{StringstudentNo;Stringschool;voidtake_course(){……}voidtake_exam(){……}}脆弱的基類問題4.6.1繼承關(guān)系4.6.2聚合關(guān)系聚合關(guān)系A(chǔ)ggregation整體類部分類4.6.2聚合關(guān)系classPersonalComputer{ CPUcpu; Monitormonitor; Keyboardkeyboard; Mousemouse;}4.6.2聚合關(guān)系組合關(guān)系Composition階元關(guān)系UML中階元關(guān)系的標識符標識符含義0..10或11

只有10..*0到多1..*1到多n

只有n(n>1)0..n0到n(n>1)1..n1到n(n>1)n..mn到m(n>1andm>1)n..*n到多(n>1)4.6.3關(guān)聯(lián)關(guān)系4.6.3關(guān)聯(lián)關(guān)系4.6.3關(guān)聯(lián)關(guān)系classDriver{methoddrive(Carcar){ …… car.run(); ……}}階元關(guān)系4.7多態(tài)與動態(tài)綁定在結(jié)構(gòu)化編程語言實現(xiàn)的軟件系統(tǒng)中,函數(shù)名不可以重名,即在一個系統(tǒng)中絕不允許任何兩個函數(shù)擁有相同的函數(shù)名。例如C語言的標準函數(shù)庫中,各種數(shù)值型數(shù)據(jù)分別有相應(yīng)的取絕對值函數(shù),abs()是取int數(shù)據(jù)的絕對值,labs()是取長整型數(shù)據(jù)的絕對值,fabs()是取浮點型數(shù)據(jù)的絕對值等等4.7多態(tài)與動態(tài)綁定結(jié)構(gòu)化編程語言實現(xiàn)幾種圖形的面積switch(figure_type){ casecircle: area=area_circle(); break; caserectangle: area=area_rectangle(); break; casetriangle: area=area_triangle(); break; caseellipse: area=area_ellipse(); break; case…: ……}4.7多態(tài)與動態(tài)綁定在面向?qū)ο笙到y(tǒng),一個方法可以有多個實現(xiàn)版本,這稱為多態(tài)性Polymorphism例如,取各種數(shù)據(jù)類型絕對值的方法都可以擁有同一個方法名abs(),計算各種圖形面積的方法都可以擁有同一個方法名area(),這使得設(shè)計與實現(xiàn)這些方法很方便,也使得調(diào)用這些方法更方便。4.7多態(tài)與動態(tài)綁定利用面向?qū)ο蠹夹g(shù),可以有有3種實現(xiàn)多態(tài)的方法覆蓋Overriding重載Overloading接口Interface1、覆蓋覆蓋abstractclassFigure{......abstractdoublearea();}classRectangleextendsFigure{doublelength,width;doublearea(){......}}classTriangleextendsFigure{doublea,b,c;doublearea(){......}}classEllipseextendsFigure{doublea,b;doublearea(){......}}classCircleextendsFigure{doubleradius;doublearea(){......}}classTest{......method_1(){FigureaFigure;......doublearea=aFigure.area();......}}動態(tài)綁定重載publicstaticclassMyAbs{……staticdoubleabs(doubled){……}staticfloatabs(floatf){……}staticintabs(inti){……}staticlongabs(longlng){……}……}publicclassTest{publicstaticvoidmain(Stringargs[]){inta=-8;doubled=-100;floatf=-90;

System.out.println(MyAbs.abs(a));System.out.println(MyAbs.abs(d));System.out.println(MyAbs.abs(f));}}接口classRectangleimplementsFigure{doublelength,width;doublearea(){......}doubleperimeter(){......}}classTriangleimplementsFigure{doublea,b,c;doublearea(){......}doubleperimeter(){......}}classEllipseimplementsFigure{doublea,b;doublearea(){......}doubleperimeter(){......}}classCircleimplementsFigure{doubleradius;doublearea(){......}doubleperimeter(){......}}interfaceFigure{doublearea();doubleperimeter();……}classTest{......method_1(){......FigureaFigure;......doublearea=aFigure.area();doubleperimeter=aFigure.perimeter();......}}4.7多態(tài)與動態(tài)綁定面向?qū)ο蠓缎椭械母采w、重載和接口機制,也都可實現(xiàn)多態(tài),而多態(tài)使得動態(tài)綁定成為可能。多態(tài)和動態(tài)綁定使程序員寫代碼更容易、程序更靈活。4.7多態(tài)與動態(tài)綁定但多態(tài)和動態(tài)綁定在帶來這些便利的同時,也會造成一些麻煩:通常不太可能在編譯階段確定在運行時會調(diào)用哪個特定的多態(tài)方法;相應(yīng)地,也很難調(diào)試,很難確定程序失敗的原因。多態(tài)和動態(tài)綁定對可維護性具有消極影響,理解相應(yīng)代碼的工作非常費力。在代碼的某個特定位置,程序員必須考慮動態(tài)調(diào)用

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論