版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、8.1 面向对象程序设计方法概述8.2 类的声明和对象的定义8.3 类的成员函数8.4 对象成员的引用8.5 类的封装性和信息隐蔽8.6 类和对象的简单应用举例第8章 类和对象的特性8.1 面向对象程序设计(OOP)方法概述传统的面向过程的程序设计方法是围绕功能进行的,用一个函数实现一个功能。当程序规模大、数据很多、数据结构复杂、功能种类繁多时,程序设计者会难以应付。面向对象的程序设计的设计思路是围绕数据对象进行的,先将数据和对数据的操作封装成一个个对象,然后调用各个对象完成所需的任务。对大型程序设计来说,面向对象程序设计的方法十分有效,能大大降低程序设计者的工作难度,减少出错的机会。OOP的
2、最重要的特性:抽象-将一个个同类的个体抽象成一个“类” 如:张三、李四等具体的人抽象出 “人”的概念封装和数据隐藏 将数据和对数据的操作代码封装在一个对象中,形成一个基本单位。对象中的数据可以对外部隐蔽。8.1 面向对象程序设计(OOP)方法概述继承 一个新类可以利用已有的类的基础上建立起来,该新类是已有类(叫基类)的派生类。派生类中含有基类的数据和操作,即继承了基类的内容。可重用代码 利用派生类继承机制,可以重用已有软件的大部分代码。从已有软件的类中派生出新类,新类可使用基类的代码。这样可减少编程工作量。多态性 利用派生类继承机制,各个派生类既有基类的共同特性,又有各个派生类自己新增的特性。
3、 例:设计求圆的周长和面积的程序。 面向过程-首先想的是处理方法(过程):输入圆的半径计算面积;计算周长;显示相关的计算结果面向过程和面向对象的编程例:设计求圆的周长和面积的程序。 面向过程: 要输入圆的半径;=在main函数中输入计算面积;=调用一个函数计算面积;计算周长;=调用一个函数计算周长;显示相关的计算结果; =在main函数中输出结果面向过程的编程面向过程方法:求圆的面积 / 计算圆的面积和周长#includeusing namespace std;const float pi = 3.1415 ;float area(float); /函数原型声明float girth(floa
4、t); /函数原型声明 int main () float r ; cout r ; cout radius = r endl ; cout girth = girth( r ) endl ; cout area = area ( r ) endl ; return 0;/定义求周长函数float girth(float r) return (2*pi*r);/定义求面积函数float area(float r) return (pi*r*r);面向过程首先考虑遵循的步骤;然后才考虑如何表示这些数据;可能提供一个菜单选择是输入还是计算还是输出。面向对象设计有关圆的程序,跟踪的对象是圆首先考虑的
5、是数据:圆的半径;不仅要考虑如何表示数据,还要考虑如何使用数据;因此要有一个“类”表示圆的各个方面:表示圆的数据:半径一些处理该数据的方法: 首先要有获得“圆”信息的方法; 其次,要有关于“圆”的各种计算方法,如:周长、面积等。另外还需要一些更新和显示“圆”信息的方法。#includeclass Circle double radius ; public : void Set_Radius( double r ) radius = r ; double Get_Radius( ) return radius ; double Get_Girth( ) return 2 * 3.14f * ra
6、dius ; double Get_Area( ) return 3.14f * radius * radius ; ;int main( ) Circle A, B ; A.Set_Radius( 6.23 ) ; cout A.Radius = A.Get_Radius( ) endl ; cout A.Girth = A.Get_Girth( ) endl ; cout A.Area = A.Get_Area( ) endl ; B.Set_Radius( 10.5 ) ; cout B.radius = B.Get_Radius( ) endl ; cout B.Girth= B.Ge
7、t_Girth( ) endl ; cout B.Area = B.Get_Area( ) endl ; return 0;1.1.2 一个简单的C+程序1.1 概述用面向对象的方法编程#includeclass Circle double radius ; public : void Set_Radius( double r ) radius = r ; double Get_Radius( ) return radius ; double Get_Girth( ) return 2 * 3.14 * radius ; double Get_Area( ) return 3.14 * rad
8、ius * radius ; ;int main( ) Circle A, B ; A.Set_Radius( 6.23 ) ; cout A.Radius = A.Get_Radius( ) endl ; cout A.Girth = A.Get_Girth( ) endl ; cout A.Area = A.Get_Area( ) endl ; B.Set_Radius( 10.5 ) ; cout B.radius = B.Get_Radius( ) endl ; cout B.Girth= B.Get_Girth( ) endl ; cout B.Area = B.Get_Area(
9、) endl ; return 0;Circle 类声明1.1.2 一个简单的C+程序1.1 概述用面向对象的方法编程#includeclass Circle double radius ; public : void Set_Radius( double r ) radius = r ; double Get_Radius( ) return radius ; double Get_Girth( ) return 2 * 3.14 * radius ; double Get_Area( ) return 3.14 * radius * radius ; ;int main( ) Circle
10、 A, B ; A.Set_Radius( 6.23 ) ; cout A.Radius = A.Get_Radius( ) endl ; cout A.Girth = A.Get_Girth( ) endl ; cout A.Area = A.Get_Area( ) endl ; B.Set_Radius( 10.5 ) ; cout B.radius = B.Get_Radius( ) endl ; cout B.Girth= B.Get_Girth( ) endl ; cout B.Area = B.Get_Area( ) endl ; return 0;数据成员:圆的半径1.1.2 一
11、个简单的C+程序1.1 概述用面向对象的方法编程#includeclass Circle double radius ; public : void Set_Radius( double r ) radius = r ; double Get_Radius() return radius ; double Get_Girth() return 2 * 3.14 * radius ; double Get_Area() return 3.14 * radius * radius ; ;int main() Circle A, B ; A.Set_Radius( 6.23 ) ; cout A.R
12、adius = A.Get_Radius() endl ; cout A.Girth = A.Get_Girth() endl ; cout A.Area = A.Get_Area() endl ; B.Set_Radius( 10.5 ) ; cout B.radius = B.Get_Radius() endl ; cout B.Girth= B.Get_Girth() endl ; cout B.Area = B.Get_Area() endl ; return 0;成员函数:对圆的操作1.1.2 一个简单的C+程序1.1 概述用面向对象的方法编程#includeclass Circle
13、 double radius ; public : void Set_Radius( double r ) radius = r ; double Get_Radius() return radius ; double Get_Girth() return 2 * 3.14 * radius ; double Get_Area() return 3.14 * radius * radius ; ;int main() Circle A, B ; A.Set_Radius( 6.23 ) ; cout A.Radius = A.Get_Radius() endl ; cout A.Girth =
14、 A.Get_Girth() endl ; cout A.Area = A.Get_Area() endl ; B.Set_Radius( 10.5 ) ; cout B.radius = B.Get_Radius() endl ; cout B.Girth= B.Get_Girth() endl ; cout B.Area = B.Get_Area() endl ; return 0;建立对象(类类型变量)1.1.2 一个简单的C+程序1.1 概述用面向对象的方法编程#includeclass Circle double radius ; public : void Set_Radius(
15、double r ) radius = r ; double Get_Radius() return radius ; double Get_Girth() return 2 * 3.14 * radius ; double Get_Area() return 3.14 * radius * radius ; ;int main() Circle A, B ; A.Set_Radius( 6.23 ) ; cout A.Radius = A.Get_Radius() endl ; cout A.Girth = A.Get_Girth() endl ; cout A.Area = A.Get_A
16、rea() endl ; B.Set_Radius( 10.5 ) ; cout B.radius = B.Get_Radius() endl ; cout B.Girth= B.Get_Girth() endl ; cout B.Area = B.Get_Area() endl ; return 0;1.1.2 一个简单的C+程序1.1 概述通过对象调用类的成员函数用面向对象的方法编程8.2 类的声明和对象的定义8.2.1 类和对象的关系 类-相当于类型,是具体对象的抽象。 类不占用内存空间。 对象-是类的具体实例。是属于“类”类型的 变量。对象是占用内存空间的。8.2.2 声明类类型 举例
17、说明:#includeclass Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;void main() Tdate a ; a.Set (10, 16, 2003) ; a.Prin
18、t() ;为便于识别类,一般可约定将类名首字母大写 #includeclass Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;void main() Tdate a ; a.Set
19、(10, 16, 2003) ; a.Print() ;class Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;类声明 #includeclass Tdate public: vo
20、id Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;void main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ;class Tdate public: void Set
21、(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;关键字定义一个类标识符类名 class ,struct 都可以定义一个类: class缺省说明时,其成员被认为是私有的 struct若不特别指出,其所有成员都是公有的 类声明的关键
22、字 #includeclass Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;void main() Tdate a ; a.Set (10, 16, 2003) ; a.Print
23、() ;aTdate 类的一个对象(实例) 8.2.3 定义对象的方法先声明类类型,然后再定义对象 如:先定义了Student类类型 再定义属于Student类的对象stu; class Student . ; Student stu;2. 在声明类类型的同时定义对象 如:定义Student类类型的同时 定义属于Student类的对象stu; class Student . stu;3. 在声明类类型时不要类名,并同时定义对象 如: class . stu; #includeclass Tdate public: void Set(int m, int d, int y ) month = m
24、 ; day = d ; year = y ; int IsLeapYear( ) return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print( ) cout year . month . day endl ; private: int month; int day; int year;void main( ) Tdate a ; a.Set (10, 16, 2003) ; a.Print() ; 类由成员构成: 数据成员描述对象的属性 成员函数描述对象的方法(行为) 8.3 类的成员函数 #includeclass T
25、date public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear( ) return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print( ) cout year . month . day endl ; private: int month; int day; int year;void main() Tdate a ; a.Set (10, 16, 2003) ; a.Print() ;数据成员数据成员#in
26、cludeclass Tdate public: void Set(int m , int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear( ) return ( year%4 = 0 & year%100 != 0 ) | | ( year%400 = 0); void Print( ) cout year . month . day endl ; private: int month; int day; int year;void main() Tdate a ; a.Set (10, 16, 2003) ; a.Pri
27、nt() ;类中定义成员函数直接在类中定义成员函数代码#includeclass Tdate public: void Set(int m, int d, int y ) ; int IsLeapYear( ) ; void Print( ) ; private: int month; int day; int year; void Tdate:Set(int m, int d, int y ) month = m ; day = d ; year = y ; int Tdate:IsLeapYear( ) return ( year%4 = 0 & year%100 != 0 )|( yea
28、r%400 = 0); void Tdate:Print( ) cout year . month . day endl ; 在类外定义成员函数: 作用域限定符类中声明函数,类外定义代码 #includeclass Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl
29、; private: int month; int day; int year;void main() Tdate a ; a.Set (10, 16, 2003) ; a.Print( ) ;成员的性质由关键字public、protected、private 决定public 公有 公有段的成员是提供给外部的接口protected 保护 保护段成员在该类和它的派生类中可见private 私有 私有段成员仅在类中可见各段中既可以包含数据成员,也可以包含成员函数成员访问限定符#includeclass Tdate public: void Set(int m, int d, int y ) mo
30、nth = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout year . month . day endl ; private: int month; int day; int year;void main( ) Tdate a ; a.Set (10, 16, 2003) ; a.Print( ) ;类说明的一般形式为: class 类名 public:公有段数据成员和成员函数 ; protected: 保护段数
31、据成员和成员函数 ; private:私有数据成员和成员函数 ; ; 类声明的一般形式例 学生类的定义class Student public: void display( ) / 公有的成员函数 coutnum:numendl; coutname:nameendl; coutsex:sexendl; ; private: int num; / 私有的数据成员 string name; char sex;在类内定义成员函数例 学生类的定义class Student public: void display( ); / 公有的成员函数 private: int num; / 私有的数据成员 st
32、ring name; char sex;void Student:display( ) coutnum:numendl; coutname:nameendl; coutsex:sexendl; ;在类内声明成员函数在类外定义成员函数#includeclass Tdate public: void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return ( year%4 = 0 & year%100 != 0 )|( year%400 = 0); void Print() cout ye
33、ar . month . day endl ; private: int month; int day; int year;void main( ) Tdate a , b, c ; a.Set (10, 16, 2003) ; a.Print( ) ; b.Set (12, 16, 2003) ; b.Print( ) ; c.Set (12, 16, 2003) ; c.Print( ) ;8.3.4 成员函数的存储方式 属于同一类的不同对象a, b, c中的数据成员的值是不同的,而同一类的不同对象a, b, c的成员函数的代码是相同的。如:a.month , b.month, c.mon
34、th 是不同的数据 a.Set( ) , b.Set( ) , c.Set( ) 三个函数使用的数据分别是a, b, c 中的数据,但函数代码是公用的。8.3.4 成员函数的存储方式class Student /声明类类型 public: int num; char name20; float score; void display( ) coutnum:numendl; coutname:nameendl; coutsex:sexnum p-score p-display( );引用 Student stud1; Student &stud2=stud1; stud2.num stud2.s
35、core stud2.display( );成员运算符class Student public: int num; char name20; float score; void display( ) coutnum:numendl; coutname:nameendl; coutscorescorenum=1001; strcpy(p-name,zhang san); p-score=89.5; p-display(); return 0;指针int main() Student *p=new Student; p-num=1001; strcpy(p-name,zhang san); p-s
36、core=89.5; p-display(); delete p; return 0;引用int main() Student stu1; Student &s=stu1; s.num=1001; strcpy(,zhang san); s.score=89.5; cout*&*endl; s.display(); return 0;公有的还是私有的class Student public: = private: /私有成员 int num; char name20; float score; void display( ) coutnum:numendl; coutname:na
37、meendl; coutscorescoreendl; ;int main() Student stud1; /定义Student 类的对象 stud1.num=1001; /stud1.num 是私有成员,不能在类外使用 strcpy(, “zhang san”); stud1.score=89; stud1.display(); return 0;公有的还是私有的无论类成员是数据成员还是成员函数,都可以在类的公有部分或私有部分中声明它;但隐藏数据是OOP的主要目标之一,因此数据项通常放在私有部分;将作为类接口的成员函数放在公有部分,否则,就无法从程序中调用这些函数.8.
38、5 类的封装性和信息隐蔽8.5.1公有接口与私有实现的分离数据隐藏:让数据表示成为私有,使得数据只能被授权的函数访问;在声明一个类时,一般都是把所有的数据成员指定为私有的,使它们对外隔离。把需要让外界调用的成员函数指定为公用的。在类外虽然不能直接访问私有数据成员,但可以通过调用公用的成员函数来使用甚至修改私有数据成员。数据隐藏class Student private: /私有成员数据 int num; char name20; float score; public: void display( ) coutnum:numendl; coutname:nameendl; coutscores
39、coreendl; ;int main() Student stud1; /定义Student 类的对象 stud1.num=1001; /非法,num是私有成员,不能再类外引用 strcpy(, “zhang san”); /非法 stud1.score=89; /非法 stud1.display( ); /合法 return 0;类声明中增加input成员函数class Student private: /私有成员数据 int num; char name20; float score; public: /公有成员函数接口 void display( ) coutnum
40、:numendl; coutname:nameendl; coutscorescoreendl; ; void input(int no, char *nam, float s);void Student:input(int no , char *nam, float s)num=no; strcpy(name, nam); score=s;使用类int main() Student stu1; stu1.input(1001,zhang san,89.5); stu1.display( ); return 0;创建一个程序,使用类对象,测试类的特性.改进类声明class Student pr
41、ivate: int num; char name20; float score3; float aver; void average( ); public: void display( ) ; void input(int n, char *p, float s) ; void show_aver( ); ;数据:三门课成绩、平均分方法:求平均分、显示平均分成员函数定义void Student:input(int no , char *pnam, float *ps)num=no; strcpy(name, pnam); score0=ps0; score1=ps1; score2=ps2;
42、void Student:display( ) coutnnum:numendl; coutname:nameendl; coutscore:score0 score1 score2endl; void Student:average( )aver=(score0+score1+score2)/3;void Student:show_aver( ) average( ); coutn average=averendl;主函数int main( ) Student stu1; float s3=60,70,80; stu1.input(1001,“zhang san”, s); / 将1个学生的
43、数据存入stu1中 stu1.display( ); / 输出stu1中的学生数据 stu1.show_aver( ); / 输出stu1中的平均分 return 0;改主函数:输入、输出10学生int main( ) Student stu10; int no; char name20; float s3; int i; for ( i=0; i10; i+ ) cout“输入第”i+1“个学生数据:”nonames0s1s2; stui.input(no, name, s ); for ( i=0; i10; i+ ) cout“第”i+1“个学生:”; stui.display( );
44、stui.show_aver( ); return 0;8.5.2 类声明和成员函数定义的分离 在面向对象的程序开发中,一般做法是将类的声明(其中包含成员函数的声明)放在指定的头文件中,用户如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,以减少工作量,节省篇幅,提高编程的效率。 为了实现上一节所叙述的信息隐蔽,对类成员函数的定义一般不放在头文件中,而另外放在一个文件中。将声明Student类安排在student.h文件/ student.h 第1个文件class Student private: int num; char name20; float score3;
45、 float aver; void average( ); public: void display( ) ; void input(int n, char *p, float s) ; void show_aver( ); ;将定义Student类的成员函数安排在student.cpp文件/ student.cpp 第2个文件#include #include student.h“using namespace std;void Student:input(int no , char *pnam, float *ps)num=no; strcpy(name, pnam); score0=ps
46、0; score1=ps1; score2=ps2;void Student:display( ) coutnnum:numendl; coutname:nameendl; coutscore:score0 score1 score2endl; void Student:average( ) aver=(score0+score1+score2)/3;void Student:show_aver( ) average( ); coutn average=averendl; 将包括主函数在内的内容安排在源文件main.cpp/ main.cpp 第3个文件#include #include st
47、udent.husing namespace std;int main( ) Student stu10; int no; char name20; float s3; int i; for ( i=0; i10; i+ ) cout“输入第”i+1“个学生数据:”nonames0s1s2; stui.input(no, name, s ); for ( i=0; i10; i+ ) cout“第”i+1“个学生:”; stui.display( ); stui.show_aver( ); return 0;这是一个包括3个文件的程序,组成两个文件模块: 一个是主模块main.cpp,一个是s
48、tudent.cpp。在主模块main.cpp中包含头文件student.h。在模块student.cpp中也包含头文件student.h。编译时,分别编译2个cpp文件,得到2个obj文件,在连接成1个exe文件。在实际编程中,并不是将一个类声明做成一个头文件,而是将若干个常用的功能相近的类声明集中在一起,形成类库。类库有两种: 一种是C+编译系统提供的标准类库;一种是用户根据自己的需要做成的用户类库,提供给自己和自己授权的人使用,这称为自定义类库。在程序开发工作中,类库是很有用的,它可以减少用户自己对类和成员函数进行定义的工作量。 类库包括两个组成部分: (1)类声明头文件(如studen
49、t.h); (2)已经过编译的成员函数的定义,它是目标文件(如 student.obj)。 用户只需把类库装入到自己的计算机系统中(一般装到C+编译系统所在的子目录下),并在程序中用#include命令行将有关的类声明的头文件包含到程序中,就可以使用这些类和其中的成员函数,顺利地运行程序。 由于要求接口与实现分离,为软件开发商向用户提供类库创造了很好的条件。开发商把用户所需的各种类的声明按类放在不同的头文件中,同时对包含成员函数定义的源文件进行编译,得到成员函数定义的目标代码。软件商向用户提供这些头文件和类的实现的目标代码(不提供函数定义的源代码)。用户在使用类库中的类时,只需将有关头文件包含
50、到自己的程序中,并且在编译后连接成员函数定义的目标代码即可。 由于类库的出现,用户可以像使用零件一样方便地使用在实践中积累的通用的或专用的类,这就大大减少了程序设计的工作量,有效地提高了工作效率。类和结构体的区别C+对结构体进行了扩展,使之具有与类相同的特性;唯一的区别是, 结构体的默认访问类型是public ,而类为private.C+程序员通常使用类来实现类描述,而把结构体限制为只表示纯粹的数据对象或没有私有部分的类.小结指定类设计的第一步是提供类声明,典型的类声明格式如下;class 类名 private: 数据成员、成员函数 public:成员函数 ;公有部分的内容构成设计的抽象部分公
51、有接口第二步是实现类成员函数创建类的实例对象向对象发送消息8.6 类和对象的简单应用举例例8.1 最简单的例子。#include using namespace std;class Time /定义Time类public: /数据成员为公用的 int hour; int minute; int sec;int main( ) Time t1; /定义t1为Time类对象 cint1.hour; /输入设定的时间 cint1.minute; cint1.sec; coutt1.hour:t1.minute:t1.secendl; return 0;例8.3 将程序改用含成员函数的类来处理。#in
52、clude using namespace std;class Timepublic: void set_time( ); /公用成员函数 void show_time( ); /公用成员函数 private: /数据成员为私有 int hour; int minute; int sec;int main( ) Time t1; /定义对象t1 t1.set_time( ); / 向t1的数据成员输入数据 t1.show_time( ); / 输出t1的数据成员的值Time t2; / 定义对象t2t2.set_time( ); / 向t2的数据成员输入数据t2.show_time( ); /
53、 输出t2的数据成员的值return 0;void Timeset_time( ) /在类外定义set_time函数 cinhour; cinminute; cinsec;void Timeshow_time( ) /在类外定义show_time函数 couthour:minute:secendl;例8.4 找出一个整型数组中的元素的最大值。这个问题可以不用类的方法来解决,现在用类来处理,读者可以比较不同方法的特点。#include using namespace std;class Array_max /声明类public: /以下3行为成员函数原型声明 void set_value( ); /对数组元素设置值 void max_value( ); /找出数组中的最大元素 void show_value( ); /输出最大值 private: int array10; /整型数组 int max; /max用来存放最大值;void Array_maxset_value( ) /成员函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经典小学语文句子练习集锦
- 2025-2030中国墙纸墙布行业环保趋势与设计创新分析报告
- 家具金属滑轨重载能力提升创新创业项目商业计划书
- 复古风室内设计创新创业项目商业计划书
- 多功能厨房剪与剥虾器创新创业项目商业计划书
- 西藏示范名校2026届化学高三第一学期期中考试模拟试题含解析
- 山西省2026届化学高一第一学期期末质量检测模拟试题含解析
- 安徽省三校2026届高二化学第一学期期中综合测试模拟试题含解析
- 手术计划执行与检查记录规范文本
- 企业增资扩股财务处理案例实操
- 建筑工程节能专项施工方案
- 垫片基础知识培训课件
- 老年护理服务质量管理职责与标准
- 二零二五年度飞机租赁及航空器改装合同3篇
- 10KV软启动柜技术规范书
- 《传输网运维规程》课件
- DB2201T 24-2022 梅花鹿鹿肉分割技术规范
- 数字化解决方案设计师职业技能竞赛参考试题库(含答案)
- 外墙外保温(石墨聚苯板)及装修施工方案
- 鱼塘租赁与承包协议
- 安徽省建筑工程预防高处坠落安全管理措施
评论
0/150
提交评论