首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从类继承还是将其用作组件?

从类继承还是将其用作组件?
EN

Stack Overflow用户
提问于 2014-04-28 20:44:59
回答 3查看 82关注 0票数 3

对于一门大学课程,我正在用c++实现一个线性方程组(以及一种求解它的方法)。这个系统由一个(稀疏)矩阵和一个向量组成。我已经编写了一个额外的类来实现矩阵,并提供了一些与它相关的函数(检查它是否对称,将它与向量相乘,打印到stdout,等等)。

我的问题如下:我的类"systemLinearEquations“应该继承"sparseMatrix”类,还是应该拥有"sparseMatrix“类的组件?

这两种方式的优点/缺点是什么?

EN

回答 3

Stack Overflow用户

发布于 2014-04-28 20:49:10

线性方程不是矩阵,而是用矩阵表示的。通常,在这种情况下,您应该更喜欢组合而不是继承。

可以这样想:有人能威胁我的线性方程,就好像它是一个矩阵一样?对于线性方程,所有的矩阵运算都有意义吗?如果这两个问题的答案都是yes,那么可能更好的选择是继承矩阵,否则最好使用组合。

票数 4
EN

Stack Overflow用户

发布于 2014-04-28 20:53:06

一般来说,继承满足通用性,这意味着基类提供公共过程,而子类提供基本行为的特定实现(覆盖)或扩展。

所以这真的取决于你在看什么。

票数 2
EN

Stack Overflow用户

发布于 2014-04-28 20:53:25

最重要的标准是:公共继承代表一个IS-A关系。在下面的代码中:class Gadget : public Widget,您声称每个Gadget 都是一个 Widget,可以做Widget能做的任何事情。如果一个操作需要输入一个Widget,当传入一个Gadget时,它必须正常工作。

这些是你在判断继承设计时应该戴上的眼镜。如果线性系统可以用于任何可以使用矩阵的地方,并且支持矩阵支持的所有操作,那么您可以继承。否则,你应该倾向于构图。

我不知道你具体任务的细节,但我个人更喜欢这里的作文。矩阵肯定会支持transpose()运算。对于线性系统,这应该做什么?例如,如果它不是正方形,您将很难获得右侧的值。

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

https://stackoverflow.com/questions/23341518

复制
相关文章

相似问题

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