面向對象的核心特性_第1頁
面向對象的核心特性_第2頁
面向對象的核心特性_第3頁
面向對象的核心特性_第4頁
面向對象的核心特性_第5頁
已閱讀5頁,還剩69頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

面向對象的核心特性程序設計實用教程(第2版)》第1頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.1面向對象程序設計概述第2頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.1.1面向對象術語的解釋1.對象什么是對象:現實世界中解決問題的實物(包括有行為和屬性)例如:咖啡貓黃色的(屬性)愛睡覺(行為)2.類什么是類:對象的模板模板內容=類的特性(屬性)+行為(方法)

類的成員例如:貓類(有顏色,貓齡等屬性;有睡覺,吃食等行為。第3頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.1面向對象程序設計概述類與對象關系概念:類(class)是既包括數據又包括作用于數據的一組操作的封裝體。對象(object)是類的實例(instance)。類對象抽象實例化方法數據或變量第4頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.繼承什么叫繼承?繼承是接收來自父輩的財產在面向對象中繼承的外延是什么?擁有父輩所擁有的東西

子類的繼承→子類擁有父輩的成員例如:汽車繼承車

//所有種類的汽車都需要實現汽車的基本功能類的繼承實現了代碼的重用。第5頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》4.接口接口像一個類定義的模板,它提供了與其他事物之間相互通信的規則條目,但并非具體實現。例如:多個程序員開發同一個應用程序的不同類,約定不同類之間使用同一組方法進行通信。則創建一個接口用于定義這些方法。第6頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》5.封裝數據隱藏。成員的詳細信息對于對象外的代碼是私有的和不可見的。數據方法外界訪問第7頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.1.2面向對象程序設計方法的優點1.可重用性2.可擴展性3.易于管理和維護

第8頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.2面向對象與UML建模建模是一項經過檢驗并被廣為接受的工程技術。建立房屋和大廈的建筑模型,能幫助用戶得到實際建筑物的印象。要生產合格的軟件就要有一套關于體系的結構、過程和工具的規范。建模的目的:1.有助于按照實際情況或按照所需的樣式使系統可視化2.能夠規約系統的結構或行為3.給出指導系統構造的模板4.使做出的決策文檔化第9頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.2.2UML建模語言什么是UML?——UnifiedModelingLanguage(統一建模語言)UML是一種用來創建程序模型的圖形語言(即帶有語意的一種圖形記號)。可以用來說明代碼中對象之間的關系。第10頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.2.3UML進行面向對象的系統分析設計UML進行面向對象的系統分析設計,其過程通常由以下3個部份組成。識別系統的用例和角色進行系統分析,并抽取類系統設計,并設計類及其行為第11頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.3Java語言與面向對象特性Java中的類:信息以類為單位單獨封裝Java中的封裝:無需關心調用對象的內部細節Java中的繼承:只準繼承一個類,但可以“繼承”多個接口。Java中的多態Java中的垃圾回收機制:自動回收垃圾內存第12頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》類的封裝性、繼承性和多態性類的封裝性類的繼承性類的多態性數據操作成員變量成員方法類類的封裝性直接訪問——訪問權限類的繼承性類的多態性外部直接訪問第13頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》

類的繼承性繼承的概念:子類擁有父類的成員。特性:1.子類自動擁有父類全部成員(成員變量+方法)

人類(父)學生類(子)性別、姓名、身高、國籍……吃飯、睡覺、工作…….性別、姓名、身高、國籍……吃飯、睡覺、工作…….繼承第14頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》2.子類可以更改父類繼承的成員;如學生類中,“工作”方法會有自己的限制。3.子類可以增加自己的成員;如學生類中,添加“學習”、“考試”等方法。4.子類不能刪除父類任何成員。第15頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》Java的單繼承C++java父類1父類n子類父類子類接口多繼承:一個類有多個直接父類。可以擁有多個父類的屬性或方法。單繼承:一個類只有一個直接父類,若需要繼承其他方法,則通過接口實現。注意:java中只支持單繼承。即子類只有一個直接父類。多繼承特點通過接口實現。第16頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》類的多態性多態:允許擁有相同的形式,但在不同情況下擁有不同機能的特性。如“+”多態性——方法執行的多樣性重載:方法名同,參數列表不同覆蓋:子類重寫了父類中同名的方法。第17頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.4類的定義和對象的創建程序運行可理解為做三件事:建立對象使用對象:對象之間傳遞消息,程序處理消息作出響應運行完畢收回對象所占空間。對象的生命周期:創建——運行——消亡獲得內存空間進行各種操作使用完釋放內存第18頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.4.1定義類:類聲明+類主體類定義的格式:類聲明{

成員變量的聲明;

成員方法的聲明及實現;}類主體類注意與c++有何區別!!變量與方法的聲明與定義均不允許放在類主體外面!!!class類名

{代碼;

}數據方法第19頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》聲明類:權限特性名字語法:[修飾符]class

類[extends父類]

[implements接口列表]類的修飾符用來說明類的特殊性質。分為三種:訪問控制符:public(公共類)、friendly(缺省類)protected(保護類)、private(私有類)-多見于內嵌類)抽象類說明符:abstract最終類說明符:final關鍵字類名表示繼承哪個父類表示繼承哪些接口第20頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》例:聲明一個公共類Data1:

publicclassData1

定義一個公共類人類:定義一個類學生類:publicclassMan{}classStudent{}第21頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.4.2類之間的關系USES-A關系HAS-A關系IS-A關系第22頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》1.USES-A關系

類A的方法操縱了類B(對象)的成員,則稱之為類A”USES-A”(用到了)類B.例3-1轎車類(Car)其他類(Sample3_1)調用USES-A關系PublicclassSample3_1{…c.startIsEnough();…}第23頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》2.HAS-A關系HAS-A關系是一種擁有關系,若類A中有B類型的成員引用變量,則類A“HAS-A”

(擁有)類B.例3-2c.getTyreInfo().getMaterial();轎車類(Car)輪胎類(Tyre)擁有HAS-A關系第24頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.IS-A關系在面向對象中“IS-A”的概念是基于繼承的,旨在表達一個類是另一個類的子類。也就是說,若類A是類B子類的一種,則可以說類A“IS-A”(是一種)類B。例如:“蘋果”是“水果”的種類classFruit{…public

voidcanEat(){…}

}classApple{

…}Applea=newApple()a.canEat();水果蘋果繼承IS-A關系第25頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.4.3構造函數

要使用對象,首先必須構造它們,并指定它們的初始狀態,然后將方法應用于對象。在Java程序設計語言中,使用構造函數來構造新的實例,作用是構造并初始化對象。

第26頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》構造函數的創建創建無參構造函數例3-3創建帶參構造函數例3-4第27頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》構造函數的特點有:(1)構造函數的方法名與類名相同。(2)構造函數沒有返回類型,也無需聲明類型。(3)構造函數的主要作用是完成對類對象的初始化工作,并傳遞參數。(4)構造函數不能由編程人員顯式地直接調用。由系統調用。(5)一個類可以定義多個構造方法,缺省構造函數為無參的默認構造函數,不執行任何代碼。(6)構造方法可以重載,以參數的個數、類型或排列順序區分。第28頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.3.4類成員聲明成員變量[修飾符][static][final][transient]數據類型

變量名訪問控制符:public(公共類)friendly(缺省類)protected(保護類)

private(私有類)類(靜態)成員變量常量臨時變量類聲明{成員變量的聲明;

成員方法的聲明及實現;}第29頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》例3-5:定義Student類,聲明3個成員變量分別表示姓名、年齡、班級:publicclassStudent //類聲明{publicStringstuName;publicintstuAge;publicStringstuClass;}成員變量的引用//聲明成員變量第30頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》2.成員變量的初始值創建對象后,如果對象有成員變量,則系統會自動為其分配一個初始值。例3-6例3-7注意:對象引用型成員變量,其初始值為“null”,表示此引用沒有指向任何對象。第31頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.4.5對象的創建聲明對象類名對象例:Students;對象實例化對象=new類的構造方法([參數列表])s=newStudent();引用對象的成員變量及方法:用“.”運算符對象.成員變量對象.成員方法([參數列表])=王強;

//引用對象的成員變量Student第32頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.5方法方法的定義方法的基本組成:方法的聲明+方法體[修飾符][static]返回值類型

方法([參數列表])[throws異常類]{

語句序列;[return[返回值]];}方法聲明:方法體:第33頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》

例:intsub(inta,intb){returna-b;}intsub(inta,intb){intc;c=a-b;returnc;}第34頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》說明:1.參數序列指定要傳遞給方法什么樣的信息(1)可以是java中的任何類型,包括基本數據參數類型、對象引用類型。(2)每個參數必須包括類型與變量標識符,若有多個參數,則用逗號將其分隔。如(inta,intb)第35頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》2.方法體方法體是該方法具體業務代碼的實現。return語句負責方法的返回。3.返回值類型返回值類型指定了該方法返回結果的類型。可以是基本數據類型或對象引用類型,沒有返回值也要使用void關鍵字。第36頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》返回值規則:可以在具有對象引用返回類型的方法中返回null,但基本數據類型作為返回類型則不可以返回null。對象給也是完全合法的返回值類型,如數組。在具有基本數據返回類型的方法內,可以返回任何值,只要其能夠自動轉換返回值類型。如返回值為double,返回整數4是可以的。但返回值為int時,返回一個浮點數12.43則報錯。一定不能在具有void返回類型的方法中返回任何內容。在具有對象引用返回類型的方法內,可以返回任何類型的對象引用,只要返回的引用與返回類型相同或可自動轉換為返回類型即可。第37頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.5.2方法重載概念:同一個類中多個方法有相同的名字,不同的參數列表,這種情況稱為方法重載。如:publicdoublechangeSize(intsize,Stringname,floatpattern)publicvoidchangeSize(intsize,Stringname)privateintchangeSize(intsize,floatpattern)voidchangeSize(floatpattern,Stringname)?方法返回類型不同,參數相同,算不算重載?注意:返回類型不同并不足以構成方法重載。當重載方法被調用時,編譯器根據參數的類型和數量來確定實際調用哪個重載方法的版本。例3-8第38頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》

方法調用進行匹配的時候,首先選擇直接匹配的方法,如果沒有,則將參數進行提升轉換后再匹配方法,總是匹配最接近的方法。基本類型則按照基本數據類型間的自動轉換關系;引用類型則尋找最能兼容傳遞的參數。例3-9多匹配選擇示例例3-10第39頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.5.3遞歸

遞歸方法就是自調用方法,在方法體內直接或間接地調用自己。有兩種方式:1.直接遞歸2.間接遞歸第40頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》直接遞歸:即在方法體內調用方法本身。例:求斐波那數列第n項斐波那數列:f(0)=f(1)=1f(n)=f(n-1)+f(n-2)(n>1)例3-11第41頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》間接遞歸:函數中調用其他函數,其他函數又調用本函數。例3-12第42頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.6靜態成員靜態修飾符——static,修飾類中的靜態屬性和方法(1)靜態屬性——被static修飾的屬性稱為靜態屬性(類屬性)。特點:它們是類的屬性,而不屬于任何一個類的具體對象。即在一個類中只能有一個這類字段,并且由類調用,無需引用任何對象。

(2)靜態方法——被static修飾的方法成為靜態方法(類方法)。特點:不與任何對象相關聯。能夠在它的類的任何對象訪問前輩訪問,即使沒有對象也能調用該方法。靜態方法只能調用靜態屬性。第43頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》例:publicclassStaticDemo{publicstaticStrings=“我是靜態變量”

publicstaticvoidprintInfo(){System.out.println(“我是靜態方法”)};

}問?在其他類中如何調用靜態變量和方法?例3-13第44頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.6.2靜態變量與常量

在java中,表示常量的方法是通過靜態成員變量的方式來實現的:如:聲明3個常量X,Y,Z:

publicstaticfinalintX=10;public

staticfinalintY=20;

publicstaticfinalintZ=40;“publicstaticfinal”相當于表示常量的修飾符。公共的,即所有對象都能夠訪問。靜態的,即無需創建任何對象直接可通過類調用。最終的,即定義的值為永久的,不能改變。第45頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》靜態屬性的初始化靜態成員變量的初始化要求在靜態語句塊結束之前必須完成。一方面可以在聲明的同時進行初始化,另一方面可以在靜態語句塊中進行初始化。例3-4第46頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.6.3靜態成員的訪問<類名>.<靜態成員名>例3-151.靜態方法訪問非靜態成員靜態成員生命周期比非靜態要長,當訪問靜態成員時,非靜態成員不一定存在,因此靜態方法不能訪問非靜態屬性。同樣道理,靜態方法不能使用this預定對象關鍵字。第47頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》例3-16靜態方法訪問非靜態成員示例1例3-17靜態方法訪問非靜態成員示例2第48頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》2.非靜態方法訪問靜態成員非靜態方法產生時,靜態成員已經存在。因此靜態方法在任何時候都可以訪問靜態成員。例3-18第49頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.6.4main方法Main方法——特殊的靜態方法,作為程序的入口,由于不對任何對象施加操作(實為執行時還無任何對象產生),因此聲明為static;該方法由虛擬機調用,所以必須為public;而方法不需要返回值,因此聲明為void。聲明:publicstaticvoidmain(Stringargs[])例3-19Main方法規定有一個類型為String的入參,取名為args。用于接收命令行輸入的參數。第50頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.6.5Factory方法Java的靜態方法有一種常見的用途,就是使用Factory方法產生不同風格的對象,例如NumberFormat類使用Factory方法產生不同風格的格式對象。FactoryMethod是最常用的模式了,Factory方法在Java程序系統中可以說是隨處可見。Factory方法就相當于創建實例對象的new,我們經常要根據類Class生成實例對象,如Aa=newA(),FactoryMethod也是用來創建實例對象的,所以以后new時可以考慮實用factory模式(工廠模式),雖然這樣做,可能多做一些工作,但會給系統帶來更大的可擴展性和盡量少的修改量。第51頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》Factory作用:完成復雜情況下的初始化工作。盡量將長的代碼分派“切割”成每段,將每段再“封裝”起來。這樣就需要將創建實例的工作與使用實例的工作分開,也就是說,讓創建實例所需要的大量初始化工作從構造函數中分離出去。這時我們就需要Factory工廠模式來生成對象了。使用工廠方法要注意幾個角色,首先要定義產品接口,如Fruit,產品接口下有接口的實現類,如Apple,其次要有一個factory類,用來生成產品。例Factory方法實例:例3-20第52頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.7包概念:包是一種將相關類,接口或其他包組織起來的集合體。目的:用來管理類名空間,將包含類代碼的文件組織起來,易于查找和使用,避免同名類發生沖突。內容:類,接口及其他包。說明:包是一種松散的類集合,一般在不要求處于同一個包中的類有明確的相互關系,但是由于同一包的類在默認情況下可以互相訪問,因此常把需要在一起工作的類放在一個包里。包也稱類庫第53頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.7.1包的定義(1)缺省情況下為無名包(2)有名包的創建:使用package語句 如:packagepname;3-13

或packagedir1.dir2.pname;

包就是一個文件夾,里面存放該程序所生成的所有.class文件,包中的“.”號表示子文件夾。默認包中類之間可以相互訪問public,protected或默認訪問權限的數據成員和成員函數。默認包中的類不能被其他包中的類引用。第54頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》package語句必須放在源文件最前面,之前不可以有其他任何語句;每個源文件最多只能有一條package語句。例3-21

將類Sample3_21放至包chapter03的sample3_21中。第55頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》JDK環境下包中類的編譯和運行編譯時:javac運行:d:\java>java –d

CLASSPATH路徑

Myclass.javaCLASSPATH變量指明包存放的位置。例如: javac–dd:\javaSample3_21.java結果:直接在d:\java下創建在myclass.java指明的包目錄,并把Myclass.class拷到該目錄下。包名.myclass例如: javachapter03.sample3_21.Sample3_21第56頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.7.2類的導入(1)加載引用(類短名)——使用import語句 格式:importmypack1.mypack2.Myclass

或importmypack1.mypack2.*注意:1.Import語句必須先于所有類聲明。2.使用(*)只能表示本層次的所有類,而不包括子層次下的類。如importjava.awt.*;importjava.awt.event.*;//上面的語句未包括event 子包中的類3.用(*)一般適用于要用到同個包當中的多個類的情況。第57頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》(2)類長名:直接使用包名、類名前綴(用在語句中) 格式:mypack1.mypack2.Myclass例如:java.util.Dated1=new

java.util.Date()

第58頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》(3)直接引用:在同一文件夾下(私有類除外)

將無名包中的引用類與被引用類存貯在同一物理空間例如:假如Car和Sample3_3這兩個類在向一個目錄下,你就可以在Sample3_3類中創建一個Car實例,無需導入Car這個類。第59頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》注意:java中java.lang包中的類系統是自動引入的,即使不用import語句,每個源文件中系統編譯時都會自動引入java.lang.*中的類。第60頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》兩種特殊情況需要注意:1.兩個包中有同名類,但只用到其中一個及其他不同名的類,則在import語句中明確給出需要引用的類名。如例3-222.兩個包中有同名類,且都要使用,則直接在語句中指明調用哪個類。如例3-23第61頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.7.3靜態導入從JavaSE5.0開始,導入語句不但可以導入類,還具有導入靜態方法和靜態成員變量的功能,不過需要在關鍵字“import”和包名之間添加關鍵字“static”,語法如下。importstatic<包名>.<類名>.*;importstatic<包名>.<類名>.<具體方法/成員變量名>;“*”還是代表通配符,不過這里表示的是指定類下面所有靜態的方法或成員變量。如果要明確指明要使用的方法或成員變量,用第2行語法。碰到不同類下同名靜態方法或成員變量時,解決沖突的方法類似上一小節,這里不再贅述。第62頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.8成員的訪問控制成員的訪問是指以下兩種不同的操作:一個類中的方法代碼是否能夠調用(調用)另一個類中的成員。一個類是否能夠繼承其父類的成員。第63頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》

所有類A

所有子類C同包中類B

包中子類E本類Dpublic(公共)類、變量、方法Aprotected(保護)變量、方法BUCdefault(默認)類、變量、方法Bprivate(私有)變量、方法Dprivateprotected(私有保護)變量、方法C訪問控制符:第64頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》公共類型:public例3-26私有類型:private例3-27默認類型:default例3-28保護類型:protected第65頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》封裝是一個面向對象的術語,其含義很簡單,就是把東西包裝起來。換言之,成員變量和方法的定義都包裝于類定義之中,類定義可以看成是將構成類的成員變量和方法封裝起來。通過限定類成員的可見性,可以使類成員中的某些屬性和方法能夠不被程序的其他部分訪問,它們被隱藏了起來,只能在定義的類中使用,這就是面向對象中實現封裝的方式。3.9封裝成員變量成員方法類直接訪問外部直接訪問第66頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》Java中封裝需要遵循的規則:用訪問限制修飾符保護成員變量,通常是private。建立公有的public訪問方法,強制調用代碼通過這些方法訪問成員變量,而不是直接調用。例3-29第67頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》分析:width和height成員變量被封裝,必須通過setProerty方法才能訪問,由于在setProerty方法中設置了檢驗值正確性的規則,所以不可能設置錯誤的width和height值,增加代碼的健壯性。封裝后不但可以提高健壯性,還可以提高靈活性,例如,若因需要將height或width的值改為String類型,如果沒有封裝,代碼一旦修改,則所有調用該值的代碼都需要更改;而封裝后只需要修改設置成員值的方法,將變化限制在一個較小的范圍內,使外界無需做任何改變仍能繼續調用。例3-30第68頁,課件共74頁,創作于2023年2月程序設計實用教程(第2版)》3.10利用系統已有的類通過前面幾節的介紹,讀者已經對類的定義及對象的創建與使用有了一定的了解。本節將介紹Java類庫中提供的幾個常用的處理日期時間的類。通過對這幾個類的介紹,使讀者了解利用系統已有的類的思想。第69頁,課件共74頁,創作于202

溫馨提示

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

評論

0/150

提交評論