程序设计目的

程序设计目的

ID:38272656

大小:5.90 MB

页数:47页

时间:2019-06-07

程序设计目的_第1页
程序设计目的_第2页
程序设计目的_第3页
程序设计目的_第4页
程序设计目的_第5页
资源描述:

《程序设计目的》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、案例四绘图板4.1程序设计目的绘图操作在日常应用中不可或缺。图形可以用于说明很多无法用言语说明白的问题。本案例将介绍如何使用C#来开发一个绘图程序,该程序基于GDI+类库,具有一些简单的绘图操作功能及图片查看和缩放功能,使用它可以绘制出简单的图形。4.2程序功能介绍本案例程序实现了对简单图形(如直线、矩形和圆形)进行绘制、移动和旋转等操作;插入图片作为背景;改变绘制画笔的颜色、线宽和样式等;以及将图形存储为自定义格式文件或者图像文件。本案例程序基于工厂的设计模式来编写,可以向程序中添加其他的图形

2、元素,如三角形、多边形、图像等,只需要继承基类MyItem并实现其定义的一些方法即可。4.3架构设计与关键技术介绍4.3.1需求分析和架构设计针对上述介绍过的功能,首先分析一下如何实现图形绘制的功能,并且考虑到图形元素的多样性,为了加强程序的可扩展性,需要利用一些设计模式。与前面的章节不同,本案例及以后的章节所开发的程序没有已有的功能强大的控件可供使用,我们都需要从底层开发,具体到每一个点的绘制。因此,将使用UML的图形化描述来替换我们频繁的说教式的方式,UML图将使用RationalRose来

3、绘制。1.程序功能分析——用例分析我们所需要开发的功能总体上可以分为三类:图形绘制、图形操作和文件操作。.图形绘制完成各种图形元素的创建。.图形操作完成图形元素绘制完毕后的各种操作,如绘制、选中、移动、旋转等。.文件操作完成将绘制的各个图形存储为文件以备以后继续编辑,或者将其存储为图像文件以方便插入其他的文档中。根据上述分析,可以绘制出系统的用例图,如图4-1所示。图4-1系统用例图2.程序用例分析和实现——顺序图由于有非常多的图形元素,肯定会出现考虑不周的情况,所以一定要使程序具有可扩,通过一

4、个统一的接口来使用所有的元素,当需要添加另外的图形元素时,只需继承统一的接口,就可以直接在程序中使用。对于这种情况,很明显可以使用工厂模式来实现,假设一个统一的接口为基类MyItem,此类为一个抽象类,定义操作图形需要的方法,图形元素都继承自此类,实现MyItem的方法即可。我们可以实现图形创建的顺序图,如图4-2所示。图4-2图形创建的顺序图实现由于图形操作有很多种,而其程序功能大致相同,例如,移动图形的顺序图给出如图4-3所示。图4-3移动图形的顺序图打开文件的顺序图实现如图4-4所示。图4

5、-4打开文件的顺序图实现3.程序设计——类图经过上面的分析,我们已经对系统的要求和需要实现的功能有了一些了解,下面我们具体进行编码,设计程序需要使用的类,设定基类为MyItem,并定义3个子类:MyLine、MyRectangle和MyCirce,分别表示直线、矩形和圆形三种图形。另外需要有创建工厂类ItemFactory和表示图形元素类型的类ItemType,这样就可以得到系统的类图,如图4-5所示。图4-5系统类图实现在基类MyItem中定义了一些图形操作所需要的抽象方法,如Draw、Era

6、se等,在相关的子类中实现这些方法,然后直接将子类封装成统一的基类来操作,这样就统一了接口实现,简化了编码。4.3.2程序关键技术介绍下面介绍本案例程序中的关键技术。1.工厂设计模式简介工厂模式的意图是定义一个用于创建对象的接口,让子类决定实例化哪个类,它使得每一个类的实例化延迟到子类。它适用于下列几种情况:.当一个类不知道它所必须创建的对象的类时。.当一个类希望由它的子类来指定它所创建的对象时。.当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望将其中一个帮助子类是代理者这一信息局部化

7、时。图4-6给出了该模式的架构图。图4-6工厂模式的架构图工厂模式主要有两种不同的情况:.第一种情况是,Creator类是一个抽象类并且不提供它所声明的工厂方法的实现。.第二种情况是,Creator类是一个具体的类而且为工厂方法提供一个默认的实现。也有可能有一个定义了默认实现的抽象类,但这不太常见。第一种情况需要子类来定义实现,因为没有合理的默认实现。它避免了不得不实例化不可预见类的问题。在第二种情况中,具体的Creator主要因为灵活性才使用工厂方法。它所遵循的准则是,“用一个独立的操作创建对

8、象,这样子类才能重定义它们的创建方式”。这条准则保证了子类的设计者能够在必要的时候改变父类所实例化的对象的类。2.类的序列化序列化是.NET的运行时环境用来支持用户定义类型的流化的机制。它是将对象案例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。序列化的目的是以某种存储形式使自定义对象持久化或者将对象从一个地方传到另一个地方。实质上序列化机制

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。