第2章PowerBuilder9.0的编程2.1数据库应用模式计算机的应用结构经历了集中式结构、文件服务器的网络结构到现在的客户/服务器网络结构、分布式客户/服务器网络结构和Web网络结构的发展阶段。2.1.1集中式应用模式集中式应用模式有两个关键硬件:主机和客户端。主机一般是大型机,相当于现在的服务器。客户端与主机之间传递数据的方式非常简单:一是从客户端键入信息到主机,二是由主机返回到客户端结果字符。这个时期(大约在20世纪60~70年代)的计算机所有的资源都在主机上,所有处理都在主机上完成。这种结构的优点是可以实现集中管理、安全性好,但大型机价格昂贵,并且应用程序和数据库都存放在主机中,没有可能真正划分应用程序的逻辑。结束放映第一页上一页下一页最后一页2.1.2文件服务器应用模式在文件服务器应用结构中,应用程序都是在客户工作站上,而不是在服务器上运行。文件服务器只提供资源的集中管理和访问途径。这种结构的特点:一是共享资源集中管理,而应用程序则分散在各个客户工作站,二是费用低、配置灵活,在一个局域网中可以方便地增减客户工作站。因为这种结构只提供文件服务,所有的应用程序都在客户端完成,这就要求客户工作站上的个人计算机要有足够的能力,以便执行所需要的任何程序或完成必要的任务,这就经常需要客户端的计算机升级。这样会给客户造成很大的负担。虽然应用程序可以存放在网络文件服务器的硬盘上,但每次都要传送到客户端的个人计算机内存中才能执行。网络上经常要传送大量无用的数据。这种模式出现在20世纪80年代,个人计算机进入商用阶段,局域网问世,文件服务器技术产生的时期。2.1.3客户/服务器应用模式文件服务器结构的费用虽低,但和大型机的集中式结构相比,缺乏足够的计算和处理能力.为了解决费用和性能的矛盾,客户/服务器结构便应运而生。这种结构允许应用程序分别在客户工作站和服务器(注意不再是文件服务器)上执行。可以合理地分配应用程序,充分发挥客户工作站和服务器两个方面的功能。结束放映第一页上一页下一页最后一页2.1.2文件服务器应用模式在客户/服务器结构中,应用程序或应用逻辑可以根据需要划分在服务器和客户工作站中,使这些应用程序协同工作完成特定任务。客户工作站向服务器发送的是处理请求,而不是文件请求,服务器返回的是处理结果,而不是整个文件。客户/服务器结构最流行的领域就是数据库应用领域。比较著名的数据库都提供了支持客户/服务器结构的数据库管理系统,如MSSQLServer、SybaseadaptiveServer和Oracle等。在客户/服务器结构中,我们常把客户端称为前台或前端客户,把服务器称做后台或后台服务器。客户/服务器结构的核心是当前端用户需要后台服务器服务时,仅仅发出请求,服务器接收该请求后,执行相应的功能,把满足条件的数据反馈给前台客户端,查询和操作都在服务器上完成。服务器有理由配置一台高性能的计算机,所有的客户端可以从中受益。客户/服务器结构的另一个主要特点是数据库服务器平台与客户端无关。它向客户端提供一个开放的使用环境,客户端的用户通过数据库接口和SQL语言访问数据库,不管客户端采用什么硬件和软件环境,只要通过网络协议和数据库接口程序连接到服务器就可以对数据进行访问。结束放映第一页上一页下一页最后一页2.1.4分布式应用模式多层客户/服务器结构也称分布式客户/服务器结构,它强调组件的开发,将原来很多客户端的处理逻辑剥离出来,形成相对独立的组件模块,这些模块安排在服务器上,供所有的客户端应用程序访问。组件的开发使之可应用性好、性能改善,易于管理和维护。2.1.5Web应用模式随着Internet和Web技术的不断发展以及数据库技术的不断更新,将Web技术与数据库技术相结合,开发动态的Web数据库应用势在必行。中间件负责管理Web服务器和数据库服务器之间的通信并提供应用程序服务,它能够直接访问数据库,提供与数据库相关的动态HTML页面,然后通过Web服务器返回给用户的浏览器。除了在Web服务器端采用中间件以外,我们还可以通过Web浏览器把应用下载到客户端运行,在客户端直接访问数据库。结束放映第一页上一页下一页最后一页2.2面向对象的方法2.2.1面向对象的概念1.对象、消息一个面向对象的程序由对象组成。对象包含数据以及对数据进行操作的方法,对象是具有特殊属性和方法的实体。对象的属性就是包含在对象中的一类特殊数据,表示对象的某些特征。正是对象的属性和方法使对象具有了行为能力。例如Button控件的Text属性表示显示在控件上的文字,改变了这个属性也就改变了控件上的文字,这是对象的方法把对象在外观上进行了刷新,方法是对象操作数据的主要工具。2.类、实例如何定义和描述一个对象?这里需要使用类和子类的概念。类是一组几乎相同的对象的描述,由表示一组相关对象共同性质的方法和数据组成。类是创建对象的蓝图或模板。类是型的概念,对象是值的概念。当我们用类来创建一个对象时,我们实际上是生成了类的一个实例。把实例相应的数据根据需要赋予确定的值,实例就成为具有自己个性的对象了。结束放映第一页上一页下一页最后一页2.2.1面向对象的概念3.封装把对象的数据和方法组合在同一个结构中,这就是对象的封装特性。对象的数据域被封闭在对象的内部,使得外部程序必须而且只能使用正确的方法才能对要读写的数据域进行访问,有些情况下,只能用该对象的方法才能访问。4.继承一般情况下,面向对象的开发工具会预定义许多标准类,另外,一个开发人员经过长期的应用开发也会积累一些自定义的类。人们想用简单的方法使用已有的类,这就是面向对象理论中的一个重要概念——继承。继承是自动共享类、子类中的方法和数据的有效机制。继承通过从父类中继承公共方法和数据,同时加入新的数据和方法来定义一个新类。此后,又可以把新建子类作为父类来创建它的新子类。类的创建沿树型结构发展。正是通过继承的机制,实现了代码的重用。而且可以通过逐渐完善我们的类,直到创建出满足需要的各种类。5.多态性多态性也是面向对象程序设计的一个重要概念,它指几个不同的对象具有相同名字的函数(方法),但每个对象为该函数提供的参数和实现过程都可能不相同。结束放映第一页上一页下一页最后一页2.2.1面向对象的概念6.函数重载函数重载是指同一个函数有几种调用格式,或者说,一个相同的函数名字有多种参数格式和实现方法。与多态性不同,函数重载是指同一对象中的同一名字的函数有多种实现方法。在PowerBuilder中,一个对象中也可以声明多个同名的函数,在运行时,PowerBuilder根据传送的参数个数和类型来决定调用哪一个。每个同名函数必须有不同的参数,才能实现重载,重载函数只对对象级的函数有效。全局函数不能重载。7.事件事件是作用于对象的动作或状态改变。每个对象类型都有一组预制的特定事件。事件是使代码得到执行的唯一途径。开发者需要编写PowerScript代码(脚本)来响应特定的事件,事件的发生会触发代码的执行。PowerBuilder中为各种类提供了许多常用事件,这些事件仅能接收部分Windows消息。为使相应对象能够接收到某个特殊消息,以满足特殊要求,可以自己定义事件,这种自己定义的事件称用户事件。结束放映第一页上一页下一页最后一页2.2.1面向对象的概念8.方法PowerBuilder系统提供了丰富的内部函数,有些内部函数是针对某个对象的,针对某个对象的函数有时也称为该对象的方法。有些内部函数是基本函数,不属于某个特定对象。通过Function画板可以自定义全局函数和某个对象的函数。2.2.2PowerBuilder中的面向对象1.PowerBuilder的对象在PowerBuilder中,对象是指像窗口和按钮这样的控件。通过右击该对象,然后从弹出的菜单中选择Properties就可以打开属性窗口,修改它的属性。该属性窗口是具有多个标签的对话框,其中许多选项可以设置。用户也可以在运行时用代码改变对象的属性。用点符号的方法,在运行时几乎可以访问一个对象的所有属性。调用对象的方法和调用对象的属性一样,也要用到点符号,例如:Cb_close.Text=“关闭”修改对象的属性Cb_close.setFocus调用对象的方法结束放映第一页上一页下一页最后一页2.2.2PowerBuilder中的面向对象2.PowerBuilder中的类通过PowerBuilder浏览器(Browser)可以观察PowerBuilder中的类及其继承关系。点击【Tools|Browser…】菜单项或工具栏上的【Browser】图标按钮,将打开浏览器,在浏览器中选择System标签页,就可以看到PowerBuilder的各种类了。如果要看类的继承关系;在左边的框架内右击,在弹出的菜单中选择ShowHierarchy。2.2.3PowerBuilder的开发方法一个PowerBuilder应用程序由若干个窗口组成,每个窗口都有若干个控件,每个对象或控件都有若干事件,每个事件将对应一段程序。学习PowerBuilder应该这样入手:首先了解PowerBuilder的各种对象和控件,了解对象和控件的属性和事件。PowerBuilder是面向对象的开发工具。开发思路是:事件驱动程序的执行。开发的实质性工作是:一、定义对象、控件及其属性。二、定义对象和控件上某事件发生时要执行的程序。结束放映第一页上一页下一页最后一页2.3PowerBuilder编程的命名规则当看到一个对象的名称时,就可以很清楚地知道这是什么对象,它将要做什么等,这样就要有一个命名规范。在PowerBuilder中提倡使用带有前缀的名字。单击【Design|options】菜单后弹出的对话框,从该对话框中可以看到PowerBuilder对每个控件所推荐的名字前缀,用户也可以在这个对话框中改变成用户所喜欢的控件前缀。2.4PowerBuilder应用程序开发过程创建一个PowerBuilder应用程序的具体步骤包括分析、设计、开发、调试、生成可执行文件这几个部分。2.4.1分析、设计系统分析就是在进行任何设计和开发之前,一定要搞清楚程序到底要做些什么,千万不能在没有完全理解需求的时候就开始开发和建立项目。当我们完全理解了开发需求之后,必须去制定一个计划,这个应用程序看上去应该是什么样,它是如何工作的,组成结构是什么,采取什么样的数据库,组织它的最好方式是什么,如何使它在大小、速度和易用性方面达到最优,这些问题都需要在开发之前仔细研究,属系统设计的范畴。结束放映第一页上一页下一页最后一页2.4.2开发这个阶段也称为编码阶段,但在PowerBuilder中一般只需编写少量代码,就可以开发出很好的应用程序。用户可以用任何适合于项目的方法,以任何顺序完成下列两个任务:一、创建数据库数据库的设计是在设计阶段使用Database画板来完成的,这个任务包括创建数据库及各种表和索引。二、创建应用程序创建应用程序对象,设置应用程序级的属性,编写应用对象的程序脚本。使用Application画板。在创建应用程序的过程中,不可避免地要在Window画板、Datawindow画板、Menu画板和其它画板之间切换,实际上把它们看成一个完整的反复过程会更好。创建窗口对象应用程序的窗口把所有的Datawindow、控件和用户对象结合在一起,形成完整的用户界面结束放映第一页上一页下一页最后一页2.4.2开发创建菜单对象一般应用程序的主窗口中都有一个下拉菜单,菜单在Menu画板中创建。创建Datawindow对象PowerBuilder应用程序的核心是数据库以及用户与数据库的交互。数据窗口能够完成对数据库的访问,所以数据窗口是PowerBuilder应用程序开发的重点。编码许多画板都可以进行编码工作。大部分代码用来连接不同的控件以及实现它们之间的联系,另有一些代码用于直接访问和更新数据。PowerBuilder中编写代码使用PowerScript语言和嵌入式SQL语句。2.4.3调试与测试PowerBuilder中有一个功能强大的集成调试器