实验项目3 类的设计与使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验项目3类的设计与使用
1)实验目的
(1)、掌握C#中类的结构
(2)、掌握构造函数的使用方法
(3)、熟练继承和重载的使用
2)实验原理
(1)类的定义
类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。下面是类定义的一般形式:
[访问修饰符] [static] class 类名[: 基类[,接口序列]]
{
[类成员]
}
(2)构造函数
类的构造函数是类的一个特殊的成员函数,当创建类的新对象时执行。构造函数的名称与类的名称完全相同,它没有任何返回类型。
(3)类的继承
语法:
class DrevedClass:BaseClass
{
[派生类成员]
}
如果类或结构也派生自接口,则用逗号分隔列表中的基类和接口:
class DrevedClass:BaseClass,IIntenface1,IIntenface2
{
[派生类成员]
}
(4)重载
指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称
为重载函数。
3)主要仪器及耗材
PC、VS2010/2012/2015
4)实验内容和步骤
实验内容1:图书类
(1)实验题目:创建一个描述图书信息的类并测试。类中应保存有图书的书号、标题、作者、出版社、价格等信息。
(2)实验步骤:
步骤1:定义图书类Book,Book类中包含isbn(书号)、title(标题)、author(作者)、press (出版社)、price(价格)等私有字段。由于对一本书来说,书号是唯一的,因此,isbn字段应声明为只读的。
步骤2:为Book类中的每个字段定义相应的属性,由于isbn字段只读的,其相应属性也应该是只读的。
步骤3:为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。
步骤4:为Book类定义方法Show,Show方法用于显示图书的所有信息。
步骤5:编写Main方法测试Book类,Main方法中分别使用上述两个构造函数创建Book 对象。
(3)参考代码:
实验内容2:简单几何图形描述
(1)实验题目:根据几何图形的组合与继承关系定义用于描述点、直线、三角形、四边形、正方形、圆等几何图形的类(或结构)。要求首先定义一个几何图形接口描述所有几何图形的共有特性,上述几何图形都必须现实该接口,并且其中用于描述点的类型最好定义为结构。
(2)实验步骤:
步骤1:定义几何图形接口Shape。Shape接口中包含属性Color,用于读取和设置几何图形的颜色;包含方法Draw、Erase、Move,用于绘制、擦拭、移动几何图形。由于属性Color的类型无法用基本数据类型准确描述,程序中还需要另外定义一个表示颜色的枚举类型CColor(实验上,.NET框架类库中定义有一个Color结构,它可以更好地表示颜色,你们可以直接使用它)。
步骤2:定义点结构Point实现Shape接口。Point结构中除实现Shape接口的所有成员外,还必须包含两个int型私有字段x、y及相应属性,它们用于表示点的坐标。另外,还应为Point结构定义构造函数,并重写方法ToString。
步骤3:定义直线类Line实现Shape接口。Line类中除实现Shape接口的所有成员外,还必须包含两个Point型私有字段point1、point2及相应属性,它们用于表示直线两个顶点的坐标。另外,还应为Line类定义构造函数,并重写方法ToString。
步骤4:定义三角形类Triange实现Shape接口。Triangle类中除实现Shape接口的所有成员外,还必须包含三个Point型私有字段及相应属性,它们用于表示三角形三个顶点的坐标。另外,还应为triangle类定义方法Area(求面积)和构造函数,并重写方法ToString。
步骤5:定义四边形类Quadrilateral实现Shape接口。Quadrilateral类中除实现Shape 接口中的所有成员外,还必须包含四个Point型私有字段及相应属性,它们用于表示四边形四个顶点的坐标。另外,还应为Quadrilateral类定义方法Area(求面积)和构造函数,并重写方法ToString。由于程序后面还需要在Quadrilateral类的基础上派生出正方形类,因此,实现Shape接口时,应该将方法Draw、Erase、Move声明为虚拟的,另外,重写方法ToString 时,不妨将它声明为密封的。
步骤6:定义圆类Circle实现Shape接口。Circle类中除实现Shape接口的所有成员外,还必须包含一个Point型私有字段、一个int型私有字段及相应属性,它们分别用于表示圆的圆心坐标及半径;另外,还应为Circle类定义Area(求面积)和构造函数,并重写方法ToString。
步骤7:定义正方形类Square继承Quadrilateral类。Square类中应重写方法Draw、Erase、Move并定义构造函数。
步骤8:定义Main方法测试上面定义的类。
(3)参考代码:
6)实验注意事项
(1)本实验创建的程序是控制台程序。
(2)在IDE环境下运行控制台程序,运行窗口会很快退出。可在代码最后加上如下一行代码:Console.ReadKey(); //程序暂停,等待按任意一个键。
7)思考题
1、请结合第一个实验题目说明构造函数调用另一个构造函数的方法。
2、C#中如何实现类的继承,和接口的实现?
3、什么叫方法的重载?什么叫方法的重写?