




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验项目3 类的设计与使用1) 实验目的(1)、掌握C#中类的结构(2)、掌握构造函数的使用方法(3)、熟练继承和重载的使用2) 实验原理(1)类的定义类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。下面是类定义的一般形式: 访问修饰符 static class 类名 : 基类 ,接口序列 类成员 (2)构造函数类的构造函数是类的一个特殊的成员函数,当创建类的新对象时执行。构造函数的名称与类的名称完
2、全相同,它没有任何返回类型。(3)类的继承 语法:class DrevedClass:BaseClass 派生类成员如果类或结构也派生自接口,则用逗号分隔列表中的基类和接口:class DrevedClass:BaseClass,IIntenface1,IIntenface2 派生类成员(4) 重载指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。3) 主要仪器及耗材PC、VS2010/2012/20154) 实验内容和步骤实验内容1:图
3、书类(1)实验题目: 创建一个描述图书信息的类并测试。类中应保存有图书的书号、标题、作者、出版社、价格等信息。(2)实验步骤:步骤1:定义图书类Book,Book类中包含isbn(书号)、title(标题)、author(作者)、press(出版社)、price(价格)等私有字段。由于对一本书来说,书号是唯一的,因此,isbn字段应声明为只读的。步骤2:为Book类中的每个字段定义相应的属性,由于isbn字段只读的,其相应属性也应该是只读的。步骤3:为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函
4、数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。步骤4:为Book类定义方法Show,Show方法用于显示图书的所有信息。步骤5:编写Main方法测试Book类,Main方法中分别使用上述两个构造函数创建Book对象。 (3)参考代码:/Test3_1.csusing System;class Bookprivate readonly string isbn; /书号private string title; /标题private string author; /作者private string press; /出版社private int price; /价格public Bo
5、ok(string isbn):this(isbn,"未知","未知","未知",0)/构造函数间的调用public Book(string isbn,string title,string author,string press,int price)this.isbn=isbn;this.title=title;this.author=author;this.press=press;this.price=price;public string ISBNget return isbn; public string Titleget r
6、eturn title; set title=value; public string Authorget return author; set author=value; public string Pressget return press; set press=value; public int Priceget return price; set price=value; public void Show()Console.WriteLine("书号: 0",isbn);Console.WriteLine("标题: 0",title);Conso
7、le.WriteLine("作者: 0",author);Console.WriteLine("出版社:0",press);Console.WriteLine("价格: 0",price);class Test3_1static void Main() Book book1=new Book("978-7-111-23423-4"); book1.Show(); Console.WriteLine(); book1.Title="C#程序设计(C#2.0版)" book1.Author=&quo
8、t;刘慧宁" book1.Press="机械工业出版社" book1.Price=32; book1.Show(); Console.WriteLine(); book1=new Book("978-7-302-15800-4","Java程序设计","温秀梅","清华大学出版社",29); book1.Show(); 实验内容2: 简单几何图形描述(1)实验题目:根据几何图形的组合与继承关系定义用于描述点、直线、三角形、四边形、正方形、圆等几何图形的类(或结构)。要求首先定义一个几何
9、图形接口描述所有几何图形的共有特性,上述几何图形都必须现实该接口,并且其中用于描述点的类型最好定义为结构。(2)实验步骤: 步骤1:定义几何图形接口Shape。Shape接口中包含属性Color,用于读取和设置几何图形的颜色;包含方法Draw、Erase、Move,用于绘制、擦拭、移动几何图形。由于属性Color的类型无法用基本数据类型准确描述,程序中还需要另外定义一个表示颜色的枚举类型CColor(实验上,.NET框架类库中定义有一个Color结构,它可以更好地表示颜色,你们可以直接使用它)。步骤2:定义点结构Point实现Shape接口。Point结构中除实现Shape接口的所有成员外,还
10、必须包含两个int型私有字段x、y及相应属性,它们用于表示点的坐标。另外,还应为Point结构定义构造函数,并重写方法ToString。步骤3:定义直线类Line实现Shape接口。Line类中除实现Shape接口的所有成员外,还必须包含两个Point型私有字段point1、point2及相应属性,它们用于表示直线两个顶点的坐标。另外,还应为Line类定义构造函数,并重写方法ToString。步骤4:定义三角形类Triange实现Shape接口。Triangle类中除实现Shape接口的所有成员外,还必须包含三个Point型私有字段及相应属性,它们用于表示三角形三个顶点的坐标。另外,还应为tr
11、iangle类定义方法Area(求面积)和构造函数,并重写方法ToString。步骤5:定义四边形类Quadrilateral实现Shape接口。Quadrilateral类中除实现Shape接口中的所有成员外,还必须包含四个Point型私有字段及相应属性,它们用于表示四边形四个顶点的坐标。另外,还应为Quadrilateral类定义方法Area(求面积)和构造函数,并重写方法ToString。由于程序后面还需要在Quadrilateral类的基础上派生出正方形类,因此,实现Shape接口时,应该将方法Draw、Erase、Move声明为虚拟的,另外,重写方法ToString时,不妨将它声明为
12、密封的。步骤6:定义圆类Circle实现Shape接口。Circle类中除实现Shape接口的所有成员外,还必须包含一个Point型私有字段、一个int型私有字段及相应属性,它们分别用于表示圆的圆心坐标及半径;另外,还应为Circle类定义Area(求面积)和构造函数,并重写方法ToString。步骤7:定义正方形类Square继承Quadrilateral类。Square类中应重写方法Draw、Erase、Move并定义构造函数。步骤8:定义Main方法测试上面定义的类。 (3)参考代码:/Test3_2.csusing System;/定义一个颜色的枚举enum CColorBLACK,B
13、LUE,BROWN,CYAN,GRAY,GREEN,ORANGE,PINK,RED,WHITE,YELLOW/定义一个几何图形接口interface ShapeCColor Colorget;set;/绘制的方法void Draw();/擦拭的方法void Erase();/移动的方法void Move();/定义一个点的结构来实现Shape几何图形的接口struct Point:Shapeprivate CColor color;private int x,y;public CColor Colorget return color; set color=value; public int X
14、get return x; set x=value; public int Yget return y; set y=value; public Point() public Point(int x,int y)this.x=x;this.y=y;this.color=CColor.RED;public void Draw()Console.WriteLine("绘制一个点");public void Erase()Console.WriteLine("擦拭一个点");public void Move()Console.WriteLine("移
15、动一个点");/重写ToString()方法public override string ToString()return "("+x+","+y+")"/定义一个直线的类来实现Shape接口class Line:Shapeprivate CColor color;/顶点private Point point1,point2;public CColor Colorget return color; set color=value; public Point Point1get return point1; set point
16、1=value; public Point Point2 get return point2; set point2=value; public Line() public Line(Point p1,Point p2) point1=p1; point2=p2;public void Draw() Console.WriteLine("绘制一条直线");public void Erase() Console.WriteLine("擦拭一条直线");public void Move() Console.WriteLine("移动一条直线&quo
17、t;); /也重写一下ToString方法public override string ToString() return "("+point1.ToString()+","+point2.ToString()+")"/定义一个三角形的类同时让它实现Shape接口class Triangle:Shapeprivate CColor color;/定义三角形的三个顶点private Point point1,point2,point3;public CColor Colorget return color; set color=valu
18、e; public Point Point1get return point1; set point1=value; public Point Point2get return point2; set point2=value; public Point Point3get return point3; set point3=value; public Triangle() public Triangle(Point p1,Point p2,Point p3) point1=p1; point2=p2; point3=p3; public void Draw() Console.WriteLi
19、ne("绘制一个三角形"); public void Erase() Console.WriteLine("擦拭一个三角形"); public void Move() Console.WriteLine("移动一个三角形"); /增加一个三角形自己的求面积的方法 public double Area() double area=Math.Abs(point1.X*point2.Y+point2.X*point3.Y+point3.X*point1.Y -point1.X*point3.Y-point2.X*point1.Y-point
20、3.X*point2.Y)/2.0; return area; /同样也重写一下ToString方法 public override string ToString() return "("+point1.ToString()+","+point2.ToString()+","+point3.ToString()+")" /定义一个四边形的类同样实现Shape接口class Quadrilateral:Shapeprivate CColor color;/定义四边形的四个顶点private Point point1
21、,point2,point3,point4;public CColor Colorget return color; set color=value; public Point Point1get return point1; set point1=value; public Point Point2get return point2; set point2=value; public Point Point3get return point3; set point3=value; public Point Point4get return point4; set point4=value;
22、public Quadrilateral() public Quadrilateral(Point p1,Point p2,Point p3,Point p4)point1=p1;point2=p2;point3=p3;point4=p4;public virtual void Draw()Console.WriteLine("绘制一个四边形");public virtual void Erase()Console.WriteLine("擦拭一个四边形");public virtual void Move()Console.WriteLine("
23、;移动一个四边形");/定义一个四边形求面积的方法public double Area()double area=Math.Abs(point1.X*point2.Y-point2.X*point1.Y+point2.X*point3.Y -point3.X+point2.Y+point3.X*point4.Y-point4.X*point3.Y +point4.X*point1.Y-point1.X*point4.Y)/2.0; return area;/重写ToString方法public sealed override string ToString()return "
24、;("+point1.ToString()+","+point2.ToString()+","+point3.ToString()+","+point4.ToString()+")"/定义一个圆的类同样让它实现Shape接口class Circle:Shapeprivate CColor color;/定义一个圆心private Point point;/定义圆的半径private int radius;public CColor Colorget return color; set color=valu
25、e; public Point Pointget return point; set point=value; public int Radiusget return radius; set radius=value; public Circle() public Circle(Point p,int r)point=p;radius=r; public void Draw()Console.WriteLine("绘制一个圆");public void Erase()Console.WriteLine("擦拭一个圆");public void Move(
26、)Console.WriteLine("移动一个圆");/定义一个方法求的面积public double Area()return Math.PI*radius*radius;/同样重写ToString让它格式化字符串public override string ToString() return "("+point.ToString()+","+radius+")"/定义一个正方形的类,并且它让继承于四边形的类class Square:Quadrilateralpublic Square() public Squ
27、are(Point p1,Point p2,Point p3,Point p4):base(p1,p2,p3,p4) public override void Draw()Console.WriteLine("绘制一个正方形");public override void Erase()Console.WriteLine("擦拭一个正方形");public override void Move()Console.WriteLine("移动一个正方形");/定义一个类放入Main()方法class Test3_2 static void Main()Point p1=new P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年冷链装备资金需求报告代可行性研究报告
- 2024年养老服务资金需求报告代可行性研究报告
- 2024年商用家具项目投资申请报告代可行性研究报告
- 2024年水电站计算机监控装置项目资金申请报告代可行性研究报告
- 松原市宁江区2025年八年级《语文》上学期期末试题与参考答案
- 2024年新能源环卫装备资金筹措计划书代可行性研究报告
- 2025年中国边缘行业市场规模及投资前景预测分析报告
- 2025年中国苯乙烯类热塑性弹性体行业市场前景预测及投资价值评估报告
- 2025年中国办公室灯具行业市场前景预测及投资价值评估分析报告
- 能源产业园区基础设施建设补充协议
- 软件工程监理实施细则10
- 2024年认证行业法律法规及认证基础知识答案
- (一模)2025年深圳市高三年级第一次调研考试 英语试卷(含标准答案)
- 越南投资环境评价与重点投资区域研究
- 神经内科紧急护理人力资源调配演练记录
- 湖北省武汉市汉阳区2024-2025学年七年级上学期期末检测英语试卷(含答案无听力原文及音频)
- 《硬科技早期投资-项目评估指南》
- 2025年贵州遵义路桥工程限公司招聘10人高频重点提升(共500题)附带答案详解
- 上海市居住房屋租赁合同范本
- 广西河池市(2024年-2025年小学六年级语文)部编版小升初模拟(下学期)试卷及答案
- 保洁及会务服务项目技术方案
评论
0/150
提交评论