2

我正在尝试通过数据库设计技能来完善。我今天一直在解决一些与 IT 相关的难题,其中大部分都相当简单。...然后我遇到了这个所谓的“老歌”,这让我很沮丧。

前提是下图中的类层次结构有误。没有提供有关类/接口性质的更多信息。我找不到任何逻辑问题。我能做的最好的事情就是抱怨一个点在技术上不是一个形状,但我想认为答案比这要少一些。

如果有人有任何建议,我很想听听。它真的让我很头疼。

图在这里

4

6 回答 6

1

也许这个问题给了我们一个提示:

没有提供有关类/接口性质的更多信息。

我们绝对为零问题的实际范围(即业务逻辑)的信息“形状”可以是在网格上绘制的数学表示。它可以是游戏引擎建模程序的定义。它可能是一个人的健康水平的指标。谁知道?这些变体中的每一个都需要类图和关系数据模型中的不同表示。

它只让我们对可能在语义上错误的地方做出假设。但是,我们可以对技术上可能存在的问题进行观察可能存在的问题。

我提出的问题是箭头指向错误的方向。在大多数类图中,继承由具有指向基类的箭头的子类表示。


这个答案可能看起来很荒谬。然而,它实际上是对拼图问题本身的一种抨击。在现实生活中,设计任何东西(数据库、类图等)都是为了解决问题的特定业务需求并做出适当的设计决策。在对领域一无所知的情况下,我们所能做的就是对设计在语义上可能存在的问题做出假设,这会导致一个相当无意义的难题问题。

于 2011-02-16T20:25:04.283 回答
0

我认为 Polygon 类是多余的。有什么特殊的原因你必须分开矩形和正方形吗?更进一步,为什么要区分三角形和矩形?您可以将两者都视为点列表;三角形有三个,矩形有四个。还有你自己提到的那件事;点并不是真正的形状,也许这是您正在寻找的最明显的答案。

于 2011-02-16T18:50:49.687 回答
0

我也难住了。我唯一能想到的是Polygon和Ellipse应该从属于Point。

多边形是三个或更多点。

椭圆有两个焦点。

这将使 Shape 接口成为一个列表或点数组。

于 2011-02-16T18:56:05.200 回答
0

您的问题涉及数据库设计,这就是我看到问题的地方;类层次结构太深了,我认为可以使用单个形状类进行建模,因为它们都具有相似的属性 EG 都有。圆形有 1 个,三角形有 3 个,矩形有 4 个。

就类图本身而言,我想可以说点、多边形和椭圆应该是接口而不是类。

我也同意其他关于点不是形状的评论。

出于兴趣,这个问题从何而来?

于 2011-02-16T19:05:14.447 回答
0

如果我从严格的数学角度来看,Point 和 Ellipse/Circle 是Conic Sections,应该属于同一类。我不知道这是正在寻找的神奇答案,但它就是一个。

扩展它,多边形由 3-N 条线组成,它们不是数据模型的一部分。

我同意其他发帖人的观点,他们指出圆形、矩形和正方形只是多边形的特例,我不会在关系数据库模型中专门对它们进行分解。这对于对象模型可能是有意义的,但对于关系模型来说似乎有点过头了。

于 2011-02-16T19:22:49.123 回答
0

鉴于问题的模糊性,这听起来像是圆椭圆问题的措辞。http://en.wikipedia.org/wiki/Circle-ellipse_problem

本质上,错误将是定义具有无法在超类中定义的不变量的子类:

  • 要定义一个有效的正方形,您必须保持矩形不需要的高宽比(在一般情况下)
  • 同上(大致)圆形和椭圆

相关讨论是否从矩形导出正方形违反了 Liskov 的替换原则?

于 2011-02-16T20:46:14.477 回答