面向对象实验Word下载.docx

上传人:b****6 文档编号:16738337 上传时间:2022-11-25 格式:DOCX 页数:15 大小:29.14KB
下载 相关 举报
面向对象实验Word下载.docx_第1页
第1页 / 共15页
面向对象实验Word下载.docx_第2页
第2页 / 共15页
面向对象实验Word下载.docx_第3页
第3页 / 共15页
面向对象实验Word下载.docx_第4页
第4页 / 共15页
面向对象实验Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

面向对象实验Word下载.docx

《面向对象实验Word下载.docx》由会员分享,可在线阅读,更多相关《面向对象实验Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

面向对象实验Word下载.docx

1.培养信息类专业学生的面向对象编程技术基本能力。

2.掌握C#程序设计语言。

3.了解面向对象编程的基本概念。

熟练掌握类的封装、继承、多态(运行时多态、编译时多态)的概念与实现,掌握属性、泛型、索引器的概念与实现,掌握抽象类与接口的概念与实现。

二、实验(正文)

1.在UserControl基类基础上设计一个Windows控件DrawArea。

2.设定DrawObject、ToolObject抽象基类的基本属性与方法。

3.设定DrawRectangle(DrawObject为其父类)、ToolRectangle(ToolObject为其父类)抽象子类的基本属性与方法。

4.设定DrawRectangle子实体类:

DrawBreak、DrawCapacitor、DrawKnife、DrawPower、DrawTransformer2、DrawTransformers3的基本属性与方法。

5.设定ToolRectangle子实体类:

ToolBreak、ToolCapacitor、ToolKnife、ToolPower、ToolTransformer2、ToolTransformer3的基本属性与方法。

6.设定实体类DrawLine(DrawObject为其父类)、ToolLine(ToolObject为其父类)、ToolPointer(ToolObject为其父类)的基本属性与方法。

7.构造客户端应用程序DrawElectricityElements.exe,调用DrawArea控件实现电力设备绘图系统。

实现过程

1.在DrawObject基类基础上设计变压器类、开关类、刀闸类、母线类、发电机类、电容器类。

基类DrawObject的设计与实现,程序代码如下:

publicabstractclassDrawObject

{

#region属性部分

#region构造函数

#region与图形操作有关的方法

#region与锚点有关的方法

#region判断与点的位置有关的方法

#region判断与矩形位置有关的方法

}

2.在DrawObject中定义了画图draw的虚方法:

publicvirtualvoiddraw(Graphicsg),且画各种器件的共同点是:

都可以把器件放到矩形RectangleF中来画。

父类DrawRectangle的设计与实现,代码如下:

publicabstractclassDrawRectanlge:

DrawObject

{

#region属性部分

#region一般方法

///<

summary>

///移动图形

/summary>

paramname="

deltaX"

>

<

/param>

deltaY"

publicoverridevoidMove(intdeltaX,intdeltaY)

rectangle.X+=deltaX;

rectangle.Y+=deltaY;

}

///规范化图形

publicoverridevoidNormalize()

rectangle=GetNormalizedRectangle(rectangle);

r"

returns>

/returns>

publicstaticRectangleGetNormalizedRectangle(Rectangler)

returnGetNormalizedRectangle(r.X,r.Y,r.X+r.Width,r.Y+r.Height);

p1"

p2"

publicstaticRectangleGetNormalizedRectangle(Pointp1,Pointp2)

returnGetNormalizedRectangle(p1.X,p1.Y,p2.X,p2.Y);

x1"

y1"

x2"

y2"

publicstaticRectangleGetNormalizedRectangle(intx1,inty1,intx2,inty2)

if(x2<

x1)

inttmp=x2;

x2=x1;

x1=tmp;

if(y2<

y1)

inttmp=y2;

y2=y1;

y1=tmp;

returnnewRectangle(x1,y1,x2-x1,y2-y1);

3.开关类的设计思路:

在Breaker.cs中,根据开关的形状定义矩形privateRectangleFri(i=1~5),且定义函数computer来计算矩形起点的位置和矩形宽和高publicvoidcomputer(),然后覆写DrawObject类中的画图draw的虚方法publicoverridevoiddraw(System.Drawing.Graphicsg)。

画矩形:

g.DrawRectangle(pen,x+(float)1.5*d,y+(1*d),3*d,2*d);

画线:

g.DrawLine(pen,newPointF(x+0*d,y+2*d),newPointF(x+(float)1.5*d,y+2*d));

g.DrawLine(pen,newPointF(x+(float)4.5*d,y+2*d),newPointF(x+6*d,y+2*d));

其他电器元件的画法与开关类的画法基本一致,就是多了一个画椭圆的方法:

g.DrawEllipse(pen,newRectangleF(x+(float)0.5*d,y+(float)1.5*d,1*d,1*d));

下面不再叙述,只展示各类电器元件代码

子类Break(开关)的设计与实现,代码如下:

publicclassDrawBreak:

DrawRectanlge

publicDrawBreak(intx,inty,intwidth,intheight)

:

base(x,y,width,height)

base.Name="

开关"

;

publicDrawBreak()

this(0,0,80,40)

privateboolopenOrclose=false;

///表示开关状态

publicoverrideboolOpenOrClose

get

returnopenOrclose;

set

openOrclose=value;

///开关操作

publicvoidSwitch()

if(openOrclose==false)

openOrclose=true;

else

openOrclose=false;

///画图方法

g"

publicoverridevoidDraw(System.Drawing.Graphicsg)

base.Draw(g);

Penpen=newPen(base.Color,base.PenWidth);

Rectanglerect=DrawRectanlge.GetNormalizedRectangle(base.rectangle);

intx=rect.X;

inty=rect.Y;

floatd=(float)rect.Width/6;

floatb=(float)rect.Height/6;

g.DrawLine(pen,newPointF(x+1*d,y+2*d),newPointF(x+2*d,y+2*d));

g.DrawLine(pen,newPointF(x+4*d,y+2*d),newPointF(x+5*d,y+2*d));

g.DrawLine(pen,newPointF(x+2*d,y+(float)1.5*d),newPointF(x+4*d,y+(float)1.5*d));

g.DrawLine(pen,newPointF(x+2*d,y+(float)2.5*d),newPointF(x+4*d,y+(float)2.5*d));

g.DrawLine(pen,newPointF(x+2*d,y+(float)1.5*d),newPointF(x+2*d,y+(float)2.5*d));

g.DrawLine(pen,newPointF(x+4*d,y+(float)1.5*d),newPointF(x+4*d,y+(float)2.5*d));

g.ResetTransform();

pen.Dispose();

4.子类Capacitor(电容器)的设计与实现,代码如下:

publicclassDrawCapacitor:

publicDrawCapacitor(intx,inty,intwidth,intheight)

电容器"

publicDrawCapacitor()

this(0,0,120,80)

publicoverridevoidDraw(Graphicsg)

g.SmoothingMode=SmoothingMode.AntiAlias;

g.DrawLine(pen,newPointF(x+1*d,y+2*d),newPointF(x+(float)2.5*d,y+2*d));

g.DrawLine(pen,newPointF(x+(float)3.5*d,y+2*d),newPointF(x+5*d,y+2*d));

g.DrawLine(pen,newPointF(x+(float)2.5*d,y+1*d),newPointF(x+(float)2.5*d,y+3*d));

g.DrawLine(pen,newPointF(x+(float)3.5*d,y+1*d),newPointF(x+(float)3.5*d,y+3*d));

5.子类Knife(刀闸)的设计与实现,代码如下:

publicclassDrawKnife:

publicDrawKnife(intx,inty,intwidth,intheight)

刀闸"

publicDrawKnife()

publicvirtualboolOpenOrClose

g.DrawEllipse(pen,newRectangleF(x+(float)0.5*d,y+(float)1.5*d,1*d,1*d));

g.DrawEllipse(pen,newRectangleF(x+(float)4.5*d,y+(float)1.5*d,1*d,1*d));

g.DrawLine(pen,newPointF(x+0*d,y+2*d),newPointF(x+(float)0.5*d,y+2*d));

g.DrawLine(pen,newPointF(x+(float)5.5*d,y+2*d),newPointF(x+6*d,y+2*d));

g.DrawLine(pen,newPointF(x+1*d,y+(float)1.5*d),newPointF(x+5*d,y+0*d));

6.子类Power(电源)的设计与实现,代码如下:

publicclassDrawPower:

publicDrawPower(intx,inty,intwid,inthei)

base(x,y,wid,hei)

电源"

publicDrawPower()

g.TranslateTransform(x+3*d,y+3*b);

g.RotateTransform(Angle);

g.TranslateTransform(-x-2*d,-y-2*b);

g.DrawEllipse(pen,newRectangleF(x+1*d,y+0*d,3*d,2*d));

g.DrawBezier(pen,newPointF(x+1*d,y+1*d),newPointF(x+(float)2.5*d,y+0*d),newPointF(x+(float)2.5*d,y+2*d),newPointF(x+4*d,y+1*d));

g.DrawLine(pen,newPointF(x+4*d,y+1*d),newPointF(x+5*d,y+1*d));

7.子类Transformer2(二绕组变压器)的设计与实现,代码如下:

publicclassDrawTransformer2:

publicDrawTransformer2(intx,inty,intwidth,intheight)

双绕变压器"

publicDrawTransformer2()

floatd=(float)rect.Width/6;

floatb=(float)rect.Height/6;

g.TranslateTransform(-x-3*d,-y-3*b);

g.DrawEllipse(pen,newRectangleF(x+1*d,y+(float)(0.5*d),3*d,3*d));

g.DrawEllipse(pen,newRectangleF(x+2*d,y+(float)(0.5*d),3*d,3*d));

g.DrawLine(pen,newPointF(x+0*d,y+2*d),newPointF(x+1*d,y+2*d));

g.DrawLine(pen,newPointF(x+5*d,y+2*d),newPointF(x+6*d,y+2*d));

8.子类Transformer3(三绕组变压器)的设计与实现,代码如下:

publicclassDrawTransformer3:

publicDrawTransformer3(intx,inty,intwidth,intheight)

三绕变压器"

publicDrawTransformer3()

bas

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

当前位置:首页 > 解决方案 > 其它

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

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