点击查看:2015计算机等级考试二级Java入门教程章节汇总
点击查看:2015计算机等级考试二级Java入门教程第十四章汇总
14.6 管理几何图形
当在Sketcher中建立几何图形时,我们并不知道几何图形出现的顺序,这完全由应用这个程序生成草图的人决定,因此我们需要在不知道它们是何种图形的情况下,绘制它们并完成其他的一些操作,在这里多态性可以帮助你。
在我们想把颜色或线段样式这些属性定义为对象的一部分存储他们时,我们并不希望直接地使用在java.awt_geom中定义的几何图形类。我们可能会考虑把它们作为我们的几何图形类的基类。但是,我们不能使用GeneralPath类,因为正像我们己经看到的,它被声明为final ,并且我们也不希望这种限制。
考虑到所有这些原因,最简单的方式可能就是为我们的几何图形类定义一个公共的基类,并且在每个类中包含一个成员来存储各种Shape对象。然后,我们可以包含一个多态的方法,返回一个Shape类型的引用,以便使用graphics2D对象的draw()方法。
我们可以从定义基类Element开始,我们将从这个类派生出特定的几何图形的类定义。Element类将有所有几何图形类共有的数据成员,在本例中我们还将放置一些希望多态地执行的方法。我们需要做的全部工作就是确保从Element类派生出来的每个几何图形类都实现了这些方法。
这张示意图显示了我们将在Element基类中声明的最初成员。现在只有一个Color数据成员,用来存储几何图形的颜色。由于不打算用Element类定义几何图形,所以这里的getShape()和getlBounds()方法都设计成为abstract,而getColor()方法将在这个类中实现。其他的一些方法将由Element的了类实现。
最初,我们定义5个显示在示意图中表示几何图形的类,其中Erlement类为基类。它们提供对直线飞矩形、圆、徒于绘制曲线和文本块对象的描述。这此类将继承定义存Element类,扫的所有数据成员。正像我们由几何图形类的名称看到的,它们都被嵌套存Element类中,Element类为基类,就好像是儿何图形类的房屋一这样可以避免与其他类使用的命名发生混乱,如Line, Circle这样的类。由于没有Element对象,所以我们将把几何图形类声明为Element类的静态成员。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |