1

我即将开始我的最新项目,它基本上是一个从数据库中获取一些数据然后将这些数据显示为图表的应用程序!

现在,尽管这看起来很简单,但在面向对象编程方面以非常正确的方式完成对我来说很重要。

现在我的想法如下:

我想创建以下四个类:

适配器:

将应用程序连接到数据库并接收数据的类

呼叫队列:

这是一个对象,其差异取决于从数据库中接收的数据类型以及您希望在图表上显示的数据类型。这方面的一个例子是奶酪和水果。它们都是食物,但它们是非常不同类型的食物。

统计数据

这将是一个用于计算从数据库接收的信息的工具类(例如将其更改为百分比而不是原始数据)

图形

这将是从统计类获取信息并将数字转换为图形的类

图形用户界面

这当然是我将在其中发布图表的 GUI 类!

现在我想让项目尽可能面向对象。但我的问题是来自数据库的信息并不总是相同的。例如,如果每天获取数据,它将与每月不同。这意味着信息总是会根据用户的需要而改变。

我将如何使这个程序面向对象?以及我的班级之间应该有什么类型的联系才能使其最容易访问。我必须创建子类以简化它吗?

我应该将数据库中的所有信息直接添加到 CallQueue 类中,还是应该稍后创建该对象?

更新 - 详细说明

名称 callQueue 不是流式实现,它只是一个对象,应该包含从数据库接收的数据值(请注意,这仍处于构思阶段,没有任何实现)。这个想法是用户打开程序,然后选择一天,然后选择一天,例如:04/11/2012 到 10/11/2012。对象值更改的原因是当日期更改为例如以下情况时:04/11/2012 - 04/12/2012 然后将创建一个新图表,将计算来自数据库的新信息等。

我也很困惑的一件事是:当您有一个从数据库创建的对象时(请注意,如果你们有更好的想法,这可能会被优化)那么您将如何计算统计数据?调用数据适配器的统计类然后处理数据然后创建包含计算数据的对象会更好吗?

然后 Graph 类需要获取对象数据并插入到图中。

4

1 回答 1

2

从设计大型系统甚至更小的系统的经验来看,最好的方法是考虑组件而不是。这将使您能够将问题分解成更小的(并且大部分是独立的)部分。

例如,您将拥有一个组件,该组件的唯一责任是将数据带到您的应用程序进行处理。该组件将需要能够处理多个数据源等......然后成为一个子系统,您可以独立于应用程序的其余部分进行设计并处理比整体更小的特定问题。

如果子问题仍然比应有的大,请继续将它们分解为子组件,直到组件的实现变得几乎微不足道。那时,您可以开始引入类的概念,因为您对系统中的主角有足够的了解。

简而言之,我非常强调关注点分离。通过将子问题隔离为子组件,您还可以隔离解决方案,从而更容易纠正您的设计错误或替换实施,而不会影响整个系统。

就我的两分钱...

于 2012-10-29T13:24:29.200 回答