【摘要】:面向使用者的系统工程设计,其目的是要准确、快速地在设计者和使用者之间传递信息和实现功能,也是优化产品性能来适应大众的操作能力,减轻使用者的认知负担。成功的系统工程设计能使得图形化界面更科学合理,更好地满足使用者的需要。对于开发者而言需要主要如下几个方面:1,对系统工程应用需要有准确的定位;2,利用设计开发软件提高GUI运行速度;3,系统开发时对系统工程的可扩展性和提供文档帮助。
1. 前言:
随着计算机技术的发展,软件技术突飞发展。在工程领域,智能化、自动化的的要求也越来越高。所以对应由电脑监控的工程也越来越多。伴随着的图形化界面的软件也得到了很大的市场。而在界面软件开发的软件中主要有Delphi、MFC、wxWidgets、Java、GTK+、Qt-Creator等,
2. Dephli简介
Delphi概述
Delphi,是Windows平台下著名的快速应用程序开发。它的前身即是DOS时代盛行一时的“Borland TurBo Pascal”,最早的版本由美国Borland(宝兰)公司于1995年开发。主创者安德斯.海尔斯伯格。经过数年的发展,此产品转移至Embarchadero公司旗下。
Delphi是一个集成开发环境(IDE),使用的核心是由传统的Pascal语言发展而来的Object Pascal,以图形用户界面为开发环境。通过IDE、VCL工具于编译器,配合连接数据库的功能,构成一个面向对象程序设计为中心的应用程序开发工具。
2.1Delphi的优缺点
Delphi主要由于离的太远了,基本上没有什么新人继续学习这种Pascal语言了。
3. MFC简介
MFC概述
微软基础类库(Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库,以C++的形式封装了Windows API,并且包含一个应用程序框架。其中包含的类包含了大量Windows句柄封装和很多Windows的内建控件和组件的封装类。
3.1. MFC的优点
MFC的主要优点是可以用面向对象的方法调用Windows API,以及应用程序开发快捷。MFC将提供很多应用程序开发中常用的功能自动化,并提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。同时,在Visual C++内部也建立了很多MFC的类向导,使用类向导可以生成从hello world简单程序到活动文档服务器这样的复杂程序。MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。
MFC的缺点是封装过程过于复杂,以致于新用户很难迅速掌握MFC的应用程序框架,以及在调试中定位问题的位置。同时,MFC对象不是线程安全,致使在跨线程访问MFC对象时需要编写额外的代码。另外,MFC的很多类依赖于应用程序向导生成的代码,使得使用Visual C++其它类型的应用程序向导生成的工程中添加MFC支持的难度大大增加。
4. wxWidgets简介
wxWidgets概述
wxWidgets是一个开源的跨平台的C++构架库,它可以体统GUI(图形用户界面)和其它工具。
wxWidgets的主体是由C++构建的,但你并不是必需通过C++才能使用wxWidgets。wxWidgets拥有许多其它语言的绑定,使你在用其它语言编写程序得时候也可以使用wxWidgets.wxWidgets是一个C++编写的用来提供Gui开发框架,它包含了支持现今所有的操作系统的GUI库和其它一些有用的工具。
4.1 wxWidgets的优点
wxWidgets的优点:1,无论对于个人还是商业应用都是免费的。2,它是跨平台的GUI库,支持的操作系统很全面,(甚至可以应用在PDA)3,wxWidgets提供GUI是大量使用宏,这就不意味着它是尽可能的使用目标系统的native的gui样式。4,它支持的编译器很多。
4.1 wxWidgets的缺点
wxWidgets的缺点:官方文档不全,没有源代码的开发速度快,没有强大全面的rad工具,没有形成浓厚的产业气候。
5. Java简介
Java概述
Java是一种电脑编程语言,拥有跨平台、面向对象、泛型编程的特性。任职于太阳微系统的詹姆斯.高斯林等人于1990年代开发Java语言的邹型,最初被命名Oak。随着1990年代互联网的发展,太阳公司看见Oak在互联网上的应用前景,于是改造Oak并与1995年5月以Java的名称正是发布。Java伴随着互联网的迅猛发展而发展。逐渐成为重要的网络编程语言。
Java的缺点:由于Java编译器和虚拟机的不同对Java的性能影响比语言本身的影响大得多。
6. GTK+简介
GTK+概述
GTK+最初是GIMP的专用开发库,后来发展为Unix-like系统下开发图形界面的应用程序主流开发工具之一。GTK+是*软件,并且是GNU的一部分。GTK+的许可协议时LPGL。
GTK+使用的C语言开发,但是其设计者使用面向对象技术。也提供了C++(gtkmm),Perl、Ruby、Java和Python(PyGTK)绑定,其它绑定有Ada、D、Haskell、PHP和所有.NET编程语言。与其它很多部件工具箱不同,GTK+并不基于Xt。优点是GTK+可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用传统方法为X11定制的X资源数据库。
7. C#简介
C#概述
C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。C#由C语言和C++语言派生而来,继承了其强大的性能,同时又以.NET框架类库作为基础,拥有类似Visual Basic的快速开发能力。C#由安德斯.海尔斯伯格支持开发,微软在2000年发布了这种语言。C#已经成为Ecma国际和国际标准组织的标准规范。
C#并不被编译成为能够直接在计算机上执行的二进制本地代码。与Java类似,它编译成中间代码(Microsoft Intermediate Language),然后通过.NET Framework的虚拟机---被称之为通用语言运行库执行。
由于与Java相似,所以在性能上耗费比较大。
8. Qt简介
Qt概述
Qt工具包是一个 C++ 类库,是一个跨平台的构建图形用户界应用程序的一套工具。基于Qt平台开发的源程序,可以不经修改地在Windows及LINUX、Mac OS X和其他很多使用X11的UNIX 版本上编译运行,Qt具有直观和强大的应用程序编程接口,不仅支持代码支持编程,也可以结合GUI界面并行开发。Qt除了拥有极好的可移植性和跨平台性,还有拥有非常丰富的API类库,不仅有GUI库,还有数据库编程、网络编程接口等等。普通的应用不需要第三方库,Qt本身就可以完成。选择Qt作为软件开发平台,不仅可以缩短开发周期提高效率,开源免费的Qt平台更是可以节约开发成本。
8.1 Qt优点
相比Visual Studio,Qt不仅能够支持多PC机种操作系统平台,还支持多种嵌入式操作系统,应用范围很广,针对多种平台开发程序,只需要编辑一次代码即可,开发效率极高;其次,Qt简化了内存的回收机制;第三,信号与槽机制相当灵活,不仅窗体支持信号与槽机制,非窗体也可以使用信号与槽机制;第四,拥有非常丰富的API库和很炫的GUI界面;第五,Qt拥有广大的用户和非常完善的开发文档。
8.2 Qt缺点
虽然Qt有非常多的有点,但是还是有一些不足。Qt的编译相对较慢,运行的效率比MFC效果差很多,尤其在嵌入式操作系统,运行的效率成为Qt的一个弱点,进程之间通信则成为Qt发展的一个瓶颈,Qt开发的程序与非Qt开发的程序之间的通信相对较差。
9.界面开发软件的比较
下表为几种界面开发工具的介绍。
界面库名称 |
Qt SDK |
MFC |
wxWidgets |
GTK+ |
接 口 设 计 |
使用宏和自定义的RTTI。 使用信号与槽机制实现用户代码交互。 可以继承实现扩展 |
基于宏和虚函数,使用特殊格式注释,使用自定义的RTTI系统。 类接口设计优良。 通过回调函数和虚继承重载调用客户代码。 |
宏,自定义RTTI。 使用回调函数与用户代码交互 |
使用信号和槽机制完成用户代码交互 |
界 面 编 辑 器 |
Qt Designer具备完整所见即所得编辑功能。 界面可预览 |
基于资源编辑器,仅能对空间基本布局和少量属性进行调整。 不可预览。 |
无官方界面编辑器。 可使用第三方界面编辑器。 部分编辑器具有完整的所见即所得功能,且具有预览能力。 |
GLADE,具备所见即所得的界面编辑功能 |
高 级 布 局 |
具备完整的布局功能。多分辨率/多平台下表现良好 |
缺乏高级布局功能,多分辨率需要手动或程序中调整。 |
使用Sizer实现多分辨率的布局。功能偏弱。 |
Layout Containers,具备较完整的布局能力 |
平 面 绘 制 |
QCanvas等 |
GD及GDI封装,了选GDI+ |
wxDC等 |
GTK Graphics Context |
平 台 兼 容 性 |
Windows,Linux,Unix,MacOS等 |
Windows,WindowsCE |
Windows,Linux,Unix, MacOS等 |
Windows, Linux, Unix,MacOS等 |
语 言 支 持 |
C++,Python等 |
C++ Only, 支持COM时可以实现Binary级别复用 |
C++,.NET,Phython,Lua, Ruby等 |
C++,C,Python,.NET等 |
IDE 兼 容 性 |
可以集成到Eclipse和VS |
仅Visual Studio |
良好的编译器兼容性,缺乏IDE继承 |
暂时未知 |
视 图 - 模 式 分 离 机 制 |
使资源文件保存界面信息。部分组件具备Model-View-Delegate构架 |
使用资源保存控件的基本控件布局,提供Doc-View机制和控件数据交换支持视图分离 |
可以将界面属性生成代码中,也可以使用XML格式保存。 |
使用代码完成界面设置。部分组件具备Model-View架构。 |
运 行 库 |
Qt库 |
需要运行MFC运行时链接库 |
|
|
10 总结
GTK+主要用在X Window上,整个设计的构架和许多概念和MFC以及一般的Windows上的程式开发大异其趣,入门门槛比较高,而且主要特色是,他用不具有物件功能的纯“C”语言,模拟物件导向。所以写起来比较复杂艰涩。优点则是可以用C,不需要C++,如果和win32 SDK比较,不会难学多少,缺点是不易上手使用,而且文件比较缺,架构又非常复杂,且提供的东西比起其它无所不包的library,是简陋一点。
wxWidgets和MFC最接近,命令习惯和构架都高度相似,会MFC几乎不用重新学习。此外,它物件封装比MFC要好,提供的功能也多上太多,又跨平台一般知名的MFC程式都会选择用wxWidgets改写,来快速一直原程式到其它平台。
Qt的功能,应该是以上开发软件最强大的,文件也很完整,又有RAD工具,可以辅助开发,并且有商业公司做强力后盾。不但有Windows/X Window/Mac版本,甚至还有嵌入式可用版本,稳定性还不错,物件封装良好,资源比GTK+或wxWidgets多得非常多,而且发行公司提供相当多范例,算是一家开放原始码成功盈利的模范公司。知名的KDE整个是用他开发,证明了它的稳定性和强大功能。
综上所述,在本环境监控工程的开发中,利用了功能强大,且具有很好的平台移植性的Qt—SDK集成开发软件。