IT先锋

招生咨询

学院动态

行政资料下载

您的位置: 首页 > 学院动态 > 行政资料下载 > 正文

《面向对象程序设计》实验材料

时间:2010-04-13   来源:    阅读:

作者: 阅读次数: 588 发布时间: 2010-04-13 10:08:40

点击下载浏览该文件2010413101020203

实验三类与对象编程练习

【实验目的】

1. 理解C#语言是如何体现面向对象编程基本思想;

2. 掌握类对象的定义;

3. 了解类的封装方法,以及如何创建类和对象;

4. 了解成员变量和成员方法的特性;

5. 掌握静态成员的用法;

6. 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数;

7. 理解类的成员的访问控制的含义,公有、私有和保护成员的区别;

8. 掌握参数传递的用法;

9. 掌握属性的作用和使用。

【实验要求】

1. 编写一个包含类和类方法的程序;

2. 编写一个创建对象和使用对象的方法程序;

3. 编写不同成员变量、方法修饰方法的程序;。

4. 编写含有构造方法的类的程序;

5. 编写重载构造方法的程序;

6. 编写类含有静态变量的程序;

7. 编写通过ref、out修饰符传递参数的类程序;

8. 编写含有属性的类程序。

【实验内容】

一、定义一个圆类,计算圆的面积和周长

或者:

请比较以上两个程序,看起来后一个程序把问题复杂化了,是不是不如第一个程序好,它从设计思想上有什么优势么?

二、实现一个学生类

程序要求如下:

其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:使用成员函数实现对数据的输出;使用构造函数实现对数据的输入。

参考代码如下:

以上程序使用了构造方法,请回答关键字this有何作用,你能将成员函数Display修改成别的代码也实现响应的功能么?

三、实现一个日期类型

程序要求如下:

定义日期类型Date。要求有以下面成员:年、月、日变量,重载的构造方法,一个实现年、月、日单独的输入,一个实现从系统时间里读出年月日,并实现打印方法成员,该方法要按照“XXXX年XX月XX日”格式输出日期。

参考代码如下:

请练习System.Datetime类型及其各属性的应用。列出System.Datetime主要包含哪些属性,并思考重载构造方法的作用。

四、实现一个包含类属性方法的简单加法程序

程序要求如下:

建立一个类,使其可以进行简单的加法运算。该程序要包含类、属性、方法等面向对象的基本元素。

作以下修改分析程序输出的原因:

将"xVal={0},yVal={1},zVal={2},sVal={3}"

改成"xVal={0},yVal={1},zVal={0},sVal={1}"查看区别,写出原因;

了解Math类下主要的静态数学方法,掌握求幂,求平方和对数等静态方法的使用规则。

五、通过类程序说明静态变量/方法与实例变量/方法的区别

static声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法。换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用。基于这样的事实,也把静态变量/方法称为类变量/方法,非静态变量称为实例变量/方法。

1.程序功能要求

编写帐户类,对每一账号赋值帐户并设置初始化存款为0.00元,设计一变量统计账号生成的数目。

请回答问题:

(1)按你自己的算法修改以上程序,比如可只输出生成的账户数。

(2)把注释去掉后会怎样,为什么?

(3)为什么display用类名直接引用,可以用对象来引用么?尝试输出结果。

(4)类的静态变量和非静态变量的引用区别。判断一下语句的正确性:

静态方法只能使用静态变量,不能使用实例变量。因为对象实例化之前,实例变量不可用。这个观点真确么?()

类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。()

对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。()

六、方法中参数传递的练习

在其它语言中,函数调用或过程调用时参数有传值调用和传地址调用之分。在C#中,方法中的参数传递可以分为传值调用或对象方法调用等方式。传值调用即传递的参数是基本数据类型,调用方法时在方法中将不能改变参数的值,这意味着只能使用它们。对象调用是指先调用对象,再调用对象的方法,这种方式可以修改允许存取的成员变量。所以,如果不想改变参数的值,可以采用传值调用的方法。如果想改变参数的值,可采用对象调用的方法,间接修改参数的值。

1.编写一个传值调用的程序

程序功能要求:程序首先给整型变量x和y赋初值3,5,然后使用传值调用方式调用方法对x和y做乘方并及输出x和y的乘方值,最后输出x和y得值。再将此方法给为对象调用加ref修饰查看输出结果差异。参考代码如下:

思考:(1)将响应的注释修改再调试查看结果,分析原因。

(2)将Main中x和y赋初值去掉,结果会怎样?如果Main中加ref,类Power的方法中参数前不加ref又会有何变化?说明了什么?

3)如果不想对x作无用的初始化,直接作参数传递,怎么实现?

【思考题】

1. 方法的参数传递有哪些方式?区别时什么?

2.什么是构造方法。

Baidu
sogou