首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下,最好的选择是什么?

在这种情况下,最好的选择是什么?
EN

Software Engineering用户
提问于 2017-07-27 16:42:46
回答 1查看 131关注 0票数 -1

我有个陈述。我知道组合和继承的起起落落,但我无法意识到,在给定的情况下,什么是最好的选择。

场景:

一家软件公司正在为一所大学开发一个网站,该网站使用多个类之间的继承。课程包括人、老师、学生、GradStudent、GradTeachAsst。

出于某些原因,项目设计团队决定不对GradTeachAsst类使用多重继承,并给出了两个替代方案。一种是使用组合,另一种是单继承与组合相结合。作为一名软件开发人员,您将选择哪个选项?用充分的理由证明你的回答是正确的。

CLASS-DIAGRAM:

在我看来,最好的方案是选择Composition。但我并没有想到原因。有人能解释清楚原因吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-07-27 16:55:17

正如您所指出的,继承解决方案需要引入很少有价值的层次结构。特别是使用多重继承,因为某人既是教师又是研究生,这是IMHO过于复杂的。如果老师不是一个研究生,而是一个普通的学生--这需要另一个班级;这意味着在一个更实质性的领域,结果会是班级的爆炸式增长。

从持久化的角度来看模型,这种继承使持久性变得复杂,同时也提供了很少或根本没有价值。持久化模型可能简单且易于使用组合。那么,为什么不在对象模型中也遵循这一点呢?

在这里,我广泛地支持学生与人,教师与人,而不仅仅是研究生学生教师使用作文。有了作文,就不需要额外的课程来塑造一个具有教学作用的人,也不需要选修课程。要明确的是,为学生和教师选择继承是很奇怪的,但是切换到GradTeachAssist的组合是很奇怪的;而对所有的学生和老师都使用组合是很自然的。

然而从逻辑的角度来看,从根本上说,我们是一个人,但我们所扮演的角色,例如学生或教师,是短暂的;这些不是永久的,而是一种关系,因此构图似乎更合适。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/354600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档