您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 综合/其它 > 《NET程序设计》试卷题型及考点
试卷题型一、选择题(20小题,每小题2分,共40分)二、判断题(10小题,每小题1分,共10分)三、简答题(2小题,每小题6分,共12分)四、编程题(4题,共38分)考试知识点1、NET基础知识(1)解决方案的概念和特点;(2)CLR(公共语言运行库)、CLS(公共语言规范)、MSIL(微软中间语言)、CTS(通用类型系统)(3)例题:什么是命名空间?命名空间和类库的关系是什么?1)名称空间是对类的一种逻辑上的分组,即将类按照某种关系或联系划分到不同的名称空间下。2)名称空间又可以包含其它的名称空间,例如System.Windows.Forms,是指System名称空间下有Windows名称空间,Windows名称空间下有Forms名称空间。3)所有类库都在规定的名称空间下。2、第2章C#编程基础(1)数组的定义和使用1)数组一般用于存储同一种类型的数据,包括Object类型。2)数组是一种引用类型,而不是值类型。3)C#中除了可以有一维数组、多维数组外,还有交错型数组。3、第3章面向对象编程基础(1)类的声明;(2)构造函数;(3)方法的声明、重载和覆盖;(4)sealed类型;(5)属性;(6)装箱;装箱是将值类型隐式地转换为object类型或者转换为由该值类型实现了的接口类型。装箱一个数值会为其分配一个对象实例,并把该数值拷贝到新对象中。拆箱是显式地把object类型转换成值类型,或者把值类型实现了的接口类型转换成该值类型。(7)方法的参数描述(8)C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符,请写出并指出它们之间的区别是什么?public可以被任意存取;protected只可以被本类和其继承子类存取;internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。protectedinternal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。private只可以被本类所存取。如果不是嵌套的类,命名空间或编译单元内的类只有public和internal两种修饰。new修饰符只能用于嵌套的类,表示对继承父类同名类型的隐藏。abstract用来修饰抽象类,表示该类只能作为父类被用于继承,而不能进行对象实例化。抽象类可以包含抽象的成员,但这并非必须。abstract不能和new同时用。下面是抽象类用法的伪码:abstractclassA{publicabstractvoidF();}abstractclassB:A{publicvoidG(){}}classC:B{publicoverridevoidF(){//方法F的实现}}抽象类A内含一个抽象方法F(),它不能被实例化。类B继承自类A,其内包含了一个实例方法G(),但并没有实现抽象方法F(),所以仍然必须声明为抽象类。类C继承自类B,实现类抽象方法F(),于是可以进行对象实例化。sealed用来修饰类为密封类,阻止该类被继承。同时对一个类作abstract和sealed的修饰是没有意义的,也是被禁止的。4、第4章面向对象编程进阶(1)类型转换;在整型之间进行转换时,小范围类型可以隐式转换为大范围类型,但大范围类型转换为小范围类型时需要使用显式转换。(2)接口的定义和实现;(3)异常处理;(4)委托和事件(5)例题:错误和异常有什么区别?为什么要进行异常处理,用于异常处理的语句有哪些?错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象。当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码),以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对象。当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错误的信息及发生的时间和位置)来响应该错误。导致出现错误和随后异常的因素包括用户错误、资源失败和编程逻辑失败。这些错误与代码实现特定任务的方法有关,而与该任务的目的无关。如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。用于异常处理的语句有:try-catch语句、try-catch-finally语句、throw语句。(6)例题:接口和抽象类的区别是什么?一、抽象类:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。二、接口:接口是引用类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化;2、包含未实现的方法声明;3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);另外,接口有如下特性:接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。三、抽象类和接口的区别:1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类.而接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做。。。”.抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中.2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;3.一个类一次可以实现若干个接口,但是只能扩展一个父类4.接口可以用于支持回调,而继承并不具备这个特点.5.抽象类不能被密封。6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的.7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。但是,允许抽象类将接口方法映射到抽象方法上。8.抽象类实现了oop中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的座位子类去实现。9.好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。10.尽量避免使用继承来实现组建功能,而是使用黑箱复用,即对象组合。因为继承的层次增多,造成最直接的后果就是当你调用这个类群中某一类,就必须把他们全部加载到栈中!后果可想而知.(结合堆栈原理理解)。同时,有心的朋友可以留意到微软在构建一个类时,很多时候用到了对象组合的方法。比如asp.net中,Page类,有ServerRequest等属性,但其实他们都是某个类的对象。使用Page类的这个对象来调用另外的类的方法和属性,这个是非常基本的一个设计原则。11.如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法.四、抽象类和接口的使用:1.如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。2.如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。3.如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。4.抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。以下是我在网上看到的几个形象比喻,真的非常不错,呵呵:1.飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;但是F22属于飞机抽象类,鸽子属于鸟抽象类。2.就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承);一个门可以有锁(接口)也可以有门铃(多实现)。门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。5、第5章Windows应用程序(1)窗体及其常用属性;(2)标签、按钮的简单编程;(3)多文档窗体界面的创建6、第6章GDI+(1)创建Graphics对象;(2)笔;(3)画刷7、第8章数据库应用(1)ADO.NET概述ADO.NET是与数据库访问操作有关的对象模型的集合,它基于Microsoft的.NETFramework,在很大程度上封装了数据库访问和数据操作的动作。ADO.NET同其前身ADO系列访问数据库的组件相比,做了以下两点重要改进:ÜADO.NET引入了离线的数据结果集(DisconnectedDataSet)这个概念,通过使用离线的数据结果集,程序员更可以在数据库断开的情况下访问数据库。ÜADO.NET还提供了对XML格式文档的支持,所以通过ADO.NET组件可以方便地在异构环境的项目间读取和交换数据。编程题示例:1、编写一个控制台应用程序,完成下列功能。(1)创建一个类,用无参数的构造函数输出该类的类名。(2)增加一个带有一个string类型参数的构造函数,此构造函数中将实参传递的字符串打印出来。(3)在Main方法中创建属于这个类的一个对象,不传递参数。(4)在Main方法中创建属于这个类的另一个对象,传递一个字符串“Thisisastring.”。(5)在Main方法中声明类型为这个类的一个具有5个对象的数组,但不要实际创建分配到数组里的对象。【解答】usingSystem;classTest1{publicTest1(){Console.WriteLine(this);}publicTest1(stringstr){Console.WriteLine(str);}publicstaticvoidMain(){Test1t1=newTest1();Test1t2=newTest1(Thisisastring.);Test1[]t3=newTest1[5];}}输出结果:Test1Thisisastring.2、编写一个控制台应用程序,要求用户输入5个大写字母,如果用户输入的信息不满足要求,提示帮助信息并要求重新输入。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceinputCapitalLetter{classProgram{staticvoidMain(){boolok=false;while(ok==false){Console.Write(请输入5个大写字母:);stringstr=Console.ReadLine();if(str.Length!=5){Console.WriteLine(你输入的字符个数不是5个,请重新输入。);}else{ok=true;for(inti=0;i5;i++){charc=str[i];if(c'A'||c'Z'){Console.WriteLine(第{0}个字符“{1}”不是大写字母,请重新输入。,i+1,c);ok=false;break;}}}}}}}15.编写一个控制台应用程序,求1000之内的所有“完数”。所谓“完数”是指一个数恰好等于它的所有因子之和。例如,6是完数,因为6=1+2+3。【解答】usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacecompleteNumber{classProgram{staticvoidMain(string[]args){for(inti=2;i=1000;i++){ints=1;stringstr=1;for(intj=2;j=(int)Math.Sqrt(i
本文标题:《NET程序设计》试卷题型及考点
链接地址:https://www.777doc.com/doc-1279995 .html