Shape模型的正确层次结构

时间:2011-06-29 06:24:39

标签: oop

如果我必须为几何Shape层次结构创建一个OOP模型,考虑到Point类也是最好的?

感谢。

3 个答案:

答案 0 :(得分:0)

使用java.awt.Shape怎么样?

答案 1 :(得分:0)

如果要完全封装形状的概念,它不应该是层次结构,因为宇宙中有无数个形状。相反,它应该只是一个Shape类。它应该由一系列线条和曲线组成。然后,您可以使用方法检查它是否符合特定的形状定义,例如IsCircle()IsSquare()等......

您还可以使用方法和/或构造函数将其设置为特定类型的形状。

答案 2 :(得分:0)

所有形状都可能实现IShape接口。 IShape需要Area()方法和IsIntersectingWith(IShape otherShape)方法。这种简单的观点虽然引发了一些关于如何实现动态调度的其他问题(三角形/三角形交叉需要不同于三角形/线段的算法)。

这当然是假设您确实需要此功能。假设面向图形的形状库,您可以定义RotateTranslateScale等转换。您还可以强制使用UnionIntersect或其他任何设置操作(但这两个操作可以表达您可能需要的所有内容)。

您还可以将事物基于计算几何,并提供将任何IShape转换为Polygon的方法函数。

我的观点是,可以通过IShape强制执行的功能应该遵循预期的用途。如果你没有任何预期的用途(因为它的教育开始)你应该作为练习本身的一部分,或作为发现领域(如何使用或使用,我们可以表达所有这些功能)在一个界面或我们应该将它分成多个)