1

我是使用类的新手,并且想学习将它们与表单集成的巧妙方法。具体来说,当您在表单中输入数据时,该表单是否应该与类紧密联系?如何?

让我们用一个简单的例子。John 是各种卡片的收藏家:棒球卡片、口袋妖怪卡片等。他将卡片列表数据库存储在 Excel 工作表中,并使用表格对其进行管理。有输入新卡和修改他的收藏状态的表格,也有分析他的数据的表格和功能。

所以他可能有一个 clsBaseball、一个 clsPokemon、一个 clsAlbum 和一个 clsSalesRecord。他还有用于输入和修改数据的表格和其他类型的分析表格,用于比较卡片,计算各种团队和时间段的统计数据等。

当约翰单击“新棒球卡”按钮时,他的 frmBaseball 会弹出。

  1. 他输入棒球卡数据
  2. 他点击更新
  3. 表单已验证
  4. 数据保存到工作表中

在上述过程中的任何时候都使用了 clsBaseball 吗?我可以看到该类将如何用于加载所有数据以服务于花哨的排序或统计例程,但它实际上是在输入阶段使用的,因此表单上的字段对 clsBaseball 的实例有直接影响吗?

4

1 回答 1

4

这取决于您的要求有多强大。如果您只是对某些东西进行原型设计,那么将您的代码紧密绑定到您的表单就可以了。然而,如果你想构建一个更灵活、健壮和可扩展的应用程序,那么在类中建模你的数据结构,将你的功能封装在对象中是要走的路。

类使您能够对现实世界的事物进行建模,并且它们有助于在逻辑分离的分层架构中实现它们。在您的情况下,您的表单提供表示层,您的类提供应用程序层,您的 Excel 表提供数据层(通常是数据库) - 这是 3 层。

因此,在您的示例中,我将像您所做的那样在类中对您的数据进行建模,但是如果我需要需要所有 clsBaseball 对象的功能,我将为每个对象管理类。这些管理类包含您的 clsBaseball 对象的集合,并允许您实现需要对象集合的行为。例如,您将在 clsBaseball 中实现更新方法,但您将在 clsBaseballs 管理类中实现 CalculateStats,您还可以通过迭代(管理类)clsBaseballs 中的 clsBaseball 集合来调用所有 clsBaseball 对象的更新方法。

在回答您的问题时:

在上述过程中的任何时候都使用了 clsBaseball 吗?

1)他输入棒球卡数据: 您可能实例化了一个 clsBaseball 实例,但可能还没有

2)他点击更新: 你实例化一个新的 clsBaseball 实例(或使用现有的),传递用户输入的值并调用 clsBaseball 的更新方法。通过这种方式,您可以封装 clsBaseball 行为。

3)表单已验证: 这将在 clsBaseball 更新数据存储之前发生。因此,您可能会在 clsBaseball 中有一个在更新任何数据之前调用的验证方法。任何错误都可以传递回表示层(您的表单)。或者您可以只在表单中进行验证(尽管在表示层中有任何业务逻辑是不受欢迎的,因为您可能想将表示层切换为其他内容,请参阅MVC/MVP 模式)。

4)将数据保存到工作表中: 这是由 clsBaseball 通过更新方法完成的。

至于您喜欢的排序或统计例程,您可以从您的管理类中获取这些数据,因为它们包含您的对象集合,非常适合分析您的所有 clsBaseball 实例。所有这些功能都被很好地封装,没有重复(DRY),任何新接触代码的人都能够弄清楚发生了什么。

我刚才回答了一个关于如何在 MS Access 中构造数据的问题,答案包括类和管理类的示例:MS ACCESS 2003 触发器(查询事件)和 Excel 导入

于 2013-08-07T10:06:00.840 回答