0

2 つのオブジェクト X と Y の両方が行列と同じサイズの配列を持つように定義しました

    x:= Matrix new.
    x
      rows: 2 columns: 2;
      row: 1 column: 1 put: 2;
      row: 2 column: 1 put: 2;
      row: 1 column: 2 put: 2;
      row: 2 column: 2 put: 2.
    #(2 2 2 2)  "The x returns an array"
    y := Matrix new
    y
     rows: 2 columns: 2;
     row: 1 column: 1 put: 2;
     row: 2 column: 1 put: 2;
      row: 1 column: 2 put: 2;
     row: 2 column: 2 put: 2.
    #(2 2 2 2) "The object y returns an array"

ノート:

  • rows:columns は行列の行と列を与えるメソッドです
  • row:column は、値をマトリックスに入れるメソッドです。
4

1 に答える 1

0

クラス Matrix を作成しました。Array に似ていますが、マトリックスのようなメッセージ (使用したもの) に特化しています。ここで、Matrix の 2 つのインスタンス x と y を作成し、定義したメッセージを使用してそれらのエントリを配置しました。これまでのところ、すべて問題ありません。

ここで、これらのインスタンスを「保存」して、おそらく、合計、乗算、転置、スカラーによる積などの他のメッセージを実行して操作する必要があります。あなたの質問は、「x と y を保存するにはどうすればよいですか?」です。答えは、Matrix クラスにはありません! .

TestCase のサブクラス、つまり MatrixTest を作成し、そこに testSum、testMultiplication、testScalarMultiplication、testTransposition などのテスト用メソッドを追加することをお勧めします。x と y を作成するコードをこれらのメソッドに移動し、Matrix のこれらのインスタンスをメソッドの一時的に保持します。次の行に何か:

MatrixText >> testSum
| x y z |
x := Matrix new rows: 2 columns: 2.
x row: 1 column: 1 put: 2.
x row: 1 column: 2 put: 2.
"<etc>"
y := Matrix new rows: 2 columns: 2.
y row: 1 column: 1 put: 2.
"<etc>"
z = x + y (you need to define the method + in Matrix!).
self assert: (z row: 1 column: 1) = 4.
"<etc>"

一般的に言えば、Matrix のインスタンスを Matrix に保存するのではなく、Matrix を使用する他のクラスに保存します。

于 2014-12-20T02:45:19.183 に答える