




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VisualC++與面向?qū)ο蟪绦蛟O(shè)計教程第三部分面向?qū)ο?、類和對象:數(shù)據(jù)和對應(yīng)操作封裝在一起2、繼承和派生:3、多態(tài)性面向?qū)ο蟮乃枷朊嫦蜻^程的程序設(shè)計(StructureProgramming)以功能為中心,采用函數(shù)來描述(動詞)面向?qū)ο蟪绦蛟O(shè)計(OOP)面向?qū)ο蟪绦蛟O(shè)計方法認(rèn)為,客觀世界是由各種各樣的實體組成的,這些實體就是面向?qū)ο蠓椒ㄖ械膶ο蟆O⑹窍蚰硨ο笳埱蠓?wù)的一種表達(dá)方式對象之間的交互通過發(fā)送消息來實現(xiàn)。消息包括:目標(biāo)對象,請求的方法,參數(shù)面向?qū)ο蟪绦蛟O(shè)計的特點四個基本特征:抽象(類)(數(shù)據(jù)抽象+代碼抽象)封裝(過程和數(shù)據(jù)封藏起來)繼承(基類和派生類)多態(tài)性(虛函數(shù)、函數(shù)重載)OOP的優(yōu)點開發(fā)時間短,效率高,可靠性高,所開發(fā)的程序更強壯重用,共享,可維護(hù)性,精簡適合于大程序長時間的開發(fā)工作類與對象類的聲明類的定義成員函數(shù)的定義數(shù)據(jù)成員的定義對象的引用對象作函數(shù)的參數(shù)對象作函數(shù)的返回值為什么要引入類工資單:姓名、單位、編號.....成績單:姓名、學(xué)號、各科成績.....簡單數(shù)據(jù)單元無法將這樣記錄作為一個數(shù)據(jù)單位處理一一對應(yīng)關(guān)系以工資單為例月份工號姓名工作部門工作時間基本工資2002.90002張三西安交大1990.7.11000校內(nèi)津貼崗位津貼水電費房租實發(fā)工資200300501501300類的層次關(guān)系工作部門:字符串姓名:字符串職務(wù):代碼(0~99)int工作時間:年(xxxx):int月(1~12):char日(1~31):char家庭情況婚否:(0,1)int是否是雙職工:int基本工資:double崗位津貼:double勞保福利:double獨生子女:double房租:double電費:double水費:double取暖費:double保育費:double實發(fā)工資:double類(Class)----數(shù)據(jù)類型類是具有相同屬性和相同的方法的對象的集合,它是一種既包含數(shù)據(jù)又包含函數(shù)的抽象數(shù)據(jù)類型。類是將一類對象和其他對象區(qū)別開來的一組描述。類是對象集合的抽象,對象是類的一個實例。類的種類 用struct關(guān)鍵字聲明的類 用union關(guān)鍵字聲明的類 用class關(guān)鍵字聲明的類類的定義1.?dāng)?shù)據(jù)成員(DataMember),即類的屬性;2.成員函數(shù)(MemberFunction),即類的方法;3.構(gòu)造函數(shù)(constructor)和析構(gòu)函數(shù)(destructor),這將在7.4節(jié)介紹;4.運算符函數(shù),在第9章介紹。對象(Object)----數(shù)據(jù)對象是包含現(xiàn)實世界物體特征的抽象實體,反映了系統(tǒng)為之保存信息和(或)與之交互的能力。對象=數(shù)據(jù)+作用于這些數(shù)據(jù)上的操作
=屬性(Attribute)+方法(Method)消息(Message)----函數(shù)調(diào)用消息是向某對象請求服務(wù)的一種表達(dá)方式。對象之間通過傳遞消息來實現(xiàn)相互的通信。類的定義
class<類名>
{
private:
//私有成員
<數(shù)據(jù)成員或成員函數(shù)表>;
public:
//公有成員
<數(shù)據(jù)成員或成員函數(shù)表>;
protected:
//保護(hù)成員
<數(shù)據(jù)成員或成員函數(shù)表>;
……};分析:編寫簡單的人事系統(tǒng)(子程序)人工作部門姓名出生日期職務(wù)工資基本工資崗位津貼……定義一個Person類,用來說明人員類對象//Example7-1:定義Person類classPerson{private: char m_strName[20]; int m_nAge; int m_nSex;public: void Register(char*name,intage,charsex); char* GetName(); int GetAge(); char GetSex(); void ShowMe();};成員函數(shù)的定義成員函數(shù)的一般形式:<類型><類名>::<函數(shù)名>(<參數(shù)表>){<函數(shù)體>}編寫Person類成員函數(shù)的定義。//Example7-2:Person類成員函數(shù)的定義voidPerson::Register(char*name,intage,charsex){ strcpy(m_strName,name); m_nAge=age; m_nSex=(sex=='m'?0:1);}char*Person::GetName(){ returnm_strName;}intPerson::GetAge(){ returnm_nAge;}charPerson::GetSex(){ return(m_nSex==0?'m':'f');}voidPerson::ShowMe(){ cout<<GetName()<<'\t'<<GetAge()<<'\t'<<GetSex()<<endl;}對象的引用說明對象的一般形式(類的實例化):
<類名><對象1>,<對象2>,…對類成員的訪問
.
運算符
->
運算符Person對象的引用成員函數(shù)訪問同類中的數(shù)據(jù)成員(公有和私有)在對象外訪問其數(shù)據(jù)成員或成員函數(shù)需使用運算符“.”訪問對象的成員
禁止直接訪問一個對象中的私有成員同類對象之間可以整體賦值對象用作函數(shù)的參數(shù)時屬于賦值調(diào)用;函數(shù)可以返回一個對象。
例如:Personperson1,person2;
int
nage=person1.GetAge();person1=person2;Person*p;p=newPerson;nage=p->GetAge();完整的人事資料輸入輸出程序。//Example7-3:人事資料的輸入和輸出voidmain(){ charname[20],sex;intage;Personperson1,person2; cout<<"Enteraperson'sname,ageandsex:"; cin>>name>>age>>sex; person1.Register(name,age,sex); cout<<"person1:\t";person1.ShowMe(); person1.Register("Zhang3",19,'m'); cout<<"person1:\t";person1.ShowMe(); person2=person1; //對象之間的賦值
cout<<"person2:\t";person2.ShowMe();}多文件結(jié)構(gòu)按照WINDOWS程序多文件的特點,將其改造成多文件結(jié)構(gòu)通常將類的定義放在頭文件中,成員函數(shù)的實現(xiàn)放在類對應(yīng)的CPP文件中;然后通過#include的包含關(guān)系將多文件聯(lián)系起來。內(nèi)聯(lián)成員函數(shù)classPerson{private: charm_strName[20]; intm_nAge;intm_nSex;public: void Register(char*name,intage,charsex) { strcpy(m_strName,name); m_nAge=age; m_nSex=(sex=='m'?0:1); } char* GetName() { returnm_strName; } int GetAge() { returnm_nAge; } charGetSex() { return(m_nSex==0?'m':'f');}};構(gòu)造函數(shù)與析構(gòu)函數(shù)構(gòu)造函數(shù)(Constructor)定義了創(chuàng)建對象的方法,提供了初始化對象的一種簡便手段。
與構(gòu)造函數(shù)相對應(yīng),析構(gòu)函數(shù)(Destructor)用于撤消一個對象。
構(gòu)造函數(shù)(Constructor)格式:
<類名>(<參數(shù)表>);注意事項:構(gòu)造函數(shù)必須與類名相同構(gòu)造函數(shù)沒有返回值其功能是對對象進(jìn)行初始化,一般由一系列賦值語句構(gòu)成由系統(tǒng)自動調(diào)用析構(gòu)函數(shù)(Destructor)格式為:
<類名>::~<類名>();注意事項:函數(shù)名與類名相同,只是在前邊加“~”符號析構(gòu)函數(shù)不得返回任何值析構(gòu)函數(shù)不得帶有任何參數(shù)其功能是釋放對象成員所占用的存儲,一般由一系列的delete組成由系統(tǒng)自動調(diào)用為類Person增加構(gòu)造函數(shù)和析構(gòu)函數(shù)。classPerson{Private: charm_strName[20];int m_nAge; int m_nSex;public: person(constchar*name,intage,charsex)//構(gòu)造函數(shù)
{strcpy(m_strName,name);m_nAge=age; m_nSex=(sex==’m’?0:1);}voidRegister(char*Name,intAge,charSex);void GetName(char*Name);intGetAge();charGetSex();};數(shù)據(jù)成員的初始化1.在構(gòu)造函數(shù)的函數(shù)體中進(jìn)行初始化。2.在構(gòu)造函數(shù)的頭部初始化。3.混合初始化。4.拷貝構(gòu)造函數(shù)在構(gòu)造函數(shù)的函數(shù)體中初始化classPerson{ char m_strName[20];intm_nAge;intm_nSex;public: Person(){strcpy(m_strName,”XXX”);m_nAge=0;m_nSex=0;} Person(char*name,intage,charsex) { strcpy(m_strName,name);m_nAge=age;m_nSex=(sex=='m'?0:1); }}例如,當(dāng)遇到聲明
Personpersonl(“Zhang3”,19,‘f’); Personperson2=Person(“Zhang3”,19,‘f’);在構(gòu)造函數(shù)的頭部初始化。其格式為:
<類名>::<構(gòu)造函數(shù)>(<參數(shù)表>):<變量1>(<初值1>),…,<變量n>(<初值n>)
{ …… }例如Person::Person():m_nAge(0),m_nSex(0) { }混合初始化。例如Person::Person():m_nAge(0),m_nSex(0) { strcpy(m_strName,“XXX”); }拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù)例如Person(Person&p){ strcpy(m_strName,p.GetName()); m_nAge=p.GetAge(); m_nSex=(p.GetSex()=='m'?0:1);}Personpersonl(“Zhang3”,19,‘f’);Personperson2=Person(“Zhang3”,19,‘f’);對象與指針指向?qū)ο蟮闹羔?/p>
類名*指針變量名表;
例: Personperson1(“Zhang3”,19,’f’); Person*ptr=&Person1; ptr->Speak();動態(tài)存儲名字指針=new名字(名字初始化值);delete名字指針;例:Person*p=newPerson;deletep;this指針:指向該對象本身的指針MFC的CString類(#include<afx.h>)賦值/連接運算=、 +、+=比較運算<、<=、==、Compare、CompareNoCase截取運算Mid、Left、Right轉(zhuǎn)換運算MakeUpper、MakeLower、MakeReverseCString類(續(xù))查看字符信息
GetAt、GetLength、IsEmpty修改字符信息
SetAt、Insert、Delete格式化輸出
FormatCString類舉例#include<iostream.h>#include<afx.h>voidmain(){ CStrings; s="123456789"; cout<<s<<endl; s.MakeReverse(); cout<<s<<endl; s.Format("s=%d",100); cout<<s<<endl;}MFC的CTime類和CTimeSpan類構(gòu)造函數(shù)
CTime、GetCurrentTime截取函數(shù)
GetYear、GetMonth、GetDay……轉(zhuǎn)換函數(shù)
Format……運算符
=、+、-……CTime類舉例#include<iostream.h>#include<afx.h>voidmain(){ CTimet; CStrings; t=CTime(1999,3,19,22,15,0); s=t.Format("%A,%B%d,%Y"); cout<<s<<endl; t=CTime::GetCurrentTime(); s=t.Format("%A,%B%d,%Y"); cout<<s<<endl;}CTimeSpan類構(gòu)造函數(shù)CTimeSpan();CTimeSpan(constCTimeSpan&timeSpanSrc);CTimeSpan(LONGlDays,intnHours,intnMins,intnSecs);方法LONGGetDays(); //返回此CTimeSpan對象中的天數(shù)intGetHours(); //返回此CTimeSpan對象中的小時數(shù)intGetMinutes(); //返回此CTimeSpan對象中的分鐘數(shù)CTime類和CTimeSpan類的運算= //賦一個新的時間值+,- //將CTime對象加上或減去一個CTimeSPan對象+=,-= //將CTime對象加上或減去一個CTimeSpan對象>,<,>=,<=,==,!= //比較兩個CTime對象舉例:CTimet1(2000,3,19,22,15,0);CTimet2(2000,3,20,22,15,0);CTimeSpants=t2-t1; //計算兩日期的間隔t2+=CTimeSpan(1,0,0,0);//在某日期上加一間隔類的嵌套classEmployee{CString m_sDepartment; //工作部門
CString m_sName; //姓名
CTime m_tBirthdate; //出生日期
Position m_nPosition; //職務(wù)
CTime m_tDateOfWork; //參加工作時間
Salary m_Salary; //工資public:Employee(LPCTSTRlpszDepart,LPCTSTRlpszName,CTimetBirthdate,PositionnPosition,CTimetDateOfWork);//構(gòu)造函數(shù)
......}繼承和派生派生類的定義格式為:class派生類名:繼承方式基類名1,繼承方式基類名2,…,繼承方式基類名n{
派生類增加的成員聲明;};水果的分類
派生類的語法結(jié)構(gòu)class<派生類名>:<訪問權(quán)限><基類名>{private:新增私有數(shù)據(jù)成員和成員函數(shù)protected:新增保護(hù)數(shù)據(jù)成員和成員函效public:新增公有數(shù)據(jù)成員和成員函效}派生類中的變化
派生類對基類的擴充派生類對基類成員的改造
系統(tǒng)的默認(rèn)值就是私有繼承(private)。
派生類的繼承方式私有繼承private公有繼承public
保護(hù)繼承protected公有繼承(public) 公有繼承方式創(chuàng)建的派生類對基類各種成員訪問權(quán)限如下:基類公有成員相當(dāng)于派生類的公有成員,即派生類可以象訪問自身公有成員一樣訪問從基類繼承的公有成員。
基類保護(hù)成員相當(dāng)于派生類的保護(hù)成員,即派生類可以象訪問自身的保護(hù)成員一樣,訪問基類的保護(hù)成員。
對于基類的私有成員,派生類內(nèi)部成員無法直接訪問。派生類使用者也無法通過派生類對象直接訪問。
實例:公有繼承(public)
classPerson{private: char m_strName[20]; intm_nAge; int m_nSex; public: void GetName(char*Name); int GetAge(); charGetSex(); ......};classEmployee:publicPerson{charm_sDepartment[21];charm_sPosition[21];floatm_fSalary;public:Employee(){}voidSetDepartment(constchar*);voidSetSalary(float);char*GetPosition()const;floatGetSalary()const;......};從Person類公有派生一個職員類
classEmployee:publicPerson{ charm_strDept[20]; floatm_fSalary;public: Employee() {EmployeeRegister("XXX",0,'m',"XXX",0);} EmployeeRegister(char*name,intage,charsex,char*dept,floatsalary); voidShowMe();};私有繼承
(private)派生類對基類各種成員訪問權(quán)限如下:基類公有成員和保護(hù)成員都相當(dāng)于派生類的私有成員,派生類只能通過自身的函數(shù)成員訪問他們
對于基類的私有成員,無論派生類內(nèi)部成員或派生類使用者都無法直接訪問。
實例:私有繼承(private)
classPerson{private: char m_strName[20]; intm_nAge; int m_nSex; public: void GetName(char*Name); int GetAge(); charGetSex(); ......};classEmployee:privatePerson{charm_sDepartment[21];charm_sPosition[21];floatm_fSalary;public:Employee(){}voidSetDepartment(constchar*);voidSetSalary(float);char*GetPosition()const;floatGetSalary()const;......};人員類(Person)的私有派生類classEmployee:privatePerson //雇員類定義{ charm_strDept[20]; //工作部門
floatm_fSalary; //月薪public: Employee() {EmployeeRegister("XXX",0,'m',"XXX",0);} EmployeeRegister(char*name,intage,charsex,char*dept,floatsalary); voidShowMe(); //顯示雇員信息
char*GetEmployeeName() {return GetName();}//取姓名
charGetEmployeeSex() {return GetSex();}//取性別
intGetEmployeeAge() {return GetAge();}//取年齡};保護(hù)繼承(public) 保護(hù)繼承方式創(chuàng)建的派生類對基類各種成員訪問權(quán)限如下:基類的公有成員和保護(hù)成員都相當(dāng)于派生類的保護(hù)成員,派生類可以通過自身的成員函數(shù)或其子類的成員函數(shù)訪問他們對于基類的私有成員,無論派生類內(nèi)部成員或派生類使用者都無法直接訪問派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)派生類構(gòu)造函數(shù)的一般形式為: 派生類名::派生類名(參數(shù)總表):基類名1(參數(shù)表1),…,基類名n(參數(shù)表n), 內(nèi)嵌對象名1(對象參數(shù)表1),…,內(nèi)嵌對象名m(對象參數(shù)表m)
{
派生類新增加成員的初始化;
}派生類與基類的析構(gòu)函數(shù)沒有什么聯(lián)系,彼此獨立,派生類或基類的析構(gòu)函數(shù)只作各自類對象消亡前的善后工作
派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行
classPerson{ char m_strName[10]; int m_nAge;public: Person(char*name,intage) { strcpy(m_strName,name); m_nAge=age; cout<<"constructorofperson"<<m_strName<<endl; } ~Person() {cout<<"deconstrutorofperson"<<m_strName<<endl;}};派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行classEmployee:publicPerson{ char m_strDept[20]; PersonWang;public: Employee(char*name,intage,char*dept,char*name1,intage1) :Person(name,age),Wang(name1,age1) { strcpy(m_strDept,dept); cout<<"constructorofEmployee"<<endl; } ~Employee(){cout<<"deconstrucorofEmployee"<<endl;}};派生類構(gòu)造函數(shù)的執(zhí)行次序首先,調(diào)用基類構(gòu)造函數(shù),調(diào)用順序按照它們被繼承時聲明的基類名順序執(zhí)行。其次,調(diào)用內(nèi)嵌對象構(gòu)造函數(shù),調(diào)用次序按各個對象在派生類內(nèi)聲明的順序。最后,執(zhí)行派生類構(gòu)造函數(shù)體中的內(nèi)容。析構(gòu)函數(shù)派生類析構(gòu)函數(shù)執(zhí)行過程恰與構(gòu)造函數(shù)執(zhí)行過程相反。首先執(zhí)行派生類析構(gòu)函數(shù)然后執(zhí)行內(nèi)嵌對象的析構(gòu)函數(shù)最后執(zhí)行基類析構(gòu)函數(shù)類模版
template<class<類型參數(shù)>> class<類名> { …… };多態(tài)性含義實現(xiàn)“一種接口,多種方法”的技術(shù)某類的對象在接受同樣的消息時,做出不同的響應(yīng)多態(tài)性的形式編譯時多態(tài)性
編譯器對源程序進(jìn)行編譯時就可以確定所調(diào)用的是哪一個函數(shù),編譯時多態(tài)性通過重載來實現(xiàn);函數(shù)重載運算符重載運行時多態(tài)性
在程序運行過程中根據(jù)具體情況來確定調(diào)用的是哪一個函數(shù);虛函數(shù)編譯時多態(tài)性——函數(shù)重載(兔子逃生)class兔子{public:
……void逃生(老鷹a){“兔子蹬鷹”;}void逃生(狼
b){“動如脫兔”;}……};
運行時多態(tài)性——虛函數(shù)(catordog???)class寵物{public:voidchar*speak(){cout<<"zzz";};
…};class貓:public寵物{public:voidchar*speak(){cout<<"miao!miao!";}
…};class狗:public寵物{public:voidchar*speak(){cout<<"wang!wang!";}
…};例:catordog???(續(xù))voidmain(){ ……
寵物*p;//p為寵物類指針
貓
cat1; //定義貓類對象
狗
dog1; //定義狗類對象……根據(jù)用戶輸入將貓或狗對象地址賦給p指針,例如用戶輸入1,則執(zhí)行p=&cat1;用戶輸入2,則執(zhí)行p=&dog1;……p->speak();
……}
派生類對象替換基類對象
原則:凡是基類對象出現(xiàn)的場合都可以用公有派生類對象取代
形式
(1)派生類對象給基類對象賦值(2)派生類對象可以初始化基類對象的引用(3)可以令基類對象的指針指向派生類對象,即將派生類對象的地址傳遞給基類指針
例:派生類對象替換基類對象
#include<iostream.h>classPet //基類{public: voidSpeak() {cout<<"Howdoesapetspeak?"<<endl;}};classCat:publicPet //派生類{public: voidSpeak() {cout<<"miao!miao!"<<endl;}};例:派生類對象替換基類對象(續(xù)一)classDog:publicPet //派生類{public: voidSpeak() {cout<<"wang!wang!"<<endl;}};voidmain(){ Pet *p1,*p2,*p3,obj; //基類對象指針p1,基類對象obj Dogdog1; Catcat1; obj=dog1; //用Dog類對象給Pet類對象賦值
obj.Speak(); 派生類對象替換基類對象(續(xù)二)
p1=&cat1; //用Cat類對象地址給基類指針賦值
p1->Speak(); p1=&dog1; //用Dog類對象地址給基類指針賦值
p1->Speak(); p2=newCat; //動態(tài)生成Cat類對象
p2->Speak(); p3=newDog; //動態(tài)生成Dog類對象
p3->Speak(); Pet &p4=cat1; //以Cat類對象初始化Pet類引用
p4.Speak();}
虛函數(shù)
定義:在某基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù)
語法:virtual函數(shù)返回類型
函數(shù)名(參數(shù)表){
函數(shù)體}用途:實現(xiàn)多態(tài)性,通過指向派生類的基類指針,訪問派生類中同名覆蓋成員函數(shù),
虛函數(shù)實現(xiàn)多態(tài)性#include<iostream.h>classPet //基類{public:
virtualvoidSpeak() {cout<<"Howdoesapetspeak?"<<endl;}};classCat:publicPet //派生類
{public:
virtualvoidSpeak() {cout<<"miao!miao!"<<endl;}};虛函數(shù)的使用限制應(yīng)通過指針或引用調(diào)用虛函數(shù),而不要以對象名調(diào)用虛函數(shù)說明語句在派生類中重定義的基類虛函數(shù)仍為虛函數(shù),同時可以省略virtual關(guān)鍵字
不能定義虛構(gòu)造函數(shù),可以定義虛析構(gòu)函數(shù)
抽象類純虛函數(shù)
virtual返回類型
函數(shù)名(參數(shù)表)=0
純虛函數(shù)是為了實現(xiàn)多態(tài)性而存在,具體實現(xiàn)只能在派生類中完成。抽象類
至少包含一個純虛函數(shù)的類稱為抽象類
抽象類為其所有子類提供了統(tǒng)一的操作界面,使其派生類具有一系列統(tǒng)一的方法。
抽象類的使用要求
抽象類不能實例化抽象類只作為基類被繼承可以定義指向抽象類的指針或引用
抽象寵物類的實現(xiàn)#include<iostream.h>#include<string.h>classPet //基類{ char m_strName[20]; int m_nAge; char m_strColor[12];public: char m_strType[10]; Pet(char*,int,char*); char*GetName() {returnm_strName;} int GetAge() {returnm_nAge;} char*GetColor() {returnm_strColor;} virtualvoidSpeak()=0; virtualvoidGetInfo(){}};抽象寵物類的實現(xiàn)(續(xù)1)Pet::Pet(char*name,intage,char*color){ strcpy(m_strName,name); m_nAge=age; strcpy(m_strColor,color); strcpy(m_strType,"pet");}抽象寵物類的實現(xiàn)(續(xù)2)classCat:publicPet //派生類
{public: Cat(char*name,intage,char*color):Pet(name,age,color){} voidSpeak() {cout<<"Soundofspeak:miao!miao!"<<endl<<endl;} voidGetInfo();};voidCat::GetInfo(){ cout<<"Thecat'sname:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保隱患排查制度
- 安全駕駛案例心得體會
- 煤礦個人安全責(zé)任承諾書
- 生產(chǎn)部的績效考核方案
- 2025年中國水罐消防車行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略研究報告
- 燃?xì)馐鹿蕦m棏?yīng)急預(yù)案
- 中國SIP封裝行業(yè)市場競爭格局及投資前景展望報告
- 2025年中國3D人臉識別器行業(yè)發(fā)展趨勢及投資前景預(yù)測報告
- 2021-2026年中國制糖行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略規(guī)劃研究報告
- 牛的飼養(yǎng)管理技術(shù)課件
- 農(nóng)藥使用與環(huán)境安全
- 當(dāng)兵言語測試試題及答案
- 曲臂車作業(yè)安全規(guī)范與操作指南
- 2025年電信人工智能學(xué)習(xí)考試題庫(含答案)
- 混凝土攪拌站項目可行性研究報告
- 老年人慢性病管理流程
- 危險性較大的分部分項工程安全監(jiān)理實施細(xì)則
- 2025年1月浙江省高考英語試卷(含答案解析)+聽力錄音稿+聽力音頻
- 黑龍江齊齊哈爾市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版綜合練習(xí)(下學(xué)期)試卷及答案
- 人教版五年級數(shù)學(xué)下冊全套試卷附完整答案
- 2025年廣東廣州市黃埔區(qū)人民政府永和街道辦事處招聘政府聘員7人高頻重點提升(共500題)附帶答案詳解
評論
0/150
提交評論