面向对象程序设计复习题答案_第1页
面向对象程序设计复习题答案_第2页
面向对象程序设计复习题答案_第3页
面向对象程序设计复习题答案_第4页
面向对象程序设计复习题答案_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计复习选择题1. 一个设计得好的面向对象系统具有(b)特征。 a 低内聚、低耦合 b 高内聚、低耦合 c 高内聚、高耦合 d 低内聚、高耦合2. 面向对象程序设计的特点主要概括为(c)。a 可分解性、可组合性、可分类性 b 继承性、封装性、多态性c 抽象封装性、继承性、多态性 d 封装性、易维护性、可扩展性、可重用性3. 关于c#程序的书写,下列不正确的说法是( d )。a. 区分大小写b. 一行可以写多条语句c. 一条语句可写成多行d. 一个类中只能有一个main()方法,因此多个类中可以有多个main()方法4. 关于c#语言的基本语法,下列哪些说法正确的是(c)a. c#语

2、言使用using 来引用需要用到的命名空间;b. 用c#编写的程序中,main 函数是唯一允许的全局函数;c. c#语言中使用的名称严格区分大小写;d. c#中一条语句必须写在一行内;5 以下标识符中,正确的是(a)。a. _nnameb. typeofc. 6bd. x5#6.字符串连接运算符包括&和(a)。a. + b. - c. * d. /7.拆箱是关于:(b)a、值类型到引用类型的转换 b、引用类型到值类型的转换c、引用类型到引用类型的转换 d、值类型到值类型的转换8.装箱是关于:(a)a、值类型到引用类型的转换 b、引用类型到值类型的转换c、引用类型到引用类型的转换 d、值类型到值

3、类型的转换9下列引用类型和值类型描述正确的是(a)。a. 引用类型变量保存内存地址,值类型直接保存变量值b. 引用类型在变量中直接保存变量值,值类型保存内存地址c. 引用类型和值类型保存数据的方式相同d. .net framework不支持值类型,因为所有的类型都是引用类型了10.一个类中的静态方法的调用可以:(a) a、通过类名调用 b、通过实例化的对象调用c、在主方法中直接调用 d、在同一个类中的某一方法中直接调用11.以下数据类型中,属于引用类型的是:(a)a、string类型 b、double类型 c、int类型 d、 char类型12.下列类型中为值类型的是(c)a. 字符串类型b.

4、 树组类型c. 枚举类型d. 接口类型13.decimal类型和浮点类型都可以表示小数,正确说法:(c)a. 两者没有任何区别 b. 小数类型比浮点类型取值范围大c.小数类型比浮点类型精度高 d. 小数类型比浮点类型精度低14. 有定义语句:int ,a=new int5,6; 则下列正确的数组元素的引用是(c)。a. a(3,4) b. a(3)(4) c. a34 d. a3,415. 在c#编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用下列哪条语句?(a) a. decimal themoney; b. int themoney; c. string themoney

5、; d. double themoney; 16. 在c#中,表示一个字符串的变量应使用以下哪条语句定义?(b) a. cstring str; b. string str; c. dim str as string d. char * str; 17. c#中每个int 类型的变量占用(c)个字节的内存。a. 1 b. 2c. 4 d. 8 18.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的(c)。a. int arr = new int10,20b. int arr = int new10,20c. int , arr = new int10,20 d. int , arr

6、 = new int20;1019. 枚举型常量的值不可以是(d)类型a. int b. long c. ushort d. doule20.引用类型主要有4种:类类型、数组类型、接口类型和(c)。 a.对象类型 b.字符串类型 c.委托类型 d.整数类型21. 分析下列语句:namespace testcs public delegate void hello(string target);该语句的作用是:(d)a. 在testcs 命名空间中定义了一个名为hello 的全局方法;b. 在testcs 命名空间中声明了函数hello 的原型;c. 在testcs 命名空间中定义了一个名为he

7、llo 的函数指针;d. 在testcs 命名空间中定义了了一个名为hello 的委托类型;22. 以下关于for循环的说法不正确的是 (a)。a. for循环只能用于循环次数已经确定的情况b. for循环是先判定表达式,后执行循环体语句c. for循环中,可以用break语句跳出循环体d. for循环体语句中,可以包含多条语句,但要用花括号括起来。23下面对异常说法不正确的是(d)atry/catch块为基本引发异常的组合b在捕获异常时,可以有多个catch块c无论异常是否发生,finally块总会执行dtry块和finally 不能连用24. c#程序中,可使用try.catch 机制来处

8、理程序出现的(b)错误。a. 语法b. 运行c. 逻辑d. 拼写25. 为了能够在程序中捕获所有的异常,在catch语句的括号中使用的类名为(a)。a. exceptionb. dividebyzeroexceptionc. formatexceptiond. 以上三个均可26. c#源程序文件的默认扩展名为(c)。 a. cpp b. exe c. cs d. lik27. 下列的(d)不是构造函数的特征。a. 构造函数的函数名和类名相同b. 构造函数可以重载c. 构造函数可以带有参数d. 可以指定构造函数的返回值28.类的析构函数的作用是(d) a.一般成员函数b.类的初始化 c.对象的初

9、始化d.释放资源29.类的析构函数是在(c)调用的。 a.类创建时b.创建对象时 c.销毁对象时d.不自动调用30. 在c#程序中,可以使用(a)属性来引用处于非托管代码环境中的函数。a. dllimportb. conditionalc. stathreadd. securemethod 31对托管代码与非托管代码之间的区别描述正确的是(d)。a. 非托管代码依赖于clr提供的服务,而托管代码不需要b. 托管代码生成的应用程序为目标机器上可执行文件,非托管代码生成的应用程序为中间语言文件c. 托管代码和非托管代码之间没有区别d.托管代码依赖于clr提供的服务,而非托管代码不需要32在syst

10、em.io命名空间中(c)类是实现创建、移动、枚举目录和子目录的实例方法。adiretorybfilecdirectoryinfodfileinfo 33下面对程序集和命名空间说法正确的是(b)。a. 一个程序集只能引用一个命名空间b. 一个程序集可以引用多个命名空间,一个命名空间也可以保存在多个程序集中c. 一个程序集可以引用多个命名空间,但一个命名空间只能保存在一个程序集中d. 一个命名空间可以保存在多个程序集中,命名空间无法包含另外的命名空间34.(c)命名空间中的类和接口用于创建web 应用程序的页面?a. system.drawing b. system.io c. system.w

11、eb.ui d. system.web.service 35. ado.net 使用(b)命名空间的类访问sql server 数据库中的数据。a. system.data.oledbb. system.data.sqlclientc. system.xml.serializationd. system.io 36构成对象的两个主要因素是(a)。 a 属性和操作 b 标识和内容 c 继承和多态 d 消息和封装37下面的修饰符中(c)不是访问修饰符。apublicbprotectedcnewdinternal38. 在类的定义中,类的(b)描述了该类的对象的行为特征。a. 类名b. 方法c. 所

12、属的名字空间d. 属性39.有关类和对象的说法不正确的是(b)。a)对象是类的实例b)一个类只有一个对象c)任何一个对象只能属于一个类d)类与对象的关系和数据与变量的关系相似e)类是抽象的,对象是具体的40. 以下类myclass 的属性count 属于(b)属性.class myclassint i;int countget return i; a. 只写b. 只读c. 可读写d. 不可读不可写41. 根据下面的代码,可以确定类a与类b之间存在(a)关系。 public class a private b theb; public void amethod() theb.dosomthing

13、(); a 关联 b 泛化 c 实现 d 包含42.继承机制的作用是(d) a.信息隐藏b.数据封装 c.定义新类d.数据抽象43 已知类b是由类a继承而来,类a中有一个为m的非虚方法,现在希望在类b中也定义一个名为m的方法,若希望编译时不出现警告信息,则在类b中声明该方法时,应使用(b)方法。a. staticb. newc. overrided. virtual44.类的以下特性中,可以用于方便地重用已有的代码和数据的是(c).a.多态 b.封装 c.继承 d.抽象45. 在ado.net 中,执行数据库的某个操作,则至少需要创建(a)并设置它们的属性,调用合适的方法:a. 一个conne

14、ction 对象和一个command 对象b. 一个connection 对象和dataset 对象c. 一个command 对象和一个dataset 对象d. 一个command 对象和一个dataadapter 对象46下列说法中对 mdi子窗体描述正确的是(d)a设置mdichildform属性为trueb设置mdichild属性为falsec设置mdichild属性为trued设置mdi子窗体mdiparent属性引用父窗体实例47. 使用派生类的主要原因是(a) 。a 提高代码的可重用性 b提高程序的运行效率c 加强类的封装性 d 实现数据的隐蔽48、如果一个类至少有一个抽象方法,那

15、么就称该类为(a)。a抽象类 b接口类 c密封类 d所有类49、在c#语言中引入泛型,是为了提高 (d)。a程序运行效率 b程序通用性c类的安全性 d以上三个方面50.以下(d) 对接口方法的陈述是正确的a可以是静态的 b可以是公有的c可以是任何访问限制 d以上都不对填空题1、常用的面向对象的程序语言有:c+、 java 、 c# 等。 2定义方法时使用的参数是 形参 ,调用方法时使用的参数是 实参 。3数据类型说明符用来说明方法返回值的类型,如果没有返回值,则其类型说明符应为 void 。 4、在c#中,进行注释有两种方法:使用 / 和使用/* */符号对,其中 / 只能进行单行注释。 5、

16、使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。 6、 c#数组元素的下标从 0 开始。7.设x为int型变量,请写出描述“x是奇数”的c#语言表达式 x % 2 = 1 。8已知字符串str的值为“abcdefgh”,则表达式str.substring(1,3)的值为 bcd 。9. 当在程序中执行到 break 语句时,将结束本层循环类语句或switch语句的执行。 10. 当在程序中执行到_continue_语句时,将结束所在循环语句中循环体的一次执行。11. 在switch语句中,在分支的最后应有一个 default 选项。 12. 在c#语言中,实现从群集中取出每一个

17、元素的循环语句是 foreach 。一个命名空间除了可包含其他命名空间外,还可包含类、结构、接口、枚举、委托等成员。13.net framework 包括三个主要部分: 公共语言运行库 、 类库 和 应用模板 。14、在.net中所有类的基类是 object 。15、抽象模型越简单,它就 越抽象 ,也就越具有普遍性。抽象模型越复杂,就越 具体 。16、在学习新东西时,大脑会自动搜寻以前创建和掌握的抽象/模型,以资借鉴。这种进行特性对比,找到可供重用的近似抽象的过程又称为 模式匹配 和 模式重用 。17、委托是一种数据类型,它的作用是 允许在运行时选择要调用哪些函数 。18.传入某个属性(访问器

18、结构)的set方法的隐含参数的名称是 value 。19、在面向对象的结对关系有三种,分别是: 一对多 和 一对一 、 多对多 。20、在.net中表示接口的关键字是 interface 。21、接口可由 方法 、 属性 、事件、索引器或这四种成员类型的任意组合构成。接口不能包含 字段 。22、在类中若要实现接口成员,类中的对应成员必须是 公共的 、 非静态的 ,并且与接口成员具有相同的名称和签名。23、在ado.net中的对象有 connection 、 command 和dataset等。24、常用的sql操作语句有 select 、 update 、 insert 和 delete 等。

19、25timer控件的 interval 属性用来设置定时器tick事件发生的时间间隔。26、用以说明类中私有成员的关键字是 private 。27、对类的实例数据成员的访问格式为对象名 数据成员名 。28、类有两种用法,一种是用于 定义对象 ,另一种是通过 继承 派生新的类。29 静态成员在类中有两种情况,即 静态成员函数 和 静态数据成员 。30. 根据类的赋值兼容原则,派生类对象可以赋给 基类 的变量。31 异常处理,就是针对软件的外部环境出现意外和 错误 所作出的适当处理。32. 静态构造函数是通过 类 来调用的。简答题1. 简述面向对象程序设计的三要素。参考答案要点:在上述面向对象的基

20、本概念基础之上,不可避免地要涉及到面向对象程序设计所具有的3个共同特征:用户定义类型、继承和多态性。用户定义类型提供一种表达真实世界的直观代码,便于重用,减少代码量。继承:不修改代码的条件下进行扩展,派生类较为短小,编写(维护)更少;多态如何使同一个消息被不同类型的对象响应。2. 简述面向对象程序设计的抽象和封装。参考答案要点:抽象是人们认识事物的常用方法,比如地图的绘制。抽象的过程就是如何简化、概括所观察到的现实世界,并为人们所用的过程。抽象包括对象的状态与行为,对应到类的属性与方法。抽象出来的属性通过封装可以减少数据冗余,进行信息隐藏和保护数据完整性。3. 类与对象有什么关系?参考答案要点

21、:类是一种用户自定义的数据类型.对象是使用自定义的类名在程序中说明变量.或者说;具有类类型的变量即为对象.类是创建对象的样板;对象是类的实例。4. 判断下列类之间的关系,把它们分别列入a聚合 b 继承 c 关联 d 都不是这四类中。1大学 学院 2学生 课程 3学生 大一新生 4汽车 车门 5货车 交通工具 6公共汽车 车站 7工具条 按钮 8汽车发动机 汽车9员工 公司 10本科生 研究生参考答案:聚合:1 4 7 8继承:5 10 关联:2 6 9 都不是:35. 面向对象软件开发方法的目标参考答案要点:封装性、易维护性、可扩展性、可重用性6. 简述数据类型的“强类型“。参考答案要点:为所

22、有变量指定数据类型称为“强类型”。使用强类型有以下优点: 它为变量启用智能提示(intellisense)支持。 这允许您在输入代码时看到变量的属性和其他成员。 它会运用编译器类型检查。这将捕捉到因溢出等错误而在运行时失败的语句。这也可以在不支持方法的对象上捕捉对方法的调用。 使代码的执行速度更快。7. 简述c# 语言的优点参考答案要点: 完全面向对象的设计。 强类型安全。 很好地融合了高级语言的简明性和 c+ 的强大功能。 垃圾回收。 类似于 c 和 c+ 的语法和关键字。 使用委托取代函数指针,从而增强了类型安全和安全性8. 简述c#语言中的过程重载参考答案要点:重载过程是指使用相同的名称

23、和不同的参数列表在多个版本中定义某个过程。重载的目的是定义过程的若干个密切相关的版本,而不需要通过名称来区分它们,可通过改变参数列表达到此目的。重载版本必须在以下至少一个方面不同于所有其他重载版本:l 参数的数量l 参数的顺序l 参数的数据类型l 类型参数的数量(适用于泛型过程)l 返回类型(仅适用于转换运算符)9. 简述在c# 语言中关键字new的用途并举例。参考答案要点:在 c# 中,new 关键字可用作运算符、修饰符或约束。new 运算符 :用于创建对象和调用构造函数。new 修饰符 :用于向基类成员隐藏继承成员。new 约束 :用于在泛型声明中约束可能用作类型参数的参数的类型。10.

24、关键字this的意义和用法?参考答案要点:this 关键字引用类的当前实例,还可用作扩展方法的第一个参数的修饰符。 this 的常用用途: 限定被相似的名称隐藏的成员 将对象作为参数传递到其他方法声明索引器由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。 在静态方法中引用 this 是错误的。 11. 关键字base的意义和用法?参考答案要点:base 关键字用于从派生类中访问基类的成员: 调用基类上已被其他方法重写的方法。指定创建派生类实例时应调用的基类构造函数。基类访问只能在构造函数、实例方法或实例属性访问器中进行。从静态方法中使用 base 关键字是错误的。

25、 所访问的基类是类声明中指定的基类。12. 简述c# 程序的通用结构参考答案要点:c# 程序可由一个或多个文件组成。每个文件都可以包含零个或零个以上的命名空间。一个命名空间除了可包含其他命名空间外,还可包含类、结构、接口、枚举、委托等类型。在某一个类中必须而且只能有一个静态的main方法作为程序的入口。下面是一个程序的框架结构,它包含所有这些元素种类。 / a skeleton of a c# program using system;namespace yournamespace class yourclass struct yourstruct interface iyourinterfa

26、ce delegate int yourdelegate(); enum yourenum namespace yournestednamespace struct yourstruct class yourmainclass static void main(string args) /your program starts here. 13. 简述中类的成员参考答案要点:类和结构具有表示其数据和行为的成员。成员说明字段字段是被视为类的一部分的对象的实例,通常用于保存类数据。例如,日历类可能具有一个包含当前日期的字段。属性 属性是类中可以像类中的字段一样访问的方法。属性可以为类字段提供保护,

27、以避免字段在对象不知道的情况下被更改。方法 方法定义类可以执行的操作。方法可以接受提供输入数据的参数,并且可以通过参数返回输出数据。方法还可以不使用参数而直接返回值。事件 事件向其他对象提供有关发生的事情(如单击按钮或成功完成某个方法)的通知。事件是使用委托定义和触发的。有关更多信息,请参见事件和委托。运算符 运算符是对操作数执行运算的术语或符号,如 +、*、 等。可以重新定义运算符,以便可以对自定义数据类型执行运算。有关更多信息,请参见可重载运算符(c# 编程指南)。索引器使用索引器可以用类似于数组的方式为对象建立索引。构造函数 构造函数是在第一次创建对象时调用的方法。它们通常用于初始化对象

28、的数据。析构函数 析构函数是当对象即将从内存中移除时由运行库执行引擎调用的方法。它们通常用来确保任何必须释放的资源都得到适当的处理。嵌套类型 嵌套类型是在类或结构中声明的类型,通常用于描述仅由包含它们的类型所使用的对象。14. 简要叙述类的构造函数和析构函数。 参考答案要点:构造函数:构造函数是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载 析构函数:析构函数用于类的实例销毁时完成的操作。 不能在结构中定义析构函数。 只能对类使用

29、析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数。 它们是被自动调用的。 析构函数既没有修饰符,也没有参数。 15. 简述windows窗体程序中如何使用事件?参考答案要点:事件是可以通过代码响应或“处理”的操作。事件可由用户操作(如单击鼠标或按某个键)、程序代码或系统生成。要在应用程序中使用事件,您必须提供一个事件处理程序(事件处理方法或函数),该处理程序执行程序逻辑以响应事件并向事件源注册事件处理程序。我们将该过程叫做事件连结(事件绑定)。事件驱动的应用程序执行代码以响应事件。每个窗体和控件都公开一组预定义事件,您可根据这些事件进行编程。如果发生其中一个事

30、件并且在相关联的事件处理程序中有代码,则调用该代码。对象引发的事件类型会发生变化,但对于大多数控件,很多类型是通用的。例如,大多数对象都会处理 click 事件。如果用户单击窗体,就会执行窗体的 click 事件处理程序内的代码。16. 简述system 命名空间参考答案要点:system 命名空间是 .net framework 中基本类型的根命名空间。 此命名空间包括表示由所有应用程序使用的基本数据类型的类: object(继承层次结构的根)、 byte、 char、 array、 int32、 string 等。system 命名空间还包含 100 多个类,范围从处理异常的类到处理核心运

31、行时概念的类,如应用程序域和垃圾回收器。此外,system 命名空间还包含许多二级命名空间,是我们编写程序的基础。17. 简述list类,并与arraylist进行比较。参考答案要点:list类是 arraylist类的泛型等效类。 该类使用大小可按需动态增加的数组实现 ilist 泛型接口。 arraylist是一种.net framework 提供得预定义集合类,用于数据存储和检索对象的专用容器类。这些类一般支持堆栈、队列、列表和哈希表等常用数据结构。在决定使用 list类还是使用 arraylist 类(两者具有类似的功能)时,使用泛型集合会稍微增加了些编码的复杂性,但好处是您可以创建一

32、个比arraylist更安全并且速度更快的列表。list类在大多数情况下执行得更好并且是类型安全的。18. 简述c#语言中类的属性成员。参考答案要点:属性是类的一种成员:它们提供灵活的机制来读取、设置或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法对字段进行封装,有助于提高方法的安全性和灵活性。属性使类能够以一种公开的方法获取和设置值,同时隐藏实现或验证代码。不实现 set 方法的属性是只读的。对于不需要任何自定义访问器代码的简单属性,可考虑选择使用自动实现的属性。19. 简述关键字static。参考答案要点:使用 static 修饰符声明属于类型

33、本身而不是属于特定对象的静态成员。static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。工具类一般都是静态类。 即使没有创建类的实例,也可以调用该类中的静态方法、字段、属性或事件。如果创建了该类的任何实例,不能使用实例来访问静态成员。只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件。静态成员通

34、常用于表示不会随对象状态而变化的数据或计算;例如,数学库可能包含用于计算正弦和余弦的静态方法。 静态方法可以被重载,但不能被重写。20. 简述c#语言中ref和out的作用及区别。参考答案要点:ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。尽管作为 out 参数传递的变量不必在传递之前进行初始化,但需要调用方法中实例化以便在方法返回之前赋值。尽管 ref 和 out 在运行时的处理方式不同,但在编译时的处理方

35、式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的。21. 简述.net framework,包括目的、组成及功能。参考答案要点:.net framework的目的是便于开发商更容易地建立网络应用程序和web服务,它的关键特色是提供了一个多语言组件开发和执行的环境。从层次结构来看,.net framework又包括三个主要组成部分:通用语言运行环境(common language runtime)、类库、应用模板主要包括面向web的网络应用程序模板(web forms或web servic

36、es)和windows应用程序模板(win forms)。其中通用语言运行环境在组件运行时,负责管理内存分配、启动和中止线程和进程、强化安全系数,同时还调整任何该组件涉及到的其他组件的附件配置。在通用语言运行环境上是类库框架,它为开发人员提供了一套能够被任何现代编程语言调用的、统一的面向对象、异步、层次结构的可扩展类库,包括集合、输入/输出、字符串、图画、网络、线程、全球化、安全加密、数据库访问、调试相关服务等类库。在服务框架之上是两种应用类型的模板,一类是传统的windows应用程序模板,另一类是基于asp.net的web网络应用程序模板。其中asp.net以一组控件和体系结构的方式提供了一

37、个web应用模型,由.net框架提供的类库构建而成,通过它可以简化web应用的实现过程。22. 简述c#中的垃圾回收技术参考答案要点:.net framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。对象在创建后,只有一个引用是指向对象的,随着代码的执行,垃圾回收器会跟踪对象的引用数量。每增加一个引用,计数器加1。当引用离开作用域以后,计数器就减少。当引用计数器达到0时,就将该对象和对象所占

38、用的内存标记为回收。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。23. 简述c#的类有五种不同的限制修饰符 参考答案: public 可以被任意存取 protected只可以被本类和其继承子类存取 internal只可以被本程序集(assembly)内所有的类存取,程序集是c#语言中类被组合后的物理单位,其编译后的文件扩展名往往是“.dll”或“.exe”。 protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类或这些类的继承子类所存取。 private只可以被本类所存取。 24. ado.net中常用

39、的对象有哪些?分别描述一下。参考答案要点: connection对象:用于连接数据库的对象,表示到数据源的一个唯一的连接。 command对象:表示要对数据库执行的一个sql语句或一个存储过程。 datareader对象:数据库查询返回的数据对象,它与dataset最大的不同是使用 datareader 以只进、只读方式返回数据,从而提高应用程序的性能。 dataset对象:表示内存中数据的缓存,可以把它想像成一个临时的数据库,它里可以存多个表(datatable)。 dataadapter对象:该对象是与dataset配合使用的对象,用于把表填充到dataset和更新dataset等。25.

40、 简要概述c#语言中的泛型参考答案要点:泛型将类型参数的概念引入 .net framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。 泛型最常见的用途是创建集合类。 .net framework 类库在 system.collections.generic 命名空间中包含几个新的预定义泛型集合类。尽可能地使用这些类来代替普通集合类,如 system.collections 命名空间中的 arraylist。 您可以创建自己的泛型接口、泛型类、泛型方

41、法、泛型事件和泛型委托。 可以对泛型类进行约束以访问特定数据类型的方法。 关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。四、计算题1 . using system; namespace p3_2 class program static void main() complexnumber c1 = new complexnumber(); c1.a = 1.5; c1.b = 3; complexnumber c2 = c1; c2.a = c2.b; console.write(c1 = ); c1.write(); console.write(c2 = ); c2.writ

42、e(); console.readline(); class complexnumber public double a; public double b; public void write() console.writeline(0+1i, a, b); 运行结果:2. using system;namespace p5_2 class program static void main() truck t1 = new truck(); console.writeline(卡车速度0公里/小时, t1.speed); console.writeline(卡车行驶1000公里需0小时, t1

43、.run(1000); automobile a1 = t1; console.writeline(汽车速度0公里/小时, a1.speed); console.writeline(汽车行驶1000公里需0小时, a1.run(1000); console.readline(); public class automobile protected float speed; public float speed get return speed; set speed = value; private float weight; public float weight get return wei

44、ght; set weight = value; public float run(float distance) return distance / speed; public class truck : automobile private float load; public float load get return load; set load = value; public new float speed get return speed / (1 + load / weight / 2); public truck() load = 30; speed = 50; weight

45、= 15; public new float run(float distance) return (1 + load / weight / 2) * base.run(distance); 运行结果:3. mespace p10_2 class program static void main() bankaccount a1 = new bankaccount(1000, true); ipayable p1 = a1; console.writeline(p1付款1100: + (p1.pay(1100) ? 成功 : 失败); console.writeline(a1付款1100: +

46、 (a1.pay(1100) ? 成功 : 失败); a1 = new creditcard(1000); console.writeline(a1付款1100: + (a1.pay(1100) ? 成功 : 失败); console.readline(); public interface ipayable bool pay(decimal money); public class bankaccount : ipayable private bool vip = false; protected decimal balance = 0; public bankaccount(decimal

47、 balance, bool vip) this.balance = balance; this.vip = vip; bool ipayable.pay(decimal money) if (balance = money) balance -= money; return true; else return false; public virtual bool pay(decimal money) ipayable p1 = (ipayable)this; if(!vip) return p1.pay(money); else return p1.pay(money * 0.9m); public class creditcard : bankaccount private decimal credit; public creditcard(decimal credit) : base(0, true) this.credit = credit; public override

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论