gpt4 book ai didi

objective-c - 此应用程序的模型- View - Controller (矩阵操作)

转载 作者:行者123 更新时间:2023-11-29 13:37:30 24 4
gpt4 key购买 nike

我正在制作一个用于处理矩阵的应用程序,我想知道如何为它设置一个好的 MVC 系统。

基本上,我知道我需要 3 个主要的东西:

  1. MatrixRow(保存每一行的条目,可以通过乘法操作行)
  2. 矩阵(持有一堆矩阵行,并且可以添加新行、减去行、更改行)
  3. ProblemViewController(显示矩阵并允许用户与矩阵交互以解决问题)

但我主要对何时使用 View 或 ViewController 感到困惑。 MatrixRow 和 Matrix 的 View 似乎更容易,因为它们最终只是添加到 ProblemViewController 的 subview ,但是将逻辑放入 View 是否可以接受?

就模型而言,我是否制作了一个包含包含所有条目的数组的矩阵模型?还有一个包含所有乘法逻辑的 MatrixRow 模型?或者逻辑不应该在模型中。

最佳答案

But I'm confused mainly with when to use a View, or a ViewController. Views seem easier for MatrixRow and Matrix because they'll just ultimately be subviews added to the ProblemViewController, but is it acceptable to throw in logic into a view?

MVC 架构的重点是将数据和业务逻辑(模型)与表示( View )分开。您可能拥有知道如何显示矩阵行或整个矩阵的 View 类,但实际存储和操作数据的对象应该与这些对象分开。

您的矩阵模型可能如下所示:

@interface Matrix : NSObject
{
int rowCount;
int columnCount;
double *entries;
}

- (id)initWithRows:(int)rows columns:(int)columns data:(double*)data

- (double)entryAtRow:(int)row column:(int)column;

- (void)setEntry:(double) forRow:(int)row column:(int)column;

- (Matrix*)matrixByMultiplying:(Matrix*)m;

- (Matrix*)inverse;

- (Matrix*)transpose;
@end

因此 Matrix 类存储数据,并提供对矩阵有意义的操作。它不知道如何在屏幕上显示数据,或者数据来自哪里,或者如何在您的应用程序中使用给定的矩阵。

In terms of models, do I make a Matrix model which has an array that holds all the entries? And a MatrixRow model which holds all the logic to multiply rows? Or is logic not supposed to be in a model.

具体如何设置程序在一定程度上取决于个人喜好——有些人似乎喜欢非常简单的模型,它们除了存储数据外什么都不做。就个人而言,我会将与一般矩阵相关的所有内容都放在模型中,而忽略与您计划如何在应用程序中呈现矩阵相关的所有内容。

假设您刚刚完成您的应用程序,您的下一个任务是将其转换为提供完全不同类型的用户界面,例如命令行界面或网络界面。如果您要这样做,您是否期望必须重写您的矩阵乘法代码?逆矩阵的定义会改变吗?在这两个方面都是“否”——那些东西属于模型。您的整个 Matrix 类应该可以在执行相同操作但提供不同 UI 的程序中重复使用。

关于objective-c - 此应用程序的模型- View - Controller (矩阵操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10167732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com