毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc

上传人:小小飞 文档编号:3952812 上传时间:2019-10-11 格式:DOC 页数:34 大小:1.37MB
返回 下载 相关 举报
毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc_第1页
第1页 / 共34页
毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc_第2页
第2页 / 共34页
毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc_第3页
第3页 / 共34页
毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc_第4页
第4页 / 共34页
毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-跨平台软件安装程序的设计与实现设计.doc(34页珍藏版)》请在三一文库上搜索。

1、毕业设计(论文)报告 论文题目:跨平台软件安装程序的设计与实现 软件学院 (系) 软件工程 专业 学 生 姓 名: 校内指导老师: 企业指导教师: 起 始 时 间: 2005 年 9 月 设 计 地 点: 上海经元软件信息技术有限公司 东南大学软件学院 2001 级张小名毕业设计论文 II 摘摘 要要 软件的安装是软件进入应用领域的第一步,安装程序的好坏决定了用户对软件的第一印象,对 软件的整体质量有着重要的影响。目前软件的功能不断增多,应用范围越来越广,相应的复杂性也 不断增高,因此安装程序也越加复杂。作者对 InstallShield Multiplatform 安装程序开发框架和 Jav

2、aBeans 组件技术进行研究,介绍了 OS/400 和 z/OS 系统特性,在此基础上成功的为 ScanMail for Domino 开发出跨平台的安装程序,为跨平台安装程序的开发提供了解决方案和具体的开发实例。 在 ScanMail for Domino 安装程序的分析和设计过程中,采用面向对象的分析与设计方法。在 Windows,Linux,Solaris,AIX 和 OS/400 操作系统上采用基于 Java 组件技术的 InstallShield Multiplatform 来开发安装程序,只需一份代码就可以支持以上平台。而在 z/OS 操作系统上,基于 z/OS 提供的 Unix

3、 系统服务采用 Shell 脚本来开发安装程序。 文中所采用的开发方法为 ScanMail for Domino 开发的安装程序在各个平台上都达到了产品的 需求,并且有很高的质量,尤其是安装程序的模块化使得安装程序的后期维护简单和高效,降低了 整个软件的开发和维护成本。 关键词关键词:安装程序,面相对象分析与设计,Java 组件,集成文件系统,Unix 系统服务 东南大学软件学院 2001 级张小名毕业设计论文 III Abstract Installation is the first step of use the software. The quality of the Installa

4、tion program determines the first impression of user for the software. It plays an important role in the software quality. Nowadays, the software has more functions; the range of application has larger and larger and the complexity of software is grows. So the Installation becomes more complexity. T

5、he author rearches the InstallShield Multiplatform development framework, the JavaBeans technolog and introduces the OS/400 and z/OS operate system. Base on this the author successed to develop the multi-platform installation for the ScanMail for Domino. That provides the solution for the muti-platf

6、orm installation development and gives the example. In the development of installation of ScanMail for Domino, the author use objects oriented analysis and design. In Windows, Linux, Solaris, AIX and OS/400 platform use the InstallShiled Multiplatform to develop the installation program. In the z/OS

7、 platform use Shell script to develop the installation base on the z/OS Unix System Service. The installation program of ScanMail for Domino meets the requirement on all platforms and has high quality. The modularization of the installation program makes the maintenance easier and more efficiency. R

8、educe the cost of the software development and maintenance. Keywords: Installation, Object Oriented analysis and design, JavaBeans, Integration File System, Unix System Service 东南大学软件学院 2001 级张小名毕业设计论文 IV 目目 录录 摘 要.II ABSTRACTIII 绪 言 .1 第一章 面相对象技术和 JAVA组件技术.2 1.1 面向对象程序设计介绍.2 1.1.1 面相对象的发展2 1.1.2 面相

9、对象的特性2 1.1.3 面相对象程序设计的一般方法3 1.2 Java 组件技术 .4 1.2.1 组件的概念和分类4 1.2.2 JavaBean 组件特性.5 1.3 JavaBean 的事件机制.5 1.3.1 JavaBean 事件机制概述.5 1.3.2 事件对象.6 1.3.3 事件监听者接口.6 1.3.4 指定组件包含的属性信息8 第二章安装程序设计.8 2.1 InstallShiled Multiplatform 平台介绍.8 2.1.1 Product Bean .8 2.1.2 Wizard Bean9 2.1.3 Condition 和 Services .9 2.

10、2 Custom Bean 的设计.9 2.2.1 Product Action 的设计10 2.2.2 Wizard Action 的设计 10 2.2.3 Wizard Panel 的设计 11 2.3 项目的编译与运行13 2.3.1 安装程序的平台和语言设置13 2.3.2 安装程序的运行13 第三章安装程序分析与设计.14 3.1 ScanMail for Domino 简介 .14 3.2 ScanMail for Domino 安装程序的需求分析和设计 .15 3.2.1 安装程序需求分析15 3.2.2 安装程序流程设计.16 3.2.3 安装程序中的类设计18 3.3 Sca

11、nMail for Domino 卸载程序的需求分析与设计 .19 3.3.1 卸载程序需求分析19 3.3.2 卸载程序流程设计19 3.3.3 卸载程序中的类结构20 3.4 ScanMail for Domino 数据库的处理逻辑 .20 第四章 SCANMAIL FOR DOMINO安装程序的实现21 4.1 ScanMail for Domino 安装程序模块实现 .21 4.1.1 欢迎界面与安装条款界面21 4.1.2 初始化安装环境21 东南大学软件学院 2001 级张小名毕业设计论文 V 4.1.3 选择安装类型和输入产品激活码界面22 4.1.4 选择需要安装的服务器和用户

12、确认服务器信息23 4.1.5 ScanMail for Domino 安装情况分析和显示.24 4.1.6 数据库相关的配置界面25 结 论 .26 致 谢 .27 参考文献.28 东南大学软件学院 2001 级张小名毕业设计论文 1 绪绪 言言 随着软件规模的扩大,功能越来越复杂,相应的对于软件的安装也提出了更高的要求,软件的 安装也呈现出复杂化的趋势。许多大型的应用软件都需要支持各种不同的操作系统和不同的语言, 这对于软件的安装也提出了挑战。安装程序是软件进入应用的第一个步骤,是用户对软件的第一印 象,它的好坏影响到用户对软件的整体评价。而且在软件的维护阶段有很大一部分的软件错误都和 安

13、装程序相关。因此,安装程序的好坏对于软件整体质量有十分重要的影响。目前安装程序的开发 方法和工具也在不断增多,但是只靠工具并不能解决所有问题,如何设计和开发优秀的安装程序也 成为一个有待解决的研究课题。 当前对于软件安装程序的开发方法以及相应的工具有很多,通常的软件开发平台如 Visual studio, JBuilder, Delphi 等都提供了对程序进行打包的功能,从而产生软件的安装包。但 Visual studio 所生成的安装程序只能支持 Windows 平台而且功能有限,不能对用户自定义的安装过程提供 支持。而 JBuilder 所产生的 jar 包也不能提供良好的可视化安装过程。

14、对于一些功能较少,平台唯 一的或是自己开发的免费软件、共享软件等,采用开发工具自带的安装程序制作功能来开发安装程 序已经足够,但是对于商业软件,特别是企业级的软件产品而言,往往要支持多种不同的操作系统 和多种语言,因此就必须使用专业的安装程序开发工具来进行开发,相应的也要有专门的设计和开 发过程。目前应用较多的用来开发安装程序的工具是 Install Shield 系列的专业安装程序开发工具, 针对不同用户的需求 Install Shield 公司提供了一系列功能不同的安装程序开发工具。对于开发支持 跨平台的安装程序来讲,大多数开发人员都选择 InstallShield Multiplatfo

15、rm 5.0,它正是基于 JavaBeans 组件技术的,这款开发工具提供了对多平台和多语言的支持,并且提供了强大的开发类 库,使得开发人员可以开发出符合自己需求的安装程序。 本文的研究目的就是为企业级的大型软件提出跨平台的安装程序的开发方法,使安装程序的开 发变的简易和高效,并且使得程序的后期维护更加容易。本文主要对 InstallShield Multiplatform 的安装程 序设计框架和Java 组件技术进行研究,用面向对象的方法来设计软件的安装程序,在此基础上进行 ScanMail for Domino 的安装程序的设计和开发,并且在 z/OS 上用Shell 脚本来移植安装程序。

16、文章总共 分为五章。 第一章主要介绍面向对象程序开发的一般方法和 Java 组件技术,包括 JavaBean 的特性和事件 机制。 第二章中详细介绍了如何用 InstallShield Multiplatform 安装程序开发平台来开发跨平台的软件 安装程序,并且给出了 Product Bean 和 Wizard Bean 的开发方法和实例。 第三章主要进行 ScanMail for Domino 安装程序的需求分析和设计,在设计的过程中采用面相 对象的分析和设计方法。 第四章主要是安装程序的实现,介绍了每一个安装模块,即 JavaBean 的具体实现。 第五章介绍安装程序的移植,包括对 OS

17、/400 和 z/OS 操作系统的介绍,以及安装程序在这些操 作系统上的移植方法和步骤。 此课题的研究,为大型软件的多平台安装提出了方便、易用的解决方案,同时对 InstallShield Multiplatform 的安装程序设计框架和 Java 组件技术进行深入分析,并且在 ScanMail for Domino 的 安装程序的设计和开发过程中对各种不同的操作系统的特性进行研究,特别是一些 IBM 大型机的 操作系统,如 OS/400 和 z/OS,这对于实际的跨平台软件安装程序的开发有很大的指导作用。文中 采用 JavaBeans 组件技术实现模块化的安装程序使后期的维护工作会变的容易,

18、而且在设计中许多 通用的安装模块可以在以后的开发中进行重用,提高了软件产品的质量也节省了开发时间 2 第一章第一章 面相对象技术和面相对象技术和 Java 组件技术组件技术 1.1 面向对象程序设计介绍面向对象程序设计介绍 1.1.1 面向对象的发展面向对象的发展 对于程序设计的方法而言存在着两种主要的方法,一种是结构化程序设计,另一种是面相对象 程序设计。面相对象程序设计是软件系统设计与实现的新方法,这种新方法是通过增加软件可扩充 性和可重用性,来改善并提高程序员的生产能力,并控制维护软件的复杂性和软件维护的开销1。 结构化程序设计在 60 年代诞生,在 70 年代到 80 年代已遍及全球,

19、成为所有软件开发设计领 域及每个程序员都采用的程序设计方法。结构化程序设计的设计思路是:自顶向下、逐步求精;其 程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能 简单,在功能上相对独立;每一个模块内部均是有顺序、选择和循环三种基本结构组成;其模块化 实现的具体方法是使用子程序。 结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的思想,从而有效地将 一个较复杂的程序系统的设计任务分成许多易于控制和处理的子任务,这些子任务都是可独立编程 的子程序模块。这些子程序中的每一个都有一个清晰的界面,使用起来非常方便。 结构化程序设计方法虽然具有很多的优点

20、,但它仍是一种面向数据和过程的设计方法,它把数 据和过程分离为相互独立的实体,程序员在编程时必须时刻考虑所要处理的数据的格式。对于不同 的数据格式即使要做同样的处理或相同的数据格式要做不同的处理都需要编写不同的代码。因此可 重用性不好。另一方面,当数据和过程相互独立时,总存在着用错误的数据调用正确的程序模块或 用正确的数据调用了错误的程序模块的可能性。 面相对象程序设计既吸取了结构化程序设计的一切优点,又考虑了现实世界与面相对象解空间 的映射关系,它所追求的目标是将现实世界的问题求解尽可能简单化。 面相对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处 理,它采用数

21、据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据类型类, 并且考虑不同对象之间的联系和对象类的重用性。面相对象程序设计优于传统的结构化程序设计, 其优越性表现在,它有希望解决软件工程的两个主要问题软件复杂性控制和软件生产率的提高, 此外它还符合人类的思维习惯,能够自然地表现现实世界的实体和问题。面向对象方法,尤其是它 的继承性,是一种代码重用的有效途径。开发者在设计软件时可以利用一些已经被精心设计好并且 经过测试的代码,这些可重用的代码被组织和存放在程序设计环境的类库中。由于类库中这些类的 存在,使以后的程序设计过程变的简单,程序的复杂性不断降低、正确性不断加强,也越来越易于 理

22、解、修改和扩充。 1.1.2 面相对象的特性面相对象的特性 面向对象系统最突出的特性就是封装性、继承性和多态性1。 封装性是建立在类的基础上,类描述了一组有相同特性(数据元素)和相同行为(函数)的对 象。类实际上就是数据类型,例如,浮点数也有一组特性和行为。区别在于程序员定义类是为了与 具体问题相适应,而不是被迫使用已存在的数据类型。这种抽象的数据类型是面向对象程序设计中 的一个基本概念。简而言之封装性就体现在类的设计上。 封装应具有几个特点:首先,具有一个清楚的边界,对象的所有私有数据、内部程序细节都被 固定在这个边界内。其次,具有一个接口,这个接口描述了对象之间的相互作用、请求和相应,它

23、就是消息。最后,对象内部的实现代码受到封装壳的保护,其它对象不能直接修改本对象所拥有的 数据和代码。 类型不仅仅说明一组对象上的约束,还说明与其他类型之间的关系。两个类型可以有共同的特 3 性和行为,但是,一个类型可能包括比另一个类型更多的特性,也可以处理更多的消息(或对消息 进行不同的处理)。继承表示了基本类型和派生类型之间的相似性。一个基本类型具有所有由它派 生出来的类型所共有的特性和行为。程序员创建一个基本类型以描述系统中一些对象的思想核心。 由这个基本类型派生出其他类型,表达了认识该核心的不同途径。继承关系具有以下几个特性: 类间具有共享特征(包括数据和程序代码的共享); 类间具有细微

24、的差别或新增的部分(包括非共享的程序代码和数据); 类间具有层次结构。 继承所具有的作用有两个方面:一方面可以减少冗余代码;另一方面可以通过协调性来减少相 互之间的接口和界面。 对于面向对象的程序设计语言,多型性是第三种最基本的特征,“多形性”从另一个角度将接 口从具体的实施细节中分离出来,亦即实现了“是什么”与“怎样做”两个模块的分离。利用多形 性的概念,代码的组织以及可读性均能获得改善。此外,还能创建“易于扩展”的程序。无论在项目 的创建过程中,还是在需要加入新特性的时候,它们都可以方便地“成长”。 1.1.3 面相对象程序设计的一般方法面相对象程序设计的一般方法 面相对象的程序设计首先关

25、注在抽象数据类型的建立上,也就是我们通常所说的类的设计。面 向对象程序设计方法模拟了人类认识问题中较高、较广层次的过程,即分类过程,并综合了功能抽 相与数据抽象,将解决问题看作是一个分类演义的的过程。 面向对象程序设计主要分为面相对象分析和面向对象设计两个主要阶段,前两个步骤属于面相 对象分析(OOA)的范畴,后两个阶段属于面相对象设计(OOD)的范畴。分析与设计的基本任 务就是:分离对象,在微观上研究对象的内部结构,在宏观上研究和描述对象之间的关系,而且这 一思想从需求分析到实现阶段都是一致的2。OOAD的工作描述如图1所示。 需求分析是面相对象分析的第一步,它是用文本方式如实描述要实现的领

26、域的情况。描述的内 容一般包括系统要实现的目标、拟开发的系统的主要特点、领域的核心活动范围;记录可能发生的 例外情况(如出错、指标异常等)。 从需求文本描述确定语义对象是工作的第二步。语义对象是组成一个系统的基本实体,他有固 定的属性和处理数据的方法。实体之间的协调工作构成一个系统的有机整体。实体之间的关系是有 “主”有“从”的,即一个实体可能是完成某一动作的“启动者”,另一实体就是“参与者”。 图 1 面向对象分析与设计流程图 4 “启动者”负责调用另一个实体“服务”,“参与者”是提供服务的实体。应把需求文本作全面的 分析理解,分析出问题空间内的全部实体和实体之间的关系。 面相对象的设计阶段

27、的主要工作是根据分析阶段得出的各种实体和关系来创建对象模型图和状 态图,精确的定义类和类的层次网络图。面相对象设计方法是一种直观方法,通常可归结为下述三 步。 1. 现对象:所有的对象都有唯一的标识,对象之间是可区分的。具有共同特性的对象组成了 类。 2. 现对象间的关系:对象之间存在着许多关系,主要要寻找的有两种,即委托关系和继承关 系。 3. 发现类:类所描述的是具有相似性质的一组对象,这组对象具有相似的行为模式、相似的 关系和相似的语义;识别类可用直观的方法,即将现实世界中的类映射到软件解空间的类;我们还 可以用抽象的方法识别类,通过观察多个对象或多个类之间的共同特性,抽象出新的类;还有

28、一种 发现类的方法为特殊化方法,即通过找出在基类中并未出现的某些附加特性来发现派生类。 1.2 Java 组件技术组件技术 1.2.1 组件的概念和分类组件的概念和分类 所谓组件就是可以自行进行内部管理的一个或多个类所组成的群体。除了群体提供的外部操作 界面外, 其内部信息和运行方式外部不知道, 使用它的对象只能通过接口操作它3。每个组件包含 一组属性、事件和方法, 组合若干组件就可以生成设计者所需要的特定程序。组件往往设计成第三 方厂家可以生产和销售的形式,并能集成到其它软件产品中。应用程序开发者可以购买现成的组件, 他们只要利用现有的组件,再加上自己的业务规则,就可以开发出一个应用软件。总

29、之,组件开发技术 使软件设计变得更加简单和快捷, 并极大地增强软件的重用能力。 目前常用的组件模型可以分为两种:一是微软公司的 COM 组件模型(包括 Automation 和 ActiveX);一是 Sun 公司的 JavaBean3。 ActiveX并不是微软公司推出的最新技术,而是微软公司开发多年的一个产品:首先是“动态数 据交换”(DDE),它是Window程序之间传递消息的最原始的协议;接着出台的是“对象链接与 嵌入”(OLE),这是对DDE的一种扩展,利用OLE可在应用系统的各程序间创建可视的链接关系; OLE之后是“部件对象模型”(COM),它几乎成为使用和设计OLE应用程序的工

30、业标准;最后到 达ActiveX,它是COM的修改形式,是COM标准的一种升华,它引入了“组件”的概念。所谓 ActiveX 部件是指一些可执行的代码,如exe、dll或ocx文件,通过ActiveX技术,程序员能把可重用 的软部件组装到应用程序中去。以Visual Basic为例,Visual Basic 中的控件是控件部件(即ocx文件) 提供的对象,一个控件部件可以提供多种类型的控件。控件制作者把控件工程编译成一个控件部件 后,程序开发者就可以重用这些控件来创建新的应用程序。控件由三部分组成:控件的外观是公有 的,用户能看到并能同它进行交互;控件的接口,包括控件的所有属性、方法和事件也是

31、公有的; 任何包含该控件实例的程序都会用到:控件的私有部分是它的实现,即控件工作的代码。也就是说, 控件的实现效果是可见的,但代码本身不可见。用户通过继承控件私有部分、修改其可见部分就能 匹配新的应用需求。 JavaBean 类似于 ActiveX 控件,它们都能提供常用功能并可重复使用。JavaBean 是基于 Java 的组件模型。在该模型中,它可以被修改或与其他组件结合生成新的组件或应用程序。JavaBean 具 有完全的 OOP 编程风格,可以针对不同业务建立一套可重用的对象库。与其他模型相比, JavaBean 组件没有大小和复杂性的限制。JavaBean 组件可以是简单的控件(如按

32、钮、菜单),也可 以是不可见的应用程序,用来接收事件并完成幕后操作。与 COM 组件模型相比,虽然 JavaBean 只能用 Java 语言开发,COM 可由符合标准对象模型的任何语言(C+、VB 等)开发,但相对而 言,JavaBean 比 COM 更容易开发;另外,COM 组件需要在服务器上注册,如果修改了现有组件, 服务器需要重新启动才能使用它,而 JavaBean 不需要重新注册;同时 JavaBean 符合结构化对象模 型:每个 Bean 由一个不带参数的构造函数控制,可以使用内省(introspection)来设置其属性。 5 1.2.2 JavaBean 组件特性组件特性 Jav

33、aBean组件是可重用的软件组件,使用标准的“方法”命名规则。这使得用户只要看到 JavaBean 组件的名字,就可以预测它的功能,并可在应用程序中轻松使用。JavaBean其实就是符合 JavaBeans组件模型规范的Java类。JavaBeans组件模型规范是Sun、Borland及其他公司为了建立一个 平台无关性的组件模型API而协作开发的,它是编码组件的一个规范4。 JavaBeans 将Java 语言本身所具有的“一次编写,到处运行”特性沿用到代码组件Bean,使Bean 也具有平台无关性5。Bean是特殊的Java类。它具有一般Java类所没有的特性。按照JavaBeans的规 范

34、,一个JavaBean(以下简称Bean)应该具备以下的成分和特性: (1)方法:指在Bean 类中定义的,完成各种特定任务的公共方法,这些方法提供给外部调用。 事实上,包括JavaBeans所支持的、以可视化方式重用Bean的那些特性是由定义在Bean中的方法来实 现的。虽然不同的可视化应用程序构造工具可以为用户提供各种不同的使用Bean的方式,但是在工 具内部都是通过驱动定义在Bean中的方法来完成。 (2)属性:Bean属性是Bean类中的成员变量,但它们同时又不是普通的成员变量。首先, Bean属性是与Bean的外观和行为有关的成员变量;其次,Bean 必须提供访问这些属性的公共方法

35、访问者方法, 而且命名这些方法时, 要么必须遵循Bean 的设计模式,要么必须对这些方法进行 统一的显式说明。JavaBeans特别规定Bean 外部不能直接访问Bean属性,Bean外部必须使用Bean中 定义的访问者方法,来访问这些属性。 Bean属性可以属于任意的数据类型。除一般属性外,Bean还可以具有索引属性、关联属性和约 束属性。索引属性是以数组形式存在的一组属性;关联属性是当自身的值发生改变时,能够向Bean 外部对此感兴趣的部分发送事件通知的属性;约束属性是在改变它的值之前,必须由Bean外部对此 感兴趣的部分进行有效性确认的属性。这些属性使得Bean的成员变量具有更强的语义表

36、达能力。 (3)事件:在JavaBeans中,事件及其处理机制是十分重要的。因为通过事件处理机制,Bean 与Bean之间才可以相互连接起来并进行互操作。JavaBeans直接继承了Java 1.1 API中以事件源/收听 者模型为基础的事件处理机制。事件用于传递Bean 状态变化的通知,以及用户与Bean之间的交互 信息。Bean 既可以产生事件,也可以收听并处理事件。作为事件源的Bean,既可以产生低层事件, 也可以产生语义事件。作为收听者的Bean,向外部提供了响应并处理事件的公共方法。 (4)自查(introspection):自查是指软件工具能够从外部分析Bean是如何工作的。Bea

37、n之所 以能支持自查是因为在JavaBeans中规定:当定义Bean的属性、事件和方法时,要么利用标准的 Bean信息类进行显式的定义,要么使用以命名约定为基础的设计模式来定义,两者必居其一。这样 无论使用那种形式,或是混合使用两种形式,应用程序构造工具都能分析Bean具有哪些属性、事件 和方法,以及使用它们所必需的信息。自查对于重用代码组件来讲是至关重要的,因为只有代码组 件支持自查,重用者才能真正地以“黑盒”方式重用它们6。 (5)对应用程序构造器的支持:应用程序构造工具可以在Bean类支持自查的基础上,为软件 开发人员提供直观的重用Bean的可视化方式,从而使重用代码资源的过程变得简单、

38、灵活和有效。 例如,虽然应用程序构造工具在其内部同样只能通过访问者方法来访问Bean的属性,但是它可以在 此基础上进一步利用Bean属性自查和Bean自身的属性编辑器,为应用程序构造工具的用户提供利用 可视化的属性列表,编辑Bean属性的手段。 (6)客户定制(customization):开发人员可以利用应用程序构造工具,设置Bean 的属性值, 以定制Bean 的外观和行为。 (7)永久性存储:可以在永久性的存储设备上保存Bean类,以供今后重用。 在上述特性中,使得 Bean 类比一般 Java 类更容易重用的两个主要特性是自查和支持应用程序 构造器。 1.3 JavaBean 的事件机

39、制的事件机制 1.3.1 JavaBean 事件机制概述事件机制概述 “事件”机制是JavaBean的重要特性之一,它使原本相互之间毫无关系的一堆构件成为一个能 6 够协同工作的有机整体。一个应用被分解为若干功能相对简单而集中的小模块,当满足一定的条件 时,各模块完成各自的职责,并启动下一个模块接替工作下去。构件就是实现特定功能的小模块, 而“事件”是控制任务执行顺序的机制,把一个源构件上发生的状态变化情况通知应该获取该消息的 其它目标构件,使得各个构件之间的行为有一种因果关系,控制整个应用功能的实现7。事件机制 有许多不同的用途,例如,在Windows系统中常要处理的鼠标事件、窗口边界改变事

40、件、键盘事件 等。在Java和JavaBean中,则是定义了一个一般的、可扩充的事件机制,这种机制能够: (1)对事件类型和传递模型的定义和扩充提供了一个公共框架,并适合于广泛的应用。 (2)完好的集成到Java环境中,充分利用Java的长处。 (3)事件能被描述环境捕获和触发。 (4)能使其它应用生成工具采取某种技术,在设计时直接控制事件,以及事件源和事件监听 者之间的关系。 (5)事件机制本身不依赖于复杂的开发工具。 (6)能够发现指定的对象类可以监听到的事件。 (7)提供一个常规的注册机制,允许动态操作事件源与事件监听者之间的关系。 (8)不需要其它的虚拟机和语言即可实现。 (9)事件源

41、与监听者之间可进行高效的事件传递。 (10)能完成JavaBean事件模型与相关的其他组件体系结构事件模型的中立映射。 1.3.2 事件对象事件对象 与事件发生有关的状态信息一般都封装在一个事件对象中,这个对象必须是 java.util.EventObject的子类。即使该子类没有增加任何新的属性或方法。习惯上这种事件对象的命 名应以Event结尾。例如下面定义了一个鼠标移动的事件类,其中定义了更新和读取当前鼠标位置 的方发。 /程序省略 1.3.3 事件监听者接口事件监听者接口 由于Java的事件模型是建立在方法应用的基础上的,因此需要定义和管理响应事件的方法。响 应事件的方法都集中定义在一

42、个事件监听者接口中,该接口继承java.util.EventListener接口,习惯上 以“Listener”为后缀标识。事件响应方法的具体实现在需要接受该事件的对象中实现8。以 MouseMoved事件为例,要有如下接口。事件机制的总体结构如图2所示。 /程序省略 主要过程是:事件从事件源到监听者的传递是通过对目标监听者对象的 Java 方法调用进行的。 对每个明确的事件的发生,都相应的定义一个明确的 Java 方法。这些方法集中在事件监听者接口 中。实现了事件监听者接口中一些或全部方法的类就是事件监听者。伴随着事件的发生,事件对象 作为参数传递给响应该事件的监听者方法。发出某种特定事件的

43、事件源的标识是:遵从规定的设计 格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。有时,事件监听者不 能直接实现事件监听者接口,或者还有其它的额外动作时,就要在一个事件源与其它一个或多个监 听者之间插入一个事件适配器类的实例,来建立它们之间的联系。 适配器类是Java事件模型中及其重要的一部分。在一些应用场合,事件从事件源到监听者之间 的传递要通过适配器类来“转发”。事件适配器的主要作用是作为一个中间机构实现接受事件源消 息所需实现的EventListener接口,简化最终事件接受对象的接口。适配器的几个用途有: (1)源和目标对象之间实现事件查询功能; (2)作为过滤器对事

44、件的发送作预处理; (3)合并一个事件监听器对多个事件源的接口; (4)充当事件源和监听处理之间的“话务员”。 由于一个特定的事件监听器对象对一个特定的监听接口只能实现一次,为了向多个相同类型的 事件源登记,并分别处理从各个事件源发送来的事件,需要在事件源和监听者之间插入适配器,实 现对同一个事件类型的各个不同处理方法,并正确的调用。 7 适配器模型的框架如图 3 所示,从图中可见,适配器类成为了事件监听者,事件源实际是把适 8 配器类作为监听者注册到监听者队列中,而真正的事件响应者并未在监听者队列中,事件响应者应 图 2 JavaBean 事件模型的总体结构图 图 3 适配器模型框架 9 作

45、的动作由适配器类决定。 1.3.4 指定组件包含的属性信息指定组件包含的属性信息 当创建了一个Bean组件后,并且遵循了JavaBeans的设计和命名规范,所有定义的和那些从超 类继承来的属性和事件都会自动的显示出来。如果不想使使用JavaBeans的设计和命名规范,或者 一个一个现存的类没有使用它们,还是您在设计时不想用户访问Bean的每一个属性,为了处理这些 情况,就要创建一个类来实现BeanInfo接口。 BeanInfo类主要用来向开发工具传递信息,这包括该组件的那些属性、方法和事件是在设计时 可以修改的,那些是隐藏的。使用BeanInfo类可以指定完全的组件信息,也可以指定部分的组件

46、信 息。要开发一个BeanInfo类必须实现java.beans.BeanInfo这个接口。主要步骤有: (1)实现getBeanDescriptor()方法,包括实例化BeanDescriptor对象,这个对象用来保存关于组 件的一般信息。 (2)实现getEventSetDescriptor()方法,包括实例化一个EventSetDescriptor对象数组,数组包含 了组件生成的每个事件的信息。 (3)实现getPropertyDescriptor()方法,包括实例化一个PropertyDescriptor对象数组,该数组包 括组件具有的所有属性的信息。 (4)实现getMethodDe

47、scriptor()方法,其中实例化一个MethodDescriptor对象数组,该数组包括 组件中每个公共方法的信息。 如果你要隐藏一些属性或者方法,使其在 Bean 的用户使用时不可见,只需让上述的这些方法 的对象数组中只包含你想倒出的属性、事件或方法,忽略你想隐藏起来的那些属性。还有一种方法 就是对想要隐藏的属性或事件调用 setHidden()方法。 第二章安装程序设计第二章安装程序设计 2.1 InstallShiled Multiplatform 平台介绍平台介绍 InstallShield MultiPlatform(以下简称为 ISMP)是一款可以构建多平台和多语言支持的安装程

48、 序的开发工具。它给开发人员提供了一步步的向导来构建一个安装项目,他支持的平台有 Windows、Linux、Solaris、MacOSX、AIX、HPUX 以及 OS/4009。它支持的安装模式有图形化 安装,控制台安装和自动安装。自动安装通过在手动安装时产生的记录文件来进行自动安装,用户 不需要进行干预。 在 ISMP 中,安装程序主要由多个 Product Bean 和 Wizard Bean 组成的。每一个 Product Bean 和 Wizard Bean 都是一个 JavaBean 组件。 2.1.1 Product Bean 在 ISMP 的集成开发环境中 Product Be

49、an 都存放在 Product 面板中。Product Bean 中包含的是我 们要安装到目标机上的软件产品。 Product Bean 的主要种类包括:Product、Feature、Nested Feature、Component 和 Action。 一个安装工程的组织结构如图 4 所示: Product 是安装程序的总体组件代表我们要安装的软件,它包含一个或多个 feature 组件。 feature 组件包含一个或多个 Component 或者 Nested Feature。Component 包含的是真正要安装的数 据文件和安装过程中对目标机的一些设置。 从用户可见角度来看,feature 是安装程序的最小组成部分 feature 组件包含一个或多个 Component 或者 Nested Feature。Feature 可以理解为产品的一个功能模块。因此 Feature 组件用来整 合此功能的所需的全部资源。Nested Feature 组件的功能与 Feature 组件相同,他允许在已经存在的 Feature 组件中加入新的 Feature 组件。可以理解为子功能。Component 包含的是真正要安装的数据 10 文件和 Action。而 Action 组件执行具体的安

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1