实验二 面向对象的编程基础.docx

上传人:b****4 文档编号:24200693 上传时间:2023-05-25 格式:DOCX 页数:22 大小:19.56KB
下载 相关 举报
实验二 面向对象的编程基础.docx_第1页
第1页 / 共22页
实验二 面向对象的编程基础.docx_第2页
第2页 / 共22页
实验二 面向对象的编程基础.docx_第3页
第3页 / 共22页
实验二 面向对象的编程基础.docx_第4页
第4页 / 共22页
实验二 面向对象的编程基础.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

实验二 面向对象的编程基础.docx

《实验二 面向对象的编程基础.docx》由会员分享,可在线阅读,更多相关《实验二 面向对象的编程基础.docx(22页珍藏版)》请在冰豆网上搜索。

实验二 面向对象的编程基础.docx

实验二面向对象的编程基础

实验二面向对象的编程基础

(2课时)

一、实验目的

1)熟悉类的定义和使用。

2)掌握创建对象的方法。

3)掌握只读字段的声明及使用。

4)学习定义和使用带参数构造函数。

5)熟悉访问权限控制符。

6)掌握属性的定义和使用。

7)掌握关键字this。

8)理解继承的概念,学会定义和使用派生类。

9)学会定义和使用接口。

10)掌握继承过程中的方法重写,区分它与方法隐藏、方法重载的不同。

11)掌握多态。

12)熟悉关键字base。

二、实验要求

1.程序结构清晰、语句完整,包含有头文件和main函数;

2.格式正确,语句采用缩进格式;

3.设计子函数实现题目要求的功能;

4.编译、连接通过,熟练使用命令键;

5.运行结果正确,输入输出有提示,格式美观。

三、实验设备、材料和工具

1.奔腾2计算机或以上机型

2.C#.NET2008

四、实验内容和步骤

实验内容:

1、创建一个描述图书信息的类并测试。

类中应保存有图书的书号、标题、作者、出版社、价格等信息。

步骤:

1)定义图书类Book,Book类中包含isbn(书号)、title(标题)、author(作者)、press(出版社)、price(价格)等私有字段。

由于对一本书来说,书号是唯一的,因此,isbn字段应声明为只读的。

2)为Book类中的每个字段定义相应的属性,由于isbn字段只读的,其相应属性也应该是只读的。

3)为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。

4)为Book类定义方法Show,Show方法用于显示图书的所有信息。

5)编写Main方法测试Book类,Main方法中分别使用上述两个构造函数创建Book对象。

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、编写一个实现复数减法程序。

写出实验步骤,并编写调试程序。

4、编写一个窗体应用程序,模拟20选5开奖程序。

写出实验步骤,并编写调试程序。

五、实验报告要求

1.实验前需填写好实验的名称和实验目的;

2.根据实验内容初步设计好程序,并从理论上排除错误;

3.针对程序的健壮性准备好测试数据;

4.结果分析中如实填写运行后的结果,并记录调试过程中产生的重要问题和解决方法。

六、根据实验过程填写程序和实验结果

实验1程序:

classBook{

privatereadonlystringisbn;//书号

privatestringtitle;//标题

privatestringauthor;//作者

privatestringpress;//出版社

privateintprice;//价格

publicBook(stringisbn):

this(isbn,"未知","未知","未知",0){

}

publicBook(stringisbn,stringtitle,stringauthor,stringpress,intprice){

this.isbn=isbn;

this.title=title;

this.author=author;

this.press=press;

this.price=price;

}

publicstringISBN{

get{

returnisbn;

}

}

publicstringTitle{

get{

returntitle;

}

set{

title=value;

}

}

publicstringAuthor{

get{

returnauthor;

}

set{

author=value;

}

}

publicstringPress{

get{

returnpress;

}

set{

press=value;

}

}

publicintPrice{

get{

returnprice;

}

set{

price=value;

}

}

publicvoidShow(){

Console.WriteLine("书号:

{0}",isbn);

Console.WriteLine("标题:

{0}",title);

Console.WriteLine("作者:

{0}",author);

Console.WriteLine("出版社:

{0}",press);

Console.WriteLine("价格:

{0}",price);

}

}

classTest5_1{

staticvoidMain(){

Bookbook1=newBook("978-7-111-23423-4");

book1.Show();

Console.WriteLine();

book1.Title="C#程序设计(C#2.0版)";

book1.Author="刘慧宁";

book1.Press="机械工业出版社";

book1.Price=32;

book1.Show();

Console.WriteLine();

book1=newBook("978-7-302-15800-4","Java程序设计","温秀梅","清华大学出版社",29);

book1.Show();

}

}

结果:

调试过程中产生的重要问题和解决方法:

实验2程序:

//定义一个颜色的枚举

enumCColor{

BLACK,BLUE,BROWN,CYAN,GRAY,GREEN,ORANGE,PINK,RED,WHITE,YELLOW

}

//定义一个几何图形接口

interfaceShape{

CColorColor{

get;

set;

}

//绘制的方法

voidDraw();

//擦拭的方法

voidErase();

//移动的方法

voidMove();

}

//定义一个点的结构来实现Shape几何图形的接口

structPoint:

Shape{

privateCColorcolor;

privateintx,y;

publicCColorColor{

get{

returncolor;

}

set{

color=value;

}

}

publicintX{

get{

returnx;

}

set{

x=value;

}

}

publicintY{

get{

returny;

}

set{

y=value;

}

}

/*

publicPoint(){

}

*/

publicPoint(intx,inty){

this.x=x;

this.y=y;

this.color=CColor.RED;

}

publicvoidDraw(){

Console.WriteLine("绘制一个点");

}

publicvoidErase(){

Console.WriteLine("擦拭一个点");

}

publicvoidMove(){

Console.WriteLine("移动一个点");

}

//重写ToString()方法

publicoverridestringToString(){

return"("+x+","+y+")";

}

}

//定义一个直线的类来实现Shape接口

classLine:

Shape{

privateCColorcolor;

//顶点

privatePointpoint1,point2;

publicCColorColor{

get{

returncolor;

}

set{

color=value;

}

}

publicPointPoint1{

get{

returnpoint1;

}

set{

point1=value;

}

}

publicPointPoint2{

get{

returnpoint2;

}

set{

point2=value;

}

}

publicLine(){

}

publicLine(Pointp1,Pointp2){

point1=p1;

point2=p2;

}

publicvoidDraw(){

Console.WriteLine("绘制一条直线");

}

publicvoidErase(){

Console.WriteLine("擦拭一条直线");

}

publicvoidMove(){

Console.WriteLine("移动一条直线");

}

//也重写一下ToString方法

publicoverridestringToString(){

return"("+point1.ToString()+","+point2.ToString()+")";

}

}

//定义一个三角形的类同时让它实现Shape接口

classTriangle:

Shape{

privateCColorcolor;

//定义三角形的三个顶点

privatePointpoint1,point2,point3;

publicCColorColor{

get{

returncolor;

}

set{

color=value;

}

}

publicPointPoint1{

get{

returnpoint1;

}

set{

point1=value;

}

}

publicPointPoint2{

get{

returnpoint2;

}

set{

point2=value;

}

}

publicPointPoint3{

get{

returnpoint3;

}

set{

point3=value;

}

}

publicTriangle(){

}

publicTriangle(Pointp1,Pointp2,Pointp3){

point1=p1;

point2=p2;

point3=p3;

}

publicvoidDraw(){

Console.WriteLine("绘制一个三角形");

}

publicvoidErase(){

Console.WriteLine("擦拭一个三角形");

}

publicvoidMove(){

Console.WriteLine("移动一个三角形");

}

//增加一个三角形自己的求面积的方法

publicdoubleArea(){

doublearea=Math.Abs(point1.X*point2.Y+point2.X*point3.Y+point3.X*point1.Y

-point1.X*point3.Y-point2.X*point1.Y-point3.X*point2.Y)/2.0;

returnarea;

}

//同样也重写一下ToString方法

publicoverridestringToString(){

return"("+point1.ToString()+","+point2.ToString()+","+point3.ToString()+")";

}

}

//定义一个四边形的类同样实现Shape接口

classQuadrilateral:

Shape{

privateCColorcolor;

//定义四边形的四个顶点

privatePointpoint1,point2,point3,point4;

publicCColorColor{

get{

returncolor;

}

set{

color=value;

}

}

publicPointPoint1{

get{

returnpoint1;

}

set{

point1=value;

}

}

publicPointPoint2{

get{

returnpoint2;

}

set{

point2=value;

}

}

publicPointPoint3{

get{

returnpoint3;

}

set{

point3=value;

}

}

publicPointPoint4{

get{

returnpoint4;

}

set{

point4=value;

}

}

publicQuadrilateral(){

}

publicQuadrilateral(Pointp1,Pointp2,Pointp3,Pointp4){

point1=p1;

point2=p2;

point3=p3;

point4=p4;

}

publicvirtualvoidDraw(){

Console.WriteLine("绘制一个四边形");

}

publicvirtualvoidErase(){

Console.WriteLine("擦拭一个四边形");

}

publicvirtualvoidMove(){

Console.WriteLine("移动一个四边形");

}

//定义一个四边形求面积的方法

publicdoubleArea(){

doublearea=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;

returnarea;

}

//重写ToString方法

publicsealedoverridestringToString(){

return"("+point1.ToString()+","+point2.ToString()+","+point3.ToString()+","+point4.ToString()+")";

}

}

//定义一个圆的类同样让它实现Shape接口

classCircle:

Shape{

privateCColorcolor;

//定义一个圆心

privatePointpoint;

//定义圆的半径

privateintradius;

publicCColorColor{

get{

returncolor;

}

set{

color=value;

}

}

publicPointPoint{

get{

returnpoint;

}

set{

point=value;

}

}

publicintRadius{

get{

returnradius;

}

set{

radius=value;

}

}

publicCircle(){

}

publicCircle(Pointp,intr){

point=p;

radius=r;

}

publicvoidDraw(){

Console.WriteLine("绘制一个圆");

}

publicvoidErase(){

Console.WriteLine("擦拭一个圆");

}

publicvoidMove(){

Console.WriteLine("移动一个圆");

}

//定义一个方法求的面积

publicdoubleArea(){

returnMath.PI*radius*radius;

}

//同样重写ToString让它格式化字符串

publicoverridestringToString(){

return"("+point.ToString()+","+radius+")";

}

}

//定义一个正方形的类,并且它让继承于四边形的类

classSquare:

Quadrilateral{

publicSquare(){

}

publicSquare(Pointp1,Pointp2,Pointp3,Pointp4):

base(p1,p2,p3,p4){

}

publicoverridevoidDraw(){

Console.WriteLine("绘制一个正方形");

}

publicoverridevoidErase(){

Console.WriteLine("擦拭一个正方形");

}

publicoverridevoidMove(){

Console.WriteLine("移动一个正方形");

}

}

//定义一个类放入Main()方法

classTest6_1{

staticvoidMain(){

Pointp1=newPoint(1,1);

Pointp2=newPoint(1,2);

Pointp3=newPoint(2,2);

Pointp4=newPoint(2,1);

Shapeline=newLine(p1,p2);

Shapetriangle=newTriangle(p1,p2,p3);

Shapecircle=newCircle(p1,2);

Shapesquare=newSquare(p1,p2,p3,p4);

Console.WriteLine("直线是{0}",line);

line.Draw();

Console.WriteLine("三角形是{0}",triangle);

triangle.Draw();

Console.WriteLine("三角形的面积是{0}",((Triangle)triangle).Area());

Console.WriteLine("圆是{0}",circle);

circle.Draw();

Console.WriteLine("圆的面积是{0}",((Circle)circle).Area());

Console.WriteLine("正方形是{0}",square);

square.Draw();

Console.WriteLine("正方形的面积是{0}",((Square)square).Area());

line.Move();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1