【问题标题】:Should I use Object Oriented Programming in MATLAB?我应该在 MATLAB 中使用面向对象编程吗?
【发布时间】:2015-04-02 12:48:15
【问题描述】:

我有一个问题,我需要在 matlab 中处理大量数字并且代码开始变得混乱。在不同阶段将不同类型的绘图对象添加到代码中,有些有图例,有些没有。问题是没有 NULL 图例。一旦创建了一个对象,就会创建一个图例。但是,在调用 legend(handles,...) 之前,它们不会显示。这意味着,如果绘制了一些东西,有些需要图例条目而有些不需要,则需要传递大量句柄。

现在,文件开始变得很长,大约 1500 行,其中一些全局变量跨越了文件中的许多函数等等。为了防止“不要使用全局变量”cmets 涌入,是的,我知道全局变量通常是不必要的,但是当我把手放在它上面时,代码就是这样。但是,现在代码越来越乱,我考虑使用面向对象编程(OOP)来处理数字。

这个想法是让自定义图形对象自行处理,从而使代码更易读,分成更小的块。我们的想法是有一个类似的设计

class Figure

private:

MainFrame;
SubFrame;
Lines;
Legends;
Title;
X-Label;
Y-Label;

Methods:

To be defined, for example formatting plotting, edit title,… 

完整的设计并没有完全考虑清楚,但是这个问题的重点实际上是关于在 matlab 中使用 OOP。到目前为止,我所看到的并没有真正使用过的东西很多。这有什么原因吗? 任何人都可以在 matlab 中给出 OOP 的优缺点吗?在 matlab 中是否推荐使用 OOP?

我已添加有关我的问题的信息,因为我了解大型复杂问题更需要 OOP,因此与问题的复杂性相比,答案最好考虑缺点。 (例如,永远不要在matlab中使用OOP,只有在遇到复杂问题时才使用,随时使用,...)

【问题讨论】:

  • Matlab documentation 有一个关于这个主题的相当大的页面,以及何时使用 OOP 的指南。此外,OOP 的优缺点并不真正取决于语言(除非该语言没有足够的功能来支持 OOP)。这取决于您要解决的问题(复杂性、模块化要求等)。
  • @RollenD'Souza 我明白了,但这对于任何面向对象的语言来说或多或少都是正确的,而且它的级别非常高。这个问题不是关于 OOP,而是关于 MATLAB 中的 OOP。该问题与这个较旧的 SO 问题Is MATLAB OOP slow or am I doing something wrong? 松散相关。但是,这个问题已经很老了,可能不再具有代表性。
  • 啊,我明白了。好吧,这更有意义。接受的答案也已针对 2014a 进行了更新,因此具有代表性。
  • 如果你看第一个答案,他在 MATLAB 2014a 上重新运行了代码,OOP 仍然比直接函数调用慢得多,包也是如此。
  • @TheBlackCat 确实如此,但另一方面,这只是函数调用。可能还有其他问题,这里没有展示。

标签: matlab oop


【解决方案1】:

好的,问题是关于 Matlab 中的 OOP - 但在您的组织中不是 Matlab 中的 OOP 吗?

我的意思是考虑谁将使用/开发和维护未来的代码。

背景:我已将 OOP 用于我自己的工具箱(因为它的复杂/大到足以保证它 - 我开发/维护它) - 但是在为我的大多数客户的咨询工作中,我创建了函数(在某些情况下调用我的工具箱)——因为当工作完成时,他们会得到源代码,并且大多数人(更)更喜欢使用函数而不是类。

总而言之 - 我决定是否根据工作细节以及将来使用(开发和维护)代码的情况来使用 OOP。

所以回到你的主题 - 我会考虑你认为代码将去哪里以及谁将开发/维护它。他们会对课程感到满意 - 还是对函数更满意?

仅供参考:去年我与 Mathworks 交谈时,他们说他们每周开设多个“Matlab 入门”课程 - 但每季度只有 1 个“Matlab 课程”!这可以让您了解 Matlab 类在行业中的使用水平。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2013-05-21
    • 1970-01-01
    • 2015-03-20
    • 2010-09-18
    • 2011-07-25
    相关资源
    最近更新 更多