我正在尝试通过数据库设计技巧来提升自己。我今天一直在研究一些与IT相关的难题,其中大部分都相当简单。 ......然后我遇到了这个所谓的“老人”,这让我感到沮丧。
前提是下图中的类层次结构存在错误。没有给出关于类/接口性质的进一步信息。我找不到任何合乎逻辑的问题。我能做的最好的事情是,从某种程度上说,一个点在技术上并不是一个形状,但我想我认为这个问题的答案要比那个少得多。
如果有人有任何建议,我很乐意听到。这真的是我的头脑。
答案 0 :(得分:1)
也许问题是给我们一个提示:
没有关于类/接口性质的进一步信息。
我们有关于问题的实际范围(即业务逻辑)的绝对零信息。 “形状”可以是在网格上绘制的数学表示。它可以是游戏引擎建模程序的定义。它可能是一个人健康水平的指标。谁知道?这些变体中的每一个都需要在类图和关系数据模型中使用不同的表示。
它让我们只假设可能语义错误。但是,我们可以对图表本身可能技术错误的内容进行观察。
我提出的问题是箭头指向错误的方向。在大多数类图中,继承由具有指向基类的箭头的子类表示。
<小时/> 这个答案可能看似荒谬。然而,它实际上意味着拼图问题本身。在现实生活中,设计任何东西(数据库,类图,无论如何)都是为了解决问题的业务需求并做出适当的设计决策。在不了解域名的情况下,我们所能做的只是假设设计在语义上可能存在错误,这会产生一个相当无意义的拼图问题。
答案 1 :(得分:0)
我认为Polygon类是多余的。是否有任何特殊原因需要将矩形和方形分开?更进一步,为什么要区分三角形和矩形?你可以把它们看作只是一个点列表;三角形有三个,矩形有四个。还有你自己提到过的东西;点不是真正的形状,也许这是你正在寻找的最明显的答案。
答案 2 :(得分:0)
我也很难过。我唯一能想到的是Polygon和Ellipse应该从属于Point。
多边形是三个或更多点。
Ellipse有两个焦点。
这会使Shape接口成为一个列表或点数组。
答案 3 :(得分:0)
您的问题涉及数据库设计,这是我看到问题的地方;类层次结构太深,在我看来可以使用单个形状类建模,因为它们共享相似的属性E.G.都有边。圆圈有一个,三角形有3个,矩形有4个。
就类图本身而言,我想可以认为点,多边形和椭圆应该是接口而不是类。
我同意其他关于点不是形状的评论。
出于兴趣,这个问题来自哪里?
答案 4 :(得分:0)
如果我从严格的数学角度来看这个,Point和Ellipse / Circle是Conic Sections,并且应该在同一个类中。我不知道这是一个神奇的答案,但它是一个。
扩展它,Polygon由3-N行组成,它们不是数据模型的一部分。
我同意其他海报,他们指出Circles,Rectangles和Squares只是Polygon的特殊情况,我不会在关系数据库模型中特别将它们分解出来。这对于对象模型可能有意义,但对于关系模型来说似乎有点过分。
答案 5 :(得分:0)
鉴于问题的模糊性,这听起来像是圆 - 椭圆问题的措辞。 http://en.wikipedia.org/wiki/Circle-ellipse_problem
本质上,错误是定义具有无法在超类中定义的不变量的子类:
Is deriving square from rectangle a violation of Liskov's Substitution Principle?
的相关讨论