本周文件交换选择

我们最好的用户反馈

HGSETGETPLUS - HGSETGET的扩展

埃里克他本周的选择是“HandleGraphicsSetGet安德鲁·纽厄尔

大家好,我的名字是埃里克,我将不时为“本周精选”博客撰稿。本周就是这样一个场合!像Jiro和Brett一样,我是MathWorks的应用工程师。我在研究生院开始使用MATLAB进行数据过滤和统计,很快我就开始寻找任何我可以使用它的理由!

我最喜欢的MATLAB特性之一是面向对象编程(OOP)系统.它非常适合构建复杂的gui,创建与他人共享的组件,以及管理大型项目。MATLAB中OOP系统的一个特别有用的特性是能够创建行为类似的类处理图形对象,使用/得到接口。要做到这一点,需要编写一个类继承了从“hgsetget,一个内置的MATLAB类。

本周的选择是一个非常有用的扩展到hgsetget类,开始作为MATLAB答案的帖子由安德鲁。通过继承,Andrew想要扩展hgsetget类,为属性值添加一个简单的验证和枚举接口。次郎分享了更多的背景故事:

“如果你感兴趣,安德鲁写了这篇文章来回应这个问题MATLAB回答问题他几周前发的。当他提到他想出了一个很好的解决方案时,我鼓励他把它贴在File Exchange上。我很高兴他做到了,因为这是一个在MATLAB类基础上构建的很好的例子。”

经过一些对话和Jiro的反馈,最终的结果是一个新的MATLAB类名为“hgsetgetplus”。它允许您轻松地约束类中的属性可以假定的值集,并通知用户这些值是什么。要了解这是如何有用的,请考虑MATLAB中内置的Handle Graphics对象的行为:

>> h = surf(峰值);> >集(h, “线宽”5);
???使用==> set Value的错误值必须是有限的且大于零

您当然可以在自己的类中实现这样的行为。但是,您必须为每个属性编写一个“set”方法,并包含产生错误的繁琐验证代码。Andrew的“hgsetgetplus”类使这很容易。当你编写自己的类时,你只需要继承" hgsetgetplus "类,然后用这个简单干净的接口定义类的属性:

为假想的% 'LineStyle'类设置属性约束的代码。这段代码位于CLASSDEF文件内部。
Obj.width.classes = { “数字”};Obj.width.attributes = { “整数” “>”, 0};Obj.style.classes = { “字符”};Obj.style.choices = { “固体” “点” “冲”};

这是当我们操作上面类中的对象时发生的情况:

试图设置上述类中%对象的'width'属性的代码。
> >设置(obj, “宽度”5);
???使用==> setOneProperty错误期望宽度是一个包含所有值> 0的数组。

枚举'style'属性的有效值。
> >设置(obj, “风格”)[|虚线|虚线]

Andrew提交的文件包括一个示例对象和脚本,您可以运行它们来查看与上面示例类似的行为。

我喜欢这篇文章有几个原因:

  1. 它提高了你作为MATLAB程序员的工作效率。
  2. 它通过减少常见且难以找到的错误来源,使您的代码更加可靠。
  3. 除了显示有用的错误消息外,它还允许用户查看有效属性值的范围,从而在第一时间避免错误消息,并提高他们的自尊心。
  4. 当我帮助我们的技术支持人员时,有人打电话来要求我们添加这个确切的功能!金宝app
  5. 这是一个关于如何安排和打包MATLAB实用程序的很好的例子。它包括HTML格式的清晰文档、示例代码,甚至可以运行的单元测试史蒂夫·埃丁的xUnit框架。内容被分组到单独的文件夹中,保持内容的组织性。如果你发现自己在MATLAB中开发工具供他人使用,这是一个很好的例子,说明了如何将所有东西清晰地捆绑在一起。

评论

让我们知道你的想法在这里或者留下评论安德鲁。

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。