【问题标题】:Defining specific Matlab class structure定义特定的 Matlab 类结构
【发布时间】:2012-11-21 21:39:20
【问题描述】:

我必须创建以下函数(到 Matlab 中的命令行赌场):

function [wonAmount, noGuesses] = highLow(gambledAmount)
function [wonAmount, noPulls] = slotMachine(gambledAmount, betFactor)
function wonAmount = roulette(gambledAmount, typeOfBet)

这是我被赋予的任务,必须完成。我可以只创建简单的函数,因为所有的游戏都有一些相似的特征,winAmount 的计算等,而且通常 OOP 更结构化,我想在 Matlab 中尝试一下(OOP)。

我可以创建一个句柄类,但我必须满足任务的要求。哪个具有方法的句柄类播放 - 我的理解是句柄类构造函数必须返回对象本身?我正在寻找一个构造函数不一定返回构造函数的类 - 一种静态类/函数?

你会如何设计这个课程?

【问题讨论】:

  • 不确定这是否是您要找的,但是singleton pattern(私有类构造函数,带有返回单个实例的静态方法)呢
  • 查看您的其他链接问题,在我看来,如果您仅将类用于没有封装“状态”的静态函数,那么您创建类的原因是错误的。

标签: oop class matlab struct


【解决方案1】:

听起来您需要程序接口看起来像函数调用,但在内部您希望使用 OO 编程。对吗?

假设您需要界面看起来像:

[wonAmount, noGuesses] = highLow(gambledAmount)

您可以在 highLow 函数中编写代码:

function [wonAmount, noGuesses] = highLow(gambledAmount)
game = highLowGame; %instantiate the game, and run it:
[wonAmount, noGuesses] = highLowGame.run(gambledAmount);

或者你可以使用静态方法:

function [wonAmount, noGuesses] = highLow(gambledAmount)
[wonAmount, noGuesses] = highLowGame.runGame(gambledAmount);

http://www.mathworks.com/help/matlab/matlab_oop/static-methods.html

我假设 highLowGame.m 看起来像这样:

 classdef highLowGame < casinoGame

没有充分的理由为此使用句柄类,除非您真的想要特定的调用语法/句柄行为...

如果出于某种原因您需要将所有这些都放在一个 M 文件中,那么恐怕您不走运……但这似乎是一个愚蠢的限制。

【讨论】:

  • 是的。我想在内部使用 OOP 并确保我满足项目要求。明天我将和我的讲师讨论这个主题——他们有多严格。但我想我会接受你的建议并使用从函数调用的静态方法。感谢您的意见。
  • 是否有与 PHP self::callFunction() 等效的 Matlab,所以我不必在静态类中硬编码对象名称?
  • 不太清楚你的意思;能给我举个例子吗?这可能是一个合理的单独 stackoverflow 问题
  • 我明白你现在的意思了。就在那边。
猜你喜欢
  • 2011-05-09
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2014-05-28
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
相关资源
最近更新 更多