我定义了两个对象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"
备注:
答案 0 :(得分:0)
所以,你创建了一个类Matrix。它与Array类似,但专门用于类似矩阵的消息(您使用的消息)。现在,您创建了Matrix的两个实例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的实例,而是在其他使用矩阵的类中保存。