问题
1. 简述面向对象程序设计的基本思想。
答:面向对象程序设计的基本思想是将编程时的许多细小功能进行封装处理,对编程中的事物进行模块化处理,更加接近人类认识世界,解决问题的方法与过程。以对象为基本单位,在进行编程的时候更加合理规范,并且便于之后对代码的调整修改。在面向对象程序设计中以类为基础,主函数要放在一个类中。面向对象的不就是使用程序处理事情时以对象为中心去分析,与面向过程不同,面向过程关心处理的逻辑、流程等问题,而不关心事件主体。而面向对象即面向主体,在编程时会注重各个部分的逻辑关系的连接。面向对象方法是以主题各个功能为基础,用对象来解决和分析问题,并开发出由对象构成的软件的方法。 由于问题和解决方法都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。
从现实世界中客观存在的事物为基础来编写软件系统,并在程序实现中运用人类的思考方式,强调直接以问题域中的事物为中心来认识问题,思考问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位,而不是用一些与现实世界中的事物相关不大,或者没有对应关系的概念来构造系统。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。
2. 什么是装箱、拆箱?
答:装箱就是将值类型变量转换成为对象。
如C# ToString 方法用于将任意的数据类型转换成字符串类型,例如将整数类型转换成字符串类型。
using System;
namespace std
{
class Program
{
static void Main()
{
int num = 10;
string sstring = num.ToString();
}
}
}
这样整型变量num即可被转换成字符串类型。
在 C# 语言中数据类型分为值类型和引用类型,将值类型转换为引用类型的操作称为装箱,
拆箱就是将对象转换为相对应的值类型。
在上面的转换中 int 类型是值类型,而 string 类型是引用类型,当将值类型变量 a 的值转换成引用类型变量 str 时就是一个装箱的操作, 而拆箱操作则是将引用类型变量 str 的值再转换成整型的过程,转换的代码如下。
using System;
namespace std
{
class Program
{
static void Main()
{
string sstring = "105";
int num = int.Parse(sstring);
}
}
}
在 C# 语言中数据类型分为值类型和引用类型,将引用类型转换成值类型称为拆箱。
3. 简述C#语言的异常处理机制,分析常见的异常类。
答:C#的异常处理机制是使用.NET平台提供的一种结构化异常技术,当异常出现时创建一个异常对象并由一段代码抛出异常对象,由另一段代码处理此异常。
Exception类:Exception类是所有异常类的基类,位于System命名空间。
ArgumentException 方法的参数是非法的
ArgumentNullException 一个空参数传递给方法,该方法不能接受该参数
ArgumentOutOfRangeException 参数值超出类型的范围
ArithmeticException 出现算术上溢或者下溢, 因类型转换,算数运算或转换操作中的错误而引发的异常。
ArrayTypeMismatchException 在数组中存储错误类型的对象
BadImageFormatException 图形的格式错误
DivideByZeroException 除法除数为零的异常
DllNotFoundException 找不到引用的DLL文件
FormatException 参数格式不符合调用的规范而引发的异常
IndexOutOfRangeException 数组索引超出范围
InvalidCastException 使用无效的类
InvalidOperationException 方法的调用时间错误
MissingMemberException 访问一个无效版本的DLL
NotFiniteNumberException 对象不是一个有效的成员
NotSupportedException 调用的方法在类中没有实现
NullReferenceException 试图使用一个未分配的引用
OutOfMemoryException 内存超限而引发的异常
PlatformNotSupportedException 平台不支持某个特定属性时抛出该错误
StackOverflowException 堆栈溢出
SystemException 其他用户可处理的异常的基本类
4. 简述重载(Overload)、重写(Override)的思想及实现方法。
答:方法的重载就是在同一个类下声明的两个以上名称相同的方法,但是参数类型或者个数不同,实现对不同数据的不同处理。重载的实现方法就是同样的方法名称下采用不同的参数类型。
重载实现代码如下
using System;
namespace std
{
class ChongZai
{
public void chongzai()
{
Console.WriteLine("1");
}
public void chongzai(int i)
{
Console.WriteLine("2");
}
}
class Program
{
static void Main()
{
ChongZai C = new ChongZai();
C.chongzai();
C.chongzai(1);
}
}
}
重写是将派生类中的实例完全替换掉基类的成员。重写的实现方法是首先在基类中用virtual关键字标识虚拟成员,然后在派生类中使用override关键字重写基类中的虚拟成员。
using System;
namespace std
{
class ChongXie
{
public virtual string outprint()
{
return "yuan";
}
}
class ChongXie1:ChongXie
{
public override string outprint()
{
return "chongxie";
}
}
class Program
{
static void Main()
{
ChongXie C = new ChongXie();
ChongXie1 C1 = new ChongXie1();
Console.WriteLine(C.outprint());
Console.WriteLine(C1.outprint());
}
}
}
5. 什么是事件、消息?分析其在C# Windows程序设计中的角色。
答:事件就是使用者的操作,如鼠标点击,键盘按键等,或者一些系统产生的提示通知,应用程序要对其操作发生时产生的响应。事件是可以被控件识别的操作,如按下刷新按钮,鼠标进行移动操作等。每一种控件有自己可以识别的事件。事件分为系统事件和用户事件。系统事件由系统自动进行。用户事件由用户激发,用户在进行操作时产生用户事件。
消息就是通知和命令,消息就是应用在运行中的指令操作,通过消息传递完成实现一些操作功能。在C#Windows程序设计中对消息进行了封装,消息被封装成了事件。消息和事件是C#面向对象程序设计中不可缺少的核心部分。