我即将开始我的最新项目,它基本上是一个从数据库获取一些数据然后以图形显示该数据的应用程序!
现在即使这看起来很简单,但对于我而言,这对于面向对象的编程来说是非常正确的。
现在我的想法如下:
我想创建以下四个类:
适配器:
将应用程序连接到数据库并重新获取数据的类
CallQueue:
这是一个不同的对象,具体取决于从数据库中获取的数据类型以及您希望在图表上显示的数据类型。这方面的一个例子是奶酪和水果。它们都是食物,但它们是非常不同的食物。
统计
这将是一个工具类,用于计算从数据库中获取的信息(例如将其更改为百分比而不是原始数据)
图形
这将是从统计类中获取信息并将数字转换为图形的类
GUI
这是GUI课程,我将发布图表!
现在我想让项目尽可能面向对象。但我的问题是来自数据库的信息并不总是一样的。例如,如果每天获取数据,则每月的数据不同。这意味着信息总是会根据用户的需要而改变。
我如何使这个程序对象定向?以及我的班级应该使用哪种类型的连接以使其最易于访问。我是否必须创建子类以简化它?
我应该将数据库中的所有信息直接添加到CallQueue类中,还是应该稍后创建该对象?
更新 - 精化
名称callQueue不是流式实现,它只是一个对象,应该包含从数据库中获取的数据的值(请注意,这仍处于构思阶段,并且没有实现任何内容)。这个想法是用户打开程序,然后从一天开始选择一天,例如:2012年11月4日到2012年11月10日。对象值更改的原因是当日期更改为例如以下时间:04/11/2012 - 04/12/2012然后将创建一个新图表,将计算数据库中的新信息等。
我感到困惑的一件事是: 如果你有一个从数据库创建的对象(适应器注意,如果你们有更好的想法,这可以优化)那么你将如何从中计算统计数据?统计类调用数据适配器然后处理数据然后创建包含计算数据的对象会更好吗?
然后Graph类需要获取对象数据并插入到图中。
答案 0 :(得分:2)
从设计大型系统甚至更小的系统的经验来看,最好的方法是考虑组件而不是类。这样您就可以将问题分解为更小的(并且大部分是独立的)。
例如,您将拥有一个组件,其唯一责任是将数据带到您的应用程序进行处理。该组件需要能够处理多个数据源等...然后成为一个子系统,您可以独立于应用程序的其余部分进行设计,并处理小于整体的特定问题。 / p>
如果子问题仍然大于应有的问题,请继续将它们分解为子组件,直到组件的实现变得几乎无足轻重。此时,您可以开始引入类的概念,因为您对系统中的主角有足够的可见性。
简而言之,我非常重视分离关注点。通过将子问题隔离到子组件中,您还可以隔离解决方案,从而更容易纠正您的设计错误或替换实现,而不会影响整个系统。
只是我的两分钱......