




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第3章面向对象编程基础,1.理解基本概念2.理解类3.使用构造函数4.学习方法5.学习属性,掌握,2,姓名、性别、年龄等:属性学习课程、参加社会活动:方法,3.1面向对象编程概念,1.对象具有属性和操作(方法)的实体。属性:对象所处的状态方法:用于改变对象状态以达到特定的功能对象有一个唯一的标识名2.类在对象之上的抽象,一种抽象的数据类型3.类是对象的模板,对象是类的具体化或类的实例示例:学生类各位同学对象,3,对象与类,属性,型号,价格,里程,行为,起动,停车,行驶,属性,车轮数量,档的数量,行为,加速,换档,刹车,属性,名称,颜色,品种,行为,摇尾巴,吃东西,犬吠,4,面向对象程序设计在处理对象时,必须遵循的三个原则:,1封装用一个框架把数据和代码组合在一起,形成一个对象。类是支持对象封装的工具,对象则是封装的基本单元。2继承利用继承可以创建分等级层次的类,继承是父类和子类之间共享数据和方法的机制,通常把父类称为基类,子类称为派生类。单继承:一个基类可以有任意数目的派生类,即一父多子多继承:一个类若有两个或两个以上的直接基类,即一子多父,称为多重继承,C#通过接口来实现3多态性同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。分为静态多态和动态多态,根据参数的差别直接调用对象方法,根据基类间接调用对象方法,5,3.2类,属性集信息是C#语言为程序中定义的各种实体附加一些说明信息,是C#语言的一个重要特征。属于高级编程内容,一般涉及不到。类名:唯一标识名类基:直接基类或接口。默认基类是object类,多个接口之间用逗号相隔类修饰符访问权限、类的类型等,注意同一修饰符不允许出现多次,见表3.1,6,表3.1类修饰符,示例:classStudent/类主体,7,3.2.2类的成员,类体(类主体)用于定义该类的成员用一对花括号括起来,由两部分组成:1.类体中以类成员声明形式引入的类成员包括:常数声明、字段声明、方法声明、属性声明、事件声明、索引器声明、运算符声明、构造函数声明、析构函数声明、静态构造函数、类型声明等2.直接从基类继承而来的成员,8,一、成员类型:(1)静态成员在字段、方法、属性、事件、运算符和构造函数声明中含有publicstatic修饰符(2)实例成员在字段、方法、属性、事件、运算符和构造函数声明中不含有publicstatic修饰符二、默认成员访问修饰符private,类成员注意点:,9,classProgramclassAClasspublicstaticintx=1;publicinty=2;staticvoidMain(stringargs)AClassab=newAClass();Console.WriteLine(y=0,x=1,ab.y,AClass.x);,10,1常数声明,常数修饰符new、public、protected、private、internalpublic:访问不受限制protected:访问仅限于包含类或从包含类派生的类型internal:访问仅限于当前程序集。private:访问仅限于包含类。类型sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、枚举类型或引用类型。常数表达式的值类型应与目标类型一致,或者通过隐式转换规则转换成目标类型。,11,例如:classA_constpublicconstintX=10;constdoublePI=3.14159;/默认访问修饰符privateconstdoubleY=0.618+3.14;注意1.常数表达式的值是一个可以在编译时计算的值注意2.常数声明不允许使用static修饰符,只能通过类访问。classTestpublicstaticvoidMain()A_constm=newA_const();Console.WriteLine(“X=0,PI=1,Y=2”,A_const.X,A_const.PI,A_const.Y);,12,2字段声明,语法形式:属性集信息字段修饰符类型变量声明列表;变量声明列表标识符或用逗号“,”分隔的多个标识符,并且变量标识符还可用赋值号“=”设定初始值。字段修饰符new、public、protected、private、internal、static、readonly、volatilestatic:静态变量。利用类直接访问静态变量,利用类的实例(对象)访问非静态变量readonly:只读变量,声明时或在构造函数中赋值,一旦赋值不可改变。与const常量不同,const常量编译时赋值计算。volatile:表示字段可能被多个并发执行的进程修改。,13,【例3.1】通过构造函数给只读字段赋值,usingSystem;publicclassAreapublicreadonlydoubleRadius;/Radius是只读字段privatedoublex,y;publicdoubleSize;publicstaticdoubleSum=0.0;publicArea()Radius=1.0;/通过构造函数对radius赋值classTestpublicstaticvoidMain()Areas1=newArea();/s1.Radius=2;Console.WriteLine(Radius=0,Size=1,Sum=2,s1.Radius,s1.Size,Area.Sum);/静态字段通过类访问Area.Sum,实例字段通过对象访问s1.SizeConsole.Read();,出错了!无法修改只读字段,14,3.2.3构造函数和析构函数,1)实例构造函数的声明语法形式:属性集信息构造函数修饰符标识符(参数列表):base(参数列表):this(参数列表)构造函数语句块,public,与类名相同没有返回值,构造函数重载:参数个数或类型不同,调用基类同参数列表的构造函数,调用本类同参数列表的构造函数,15,构造函数修饰符public、protected、internal、private、extern一般地,构造函数总是public类型的。如果是private类型的,表明类不能被外部类实例化。标识符(参数列表opt)构造函数名必须与这个类同名,无返回类型和返回值构造函数可以有0n个参数构造函数重载3.用new运算符创建一个类的对象时,类名后的一对圆括号提供初始化列表,系统根据这个初始化列表的参数个数、参数类型和参数顺序调用不同的构造函数。,实例构造函数注意点:,16,【例3.2】Time类的构造函数及其重载,usingSystem;publicclassTimeprivateinthour,minute,second;publicTime()hour=minute=second=0;publicTime(inth)hour=h;minute=second=0;publicTime(inth,intm)hour=h;minute=m;second=0;publicTime(inth,intm,ints)hour=h;minute=m;second=s;,publicstringgetTime()returnhour.ToString()+:+minute.ToString()+:+second.ToString();,Console.WriteLine(t1=0,t1.getTime();,17,【例3.3】构造函数初始化,usingSystem;classPointpublicdoublex,y;publicPoint()x=0;y=0;publicPoint(doublex,doubley)this.x=x;/当this在实例构造函数中使用时,this.y=y;/它的值就是对该构造的对象的引用classTestpublicstaticvoidMain()Pointa=newPoint();Pointb=newPoint(3,4);/用构造函数初始化对象Console.WriteLine(a.x=0,a.y=1,a.x,a.y);Console.WriteLine(b.x=0,b.y=1,b.x,b.y);Console.Read();,a.x=0,a.y=0,b.x=3,b.y=4,18,构造函数注意点:,若类中没有提供构造函数,则CLR会自动提供一个默认的构造函数一旦类中提供了自定义的构造函数,系统则不提供默认的构造函数不必显示调用构造函数实例构造函数不能被继承,19,派生类构造函数的调用,调用时机:创建派生类的对象时,即new构造函数不被继承派生类构造函数在执行前,首先显式或隐式地调用基类构造函数默认调用基类的无参数构造函数除非显式地指定调用有参数构造函数this关键字引用类的当前实例base关键字用于从派生类中访问基类的成员调用基类上已被其他方法重写的方法指定创建派生类实例时应调用的基类构造函数,20,【例3.4】派生类构造函数及其调用,usingSystem;classPointprivateintx,y;publicPoint()x=0;y=0;Console.WriteLine(Point()constructor:0,this);publicPoint(intx,inty)this.x=x;this.y=y;Console.WriteLine(Point(x,y)constructor:0,this);classCircle:Pointprivatedoubleradius;publicCircle()/默认约定调用基类的无参构造函数Point()Console.WriteLine(Circle()constructor:0,this);publicCircle(doubleradius):base()this.radius=radius;Console.WriteLine(Circle(radius)constructor:0,this);publicCircle(intx,inty,doubleradius):base(x,y)this.radius=radius;Console.WriteLine(Circle(x,y,radius)constructor:0,this);,classTeststaticvoidMain()Pointa=newPoint();Circleb=newCircle(3.5);Circlec=newCircle(1,1,4.8);Console.Read();,1,3,2,5,4,21,2)静态构造函数的声明语法形式:属性集信息静态构造函数修饰符标识符()静态构造函数体静态构造函数修饰符externstatic或者staticextern。如有extern修饰,则是一个外部静态构造函数,不提供任何实际的实现,静态构造函数体仅仅是一个分号标识符是静态构造函数名,必须与类同名且不能有参数静态构造函数体只能对静态数据成员进行初始化,22,静态构造函数不可继承,不能直接调用调用时机:创建类的实例引用类的任何静态成员至多被执行一次若类没有声明静态构造函数,而又包含带有初始设定的静态字段时,编译器会自动生成一个默认的静态构造函数,静态构造函数注意点:,23,2析构函数,语法形式:属性集信息extern标识符()析构函数体标识符必须与类名相同,前面需加“”析构函数不能写返回类型,也不能带参数,一个类最多只能有一个析构函数,24,析构函数注意点,析构函数不能由程序显式地调用,而是由系统在释放对象时自动调用派生类对象的析构函数调用链:1)执行派生类的析构函数2)执行基类的析构函数,直到调用object类的析构函数为止,与执行构造函数的顺序相反,25,第3章面向对象编程基础,1.理解基本概念2.理解类3.使用构造函数4.学习方法5.学习属性,掌握,26,回顾,对象具有属性和操作(方法)的实体类对象的抽象,抽象的数据类型类是对象的模板对象是类的具体化或类的实例,27,类的成员,1.类体中以类成员声明形式引入的类成员包括:常数声明、字段声明、构造函数声明、析构函数声明、静态构造函数、方法声明、属性声明等2.直接从基类继承而来的成员,28,访问修饰符,public访问不受限制protected只能被本身或派生类的实例访问private只能被本身访问static静态,非实例,29,构造函数,构造函数实例构造函数与类名同名在类进行new运算(即类实例化时)this:引用当前类的实例base:用于从派生类中访问基类的成员调用基类上已被其他方法重写的方法指定创建派生类实例时应该调用的基类构造函数调用顺序先基类后派生类,30,3.3方法,1.C#中所有的变量、方法都必须封装在类中2.对象间、类间只能通过类所提供的方法进行互操作3.从方法的声明、方法的参数、静态方法与实例方法、方法的重载与覆盖等方面理解,31,表3.2方法修饰符,32,表3.3修饰符的无效组合,33,【例3.6】下面程序中的StackTp类定义了几个方法以模拟实现一个压栈操作。,usingSystem;classStackTpintMaxSize;intTop;intStkList;publicStackTp()/构造函数MaxSize=100;Top=0;StkList=newintMaxSize;publicStackTp(intsize)/构造函数MaxSize=size;Top=0;StkList=newintMaxSize;publicboolisEmptyStack()/方法if(Top=0)returntrue;elsereturnfalse;publicboolisFullStack()if(Top=MaxSize)returntrue;elsereturnfalse;publicvoidpush(intx)StkListTop=x;Top+;,classTestpublicstaticvoidMain()StackTpST=newStackTp(20);strings1;if(ST.isEmptyStack()/调用方法s1=Empty;elses1=notEmpty;Console.WriteLine(Stackis+s1);for(inti=0;iy)tmp=x;x=y;y=tmp;if(xz)tmp=x;x=z;z=tmp;if(yz)tmp=y;y=z;z=tmp;,classTeststaticvoidMain()Myclassm=newMyclass();inta,b,c;a=30;b=20;c=10;m.Sort(refa,refb,refc);Console.WriteLine(a=0,b=1,c=2,a,b,c);Console.Read();,42,使用ref声明引用参数的注意:(1)方法的参数声明中ref关键字仅对紧跟在它后面的参数有效,而不能应用于整个参数表。例如,Sort方法中x、y、z都要加ref修饰(2)在方法的调用中也要用ref修饰实参,且实参必须为变量,实参和形参的数据类型必须完全匹配(3)在方法外(方法调用前),ref参数必须明确赋值(4)ref参数也可以用于传递引用类型的对象,43,第3章面向对象编程基础,方法声明如同C语言的“函数”访问修饰符默认为public方法参数值参数(值类型、引用类型)引用参数ref输出参数out参数数组params,方法,44,方法重载与覆盖方法签名方法覆盖new和虚方法virtualoverride属性propertyget访问器set访问器,45,3.输出参数,1.用法与ref参数相似,但为输出参数值2.只能用于从方法中传出值,因此必须在方法结束之前对out参数赋值3.在参数前加out修饰符的形式参数4.out参数也可以用于传递引用类型的对象,46,【例3.10】求一个数组中元素的最大值、最小值和平均值。,usingSystem;classMyclasspublicvoidMaxMinArray(inta,outintmax,outintmin,outdoubleavg)intsum;sum=max=min=a0;for(inti=1;imax)max=ai;if(ai=y?x:y;publicintmax(intx,inty,intz)returnmax(max(x,y),z);publicdoublemax(doublex,doubley,doublez)returnmax(max(x,y),z);,classTeststaticvoidMain()Myclassm=newMyclass();inta,b,c;doublee,f,g;a=10;b=20;c=30;e=1.5;f=3.5;g=5.5;Console.WriteLine(max(0,1)=2,a,b,m.max(a,b);Console.WriteLine(max(0,1,2)=3,a,b,c,m.max(a,b,c);Console.WriteLine(max(0,1)=2,e,f,m.max(e,f);Console.WriteLine(max(0,1,2)=3,e,f,g,m.max(e,f,g);Console.Read();,52,方法的覆盖使用new隐藏有相同签名的方法,1.当派生类与基类有相同名称或签名的成员时,在派生类中默认隐藏基类成员,但提示警告2.在派生类成员声明中加new修饰符,可以取消警告信息3.基类对象被引用到派生类对象时,访问的仍是基类的方法,静态多态,53,【例3.15】定义了一个基类Shape,含有字段域width和height,分别表示形状的宽和高,并定义了一个area方法,求形状的面积。它的派生类Triangle和Trapezia都用关键字new修饰了area方法,usingSystem;classShapeprotecteddoublewidth;protecteddoubleheight;publicShape()width=height=0;publicShape(doublex)width=height=x;publicShape(doublew,doubleh)width=w;height=h;publicdoublearea()returnwidth*height;classTriangle:Shape/三角形publicTriangle(doublex,doubley):base(x,y)newpublicdoublearea()/派生类方法与基类方法同名,编译时会有警告信息returnwidth*height/2;classTrapezia:Shape/梯形doublewidth2;publicTrapezia(doublew1,doublew2,doubleh):base(w1,h)width2=w2;newpublicdoublearea()/加new隐藏基类的area方法return(width+width2)*height/2;,classTeststaticvoidMain()ShapeA=newShape(2,4);TriangleB=newTriangle(1,2);TrapeziaC=newTrapezia(2,3,4);Console.WriteLine(A.area=0,A.area();/调Shape的area方法Console.WriteLine(B.area=0,B.area();/调Triangle的area方法Console.WriteLine(C.area=0,C.area();/调Trapezia的area方法A=B;/在C#中,基类的引用也能够引用派生类对象Console.WriteLine(A.area=0,A.area();/调Shape的area方法A=C;Console.WriteLine(A.area=0,A.area();/调Shape的area方法Console.Read();,基类方法,54,虚方法:基类的方法用关键字virtual修饰对基类的虚方法重载:派生类用关键字override修饰与基类中虚方法有相同签名的方法注意:(1)不能将虚方法声明为静态的(static)(2)不能将虚方法声明为私有的(private)(3)覆盖方法必须与它相关的虚方法匹配(4)一个覆盖方法覆盖的必须是虚方法,实现运行时多态(动态绑定),55,【例3.16】将例3.15改写,Shape类中的方法area用virtual修饰,而派生类Triangle和Trapezia用override修饰area方法。,usingSystem;classShapeprotecteddoublewidth;protecteddoubleheight;publicShape()width=height=0;publicShape(doublex)width=height=x;publicShape(doublew,doubleh)width=w;height=h;publicvirtualdoublearea()/基类中用virtual修饰符声明一个虚方法returnwidth*height;classTriangle:Shape/三角形publicTriangle(doublex,doubley):base(x,y)publicoverridedoublearea()/派生类中用override修饰符覆盖基类虚方法returnwidth*height/2;classTrapezia:Shape/梯形doublewidth2;publicTrapezia(doublew1,doublew2,doubleh):base(w1,h)width2=w2;publicoverridedoublearea()派生类中用override修饰符覆盖基类虚方法return(width+width2)*height/2;,classTeststaticvoidMain()ShapeA=newShape(2,4);TriangleB=newTriangle(1,2);TrapeziaC=newTrapezia(2,3,4);Console.WriteLine(A.area=0,A.area();/调Shape的area方法Console.WriteLine(B.area=0,B.area();/调Triangle的area方法Console.WriteLine(C.area=0,C.area();/调Trapezia的area方法A=B;Console.WriteLine(A.area=0,A.area();/调派生类Triangle的area方法A=C;Console.WriteLine(A.area=0,A.area();/调派生类Trapezia的area方法Console.Read();,派生类方法,56,3.4属性property,回顾一下例3.2(P51)。为了实现良好的数据封装和数据隐藏,类的字段成员的访问属性一般设置成private(默认)或protected利用public方法来访问私有的或受保护的字段,57,【例3.2】Time类的构造函数及其重载,usingSystem;publicclassTimeprivateinthour,minute,second;publicTime()hour=minute=second=0;publicTime(inth)hour=h;minute=second=0;publicTime(inth,intm)hour=h;minute=m;second=0;publicTime(inth,intm,ints)hour=h;minute=m;second=s;,classTeststaticvoidMain()Timet1,t2,t3,t4;t1=newTime();t2=newTime(8);t3=newTime(8,30);t4=newTime(8,30,30);t1.getTime();t2.getTime();t3.getTime();t4.getTime();,58,3.4属性,保持原有的数据封装和数据隐藏,类的字段成员的访问属性仍然设置成private(默认)或protected?不利用public方法来访问私有的或受保护的字段属性(property)属性值的读/写与字段域语法相同;利用get和set访问器实现属性值的读/写,如何做?,59,语法形式:属性集信息属性修饰符类型成员名访问器声明属性修饰符与方法修饰符(public,private,protected,)相同,包括new、static、virtual、abstract、override和4种访问修饰符的合法组合,遵循相同的规则。访问器声明声明属性的访问器,get访问器或set访问器,或者两个语法形式:get/读访问器/访问器语句块set/写访问器/访问器语句块,属性的声明方法,60,1.get访问器1.返回值类型与属性的类型相同2.在语句块中的return语句必须有一个可隐式转换为属性类型的表达式2.set访问器1.没有返回值2.有一个隐式的值参数value,类型与属性的类型相同。3.属性的种类1.读/写属性:同时包含get和set访问器的属性2.只读/只写属性:只包含get或set访问器的属性,属性中的访问器使用注意,61,【例3.17】对TextBox类的text、fontname、fontsize、multiline域提供属性方式的读/写访问。,usingSystem;classTextBoxprivatestringtext;privatestringfontname;privateintfontsize;privateboolmultiline;publicTextBox()text=text1;fontname=宋体;fontsize=12;multiline=false;publicstringText/Text属性,可读可写getreturntext;settext=value;publicstringFontName/FontName属性,只读属性getreturnfontname;publicintFontSize/FontSize属性,可读可写getreturnfontsize;setfontsize=value;publicboolMultiLine/MultiLine属性,只写setmultiline=value;,classTeststaticvoidMain()TextBoxText1=newTextBox();/调用Text属性的get访问器Console.WriteLine(Text1.Text=0,Text1.Text);Text1.Text=这是文本框;/调用Text属性的set访问器Console.WriteLine(Text1.Text=0,Text1.Text);Console.WriteLine(Text1.Fontname=0,Text1.FontName);Text1.FontSize=36;Text1.MultiLine=true;Console.WriteLine(Text1.FontSize=0,Text1.FontSize);Console.Read();,62,【例3.18】定义Label类,设置Width和Heigh属性,分别存放两点之间在水平坐标轴和垂直坐标轴上的投影长度。,usingSystem;classPointintx,y;publicintXgetreturnx;publicintYgetreturny;publicPoint()x=y=0;publicPoint(intx,inty)this.x=x;this.y=y;classLabelPointp1=newPoint();Pointp2=newPoint(5,10);publicintWidth/计算两点之间在水平坐标轴上的投影长度getreturnp2.Xp1.X;publicintHeight/计算两点之间在垂直坐标轴上的投影长度getreturnp2.Yp1.Y;,classTeststaticvoidMain()LabelLabel1=newLabel();Console.WriteLine(Label1.Width=0,Label1.Width);Console.WriteLine(Label1.Height=0,Label1.Height);Console.Read();,63,3.5综合应用实例,【例3.19】学生成绩管理程序。根据学生选修的课程及课程学分和课程成绩计算GPA,最后按GPA的值对学生进行排序。基本思路:本程序的学生总人数、课程名、课程学分可以由控制台输入,为叙述简单,假定每个学生所选修的课程相同。Course类中定义了课程名、课程学分字段域,Name属性、构造函数。Student类中定义字段:学生姓名、学号、选修课程数、Course类对象数组、成绩和GPA等属性:CourseNum静态属性、GPA属性、Name属性方法:SetCourse方法设置课程名,静态方法AddData方法给每个学生加入姓名、学号、成绩。ComputeGPA方法计算学生成绩的GPAstuSwap方法对两个Student对象内容进行交换。,64,classCoursestringcourseName;/课程名intcourseMark;/课程学分publicCourse()publicCourse(stringName,intMark)courseName=Name;courseMark=Mark;publicstringName/Name属性,课程名可读可写getreturncourseName;setcourseName=value;publicintMark/Mark属性,课程学分可读可写getreturncourseMark;setcourseMark=value;,65,加static修饰符表明这个域为所有学生类对象共享,Course类对象数组,用于设置每门课程名、课程学分,66,67,68,/根据课程的学分以及学生成绩计算GPApublicvoidComputeGPA()inti;doublesMark,sumMark=0,sumGP=0;for(i=0;i=95)sMark=4.5;elseif(stuScorei=90)sMark=4;elseif(stuScorei=85)sMark=3.5;elseif(stuScorei=80)sMark=3;elseif(stuScorei=75)sMark=2.5;elseif(stuScorei=70)sMark=2;elseif(stuScorei=65)sMark=1.5;elseif(stuScorei=60)sMark=1;elsesMark=0;sumGP+=listi.Mark*sMark;sumMark+=listi.Mark;stuGPA=sumGP/sumMark;,69,/stuSwap方法提供两个Student类对象的交换操作,注意形参被修饰为refpublicvoidstuSwap(refStudentstu1,refStudentstu2)stringname,Id;inti;intscore=newintStudent.CourseNum;doublegpa;name=stu1.Name;Id=stu1.stuID;gpa=stu1.GPA;for(i=0;iStudent.CourseNum;i+)scorei=stu1.stuScorei;stu1.stuName=stu2.stuName;stu1.stuID=stu2.stuID;stu1.stuGPA=stu2.stuGPA;for(i=0;iStudent.CourseNum;i+)stu1.stuScorei=stu2.stuScorei;stu2.stuName=name;stu2.stuID=Id;stu2.stuGPA=gpa;for(i=0;iStudent.CourseNum;i+)stu2.stuScorei=scorei;,静态属性,70,Test类中的MaxMinGPA方法求最大和最小GPA值,SortGPA方法按学生的GPA值对Student类对象数组进行排序。Test类代码如下:classTe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年企业可持续发展目标(SDGs)与可持续发展能力评价方法研究
- 2025年农业物联网在精准种植中的农业物联网设备安全性评估与认证报告
- 滇西应用技术大学《影视后期合成与特效应用技术》2023-2024学年第二学期期末试卷
- 学习动力与教育质量实证研究与策略建议
- 创新实验室建设中的教育技术应用探讨
- 糖尿病运动治疗和护理讲课件
- 新疆天山职业技术大学《设计模式》2023-2024学年第二学期期末试卷
- 林州建筑职业技术学院《包装设计及应用(实践)》2023-2024学年第二学期期末试卷
- 自贡职业技术学院《线性代数B》2023-2024学年第二学期期末试卷
- 福建农业职业技术学院《电视画面编辑》2023-2024学年第二学期期末试卷
- 墙面干挂瓷砖技术交底
- 犯罪现场制图培训教学课件
- biggs学习策略问卷SPQ-英文版
- 1379]国开电大本科《人文英语3》历年期末考试(第三大题阅读选择题)题库
- 新闻发布系统-需求规格说明书
- (完整word版)最新防雷装置检测工程质量管理手册
- DL_5000-2000_火力发电厂设计技术规程
- 四害密度监测工作实施方案
- 单相桥式整流电路通用课件
- 部编版六年级语文下册词语表(看拼音写词语)
- 血液制品发展制约因素分析:基础薄弱起步晚
评论
0/150
提交评论