HB++语言
1.1 HB++(HB++透明语言)
HYaline Basic++语言简称HB++,中文名称:透明语言。它以MS Windows95/2000/NT操作平台为基础,是一种高效率开发Windows应用程序的工具,而且对Internet网络应用程序(For Windows)的开发更是简单方便。HB++是一种针对开发和维护应用程序(包括网络应用程序)的专业化开发工具语言。
HB++透明语言是基于古老的Basic语言脚本结合面向对象技术以及Internet技术扩展而成。HB++继承了BASIC语言的简单易学性质,同时继承了C++的面向对象技术,并将Internet技术内置到语言内部。
1.2 HB++透明语言的组成
HB++由四部分组成:语言编译执行系统、超自由电子表格、图形辅助设计、Internet控制系统。以后将增加字处理系统和图象处理系统。
语言编译执行系统:对语法分析程序编译和解释执行的基础系统。支持几乎所有的面向对象方法,制作特殊控件也很容易。Windows中得几十种控件都可以继承予用户扩展。支持网络分布式执行程序。
超自由电子表格:全新概念的自由表格,不仅可以行列定位操作数据,而且可以按数据对象自定位。即,数据关系与行列没有直接的关系,数据关系无需表格的行列来描述,数据之间的关系与界面体现形式完全无关。树状收缩展开功能、数据对象类可继承扩展功能等将表格实现各种特殊或非特殊形式都很容易。采用所见即所得技术,表格在全真模式下操作,屏幕与输出完全一样。
图形辅助设计:与Auto CAD的二维功能相似,新增命令无限制嵌入、鼠标点选命令行提示选项等功能和控件方式的图块设计和使用。
Internet控制系统:提供多种通讯方式,可以将语言中的数据直接转接到其他应用程序中去。支持实时传送数据、文件上传下载、条件发送接受等方式。支持远程调试数据和转接远程应用程序中的数据等。
四部分子系统有机地结合在HB++透明语言中,成为一成完整的开发应用程序工具。在使用HB++开发应用程序过程中,会发现许多功能或烦琐的工作已经在语言中提供,这就是为什么HB++是针对开发和维护应用程序的专业化开发工具。
1.3 何谓透明语言
透明语言是HB++独特的创造,它给予程序设计者最大的资源共享能力。
HB++已经解决或提供了以下几个方面的问题
a)共享和派生应用程序体。
无论是C++还是VB或VF语言开发的商业应用程序,对于第三方开发者来说,是没有任何利用的代码的,否则,就如Linux公开源代码。HB++提供了一种折中的方法,既保留原创者的源代码版权,又能让第三方开发者扩展应用程序或更改。这就是应用程序类继承概念。通过透明语言提供的透明程序方式,第三方开发者在继承应用程序类后重载其方法、属性、事件,给应用程序加上一个自己的外壳,执行时,编译解释系统会自动处理和生成新的应用程序。但对于第三方,是无法得到原创者的源代码。
b)共享应用程序数据。
在某种条件下,应用程序的使用者(而非开发者)可以直接将正在运行的应用程序中的数据转接到另一个应用程序中使用。比如:Internet网络中的股市行情数据,在屏幕中滚动时,使用者可以直接把股市行情数据转接到自己的或第三方的股市行情分析软件中使用。
c)企业信息管理系统的开发维护中,修改和增加功能的工作必不可少,如果在时隔一年或更长的源代码中直接修改,势必困难重重,甚至越改越难,最后不如重做。通过透明语言,面向对象封装式开发出的每一个工作单元,勿需详细制定信息和信息流,仅仅通过透明语言提供的必要信息,转接数据或分布程序执行,或重载某些需更改的功能或继承某些需增加的功能等,将千丝万缕的程序数据关系化作许多较小的工作单元,他们的增删更改不会引起其他的错误,为开发维护带来了快速低成本的保证。
1.4 HB++的特点
a) 使用者通过HB++透明语言提供的数据处理与操作界面分离的开发设计原则,使应用程序的升级维护变得十分简单和容易。
b)面向对象程序设计方式,如同C++开发方式一样方便自如。
c)良好的内存管理,勿需管理内存空间的创建和释放,HB++语言中已经自动完成。比如:创建一个类实例,当此类实例已经没有其他地方使用,HB++自动将其空间释放。
d)支持所有Windows风格,控件丰富,也可以自建控件。
e)表格数据对象使表格的数据与表格显示形式完全分离,一套数据处理程序,可以对应任意的输入输出界面。更换界面,勿需更改更多的程序源代码。
f)可继承的数据对象,为使用者提供自由发挥的场所,可以设计出各种各样的表格形式和操作方式。
g)运行速度十分快,可以不用担心速度问题
h)集合的使用加快应用程序的开发速度和质量。HB++中的集合既是一个动态指针链表,又是一个可按关键字快速查找的二叉树。它不仅提供了查找、排序,而且提供了自动存数据和读数据的功能。集合中的数据可以是任何类型,存数据时,无论数据间关系多么复杂,都自动将其按随机文件或某数据库存数据。
i)HB++透明语言中只有函数,没有过程。过程就是没有返回的函数。
k)由外部捕捉程序内部几乎所有的类信息或模块信息,捕捉到的信息可以发送到其他程序中或网络中。
l)支持中文编程,无大小写区分
m)由于开发时间仓促,还没有完成可视化设计,但仍可方便设计程序。在此,仅请谅解。
1.5 一个简单的例子程序
(为了方便注释,例子中均采用中文,HB++本身也可以使用英文字母)
例如:下面的代码是一个完整的可以运行的程序,它输出一个句子:
'==========================================================
'例子1.abc
'==========================================================
form 例子窗口
public withevent 按钮 as TButton
public function 按钮_Click()
msgbox("简单地看一眼!")
end function
end form
运行结果:屏幕中出现一个窗口,左上角有一个按钮,鼠标按下此按钮,弹出提示框,提示“简单地看一眼!”。
HB++的注释方法同VB,使用“'”单引号,单引号之后的所有内容均为注释内容。
“form 例子窗口”表示创建一个窗口类,同时产生一个叫“例子窗口”的窗口实例变量。
“public withevent 按钮 as TButton”表示在此窗口类创建插入一个按钮,缺省状态下,按钮的位置在左上角。“withevent”创建的控件直接插入到它所在的窗口类中。
函数使用“function”和“end function”表示函数体实现的过程。
“msgbox”提示函数,表示参数中的内容按提示框弹出提示。
“end form”表示窗口类的定义结束。
1.6 另一个简单的例子程序
例如:下面的代码是一个完整的可以运行的程序,它派生了一个带文本输入框的按钮控件类:
'==========================================================
'例子2.abc
'==========================================================
module 例子模块 ‘模块是编写全局变量的场所
class 带输入框的按钮类 from TButton ‘从按钮类派生的新类
public withEvent 输入框 as TText ‘将编辑框加入到新控件类中
public function _Click() ‘预选将单击事件内置,这样此类的所有实例在创建后自动带有此事件的功能
if 输入框.text = "HB++" then
msgbox("您已经学会了敲'" + 输入框.text + "'")
elseif 输入框.text = "C++" then
msgbox("不错,您知道'" + 输入框.text + "'")
else
msgbox("我不知道您敲的'" + 输入框.text + "'")
end if
end function
end class
end module
form 例子窗口 ‘定义窗口类,并且此窗口类本身就是一种数据类型,所以,可以创建若干个这种类型的实例
public withevent 按钮 as 带输入框的按钮类 ‘在此窗口中增加一个控件(前面定义的‘带输入框的按钮类’)
function 例子窗口() '例子窗口的构造函数
Caption="一个简单的例子"
按钮.Left=(Width-按钮.Width)/2
按钮.Top=(Height-按钮.height)/2
end function
end form
运行结果:屏幕出现窗口,窗口中间是一个带有文本编辑框的按钮。在文本编辑框中输入“HB++”,然后按钮,出现提示框“您已经学会了敲'HB++'”;在文本编辑框中输入“C++”,出现提示框“不错,您知道'C++'”;在文本框中输入其他文字,出现提示框“我不知道您敲的'敲的内容'”。
注意程序中“class 带输入框的按钮类 from TButton”中的“from ”关键字,表示“带输入框的按钮类”从TButton控件类中继承过来的。
“public withEvent 输入框 as TText”在此按钮类中创建一个文本编辑框。
“public function _Click()”表示“带输入框的按钮类”中预先定义好单击事件的处理过程,如果创建了此类实例,实例中将继承此单击事件的过程。
“function 例子窗口()”表示“例子窗口”窗口类的构造函数,在窗口刚创建实例时运行此函数。此例子中,此函数将按钮的位置放在窗口的中间,同时,窗口的标题置为“一个简单的例子”。
注意:在HB++中,类的成员函数不需要声明。只要在class和end class之间书写即可。
注意:事件函数可以在没有产生实例的情况下预先定义好,以后在其所有的实例中将自动继承此事件函数,除非实例再一次定义此事件函数。
较为详细的介绍请看:http://lifesoft.yeah.net 地址的编程人生
梦郎