在C++语言中,类是非常重要的角色,而Qt开发,更讲究类了,一个好的C++应用程序,好的类设计是免不了的。当然,对于我的这个算是个软件吧,也需要类设计,今天粗略的画了画,别说,还挺多的,不过草稿吗,可能总有些设计不是很合理的地方,后面会慢慢纠正的。先把类图凉出来,后面在做分析,看看这样的设计是否合理。
相信大家看后应该是比较清楚的,不过我还得解释一下。
先来看最主要的一个类MainWin,这个类里面涵盖了基本整个程序的所有内容。这个类里面包含了很多类,而且继承了一个自定义的类。MainWin类维护着很多,比如有数据的存储、对数据的操作、绘制图形、控制线程、操作队列等。
MainBase这个自定义的类我设计为一个纯虚基类,是为其他类提供数据存储和操作的接口。
ProThread和CusThread类,两个线程类,上篇文章(http://blog.csdn.net/cug_fish_2009/archive/2011/01/05/6118065.aspx )已经说过,一个是算法线程(生产者Produce),一个是绘制通知线程(消费者Customer)。这里要说到信号量了,运用到信号量就是为了维护操作队列的,这个操作队列里面定义了对两点之间线的操作,即画和清除操作。我们想,如果消费者去取操作队列时发现为空,那么必须挂起,让而生产者则无需去理会这些事情,因为它只管完操作队列里面加入操作即可。本来可以在消费者里设计一个条件等待即可完成,但是我没有找到啊,所以我只能用信号量了,生产者每次在操作队列中加入元素时需要将信号量+1,相反了,消费者每次取出操作队列元素时必须-1,当然这些都在信号量内部完成了,我们只管使用就是。
MainView类,为什么要定义这个类,主要是考虑到主窗口里总得放个视图吧,最关键是用户的鼠标事件都必须得截获然后将数据传递给主窗口,这就是为什么还要包含MainBase纯虚基类了,因为它里面定义有数据操作的接口啊!
最后一个算是比较重要的类Configure配置类,顾名思义吧,就是关于整个程序的配置,在需求分析(http://blog.csdn.net/cug_fish_2009/archive/2011/01/05/6118065.asp x)中说过。配置的内容很多,明天在仔细想想。