1

次の関数を作成する必要があります(Matlabのコマンドラインカジノに対して)。

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

これは私が与えられた仕事の問題であり、それは果たされなければなりません。すべてのゲームに類似した特性やwonAmountの計算などがあり、一般的にOOPはより構造化されているため、単純な関数を作成するだけで済みます。Matlabで試してみたいと思います。

ハンドルクラスを作成することはできますが、タスクの要件満たす必要があります。どのハンドルクラスがメソッドplayを使用するか-ハンドルクラスコンストラクターがオブジェクト自体を返す必要があることを理解していますか?コンストラクターが必ずしもコンストラクターを返すとは限らないクラスを探しています-ある種の静的クラス/関数ですか?

このクラスをどのように設計しますか?

4

1 に答える 1

2

プログラムへのインターフェースが関数呼び出しのように見える必要があるように思えますが、内部的にはオブジェクト指向プログラミングを使用したいと考えています。そうですか?

次のようなインターフェイスが必要だと仮定します。

[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

特定の呼び出し構文/ハンドルの動作が本当に必要でない限り、これにハンドルクラスを使用する正当な理由はありません...

何らかの理由でこれらすべてを1つのMファイルに含める必要がある場合は、運が悪いのではないかと思います...しかし、それはばかげた制限のようです。

于 2012-11-21T22:04:41.240 に答える