SCO UNIX环境下
面向对象的程序设计
&
Object UNIX Class Library
应用程序编程框架
技
术
报
告
林风人
目 录
第一部分 Object UNIX Class
Library综述.................................... 3
第二部分 Object UNIX Class
Library编程机制............................ 6
2.1 面向对象的应用程序编程...................................................... 6
2.2 一个较好的UNIX接口........................................................... 6
2.2.1 封装窗口信息................................................................. 7
2.2.2 抽象化curses函数......................................................... 7
2.2.3 自动消息响应................................................................. 8
第三部分 采用Object
UNIX Class Library的好处....................... 9
3.1提高编程效率.......................................................................... 9
3.2提供一致编程界面,迅速培养新招大学生成为编程高手...... 9
第四部分 Object UNIX Class
Library与同类产品的比较.......... 11
第五部分 Object UNIX Class
Library的发展.............................. 13
Object UNIX Class Library提供了一种有趣的开发SCO UNIX环境下的文本模式应用程序的新方法。直到最近,大多数UNIX编程都需要UNIX C编译器和大量分离而复杂的开发工具,这样,UNIX应用程序开发显得冗长、复杂和令人费解。借助Object UNIX Class Library应用程序框架,UNIX编程就容易了许多。
在大多数交互式的UNIX应用程序中,用户的界面元素操作处理以及程序内部的消息循环需要编程人员花费大量的时间并利用大量的case语句来分析用户该执行哪些操作。这就需要一个比较熟练的编程人员来实现它并掌握许多的SCO
UNIX下的API函数以及界面处理的curses库函数,为编写一个可用的交互式应用程序,您可能必须掌握它们。
Object UNIX Class Library提供了一个面向对象的类库,其中封装了UNIX应用程序都要执行的(程序级和窗口级)行为。Object UNIX Class Library用以简化UNIX开发的手段是:
l
一个一致、直观简捷的UNIX应用程序接口
l
提供菜单、窗口、对话框以及许多类似VB的控件
l
为窗口管理和消息处理提供的行为
l
用于构造UNIX应用程序的基本框架
由于程序员可以“继承”这些基本功能,故可以把主要精力放在应用程序的功能实现上。
通过应用程序序编程框架及类库Object UNIX Class Library大大地缩短了程序开发的周期,程序可维护性、可再用性强,极大地提高软件开发的效率。
通过本系统提供的编辑编译平台以及Object UNIX Class Library应用程序开发类库平台,用户可以很方便地维护应用程序工程结构并跟踪定位应用程序编译的错误信息并在Object UNIX Class Library类体系结构基础上进行应用程序的快速开发。用户可以简便地设计交互式程序界面并自动具备交互式系统所必须的窗口、菜单、对话框以及其他一些必要的界面元素如按扭、互锁键、校验键、列表框、下拉列表框、数据库浏览等控件并提供必要的打印驱动程序等功能。
Object UNIX Class Library(OUL)类库系统提供一致性的外观和命令结构,这使得编写SCO UNIX环境文本模式下的应用程序变得更加容易,OUL类库提供了大量的内部类成员函数,这些函数使得窗口、菜单、对话框以及其他特征更加容易实现,而这些特征是一个用户友好界面必不可少的要素。
Object UNIX Class Library(OUL)类库系统采用统一的应用程序基于类似Windows窗口环境下的消息处理,用户可以方便地定义自己的消息响应方式并由本OUL消息循环处理程序自动处理,使得用户可以不必关心应用程序本身的界面处理,而只是处理按下回车键以后的业务处理。
Object UNIX Class Library(OUL)类库系统是一个基于控件的消息处理循环,OUL类库含有创建、初始化窗口和对话框的过程,基于这种模式,用户可以定义应用程序本身需要的屏幕控件元素并定义按下某控件以后的业务处理,而无须编写如何连接这些控件于应用程序的消息循环中,简化开发过程并使得开发应用程序的速度加快,达到快速开发SCO UNIX环境下的应用程序的目的。
Object UNIX Class Library(OUL)提供了应用程序开发所必须的应用程序类框架以及屏幕元素。OUL类库提供了应用程序的应用类、窗口类、对话框类以及其他的一些控件类,这些类都从单一的基类Object派生,用户可以从现有提供的派生类中再派生出自己的应用程序类,使得程序的复用性加强,加强应用程序的编程效率。
Object UNIX Class Library(OUL)提供了三大类:应用程序Application类、窗口Window类、对话框Dialog类。并提供了一系列的控件类如:Button类、Line类、List类、ComboBox类、RadioButton类、CheckBox类、Label类、View类(文件显示)、Edit(行编辑)类、Print类、Group类、Browser(数据库浏览)类、MultiEdit(全屏幕多行编辑)类、Menu类、Directory (目录操作) 类、Color类以及相应的DES加密算法和校验码算法等。
通过这些类库,用户可以方便地维护应用程序的结构,并使得编写UNIX下的C++程序就象编写Windows下的VB程序一样简单。
本系统提供的Object UNIX Class Library类体系结构如下:

本部分大致介绍面向对象编程上以及介绍UNIX应用程序的构成及其运行机制,同时还能看到如何利用Object UNIX
Class Library编写基于UNIX环境下的面向对象程序。
这里需要说明的是,由于在UNIX环境下的文本模式编程中,没有象Microsoft Windows环境下的Windows图形界面概念以及编程机制,本系统就假设每个应用程序的界面就是一个文本窗口,而UNIX系统本身的字符文本模式就是一个大的隐含的大窗口,基于这个概念,Object
UNIX Class Library提供的就是每个应用程序本身的窗口以及每个窗口内部的界面控制和消息传送机制。这里所说的Windows就是每个UNIX环境下应用程序主窗口。
面向对象的应用程序编程要求熟悉许多新概念,对于开发一个交互式的UNIX环境下的应用程序,需要进行一系列的判断和界面设计而令人望而却步。Object
UNIX Class Library简化了基于UNIX环境下的交互式窗口编程的过程,它使程序员能够把主要的精力放在应用程序的功能上,而不是放在它的格式上。
借助Object UNIX Class Library,程序员可以使用对象来表示比较复杂的界面窗口操作,Object UNIX Class Library的窗口对象封装了所有窗口需要的数据,能执行公共的窗口操作,并且能够响应应用程序本身的Windows的消息和事件。Object UNIX Class Library的窗口类和应用程序类完全掌握了消息的处理。
Object UNIX Class Library使用了标准的UNIX
C/C++的面向对象特征,把UNIX的curses库函数的主要部分封装起来,并提供交互式应用程序程序所需要用户界面元素,从而使程序员同UNIX编程的细节隔离开来。其结果是,只须花少量的时间和精力便能编写应用程序,特别是,Object
UNIX Class Library提供了下述三个有益的特点:
l
窗口信息的封装。
l
许多curses函数的抽象化并提供许多控件
l
自动消息响应
Object UNIX Class Library提供了定义UNIX窗口、对话框及窗口控制的操作与数据存储的对象,在一个Object UNIX Class Library应用程序中,一个界面对象便充当一个可见的UNIX界面元素的代表。
在用户创建一个新的UNIX界面元素时,或者是从TWindow类下派生出一个新的窗口时,用户获得了指向该窗口的指针并同时获得该窗口的一些信息如窗口的位置和状态信息。
在UNIX环境下的文本模式交互式应用程序编程中,需要从curses下申请主应用程序的窗口空间,并采用curses库提供的一系列屏幕操作函数来绘制您的窗口信息即屏幕元素,curses提供了几百个的函数调用来处理用户的键盘操作以便给用户进行交互处理,虽然您可以直接从curses中调用任意的Windows函数,但Object UNIX Class Library通过提供一组对象成员函数来简化调用函数的过程,通过抽象化用户的键盘交互操作,提供一系列界面元素操作如输入条、列表框、校验按钮等标准的屏幕操作来简化用户的编程并使用户的界面一致性。
Curses库函数的许多参数都存储在截面对象的数据成员之中,这样,成员函数能用这些数据为Curses函数提供参数。除此之外,Object UNIX Class Library把相关的函数单元组合到单一的成员函数之中,使其能执行更高级的任务,举个最简单的例子,您可以使用Object UNIX Class Library类库提供的行输入,当然,您也可以通过curses提供的函数自己编写一个行输入,但这需要几十行甚至上百行的程序量,如果您不嫌麻烦。
这一方法虽然减少了对每个curses函数的依赖性,但不限制您对curses库函数的直接调用。Object UNIX Class Library具备了两方面的优越性:高级面向对象的开发加之对UNIX文本模式环境的最大限度的控制。
常规的交互式应用程序需要由程序设计人员对用户的各种可能的按键进行比较来判别该执行哪种操作,通常通过大量的case语句来实现,这使得程序冗长而复杂,而且不编于程序的维护,对于实现应用程序的功能来说,正确处理和响应消息是至关重要的。
由于对象具有继承和重定义(成员函数)的能力,故它尤为适合处理和响应各种用户执行的消息。Object UNIX Class Library获取用户消息之后便把它转换成C++成员函数的调用,因此,使用Object UNIX Class Library,程序员可以简单地定义成员函数来响应所编程序需要处理的用户按键的消息。
Object UNIX Class Library定义了所有内部控件的键盘消息响应函数,每个控件类都有从基类派生出来的键盘事件成员函数KeyEvent,当用户需要定义自己的对话框时,重载KeyEvent成员函数,来执行不同的用户按键处理,达到消息的封装和自动消息响应。
综上所述,由于Object UNIX Class Library提供了一个一致性的应用程序接口,并且采用统一的应用程序基于窗口环境下的消息处理,用户可以方便地定义自己的消息响应方式并由本OUL消息循环处理程序自动处理,使得用户可以不必关心应用程序本身的界面处理,而只是处理按下回车键以后的业务处理。这种方式可以使得程序的规范性大大增强,程序的可读性以及可维护性大大加强。所有的技术人员面向的是一个业务流程和基于该业务流程的事件函数,这样,程序的后续维护以及客户化工作很容易使用,不致导致技术人员之间的程序不容易交流。
程序开发效率大大加强。采用传统的c语言以及处理屏幕操作的curses函数可以实现业务编程需要,但是,其开发效率比较低,后续修改花费大量的时间,特别涉及屏幕部分的修改,更是花费大量的时间。而采用Object UNIX Class Library,则程序的设计界面清晰,后续维护方便,而且,可以在很短的时间内编出一个很专业的程序。
对于公司大批量新招大学生来说,培训UNIX基础以及在UNIX下进行C程序开发并使得他们能够胜任即将的开发任务是件比较困难的事情,而且,随着技术学习,每个人都能积累一套编程经验或者函数库,但是,互相之间很难沟通。而采用Object UNIX Class Library,可以让他们在很短的时间内完全掌握UNIX下编程技术并且所有他们的技术都基于一个平台,这样为以后的程序维护、可读性有着极为重要的意义,更何况,让所有的技术人员在短短的一个月时间内成为UNIX下编程高手,难道不是一件很吸引人的事情。
同时,对于新招大学生,基本都熟悉VB、Delphi、或者C++ Builder,而Object UNIX Class Library很象VB、Delphi编程,如果你会这些语言,在UNIX下编写C程序就象编写VB一样简单,同时,本类库所具有的控件的方法和属性基本上和Delphi的类似。
据了解,目前国内基本没有在UNIX字符环境下的开发工具,而且,就算有,基本上也是一些自己的函数库而已,没有形成系列或者产品,更没有对其封装并行成一个产品。而Object UNIX Class Library可以是一个产品,其技术文档齐全(SCO
UNIX环境下面向对象的程序设计)并且在实际项目开发过程中展示其高效、快速、稳定、美观的功能并受到客户的好评。
2000年本产品由于一些业务原因,本可以作为人总行的一个开发平台在人总行2000多个县推广使用。这个产品在金电公司受到好评。
目前国内最好的平台,用的最多的平台是联想平台,他包含交易系统,是个解析型的平台。当然,由于其投入的人力、物力比较多,所以在功能性上比Object UNIX Class Library多,但是,其性能、执行效率不如Object
UNIX Class Library。本平台是编译型的、小巧,到处可以使用。如果在这个平台基础上继续增加相应的功能,相信会更加完善更加全面的。
采用该平台对于程序开发效率提高的例子,可以列举如下:
|
项目名称 |
使用单位 |
开发时间 |
|
中国人民银行帐户管理系统 |
南平人行 |
20天,3万多行程序 |
|
中国人民银行同城清算系统网点机 |
人总行项目(河南新乡运行) |
20天 |
|
中国人民银行同城清算系统清算主机 |
人总行项目(河南新乡运行) |
20天 |
|
中国人民银行电子联行天地对接系统(前、后台) |
人总行项目(河南新乡运行)该项目最后因为政策原因没有实际运行 |
30天 |
|
福建兴业银行长沙分行湘图卡系统 |
福建兴业银行长沙分行 |
10天 |
|
中国人民银行城市资金实时交易系统(IC卡帐户证书中心、前置机系统、前台等) |
人总行(新乡行试点) |
40天 |
作为一项产品,只有在不断的技术更新和技术收集,才有其生命力,Objecy UNIX Class Library也是。针对不断发展的新技术也不断复杂的业务需求,只有不断地完善它,它才更能发挥其价值。
首先,不断完善该产品本身。作为公司的一种开发平台,在最大的范围内使用它,发现其不足并不断地完善它。
其次,可以扩展其功能,包括可视化开发平台以及程序自动生成。Borland公司也推出Linux下的快速开发平台。当然了,我们完全也可以在UNIX平台下发展自己的快速开发平台。国内在UNIX环境下的字符界面的平台很少看见。
再次,作为一种产品,他本身就具有商业价值。无论从公司实力、公司形象以及潜在的利润增长点,都具备一定的价值。
最后,可以整合我们公司目前的产品在这个平台的基础上。以这个平台作为基础平台,结合公司的传统技术如中间业务,电话银行等技术,作成可以和联想平台想抗衡的平台甚至更好,这样在原有平台的基础上,可以延伸出一个新的产品,而且,这个产品的技术和市场定位都将在一个新的高度。