java - 设计一个带有统计数据的程序

标签 java object uml

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

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

现在我的想法如下:

我想创建以下四个类:

适配器:

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

调用队列:

这是一个根据从数据库接收的数据类型以及您希望在图表上显示的数据类型而有所不同的对象。奶酪和水果就是一个例子。它们都是食物,但它们是非常不同类型的食物。

统计

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

图表

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

图形用户界面

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

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

我如何使这个程序面向对象?以及我的类(class)之间应该建立什么类型的联系才能使其最容易访问。我是否必须创建子类才能简化它?

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

更新 - 详细说明

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

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

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

最佳答案

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

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

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

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

只是我的两分钱...

关于java - 设计一个带有统计数据的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122401/

相关文章:

javascript - 将带点符号的字符串转换为 JSON

java - 带有 Java 代码生成的 Eclipse UML 插件

java - 在 UML 类图中,如何显示一个类创建另一个类的对象但不存储对象引用?

java - Firebase 从 DataSnapShot 检索存储的 ArrayList 给出 NullPointerException

java - before() 与空值比较时失败

java - 在 Android 应用程序中实现客户端 <-> 服务器 <-> 数据库架构的最佳方式?

Java 读取文件行并仅提取有用的信息

Java,对象列表,循环更改值

javascript - 在 JavaScript 中对自定义对象数组进行排序

uml - 设计用例图的正确方法