多线程实现凸壳算法的动画演示(2)类设计

在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)中说过。配置的内容很多,明天在仔细想想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值