将MLAPP (AppDesigner)应用程序与其他类配对

13次意见(过去30天)
我目前正在构建一个面向对象的系统,该系统将医学成像数据分组在一起进行处理。我希望使系统非常易于使用,所以gui是一个有吸引力的下一步。
我可以将GUI(特别是在AppDesigner中设计的mlapp)与我现有的类结构配对以允许GUI对象调用不同的成员函数的最佳方法是什么?
例子:
Class1(顶级分组类,其中存储了一个Class2对象数组)
Class2(二级分组类,其中存储了一个Class3对象数组)
Class3(低级数据类,包含实际的医学影像数据)
我想初始化所有对象(从Class1开始),然后能够使用GUI选择一个Class2(一组Class3对象)或一个单独的Class3对象,然后对它执行处理功能(例如,选择一个数据集,点击一些按钮,进行处理)。我知道回调是如何工作的,但是我很好奇在我的Class1中实例化的GUI对象和其他对象之间共享数据的最好方法是什么。
1评论
Guillaume
Guillaume 2018年6月15日
如果我没理解错的话,你会得到这样的结果:
classdefClass1
属性什么访问限制?
类别2孩子
结束
结束
classdef类别2
属性什么访问限制?
类别3孩子
结束
结束
classdef类别3
结束
这是 Class1 有一个有类型的成员吗 类别2 而且 类别2 有一个有类型的成员吗 类别3 .在那之后,我不知道你的问题是什么,也不知道为什么会涉及回调。

登录评论。

答案(1)

克里斯门户
克里斯门户 2018年6月17日
这是我的做法:
  1. 使用应用程序窗口的StartupFcn回调初始化所有的Class1, Class2和Class3对象。
  2. 将Class1实例保存为应用程序的一个属性,类似于“MyMedicalData”。
  3. 同样在这个回调中,填充任何UI组件(下拉列表、树等),您将用于表示和选择单独的Class2和Class3对象。
  4. 配置UI组件的回调,用于通过创建的app属性访问所需的适当类对象。比如app。mymedicaldata。getarrayofclass2objects。
(注意,我假设你的Class1定义有某种类型的GetArrayOfClass2Objects属性或方法来导航你的内部数据结构。)
3评论
诺亚格里菲思
诺亚格里菲思 2021年7月27日
@Alexander科克伦 据我所知,在构造函数中创建类以外的任何东西都是质量差的代码,即这样做会产生紧密耦合和糟糕的内聚性。甚至构造函数在某些情况下也可能是危险的。
这里有一个非常有用的资源来创建高质量的代码:
https://refactoring.guru/refactoring/smells

登录评论。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!