如果我必须为几何Shape层次结构创建一个OOP模型,考虑到Point类也是最好的?
感谢。
答案 0 :(得分:0)
使用java.awt.Shape怎么样?
答案 1 :(得分:0)
如果要完全封装形状的概念,它不应该是层次结构,因为宇宙中有无数个形状。相反,它应该只是一个Shape类。它应该由一系列线条和曲线组成。然后,您可以使用方法检查它是否符合特定的形状定义,例如IsCircle()
,IsSquare()
等......
您还可以使用方法和/或构造函数将其设置为特定类型的形状。
答案 2 :(得分:0)
所有形状都可能实现IShape
接口。 IShape
需要Area()
方法和IsIntersectingWith(IShape otherShape)
方法。这种简单的观点虽然引发了一些关于如何实现动态调度的其他问题(三角形/三角形交叉需要不同于三角形/线段的算法)。
这当然是假设您确实需要此功能。假设面向图形的形状库,您可以定义Rotate
,Translate
,Scale
等转换。您还可以强制使用Union
,Intersect
或其他任何设置操作(但这两个操作可以表达您可能需要的所有内容)。
您还可以将事物基于计算几何,并提供将任何IShape
转换为Polygon
的方法函数。
我的观点是,可以通过IShape
强制执行的功能应该遵循预期的用途。如果你没有任何预期的用途(因为它的教育开始)你应该作为练习本身的一部分,或作为发现领域(如何使用或使用,我们可以表达所有这些功能)在一个界面或我们应该将它分成多个)