Java 在设计继承时卡住了,哪一个是正确的?

Java 在设计继承时卡住了,哪一个是正确的?,java,inheritance,coding-style,uml,Java,Inheritance,Coding Style,Uml,试图编写一个简单的应用程序,但我陷入了一个继承问题 以下哪一项是正确的?具体来说,根据特定场景,哪一个应该是正确的 A) 或 B) 感谢您提供的任何意见。取决于——哪一个继承了另一个 如果您的问题是如何绘制显示继承的UML图,那么箭头应该在超类上(触摸,指向) 如果你问的是一个概念性的答案,在我看来,开发人员是程序员的一个子类,因为开发人员添加了行为。任何人都可以编程(嗯…),但不是每个人都是开发人员 定义问题。LOL.A Developer“是一个”程序员,因此B是正确的,但我会反转图

试图编写一个简单的应用程序,但我陷入了一个继承问题

以下哪一项是正确的?具体来说,根据特定场景,哪一个应该是正确的

A)

B)

感谢您提供的任何意见。

取决于——哪一个继承了另一个

如果您的问题是如何绘制显示继承的UML图,那么箭头应该在超类上(触摸,指向)

如果你问的是一个概念性的答案,在我看来,开发人员是程序员的一个子类,因为开发人员添加了行为。任何人都可以编程(嗯…),但不是每个人都是开发人员

定义问题。

LOL.A Developer“是一个”程序员,因此B是正确的,但我会反转图表,将Developer放在程序员的顶部,并使用指向程序员的“使用”箭头。我喜欢这样做是为了显示“基本”关系——程序员是开发人员的基本类(尽管我相信这会在某些方面引发愤怒)

同时,这是一个哲学问题(我想你也知道)。

继承表达了“是一种”关系

每个程序员都是开发人员吗

每个开发人员都是程序员吗

也许两者都有


取决于您的应用程序所涉及的领域。例如,房地产开发商与广播程序员几乎没有关系。

如果您有非程序员的程序员,则为A。如果您有非程序员的程序员,则为B。如果您有两个或两个都没有,则两者都不是。

正方形是矩形吗?是的,数学上!A应该是吗square类从矩形类继承

开发人员是程序员吗?因为这比上面的问题更难回答,所以我不想用继承来建模这种关系。他们可以是兄弟姐妹,共享一个共同的抽象类或接口

但如果您能提供更多信息,如行为、责任和场景,这将有助于找到正确的设计

更新


每个设计都应该有一个目的。如果你没有一个要构建的应用程序,没有需要满足的需求,那么为设计而设计是一个徒劳的失败练习。

这取决于你是想说“程序员就是开发人员”,还是想说“程序员就是开发人员”。为什么要关闭?这是一个与编程相关的问题:)它们都实现了nerd接口:)这引出了一个我忘了提的问题。您应该更喜欢“HAS a”关系而不是“IS a”(聚合与继承)。就@DavidSchwartz而言,如果一些开发人员不是程序员,那么很难说开发人员是程序员——尽管我认为开发人员实际上是程序员。如果你试图代表一个软件团队,我建议你考虑一个不同的类结构。避免“开发者”这个名字模棱两可,使用“团队成员”或“顾问”或“猪”(如果Scrum是你喜欢的话)——露齿而笑。通常,根据定义,程序员是从头开始写东西的人,开发人员是以后开发应用程序的人!或者vice verca我想我应该把他们当作兄弟姐妹,因为这似乎是一个有争议的话题:(是的,我同意。但这只是因为你提供的信息太少而引起争议。我已经用一些与此相关的东西更新了我的答案。+1用于提及LSP。说Y是X是引入子类化和替换概念的直观方式,但在那之后,这是一条死胡同,我们基本上必须先忘掉它,然后才能开始学习开始编写灵活的、可维护的和可重用的代码。谢谢兄弟!最后一点帮助很大;)你让我在“是正方形还是矩形”!:-)然后你对整个“更新”点都很不屑一顾…:-)