第2章類和對象的特性_第1頁
第2章類和對象的特性_第2頁
第2章類和對象的特性_第3頁
第2章類和對象的特性_第4頁
第2章類和對象的特性_第5頁
已閱讀5頁,還剩67頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第1章 概述 第第2章類和對象的特性章類和對象的特性2.1 面向對象程序設計方法概述 2.1.1 什么是面向對象的程序設計 2.1.2 面向對象程序設計的特點 2.1.3 類和對象的作用 2.1.4 面向對象的軟件開發2.2 類的聲明和對象的定義 2.2.1 類和對象的關系 2.2.2 類定義 2.2.3 定義對象的方法 2.2.4 類和結構體的異同第1章 概述 第第2章類和對象的特性章類和對象的特性2.3 類的成員函數 2.3.1 成員函數的性質 2.3.2 在類外定義成員函數 2.3.3 內置成員函數 2.3.4 成員函數的存儲方式2.4 對象成員的引用 2.4.1 通過對象名和成員運算符

2、訪問對象中的成員 2.4.2 通過指向對象的指針訪問對象中的成員 2.4.3 通過對象的引用來訪問對象中的成員2.5 類和對象的簡單應用舉例2.6 類的封裝性和信息隱蔽 2.6.1 公用接口與私有實現的分離 2.6.2 類聲明和成員函數定義的分離 2.6.3 面向對象程序設計中的幾個名詞第1章 概述 2.1 面向對象程序設計方法概述面向對象程序設計方法概述對于規模比較小的程序,可以直接寫出一個面向過程的程序,詳細地描述每一瞬時的數據結構及對其的操作過程。但是當程序規模較大時,就顯得力不從心了。C+就是為了解決編寫大程序過程中的困難而產生的。第1章 概述 2.1.1 什么是面向對象的程序設計什么

3、是面向對象的程序設計1. 對象 客觀世界中任何一個事物都可以看成一個對象。對象的靜態特征稱為屬性,對象的動態特征稱為行為。任何一個對象都應當具有屬性和行為這兩個要素。對象應能根據外界給的消息進行相應的操作。一個對象一般是由一組屬性和一組行為構成的。在一個系統中的多個對象之間通過一定的渠道相互聯系。要使某一個對象實現某一種行為,應當向它傳送相應的消息。第1章 概述 2.1.1 什么是面向對象的程序設計什么是面向對象的程序設計在C+中,每個對象都是由數據和函數這兩部分組成的。數據體現了前面提到的“屬性”,函數是用來對數據進行操作的,以便實現某些功能。在程序中如果調用某一個對象中的函數,就相當于向該

4、對象傳送一個消息,要求該對象實現某一行為。第1章 概述 2.1.1 什么是面向對象的程序設計什么是面向對象的程序設計2. 封裝與信息隱蔽可以對一個對象進行封裝處理,把它的一部分屬性和功能對外界屏蔽,也就是說從外界是看不到的,甚至是不可見的。在設計一個對象時,要考慮如何進行封裝,把不必要外界知道的部分“隱蔽”起來。也就是說,把對象的內部實現和外部行為分隔開來。封裝指兩方面的含義:一是將有關的數據和操作代碼封裝在一個對象中,形成一個基本單位,各個對象之間相對獨立,互不干擾。二是將對象中某些部分對外隱蔽,只留下少數接口,以便與外界聯系,接收外界的消息。這種對外界隱蔽的做法稱為消息隱蔽。第1章 概述

5、2.1.1 什么是面向對象的程序設計什么是面向對象的程序設計3. 抽象抽象的作用是表示同一類事物的本質。C和C+中的數據類型就是對一批具體的數的抽象。類是對象的抽象,而對象則是類的特例,或者說是實例。第1章 概述 2.1.1 什么是面向對象的程序設計什么是面向對象的程序設計4. 繼承與重用C+提供了繼承機制,采用繼承的方法可以很方便地利用一個已有的類建立一個新的類,這就可以重用已有軟件中的一部分甚至大部分,節省了編程工作量。這就是“軟件重用”的思想,不僅可以利用自己過去所建立的類,而且可以利用別人使用的類或存放在類庫中的類,對這些類作適當加工即可使用,大大縮短了軟件開發周期。第1章 概述 2.

6、1.1 什么是面向對象的程序設計什么是面向對象的程序設計5. 多態性如果有幾個相似而不完全相同的對象,在向它們發出同一個消息時,它們的反應各不相同,分別執行不同的操作。這種情況就是多態現象。在C+中,所謂多態性是指:由繼承而產生的相關的不同的類,其對象對同一消息會做出不同的響應。多態性是面向對象程序設計的一個重要特征,能增加程序的靈活性。第1章 概述 2.1.2 面向對象程序設計的特點面向對象程序設計的特點傳統的面向過程程序設計是圍繞功能進行的,用一個函數實現一個功能。所有的數據都是公用的,一個函數可以使用任何一組數據,而一組數據又能被多個函數所使用。程序設計者必須考慮每一個細節,什么時候對什

7、么數據進行操作。當程序規模較大,數據很多,操作種類繁多時,難以應付。第1章 概述 2.1.2 面向對象程序設計的特點面向對象程序設計的特點第1章 概述 2.1.2 面向對象程序設計的特點面向對象程序設計的特點面向對象程序設計采取的是另外一種思路。它面對的是一個個對象。一組操作調用一組數據。例如,我們把三角形三條邊a,b,c和對它們的操作放在一起,封裝成一個對象。把數據和有關操作封裝成一個對象,好比工廠把材料、機器和工人承包給車間,廠長只要向車間下達命令:“一車間生產100個輪胎”,“三車間生產15個車身”,車間就會運作起來,調動工人選擇有關材料,在某些機器上完成有關的操作,把指定材料變成產品。

8、廠長不必過問車間內運作的細節。程序設計者的任務:設計所需的各種類和對象,考慮怎樣向有關對象發送消息,以完成所需的任務。第1章 概述 2.1.3 類和對象的作用類和對象的作用類是所有面向對象語言的共同特征。C+支持面向過程的程序設計,也支持基于對象和面向對象的程序設計。基于對象的程序是以類和對象為基礎的。面向過程的程序中數據是公用的,可以被不同的函數所調用,數據的交叉使用容易導致程序的錯誤。把相關的數據和操作放在一起,形成一個整體,與外界相對分隔,這就是面向對象程序設計中的對象。第1章 概述 2.1.3 類和對象的作用類和對象的作用在面向過程的結構化程序設計中,使用以下公式來表述程序:程序=算法

9、+數據結構算法和數據結構是獨立分開設計的,以算法為主體。面向對象程序設計:對象=算法+數據結構程序=(對象+對象+.)+消息或程序=對象S+消息消息的作用是對對象的控制。程序設計的關鍵是設計好每一個對象,以及對這些對象發出的命令。第1章 概述 2.1.4 面向對象的軟件開發面向對象的軟件開發面向對象的軟件工程包括以下幾個部分:1. 面向對象分析(object oriented analysis,OOA)2. 面向對象設計(object oriented design,OOD)3. 面向對象編程(object oriented programming,OOP)4. 面向對象測試(object o

10、riented test,OOT)5. 面向對象維護(object oriented soft maintenance,OOSM)第1章 概述 2.2 類的聲明和對象的定義類的聲明和對象的定義2.2.1類和對象的關系2.2.2 類定義2.2.3定義對象的方法2.2.4類和結構體類型的異同第1章 概述 2.2.1 類和對象的關系類和對象的關系在C+中對象的類型稱為類。類代表了某一批對象的共性和特征。類是對象的抽象,而對象是類的具體實例。類是對象的模板,是用來定義對象的一種抽象類型。類是抽象的,不占用內存,而對象是具體的,占用內存。第1章 概述 2.2.2 類定義類定義類(類(Class) 計算機

11、面向對象程序設計語言中的一個概念,實際上是對某種類型的對象定義變量和方法的原型。它表示對現實生活中一類具有共同特征的事物的抽象,是面向對象編程的基礎。 將數據與其相關操作放到一起!提高軟件質量. 類實際上為數據和數據相關操作(函數)的封裝。 問題:對用戶輸入半徑,程序計算園的面積。 定義一個類Circle: class Circle 園數據; 相關操作; 第1章 概述 2.2.2 類定義類定義園數據?園數據? 相關操作相關操作? radius,area ? calculate_area(double r),get_area(), print_area(). ? class Circlepubl

12、ic: double calculate_area(double r); void set_radius(); void () get_area(); void print_area(); private:double radius; / 半徑 double area; ; 第1章 概述 2.2.2 類定義類定義類定義類定義class 類名稱 private: 數據成員列表; 成員函數列表; public: 數據成員列表; 成員函數列表; protected: 數據成員列表; 成員函數列表; ; 第1章 概述 2.2.2 類定義類定義類是一個封裝體,聲明描述封裝內容: 數據成員(data me

13、mbers); 成員函數(member functions); 其中數據成員描述類的值集,而成員函數描述類的操作集。 成員函數的聲明和實現可放在一起,也可分開。 1內部定義內部定義 在類體中只給出成員函數聲明和函數體實現。 內部定義的一般形式: 返回類型 成員函數名(參數表) /成員函數體 如果在類內定義成員函數,就不需要冠以類名了,它本身就在類的作用域中。 類的聲明和實現都在內部完成: 第1章 概述 2.2.2 類定義類定義例例1 類的應用實例類的應用實例#define PI 3.14159 class Circle public: double carea(double r) return

14、 r*r*PI; void set_radius() cout radius; void get_area() area= radius*radius*PI; void print_area() cout 圓的面積為: area endl; private: double radius; / 半徑 double area; ; 第1章 概述 2.2.2 類定義類定義例例3 Location類定義類定義 class Location public: void Init(int initX,int initY) X=initX; Y=initY; int GetX() return X; int

15、GetY() return Y; private: int X,Y; ; 第1章 概述 2.2.2 類定義類定義例例4 Complex類定義類定義 class Complex private: double real; double imag; public: double getreal() return real; double getimag() return imag; void setreal(double r) real = r; void setimag(double i) imag = i; Complex(double r, double i) real = r; imag

16、= i; ; 第1章 概述 2.2.2 類定義類定義 類的聲明和類的實現通常分開完成,以兩個不同文件存儲。 在類聲明的內部進行聲明,在類聲明的外面進行定義。 習慣做法: *.h: 類的聲明; *.cpp: 成員函數的實現; VC為用戶創建的應用程序框架中都是將各個類以.h和同名的.cpp文件組織的。 第1章 概述 2.2.3 定義對象的方法定義對象的方法1. 先聲明類類型,然后再定義對象如Student stud1,stud2;2. 在聲明類的同時定義對象class Studentpublic: void display() coutnum:endl; coutname:nameendl; c

17、outsex:sexendl; private: int num; char name20; char sex; stud1,stud2;第1章 概述 2.2.3 定義對象的方法定義對象的方法3. 不出現類名,直接定義對象class private:.public:. stud1,stud2;很少用這種方法,也不提倡。第1章 概述 2.2.4 類和結構體的異同類和結構體的異同C+擴展了結構體struct的功能,允許用它聲明一個類例如:struct Studentpublic: void display() coutnum:endl; coutname:nameendl; coutsex:sex

18、endl; private: int num; char name20; char sex; ;Student stud1,stud2;第1章 概述 2.2.4 類和結構體的異同類和結構體的異同用struct聲明的類和用class聲明的類有所區別。用struct聲明的類,如果對其成員不作private或public的聲明,默認為public。而用class定義的類,如果不作private或public聲明,默認為private。如果希望成員是公用的,用struct比較方便,如果希望部分成員是私有的,宜用class。第1章 概述 2.3 類的成員函數類的成員函數2.3.1 成員函數的性質2.3.

19、2 在類外定義成員函數2.3.3 內置成員函數2.3.4 成員函數的存儲方式第1章 概述 2.3.1 成員函數的性質成員函數的性質成員函數也有返回值和函數類型,它與一般函數的區別只是:它是屬于一個類的成員,出現在類體中。它可以被指定為public(公用的)、private(私有的)或protected(受保護的)。在使用時,要注意調用它的權限(是否能被調用)以及它的作用域(函數能使用什么范圍中的數據和函數)。第1章 概述 2.3.1 成員函數的性質成員函數的性質私有成員函數只能被本類中的其他成員函數調用,不能被類外調用。成員函數可以訪問本類中的任何成員,可以引用在本作用域中有效的數據。一般的做

20、法是將需要被外界調用的聲明為public,它們是類的對外接口。只在本類中使用的成員函數,定義為private。第1章 概述 2.3.2 在類外定義成員函數在類外定義成員函數在類體中只給出成員函數聲明,而將函數體寫在類的外部。 外部定義的一般形式: 返回類型 類名:成員函數名(參數表) /成員函數體 其中“:”為作用域運算符,它指出了成員函數的所屬的類。成員函數一定是屬于某一類的,不能獨立存在,這是它與普通函數的重要差別,因此在定義成員函數時,函數名前要冠以類名。 實現在外部完成: 第1章 概述 2.3.2 在類外定義成員函數在類外定義成員函數例例 Person類定義類定義 class Pers

21、on public: void setAge( unsigned n ); unsigned getAge( ) const; private: unsigned age; ; void Person:setAge(unsigned n) age = n; unsigned Person:getAge( ) const return age; 第1章 概述 2.3.3 內置成員函數內置成員函數為了減少時間開銷,如果在類體中定義的成員函數中不包括循環等控制結構,C+系統會自動地對它們作為內置函數來處理。在類外定義的成員函數如果要作為內置成員函數,需要用inline聲明,如:class Stude

22、nt public: inline void display();private: int num; string name; char sex;在內體內定義的函數,一般都省寫inline。第1章 概述 2.3.3 內置成員函數內置成員函數inline void Student:display() coutnum:numendl; coutname:nameendl; coutsex:sexendl;對需要作為內置函數處理的,在函數的定義或函數的原型聲明時做inline聲明即可(二者有其一即可)。值得注意的是:如果在類體外定義inline函數,則必須將類的聲明和成員函數的定義都放在同一個頭文件

23、中(或者寫在同一個源文件中),否則編譯時無法進行置換。只有在類外定義的成員函數規模很小而調用頻率較高時,才指定為內置函數。第1章 概述 2.3.4 成員函數的存儲方式成員函數的存儲方式同一類的不同對象中的數據成員的值一般是不同的,而不同對象的函數代碼是相同的。不同對象使用同一個函數段,通過this指針,以區別調用的是哪個對象的函數。(1)不論成員函數在類內定義還是在類外定義,成員函數的代碼段的存儲方式是相同的,都不占用對象的存儲空間。(2)不要將成員函數的這種存儲方式和inline函數的概念混淆。不論是否用inline聲明,成員函數的代碼段都不占用對象的存儲空間。inline函數只影響程序的執

24、行效率,而與成員函數是否占用對象的存儲空間無關。第1章 概述 2.3.4 成員函數的存儲方式成員函數的存儲方式雖然成員函數并沒有放在對象的存儲空間中,但從邏輯的角度,成員函數是和數據一起封裝在一個對象中的,只允許本對象中成員的函數訪問同一對象中的私有數據。第1章 概述 對象(對象(Object) 對象是類的一個實例。 例如,所有學生是一個類,而名為張三的學生為一個對象。 人們也借助對自然界具有共同特征的事物或實體的理解,定義類和對象。它們的共同特征包含屬性和行為,行為也稱為操作方法,或方法。類的變量 類名 變量名; /類的變量的聲明,與一般變量聲明相同。與int類型和int變量關系類似。 該變

25、量稱為一個對象或實例。類代表的是一般的概念,而對象代表具體的東西。2.4 對象成員的引用對象成員的引用第1章 概述 2.4 對象成員的引用對象成員的引用在程序中經常需要訪問對象中的成員。訪問對象中的成員可以有3種方法:(1)通過對象名和成員運算符訪問對象中的成員。(2)通過指向對象的指針訪問對象中的成員(3)通過對象的引用訪問對象中的成員第1章 概述 2.4.1 通過對象名和成員運算符訪問對象中的成員通過對象名和成員運算符訪問對象中的成員例如在程序中可以寫出以下語句:stud1.num=1001; /假設num已經定義為公用的整型數據成員其中.是成員運算符,用來對成員進行限定,指明是哪一個對象

26、的成員。不能只寫成員名,不寫對象名。訪問對象中成員的一般形式為:對象名.成員名第1章 概述 2.4.1 通過對象名和成員運算符訪問對象中的成通過對象名和成員運算符訪問對象中的成員員可以調用對象的公用成員函數,同樣必須指出對象名,如stud1.display();display(); 由于沒有指明對象名,編譯時作為普通函數處理應該注意所訪問的成員是公用的還是私有的。在類外只能訪問public成員,不能訪問private成員。如果num定義為private,則下面的語句是錯誤的:stud1.num=1001;第1章 概述 2.4.1 通過對象名和成員運算符訪問對象中的成通過對象名和成員運算符訪問對

27、象中的成員員 有了類及對象定義后,在外部就利用對象訪問其公有成員了。 公有成員訪問: 對象名.數據成員名 或 對象名.成員函數名(實參表) 對象訪問公有成員如:對象訪問公有成員如: Circle c1; c1.set_radius(); c1.get_area(); c1.print_area(); 第1章 概述 2.4.1 通過對象名和成員運算符訪問對象中的成通過對象名和成員運算符訪問對象中的成員員例例1 Circle類和對象完整程序類和對象完整程序 #define PI 3.14159 #include class Circle public: double calculate_area(

28、double r) return r*r*PI; void set_radius() cout radius; void get_area() area= radius*radius*PI; void print_area() cout 圓的面積為: area endl; private: double radius; / 半徑 double area; ; 第1章 概述 2.4.1 通過對象名和成員運算符訪問對象中的成通過對象名和成員運算符訪問對象中的成員員void main() Circle c1; c1.set_radius(); c1.get_area(); c1.print_area

29、(); 對象訪問公有成員如:對象訪問公有成員如: Person p; p.setAge(6); p.getAge(); 第1章 概述 2.4.1 通過對象名和成員運算符訪問對象中的成通過對象名和成員運算符訪問對象中的成員員例例5 Person類和對象完整程序類和對象完整程序 #include class Person public: void setAge( unsigned n ); unsigned getAge( ) const; private: unsigned age; ;void Person:setAge(unsigned n) age = n; 第1章 概述 2.4.1 通過

30、對象名和成員運算符訪問對象中的成通過對象名和成員運算符訪問對象中的成員員unsigned Person:getAge( ) const return age; void main() Person p; p.setAge(6); cout此人的年齡為:p.getAge()endl; 第1章 概述 2.4.2 通過指向對象的指針訪問對象中的成員通過指向對象的指針訪問對象中的成員可以通過指針訪問對象中的成員。如:class Time public: int hour,minute;Time t,*p;p=&t; /使p指向對象tcouthour;p-hour表示p當前指向的對象的對象t的成

31、員hour。(*p).hour也是同樣的。第1章 概述 2.4.3 通過對象的引用來訪問對象中的成員通過對象的引用來訪問對象中的成員可以為一個對象定義一個引用,通過引用來訪問對象中的成員,其概念和方法與通過對象名來訪問對象的成員是一樣的。例如,已經聲明了Time類,有以下語句:Time t1;Time &t2=t1;coutt1.hour;cint1.minute;cint1.sec;coutt1.hour:t1.minute:t1.secendl;return 0; 第1章 概述 2.5 類和對象的簡單應用舉例類和對象的簡單應用舉例例2:用成員函數來處理時間的輸入和輸出#includ

32、e ;using namespace std;class Time private: int hour, minute, second; public: void set( ) ; void print( ) ; ;第1章 概述 2.5 類和對象的簡單應用舉例類和對象的簡單應用舉例void Time:set( ) cinhourminutesecond; void Time:print( ) couthour:minute:secendl; int main() Time t1; t1.set(); t1.print(); Time t2; t2.set(); t2.print();retur

33、n 0; 第1章 概述 2.5 類和對象的簡單應用舉例類和對象的簡單應用舉例例3:找出一個整型數組中的元素的最大值#include using namespace std;class Array_maxpublic: void set_value(); void max_value; void show_value(); private: int array10; int max;第1章 概述 2.5 類和對象的簡單應用舉例類和對象的簡單應用舉例void Array_max:set_value() int i; for(i=0;iarrayi;void Array_max:max_value(

34、) int i; max=array0; for (i=1;imax) max=arrayi; 第1章 概述 2.5 類和對象的簡單應用舉例類和對象的簡單應用舉例void Array_max:show_value()coutmax=max;int main()Array_max arrmax; arrmax.set_value(); arrmax.max_value(); arrmax.show_value(); return 0;第1章 概述 2.6 類的封裝性和信息隱蔽類的封裝性和信息隱蔽2.6.1 公用接口與私有實現的分離2.6.2 類聲明和成員函數定義的分離2.6.3 面向對象程序設計

35、中的幾個名詞第1章 概述 2.6.1 公用接口與私有實現的分離公用接口與私有實現的分離外界與對象唯一的聯系渠道就是調用公用成員函數。這樣使類與外界的聯系減少到最低限度。公用成員函數是用戶使用類的公用接口。用戶只需要調用公用成員函數來實現類提供的功能,不用了解內部的實現。這就是接口與實現分離。通過成員函數對數據成員進行操作稱為類的功能的實現。類的公用接口與私有實現的分離形成了信息隱蔽。.第1章 概述 2.6.1 公用接口與私有實現的分離公用接口與私有實現的分離軟件工程的一個最基本的原則就是將接口與實現分離,信息隱蔽是軟件工程中非常重要的概念,它的好處在于:(1)如果想修改或擴充類的功能,只需修改

36、該類中有關的數據成員和與它有關的成員函數,程序中類以外的部分可以不必修改。如2.2.3中聲明的Student類增加一項數據成員“年齡”,只須這樣改:第1章 概述 2.6.1 公用接口與私有實現的分離公用接口與私有實現的分離class Studentpublic: void display(); coutnum:endl; coutname:nameendl; coutage:ageendl; coutsex:sexendl; private: int num; string name; int age; char sex; ;Student stud;第1章 概述 2.6.1 公用接口與私有實

37、現的分離公用接口與私有實現的分離注意:雖然類中的數據成員改變了,成員函數display的定義改變了,但類的對外接口沒變,外界仍然通過公用的display函數訪問類中的數據。當接口與實現分離時,只要類的接口沒有改變,對私有實現的修改不會引起程序的其他部分修改。(2)如果在編譯時發現類中的數據讀寫有錯,不必檢查整個程序,只須檢查本類中訪問這些數據的少數成員函數。第1章 概述 2.6.1 公用接口與私有實現的分離公用接口與私有實現的分離信息公開或隱藏 public, private or protected ? class Complex public: double real; / 實部 doub

38、le imag; / 虛部 Complex(double r, double i) /接口 real = r; imag = i; ; 第1章 概述 2.6.1 公用接口與私有實現的分離公用接口與私有實現的分離class Complex private: /信息隱藏 double real; double imag; public: /對外接口 double getreal() return real; double getimag() return imag; void setreal(double r) real = r; void setimag(double i) imag = i;

39、void Complex(double r, double i) real = r; imag = i; ; 第1章 概述 2.6.2 類聲明和成員函數定義的分離類聲明和成員函數定義的分離如果一個類只被一個程序使用,類的聲明和成員函數的定義可以直接寫在程序的開頭,但是如果一個類被多個程序使用,這樣做的重復工作量大,效率低。一般把類的聲明放在指定的頭文件中,用戶如果想用該類,只要把有關的頭文件包含進來即可,不必在程序中重復書寫類的聲明,以減少工作量。一個C+程序是由3部分組成的:(1)類聲明頭文件(后綴為.h或五后綴);(2)類實現文件(后綴為.cpp),包括類成員函數的定義(3)類的使用文件(

40、后綴為.cpp),即主文件。第1章 概述 2.6.2 類聲明和成員函數定義的分離類聲明和成員函數定義的分離例如,可以先分別寫兩個文件:(1)類聲明頭文件/student.h (這是頭文件,在文件中進行類的聲明)#include using namespace std;class Studentpublic: void display(); /公用成員函數原型聲明 private: int num; string name; char sex; ;第1章 概述 2.6.2 類聲明和成員函數定義的分離類聲明和成員函數定義的分離(2)包含類成員函數的定義的文件(即類實現文件)/student.cpp#include student.h /不要漏寫此行,否則編譯不過void Student:display() /在類外定義dispaly函數 coutnum:endl; coutname:nameendl; coutsex:sexendl; 第1章 概述 2.6.2 類聲明和成員函數定義的分離類聲明和成員函數定義的分離(3)主文件。為了組成一個完整的源程序,還應當有包括主函數的源文件:/main.cpp#include #include student.husing namespace std;int mai

溫馨提示

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

最新文檔

評論

0/150

提交評論