文档库 最新最全的文档下载
当前位置:文档库 › 面向对象三维图形引擎的设计与实现

面向对象三维图形引擎的设计与实现

面向对象三维图形引擎的设计与实现
面向对象三维图形引擎的设计与实现

第39卷 第1期 电 子 科 技 大 学 学 报 V ol.39 No.1

2010年1月 Journal

of University of Electronic Science and Technology of China Jan. 2010 面向对象三维图形引擎的设计与实现

邱 航,陈雷霆

(电子科技大学计算机科学与工程学院 成都 610054)

【摘要】提出并实现了一种面向对象的三维图形渲染引擎Gingko ,对引擎的体系结构、各模块之间的关系以及关键技术进行了分析说明。该引擎提供可扩展的软件体系结构、高效的场景处理方法、方便易用的应用程序接口,为三维图形应用的快速开发和高效运行提供了支撑。实验证明,该引擎具有运行稳定、渲染速度快的特点,对于大规模室外场景的渲染速度能保持在20 fps 以上。

关 键 词 图形引擎; 插件; 实时渲染; 真实感渲染

中图分类号 TP391.41 文献标识码 A doi:10.3969/j.issn.1001-0548.2010.01.028

Design and Implementation of Object-Oriented 3D Graphics Engine

QIU Hang and CHEN Lei-ting

(School of Computer Science and Engineering, University of Electronic Science and Technology of China Chengdu 610054)

Abstract An object-oriented 3D graphics engine is presented and implemented. The general architecture, the relationships of every module, and the key techniques of the engine are discussed. This engine can support extendable software architectures, and provide high efficient scene rendering method and convenient application programming interfaces. It can greatly accelerate the development of 3D graphics and provide supports for its efficient running. Experimental results show that this engine has high stability and high rendering speed, for rendering large-scale out-door scene, the speed is still above 20 fps.

Key words graphics engine; plug-in; real time rendering; realistic rendering

收稿日期:2008 ? 06 ? 25; 修回日期:2009 ? 04 ? 28

基金项目:国家863高技术研究发展计划项目(2006AA01Z335);总装“十一五”预研项目

作者简介:邱 航(1978 ? ),男,在职博士生,讲师,主要从事计算机图形学、数字媒体技术方面的研究.

实时真实感图形生成是计算机科学技术的重要

研究方向,目标是使计算机可以产生与真实世界相

同或高度近似的视觉环境,从而使用户获得身临其

境的视觉感受[1-2],其应用范围覆盖大众娱乐、视景

仿真、城市规划及文化教育等诸多领域。

近年来,随着计算机图形软、硬件的不断发展,

人们对实时真实感渲染以及场景复杂度提出了更高

的要求。传统的直接使用底层图形接口如OpenGL 、

DirectX 开发图形应用的模式越来越暴露出开发复

杂性大、周期长、维护困难的缺陷。鉴于以上原因,

三维图形引擎相关技术受到了广泛的关注。目前,

国外已有众多商用或开源三维图形引擎,如

OGRE [3]、OSG [4]等。

OGRE(object-oriented graphics rendering engine)

是一种用C++实现的跨平台开源三维图形引擎。该

引擎底层对DirectX 、OpenGL 进行完全封装,采用

了基于插件的体系结构,方便用户使用和功能扩展。

但OGRE 过于庞大和复杂,使用户感觉掌握困难。此外,由于底层对DirectX 和OpenGL 的完全封装,用户无法对基本图形API 进行直接操作。 OSG(open scene graph)是一款著名的3D 图形引擎,主要用于虚拟现实、仿真和游戏等领域。OSG 底层只提供了对OpenGL 的封装,与其他图形引擎一样,拥有诸如场景管理、地形管理和底层API 封装等功能。但OSG 的渲染管理比较特殊,它不是采用渲染队列进行渲染管理,而是采用渲染树,更为高效。 Irrlicht 引擎是一款开源、跨平台的3D 引擎,底层封装了DirectX 和OpenGL ,并提供基于GLSL 和HLSL 的可编程渲染管道。该引擎结构简单、速度快。但Irrlicht 以牺牲渲染质量达到高速的目的,在光照等真实感方面比较薄弱。 纵观目前国内外三维图形引擎的发展格局,开发具有自主知识产权、融入新方法、新技术的三维图形引擎是我国在信息技术领域的一项重要目标。 本文提出并实现了一种面向对象的三维图形引擎Gingko ,该引擎不仅能提高用户的开发速度,而

电子科技大学学报第39卷124

且能使用户方便地将自己新的算法融入到应用中。1三维图形引擎Gingko

三维图形引擎Gingko是一个面向视景仿真、数字展示、游戏等应用的软件支撑环境。其体系结构如图1所示。

图1 三维图形引擎Gingko体系结构

在结构上,Gingko分为渲染语言封装层、核心层、扩展层以及用户接口层等4层。

渲染语言封装层:Gingko建立在底层绘制接口之上,渲染语言封装层封装了底层图形接口OpenGL、DirectX9的所有绘制属性。与OGRE、OSG 和Irrlicht等引擎不同,Gingko对底层绘制接口的封装是一种半封闭式封装,即用户既可以通过调用Gingko提供的API实现绘制,也可以直接调用底层绘制接口。

核心层:包含引擎的主渲染框架、场景管理、渲染管理、插件管理、资源管理、消息系统等。

扩展层:包含时钟管理、用户GUI、脚本系统以及其他组件。

用户接口层:为上层用户提供统一的API。1.1 核心层主要组件分析

1.1.1 主框架

主框架是整个图形引擎的骨架,它决定着渲染流程的走向以及其他功能模块之间的耦合形式。此外,它还负责底层细节的屏蔽、渲染流程的结构化和标准化等重要功能。

在Gingko中,主框架的结构在逻辑上分为上、中、下3层。

(1) 上层为友好的用户接口,主要负责对外提供API函数集,满足用户的各种功能需求,实现用户和图形引擎的交互。各种功能需求包括引擎的启动、资源的加载、场景的搭建、场景的渲染、场景的更改、资源的释放以及引擎的停止。

(2) 中层为引擎各模块连接核心,负责处理主框架和其他模块的相互联系和协作。

(3) 下层为底层封装,图形引擎的底层系统主要指基础图形API函数集和操作系统两大部分。对图形引擎而言,操作系统相关的函数调用比较固定,其封装的方法也比较成熟。对基础图形API的封装,OGRE、OSG等采用彻底封装的方式,即仅仅使用插件系统完成封装模块的更新和扩展,对用户完全透明,用户不会接触到关于OpenGL或DirectX等基础图形API的任何细节。随着计算机图形学的发展和图形应用软件的复杂化,只能依靠插件系统进行扩展和更新的封装方式的缺点日益显著。开发人员在使用引擎进行开发的过程中往往会产生许多重要但细微的功能扩展需求,为了这些细微的扩展需求编写插件更新主框架,必将对开发周期和开发成本带来冲击。此外,随着计算机软、硬件的发展,人们对图形应用软件中的渲染效果、光影、特效等的需求越来越高,然而大多数特效的实现需要以特定的序列调用特定的基础图形API函数,引擎完全透明性的下层系统已经在很多方面妨碍了高级的图形特效的开发。针对完全封装方式的缺点,Gingko采用半封闭式封装方式,在屏蔽底层系统繁琐细节的同时,也允许高级用户直接接触OpenGL、DirectX等强大的图形API函数。

1.1.2 场景管理

Gingko的场景管理主要包含场景节点组织、场景分割和地形管理,通过场景树的形式组织场景内的各个元素。场景树的各个节点之间的父子关系对应场景内元素的逻辑关系,如一片建筑区域和建筑区域内的各个建筑在场景中表现为父节点和子节点的关系。Gingko在设计上基于插件的开放式方式,场景分割和地形管理模块都可以通过插件系统配置不同的分割和管理策略。Gingko默认提供了基于八叉树和BSP树[5]的场景分割,以及基于ROAM[6]算法的地形调度。

1.1.3 渲染管理

渲染管理主要控制场景渲染,包括Pass和Effect 两个重要概念,如图2所示。(1) Pass是一个渲染遍即一次渲染的自然表示。Pass主要由数据源、渲染状态、纹理对象、Shader(可编程Pass专有)和输出对象构成。Pass按照使用固定管线和可编程管线的不同

第1期邱航等: 面向对象三维图形引擎的设计与实现125

可分为固定Pass和可编程Pass。Pass的最终渲染结果可以输出到屏幕,也可以输出到一张过程纹理,以配合其他Pass完成复杂的特效渲染。(2) Effect表示一个具体的渲染阶段,Gingko的渲染管理系统保存了一个Effect的队列,Effect同样保存了一个不能为空Pass的队列。一般来说,一个室外场景可简单地分为天空盒Effect、地形Effect和场景元素Effect。

图2 渲染管理结构

1.1.4 资源管理

Gingko提供非常丰富的资源支持,包括各种格式的图片文件、模型文件以及与Gingko相关的各种配置文件。在引擎的资源管理系统中也实现了对在场景渲染中所需的纹理、材质等信息的抽取和分类工作。

1.1.5 插件管理

插件管理提供一种灵活的系统扩展模式,用户编写的算法、特效等可以注册为插件,通过插件管理机制方便、快速地扩展到引擎中。

1.1.6 消息处理系统

Gingko中定义了鼠标-键盘消息和引擎自定义消息两种类型的消息。自定义消息主要用于描述场景元素之间的相互作用,如风、爆炸对建筑物的影响等。整个消息的处理流程分为3个阶段:第一阶段主要处理与具体场景元素相关的消息,如鼠标拾取等;第二阶段主要处理引擎默认的消息,如ESC等系统键的消息;第三阶段主要处理同具体场景元素无关的消息,如摄像机的移动等。如果Gingko中的消息经过3大阶段都没有进行处理,则根据是否为操作系统的消息交由操作系统处理或丢弃。

1.2扩展层主要组件分析

1.2.1 用户GUI模块

用户GUI模块是Gingko为上层用户提供的开发诸如按钮、对话框、菜单等交互界面的模块。Gingko 为开发者提供了默认的2DGUI,开发者只需要配置宽度、高度等参数,编写事件代码便能轻松实现GUI 界面。除此以外,用户也可根据以上需要实现自定义GUI,从而满足不同应用的需求。1.2.2 时钟模块

在各种图形软件中,小到帧速计算,大到定时器、时间轴的实现都离不开对时钟的运用和管理。Gingko提供时钟管理模块,主要具备记时、加速、减速、暂停、同步等功能。

1.2.3 脚本系统

Gingko集成了对Lua脚本语言的支持,用于引擎的动态配置,所有关于引擎的配置信息都在脚本中设置,不涉及到源代码的重新编译。除此以外它还管理一些变化快且对运行期性能要求不高的模块。

1.2.4 其他组件

其他组件主要包括粒子系统、特效管理系统等,它们是图形引擎提供的一些高级功能,通过这些组件能够在图形引擎的基础上快速开发一些功能强大的应用。

2 核心算法的封装

为了加快用户应用程序的开发,Gingko除了提供图形渲染引擎基本功能外组件,还将图形应用中的一些关键算法通过插件实现,并封装在引擎中,主要包括场景分割、地形LOD以及各种特效技术。用户可以通过插件系统的配置文件自由选择是否加载这些插件,从而决定是否在场景中启用各种高级渲染技术。

2.1 地形算法封装

地形是室外场景的重要组成部分,特别对于大规模室外场景而言,提供对地形渲染的优化和管理是提高场景整体渲染效率的有效手段。在Gingko中,根据用户可能实现的地形大小,实现了四叉树和ROAM两种不同的地形LOD简化算法。四叉树LOD 地形简化算法可以很好地满足中等场景中简单地形的简化和渲染。但是该算法效率比较低,而且在复杂地形的简化中存在裂缝问题,无法满足大规模室外场景中复杂地形的渲染需求。ROAM算法是一种当前比较流行的基于最优自适应网格的实时LOD算法,它独特的三角形网格表示方法可以很好地避免地形裂缝,非常适用于复杂地形的简化。用户可以根据自己的实际情况通过插件管理系统自由地决定场景中所使用的LOD简化算法类型,也可以通过加载自己编写的插件在场景中验证自己的LOD简化算法。

2.2场景分割算法封装

场景分割是场景管理中的一项重要功能,采用合理的场景分割算法将场景划分为更小的子场景,

电子科技大学学报第39卷126

可以非常有效地降低场景中的光线跟踪、碰撞检测等运算量较大操作对场景渲染效率造成的冲击。在Gingko中,封装了BSP和八叉树两种场景分割算法。BSP主要应用于室内场景的光线跟踪和碰撞检测操作运算的简化。八叉树则是一种大规模室外场景高效场景分割算法。在使用Gingko进行图形应用软件开发时,用户可以根据不同场景情况,灵活地渲染不同的场景分割算法扩展场景管理的功能。

2.3 其他特效算法封装

场景中的各种特效是增加真实感的有效手段,在Gingko中,将粒子系统作为默认的特效扩展模块,以插件的形式实现并整合到引擎的主体中。利用粒子系统已实现了爆炸、烟雾、火焰等图形应用软件中多种常见的特效实现。用户在图形软件开发过程中,只需要通过加载插件,或者调用插件对象中相关的API函数,就能为场景添加各种基于粒子系统的特效。

3渲染流程标准化及封装

考虑到上层图形应用可能存在大量的数据运算和场景元素的渲染,在某些情况下可能还需要渲染一些更加真实和复杂的特效。对于这些渲染需求,图形的固定渲染管道显然不能很好胜任。因此,Gingko不仅提供了图形的固定渲染管线用于方便快速的应用开发,同时提供了图形的可编程渲染管线支持高级的应用开发。在着色器语言的选择上,为了方便屏蔽图形开发包的底层细节,Gingko选择了通用的着色器语言Cg作为可编程渲染管线的规范着色器语言。

Gingko中渲染流程的标准化与封装将图形渲染的过程分为7个按顺序进行的标准步骤,所有的渲染过程由分割后的几个步骤完成。主要阶段包括:

(1) 全局资源初始化阶段主要对与显示器、GPU 相对独立的资源(如文件资源、模型等)进行处理。该阶段还包含对引擎配置文件的处理。

(2) 设备初始化阶段首先获取显示器、显卡的重要信息,根据引擎配置的显示分辨率、刷新率调整全屏显示状态下的显示模式;然后创建主显示窗口;设置默认渲染管线。

(3) 纹理材质加载阶段完成各材质的加载过程。

(4) 消息处理阶段初始化结束,渲染处理开始。该阶段主要负责将Windows的系统消息加入到自己的消息系统,由引擎消息系统接管Windows的消息处理。

(5) 帧处理阶段选择渲染管线的类型,开始处理每一帧的场景,包括帧前处理、帧绘制、2DGUI绘制以及帧后处理。帧前处理完成渲染基本属性的设置、场景树到渲染队列的转换;帧绘制负责对渲染队列中的场景进行绘制;2DGUI绘制在2D的显示模式下完成对屏幕按钮、列表框等基本交互元素的绘制。

(6) 材质资源卸载阶段释放材质纹理资源。

(7) 设备资源释放阶段恢复像素格式,释放设备上下文。

4 实验结果与分析

三维图形引擎Gingko在操作系统为Windows XP Professional (SP2)、CPU为Intel Core(TM)2 Duo 2.2 G、内存1 GB、显卡为NVIDIA GeForce 8600 GT 配置的PC机上得到实现。由Gingko渲染的室外场景如图3所示。

a. Gingko渲染的体育场场景

b. Gingko渲染的爆炸场景

c. Gingko渲染的群体动画场景

图3 Gingko渲染的室外场景

除了渲染效果外,决定一个渲染引擎好坏的重要指标是它的渲染速度,特别是在渲染一个复杂场景时。实验通过采用基于LOD与IBR的大面积森林场景渲染算法对比Gingko与OGRE和Irrlicht的渲染效率,其结果如图4所示。

第1期 邱 航 等: 面向对象三维图形引擎的设计与实现 127

20406080100 120 1 000 3 000 5 000

7 0009 000 10 000

森林树木/棵

帧速/帧·s -

1

图4 渲染帧速对比图

实验结果表明,图形引擎Gingko 在渲染大规模复杂场景时,渲染速度高于OGRE 和Irrlicht ,完全满

足实时交互的目的,在森林规模达到10 000棵树的情况下,渲染帧数仍能保持在20 fps 以上。在算法优

化的情况下,帧数将得到进一步提高。

为了提高用户的开发效率,在Gingko 中预先部署了一些当前图形学领域成熟的算法和技术实现,如植被绘制算法[5]、BSP [6]算法、ROAM [7]等地形LOD 算法[8-10]、以及公告板及天空盒等。用户只需简单调用Gingko 所提供的API 便能轻松实现相应功能。图5a 显示了利用Gingko 提供的API 实现的基于ROAM 算法的室外场景,图5b 是该场景对应的地形网格。

a. 基于ROAM 地形算法的室外场景效果

b. 基于ROAM 地形算法的地形网格图

图5 基于ROAM 算法的室外场景

5 结 束 语

本文所提出的三维图形引擎为视景仿真、数字展示、游戏等应用的开发者提供了易用、可扩展的软件支撑。相关实验表明,该引擎不仅在绘制速度方面优于国外常见开源图形引擎,所提供的半封闭

式底层封装方法更有利于开发者定制个性化功能,为高效的图形应用开发提供保障。

参 考 文 献

[1] 埃肯因. 实时计算机图形学[M]. 普建涛, 译. 北京: 北京大学出版社, 2004: 1-20.

AKENINE-MOLLER T. Real time rendering[M]. Translated by PU Jian-tao. Beijing :Peking University Press, 2004: 1-20.

[2] 赵沁平, 郝爱民, 王莉莉, 等. 实时三维图形平台BH_

GRAPH[J]. 计算机研究与发展, 2006, 43(9): 1491-1497. ZHAO Qin-ping, HAO Ai-min, WANG Li-li, et al. BH_ GRAPH: a real time 3D graphics platform[J]. Journal of Computer Research and Development, 2006, 43(9): 1491- 1497.

[3] PARILOV E, ZORIN D. Real-time rendering of textures with feature curves[J]. ACM Transactions on Graphics, 2008, 27(1): 1-15.

[4] 申闫春, 朱幼虹, 曹 莉, 等. 基于OSG 的三维仿真平台的设计与实现[J]. 计算机仿真, 2007, 24(6): 207-211.

SHEN Yan-chun, ZHU You-hong, CAO Li, et al. Design and implementatin of 3D simulation platform based on OSG[J]. Computer Simulation, 2007, 24(6): 207-211. [5] TAN Ping, ZENG Gang, WANG Jing-dong, et al. Image-based tree modeling[J]. ACM Transactions on Graphics. 2007, 26(3): 87-93.

[6] FUCHS H. On visible surface generation by a priori tree structures[J]. Computer Graphics, 1980, 14(3): 124-133. [7] 魏 楠, 江 南. ROAM 算法及其在地形可视化中的应用[J]. 计算机工程与科学, 2007, 29(2): 66-68.

WEI Nan, JIANG Nan. The ROAM algorithm and its application in terrain visualization[J]. Computer Engineering and Science, 2007, 29(2): 66-68. [8] DUNCAN A K, HARDY A. Level of detail for terrain geometry images[C]//Proceedings of the 5th international conference on Computer Graphics, Virtual Reality, Visualization and Interaction in Africa. Grahamsown: ACM Press, 2007: 25-30.

[9] 廖昌阊, 李 辉, 潘宏伟, 等. 宏三角形的大规模地形

漫游算法[J]. 电子科技大学学报, 2008, 37(1): 120-123. LIAO Chang-chang, LI Hui, PAN Hong-wei, et al. A

marco-triangle-based algorithm for large terrain rendering[J]. Journal of University of Electronic Science and Technology of China, 2008, 37(1): 120-123. [10] DECORO P, TATARCHUK N. Real-time mesh

simplification using the GPU[C]//Proceedings of the 2007 Symposium on Interative 3D Graphics and Games. Seattle: ACM Press, 2007: 161-166.

编 辑 蒋 晓

面向对象程序设计—文本编辑器的设计与实现

课程设计报告书 课程名称面向对象程序设计 设计题目文本编辑器的设计与实现 专业班级 学号 姓名 指导教师 年月

目录 1 设计时间 (1) 2 设计目的 (1) 3设计任务 (1) 4 设计内容 (1) 4.1需求分析 (1) 4.2概要设计 (1) 4.2.1功能结构图 (1) 4.3详细设计 (2) 4.3.1流程图 (3) 4.4系统的功能实现 (4) 4.4.1类或包的加载 (5) 4.4.2设计一个主类,变量的定义 (5) 4.4.3文件操作功能的实现 (6) 4.5运行测试 (25) 4.5.1文本编辑器界面 (25) 4.5.2各功能菜单界面 (25) 5 总结与展望 (26) 参考文献 (26) 成绩评定 (27)

1 设计时间 2011年12月19日~2011年12月25日 2 设计目的 本次设计是学习完《java6程序设计》课程后进行的一次全面的综合练习,目的是加深对本学期课程的理解,通过设计文本编辑器并实现其功能来熟练掌握java语言基础,初步掌握软件开发的基本方法与技术将理论课程中学到的知识运用到实践中,实现有一定规模的Java应用。 3设计任务 本次设计的主要任务是文本编辑器的设计与实现,要求设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。 4 设计内容 4.1需求分析 现在网络上各种文本编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed,xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的文本编辑器程序。 4.2概要设计 4.2.1功能结构图

面向对象分析与设计简答题

1、什么面向对象? 面向对象不仅是以些具体的软件开发技术与策略,而且以一套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。 2、软件开发方法学的基本方法有哪些? 1)软件工程和瀑布方法学2)新方法学:螺旋式、迭代式、递增式、合并式3)面向对象方法学:UML、RUP、XP 3、为什么需要OOA、OOD。 OOA就是运用面向对象的方法进行需求分析,OOA加强了对问题域和系统责任的理解,有利于人员之间的交流,对需求变化的适应性较强,很好的支持软件复用。 OOD就是运用面向对象的方法进行系统设计,OOD.符合人们习惯的思维方法,便于分解大型的复杂多变的问题;易于软件的维护和功能的增减;可重用性好;与可视化技术相结合,改善了工作界面。 4、从概念层次、规格层次、实现层次三个角度如何理解对象的概念? 从概念层次来看,一个对象就是一系列的责任; 从规格层次来看,一个对象是一系列可以被其他对象或该对象自己调用的方法;从实现层次来看,一个对象是一些代码和数据。 5、如何绘制类图和对象图?简述其步骤。 类图绘制:1发现类,找到备选类,确定候选类2关联分析,确定关联关系,多重性分析3职责分析4限定与修改,导航性分析,约束,限定符; 对象图绘制:1发现类和对象2对其细化,分析,确定关系。 6、简述重定义方法与重载的区别。 重定义:1参数列表必须完全与被重写的方法相同2返回类型必须一直域被重写的方法的类型相同3访问修饰符的限制一定要大于被重写方法的访问修饰符4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查性异常:重载:1必须有不同参数列表2可以有不同的返回类型,只要参数列表不同即可3可有不同访问修饰符4可抛出不同的异常。 7.简述抽象方法与虚方法的联系与区别 虚方法有一个实现部分可以为子类实现有共同的方法,并为派生提供了覆盖该方法的选,抽象方法只是强制派生覆盖方法;抽象方法只能在抽象类中声明,而虚方法不是;抽象方法不能声明方法实体,虚方法可以;包含抽象方法的类不能实例化,但虚方法可以。 8、简述使用继承的规则。 1)、不要过度使用;2)、子类应是超类的一个类型;3)、子类应是超类的扩展; 4)、尽量少从具体类继承,最好继承接或抽象类。

面向对象系统分析与设计试卷与答案

面向对象分析与设计试题B卷 一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是()。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是()。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. ()是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象 之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系 统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 .

UML面向对象分析与设计

UML面向对象分析与设计 大作业 前言 “UML面向对象分析与设计”是计算机专业和软件工程等相关专业的一门重要课程,也是其他理工科专业的热门选修课程。“程序设计语言”、“计算机网络”、“数据库原理”和“数据机构”等是它的前导课程,学好本课程对学生毕业后从事软件开发有着极为重要的作用。 要学好这门课,仅仅通过课堂教学或自学掌握理论知识是远远不够的,还必须加强实践。特在学期末引入uml的综合分析与设计,从实际项目出发,使学生学会运用软件工程基本理论知识,UML建模语言和rose建模环境,去解决软件开发中的实际问题,达到学以致用的目的。

面向对象软件开发技术 项目的引入及需求 简易教学管理系统的分析、设计与实现 一、设计的目的 1.初步了解UML语言的概念、结构、语义与表示方法; 2.掌握UML建模工具Rational Rose的使用方法; 3.给出某个简单系统的模型,能够熟练地使用Rose工具表达; 二、设计理论基础 1. 面向对象的程序设计C++或JAVA程序设计课程; 2.数据结构或算法课程 2.SQLServer或mysql数据库系统; 3. 熟悉传统软件工程以及软件测试技术。 三、设计内容与步骤 需求陈述:简易教学管理系统主要提供两个方面的服务: 选课管理,负责新学期的课程选课注册。 成绩管理,负责学生成绩管理。 (1)简易教学管理系统---选课管理应提供的服务如下: 1.录入与生成新学期课程表 教学管理人员在新学期开学前录入新学期的课程,打印将开设的课程目录表,供师 生参考选择。如果某门课实际选课的学生少于10人,则停开该课程,把该课程从 课程表中删除;如某课程选课学生多于60人,则停止选课。 2.学生选课注册 新学期开始前一周为学生选课注册时间,在此期间学生可以选课注册,并且允许改 变或取消注册申请。 每个学生选课可不允许超过4门,每门课最多允许60名学生选课注册。 3.查询 可以查询课程信息、学生选课信息和学生、教师信息。

面向对象设计与分析 图书管理系统

华北电力大学科技学院 实验报告 实验名称图书馆管理系统的分析与设计课程名称面向对象技术 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:

一、图书管理系统需求描述 图书馆里有多种书目,每种书有多个副本,每个副本有唯一的编号。每本图书借阅期限为60天,超期罚款,按天计算,每天0.1元。 每个借阅者在系统中建立一个账户,并发放借阅证,账户中有用户名、证号、单位、存的现金数额,用于超期罚款,用户可以续费。 持借阅证的用户可以借书、还书,但这些操作要通过图书馆馆员来实现,每个借阅者可借10本书。每次借阅会将特定的借阅者和书籍副本联系起来。 图书管理员还负责图书的书目管理,书籍副本管理,借阅者管理。如果借阅证丢失,借阅证持有者应到图书馆前台挂失。 借阅证持有者可以预约图书,最多可预约3本(可以设定预约有效的期限),并在图书到达后得到电话通知,图书馆为其保留图书,3日内有效。还可以取消预约。 二、需求分析 系统的功能需求主要包括以下几个方面: 1.这是一个图书馆管理系统。 2.借阅者需预先建立一个账户(账户中有用户名、证号、单位、存的现金数额),并 领取借阅证,借阅者可以续费。 3.各种书目需预先注册。每种书目有多个副本且每个副本有唯一的编号。 3.借阅者能够通过图书馆馆员借书、还书(每个借阅者可借10本书),每次借阅或 归还都更新数据库信息。 4.借阅者可以通过网络查询书籍信息。 5.借阅者可以预约图书。当他所预约的图书归还或购进时,就通知预定人。图书馆为 其保留3日预约书籍。当预定某书的借书者借阅该书后,系统取消预约。 6.如果借阅者还书超过期限(60天),需扣款,按天计算,每天0.1元。 7.图书馆馆员在软件系统的支持下处理借阅者的借书和还书请求。 8.系统管理员可以对系统的数据进行维护,如增加、删除和更新书目,增加和删除书 籍,增加、删除和更新借阅者帐户,挂失借阅证等。 7.系统能够运行在流行的技术环境中,并应有一个良好的人机交互图形用户界面。 8.系统容易扩展新功能。 系统将通过计算机来处理图书、副本、借阅者和借书。借阅者要求借书,出示借阅证,查询该借阅者提供的借阅证是否满足借书要求。如果满足,给出要借图书的名称,系统查找所借的图书是否存在副本,如果有,则办理借书手续(登记借阅信息)。 图书是存放在图书馆中的书的名称,副本是一个图书的具体实例。一个图书可能有多个副本,一个副本一定会对应一个图书。一次借阅必须记录一个图书的副本和一个借阅证信息。一个副本可以被借阅,也可以不被借阅。一个借阅证可以借多本书,也可以

面向对象分析与设计

面向对象提纲 需求分析:了解用户的需求,对现实问题进行分析,确定用户需求 一、用例模型:业务用例、业务场景、系统用例、用例规约(用例描述) 根据不同的情况,用例描述可以有三个级别:1)简单描述2)中间描述3)完全展开描述系统分析:将需求分析的结果确定系统的范围和主要功能。 二、分析模型 1)静态视图(类图) 2)动态视图(系统顺序图) 1.1建立静态视图(问题域建模) 定义这些系统需求而建立的类图称为域模型类图或简称域模型 类之间的关系:依赖、泛化、关联(聚合、组合) 2.1动态视图(系统顺序图)

三、OO模型的集成 OO需求模型中的关系 依赖性通常从顶部流到底部,双向箭头表示在两个方向都产生影响。 四、面向对象分析步骤: 第一步域模型 A、分析域模型得到静态视图(类图) B、画出实体对应的类及其之间的关系,注意此阶段强调的是静态关系 第二步基于用例的需求分析 通过对需求的调查,业务用例的构建和活动图的绘制,最终得到系统用例图 在用例图的下方,应附上每个用例的用例描述 第三步输入和输出:系统顺序图 域模型类图:

用例图:系统顺序图: 从分析到设计

五、面向对象设计 OO程序是由一系列协同完成某一任务的程序对象组成 OO设计目标:识别并确定所有对象,并生成每个用例,比如用户界面对象、问题域对象及DB访问对象 六、OO设计过程和模型 设计步骤:⑴创建设计类图的基础版本,或初步模型 ⑵开发交互图 ⑶根据开发交互图时得到的信息,返回设计类图并开发方法名称 ⑷用包图将设计类图分割成相关的功能 输入的模型: 交互图:用例图、用例描述、活动图、系统顺序图、设计类图 设计类图:域模型类图、交互图 包图:设计类图 七、设计类和设计类图 7.1 设计类图符号:1. 构造型 2. 标准的构造型 构造型:按照模型元素的特征进行归类的一种方式,用《》符号描述 2. 标准的构造型 (0)设计模型中的标准构造型 ⑴实体类 ⑵边界类 ⑶控制类 ⑷数据访问类 设计模型中的标准构造型:

面向对象中包括哪些UML图及每件图的作用

面向对象中包括哪些UML图及每件图的作用UML面向对象分析及其包括的图、建模步骤 一、叙述基于UML的面向对象分析设计过程 1)识别系统的用例和角 首先对项目进行需求调研,依据项目的业务流程图和数据流程图以及项目中涉及的各级操作人员,通过分析,识别出系统中的所有用例和角色;接着分析系统中各角色和用例间的联系,再使用UML建模工具画出系统的用例图,同时,勾画系统的概念层模型,借助UML 建模工具描述概念层类图和活动图。 2)进行系统分析,并抽象出类 系统分析的任务是找出系统中所有需求并加以描述,同时建立特定领域模型。建立域模型有助于开发人员考察用例,从中抽取出类,并描述类之间的关系。 3)设计系统和系统中的类及其行为 设计阶段由结构设计和详细设计组成。①结构设计是高层设计,其任务是定义包(子系统),包括包间的依赖关系和主要通信机制。包有利于描述系统的逻辑组成部分以及各部分之间的依赖关系。②详细设计就是要细化包的内容,清晰描述所有的类,同时使用UML的动态模型描述在特定环境下这些类的实例的行为。 二、面向对象中包括哪些UML图及每件图的作用 UML图包括九种:用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、配置图。 1)用例图(UseCaseDiagram) 它是UML中最简单也是最复杂的一种UML图。说它简单是因为它采用了面向对象的思想,又是基于用户视角的,绘制非常容易,简单的图形表示让人一看就懂。说它复杂是因为用例图往往不容易控制,要么过于复杂,要么过于简单。 用例图表示了角色和用例以及它们之间的关系。 2)类图(ClassDiagram) 是最常用的一种图,类图可以帮助我们更直观的了解一个系统的体系结构。通过关系和类表示的类图,可以图形化的方式描述一个系统的设计部分。

面向对象的分析与设计大作业文档

面向对象的分析与设计课程结课大作业 学号______________ 学生姓名___________ 专业______________ 班级______________ 塔里木大学教务处制

《面向对象的分析与设计》课程结课作业\ 题 分\号 值\—— 一 二三四五六七总结总分 总分5 020100 得分 提示:1、请将答案写在此文档的相应位置,图形需在Rational Rose下绘制,大小可以根据个人需求定制(宽不超过页面1/3);2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到“大作业电子版文档”文件夹下命名为“班级-学号-姓名”,纸质版于2015年6月12日上午10:00 —13:00交到逸夫楼109。 一、选题(此题5分) 请根据你抽中的题号,请将其所对应的题目写到下方,并将你要描述的界面进行截图。 题目:照相(即手机的“相机”软件) XPERIA Z系列手机的自带相机软件。图中第五行第 该相机软件为SONY 二列 的软件。 相机

用例图用到的界面:A D E F 类图用到的界面:B C D E F 序列图和协作图用到的界面:A C 状态图用到的界面:A C 活动图用到的界面:AB C D E F 部署图用到的界面:A DEF ./ * 1SVf 九—X IJ .鈕 EuH o StiilE 拍 untflimhwiiBMiiriifn Qi -A 1 i a口X nt^tt帕.9* 自怕 笑Kt*n 关闻寸慎毛连拍JI 人■注册 O Q ? O■□Q :9 c口X 快走总谕 填理杯记? ?D 将害?瞳用朴 isn^g C? 内序科11诬? 4k a C3 Q)gv> W BF \j o Q ! A ◎ a o X 白拘Jt 笑隘快门(鞭牆)X nn-:? nt窒恙 (>o ■ U K>Qi A B 手动 创息啟 JR

面向对象的分析设计实现--图书管理系统

实验报告面向对象的分析设计实现—图书管理系统 一.需求分析 1.1系统需求描述 一般图书馆管理系统主要用于对图书馆日常工作的管理,主要任务是用计算机对读者、图书等各种信息进行日常管理,如查询、修改、增加、删除、图书借阅和归还的管理等。本系统实现了图书馆的信息化管理,完成了图书馆管理系统的基本功能。 一般图书馆管理系统主要包括用户登录子系统、用户管理子系统、图书管理子系统、图书借阅与归还、图书和用户信息查询子系统四个部分,各部分主要功能如下: 用户登录子系统:用于数据库的连接,主界面的设计和不同身份用户的登录管理。 用户管理子系统:用于用户信息的管理,如用户添加、用户信息修改、用户删除。 图书管理子系统:用于图书信息的管理,如新书入库、图书信息修改、图书信息删除。 图书借阅与归还子系统:用于用户借阅和归还图书。 图书和用户信息查询:图书和用户信息的查询。 1.2系统功能结构图

图 1.1 图书管理系统分析系统流程图 1.3 系统解决方案 以上述一般的图书管理系统分析为构思原型。为简化系统,忽略掉其他复杂琐碎的功能需求,仅保留图书信息的录入、修改和读者借、续借、还的功能。读者与管理员通过界面对象调用控制类对象,控制对象进行各种操作并把信息写入数据库。 二.系统设计 2.1 系统E-R图 图 1.2 用户实体图

图1.3 书籍实体图 图 1.4 实体属性图 2.2数据库表结构 表2.1 图书信息表

表2.2 用户借阅表 表2.3用户信息表 2.3用例文档 本系统共设置四个活动者。分别是TT_People、TT_Registrar、TT_Reader 和TT_Database。其中TT_People泛指与系统发生关系的人;TT_Registrar为系统管理员,负责添加、修改图书信息;TT_Reader为所有读者,读者可能发生借书、续借、还书的行为;TT_Database为存储各种信息的数据库对象。另:考虑到现实图书馆中还存在“图书馆管理员”这一角色,但其所起的作用仅为代替读者完成各种系统操作,故没有设置此活动者。 系统中共有五个用例。TT_Addinfo、TT_Modifyinfo、TT_Borrow、TT_Renew 和TT_Return。TT_Addinfo表示管理员添加图书信息;TT_Modifyinfo表示修改图书信息;TT_Borrow表示读者借阅图书;TT_Renew表示读者续借图书;TT_Return表示读者归还图书。

(完整版)面向对象程序设计与面向过程程序设计的区别(2)

面向过程程序设计和面向对象程序设计的区别 面向过程程序设计我个人的理解简单来说,他考虑问题的方式是面向流程的,一个程序的设计思路就是解决一个问题的流程。就好比游戏先登入界面,再输入密码,然后选择角色,在然后进入游戏玩耍,结束... .... 这把这些步样就是面向过程。面向过程就是分析出解决问题所需要的步骤,然后用函数骤一步调用就可以了一步实现,使用的时候一个一个依次。可以看出面向过程化程序设计是先确定算法,再确定数据结构。而面向对象程序设计是面向问题中的各种独立个体的,程序的析设分计过程就是将程序分解成不同对象(不同概念体)之间的交互的过程。这就好比在针对某个工程或游戏设计程序时先不考虑,游戏是怎么玩的,工作是怎么做的,而先会去找,游戏或工程中有哪些人或事物参与(一般选择:用户,玩家,角色等等),然后再看他们都有什么用,都干了些什么,针对这个区设计方法。最后在通过这些千丝万缕的联系把他们分门别类的,组装在一起。可以看出面向过程化程序设计是先确定数据结构再确定算法。 从上面很容易看出,面向过程的程序上一步和下一步环环相扣,他只考虑实现客户的需求不考虑以后扩展,如果以后客户的需求有变化那代码量要改变非常大耗费的时间也相当多。从本质上说,面向过程基本上是一种状态机,不利于修改,当新状态出现的时候,甚至可能需要重设每一个状态解决实现。所以说面向过

程是一种直接的编程方法,它是按照编程语言的思路考虑问题。尤其是想C语言这种过程式语言,它就是通过顺序执行一组语句来实现一个功能,这些语句的执行过程就是整个程序。不同的语言解决同一个问题的过程是不一样的。 而面向对象的程序设计很多东西都是独立的,每个对象都可以重复使用。而面向对象程序设计强调“封装”,“继承“和“多态”。数据和与数据相关的操作被包装成对象(严格的说是“类”),每一种对象是相对完整和独立的。对象可以有派生的类型,派生的类型可以覆盖(或重载)原本已有的操作。所有的这些,是为了达成更好的内聚性,即一种对象做好一件(或者一类相关的)事情,对象内部的细节外面世界不关心也看不到;以及降低耦合性,即不同种类的对象之间相互的依赖尽可能降低。而所有的这些,都有助于达成一个崇高的目标,就是可复用性。 下面举个例子来说明面向过程的程序和面向对象的程序设计的区别: 用面向过程的思想去考虑它应该是这样的:如何启动汽车、如何起步、加速、刹车、熄火等一个个操作。面向过程是把所有的功能全部在一个大的类里定义出来,当系统庞大时,功能多了,各种操作之间的调用关系也很复杂,当需要修改一个功能时就可能引发一连串的改动,使修改和维护成本增加,而不利于修改。 而面向对象则以汽车为对象,一切由汽车开始,以上的可用操

学生成绩管理系统UML面向对象设计

《学生成绩管理系统》文档 姓名:李欢 班级名称:2013级软件工程 指导教师:王新年 实验日期:2014年4月 2014年4月

目录 1. 概述................................................................................................................................. - 3 - 1.1 系统简述............................................................................................................... - 3 - 1.2 软件设计目标....................................................................................................... - 4 - 1.2.1功能目标....................................................................................................... - 4 - 1.2.2性能目标....................................................................................................... - 5 - 1.3 参考资料............................................................................................................... - 5 - 2. 术语表............................................................................................................................. - 5 - 3. 设计概述(此处请用简单的结构化描述)................................................................. - 6 - 3.1 简述....................................................................................................................... - 6 - 3.2 系统结构设计....................................................................................................... - 7 - 4. 用例................................................................................................................................. - 9 - 4.1 用例图................................................................................................................... - 9 - 4.2 用例描述............................................................................................................. - 11 - 4.3 系统界面............................................................................................................. - 13 - 5. 对象模型....................................................................................................................... - 19 - 5.1 类定义................................................................................................................. - 19 - 5.2 类关联描述......................................................................................................... - 22 - 5.3 对象模型图......................................................................................................... - 23 - 6. 对象数据字典描述....................................................................................................... - 24 - 6.1 数据流描述......................................................................................................... - 24 - 6.2 子系统中的对象................................................................................................. - 26 - 7. 动态模型....................................................................................................................... - 37 - 7.1 场景(Scenarios) ............................................................................................. - 37 - 7.2事件定义(Events)........................................................................................... - 38 - 7.3 状态图................................................................................................................. - 42 - 8. 数据库定义................................................................................................................... - 43 - 8.1概念结构设计...................................................................................................... - 43 - 8.2逻辑结构设计...................................................................................................... - 45 - 8.3物理结构设计...................................................................................................... - 46 - 9. 部署图........................................................................................................................... - 48 - 10. 非功能性需求............................................................................................................. - 49 -

面向对象三维图形引擎的设计与实现

第39卷 第1期 电 子 科 技 大 学 学 报 V ol.39 No.1 2010年1月 Journal of University of Electronic Science and Technology of China Jan. 2010 面向对象三维图形引擎的设计与实现 邱 航,陈雷霆 (电子科技大学计算机科学与工程学院 成都 610054) 【摘要】提出并实现了一种面向对象的三维图形渲染引擎Gingko ,对引擎的体系结构、各模块之间的关系以及关键技术进行了分析说明。该引擎提供可扩展的软件体系结构、高效的场景处理方法、方便易用的应用程序接口,为三维图形应用的快速开发和高效运行提供了支撑。实验证明,该引擎具有运行稳定、渲染速度快的特点,对于大规模室外场景的渲染速度能保持在20 fps 以上。 关 键 词 图形引擎; 插件; 实时渲染; 真实感渲染 中图分类号 TP391.41 文献标识码 A doi:10.3969/j.issn.1001-0548.2010.01.028 Design and Implementation of Object-Oriented 3D Graphics Engine QIU Hang and CHEN Lei-ting (School of Computer Science and Engineering, University of Electronic Science and Technology of China Chengdu 610054) Abstract An object-oriented 3D graphics engine is presented and implemented. The general architecture, the relationships of every module, and the key techniques of the engine are discussed. This engine can support extendable software architectures, and provide high efficient scene rendering method and convenient application programming interfaces. It can greatly accelerate the development of 3D graphics and provide supports for its efficient running. Experimental results show that this engine has high stability and high rendering speed, for rendering large-scale out-door scene, the speed is still above 20 fps. Key words graphics engine; plug-in; real time rendering; realistic rendering 收稿日期:2008 ? 06 ? 25; 修回日期:2009 ? 04 ? 28 基金项目:国家863高技术研究发展计划项目(2006AA01Z335);总装“十一五”预研项目 作者简介:邱 航(1978 ? ),男,在职博士生,讲师,主要从事计算机图形学、数字媒体技术方面的研究. 实时真实感图形生成是计算机科学技术的重要 研究方向,目标是使计算机可以产生与真实世界相 同或高度近似的视觉环境,从而使用户获得身临其 境的视觉感受[1-2],其应用范围覆盖大众娱乐、视景 仿真、城市规划及文化教育等诸多领域。 近年来,随着计算机图形软、硬件的不断发展, 人们对实时真实感渲染以及场景复杂度提出了更高 的要求。传统的直接使用底层图形接口如OpenGL 、 DirectX 开发图形应用的模式越来越暴露出开发复 杂性大、周期长、维护困难的缺陷。鉴于以上原因, 三维图形引擎相关技术受到了广泛的关注。目前, 国外已有众多商用或开源三维图形引擎,如 OGRE [3]、OSG [4]等。 OGRE(object-oriented graphics rendering engine) 是一种用C++实现的跨平台开源三维图形引擎。该 引擎底层对DirectX 、OpenGL 进行完全封装,采用 了基于插件的体系结构,方便用户使用和功能扩展。 但OGRE 过于庞大和复杂,使用户感觉掌握困难。此外,由于底层对DirectX 和OpenGL 的完全封装,用户无法对基本图形API 进行直接操作。 OSG(open scene graph)是一款著名的3D 图形引擎,主要用于虚拟现实、仿真和游戏等领域。OSG 底层只提供了对OpenGL 的封装,与其他图形引擎一样,拥有诸如场景管理、地形管理和底层API 封装等功能。但OSG 的渲染管理比较特殊,它不是采用渲染队列进行渲染管理,而是采用渲染树,更为高效。 Irrlicht 引擎是一款开源、跨平台的3D 引擎,底层封装了DirectX 和OpenGL ,并提供基于GLSL 和HLSL 的可编程渲染管道。该引擎结构简单、速度快。但Irrlicht 以牺牲渲染质量达到高速的目的,在光照等真实感方面比较薄弱。 纵观目前国内外三维图形引擎的发展格局,开发具有自主知识产权、融入新方法、新技术的三维图形引擎是我国在信息技术领域的一项重要目标。 本文提出并实现了一种面向对象的三维图形引擎Gingko ,该引擎不仅能提高用户的开发速度,而

一种高效的面向对象图形用户界面开发工具_ViewKit

一种高效的面向对象图形用户界面开发工具——ViewKit 上海交通大学塑性成型工程系 杨中华 卫原平 阮雪榆 摘 要随着计算机的普及发展,良好的用户界面成为软件设计中不可缺少的一部分。本文介绍了一种高效的面向对象图形用户界面开发工具 View kit,利用这个界面开发工具可以高速有效地开发出良好的应用程 序界面。 关键词图形用户界面 面向对象 1 引言 80年代以来,随着微型计算机的普及、工作站的发展以及高分辨率图形显示设备、鼠标、菜单等一系列计算机软硬件技术的出现,以图形方式进行交互的用户界面有了很大的发展。图形用户界面具有直观易学的优点,极大地掩盖了计算机操作的复杂性,从而深受广大用户的欢迎和喜爱,所以成了用户界面的主流和方向。目前众多的硬件生产商已开发了数以百计的图形用户界面系统,这给应用程序的开发者带来了很大的方便,但由于大多数图形用户界系统的应用程序接口均不相同,导致程序的移植性很困难。要解决这一问题就必须建立统一的图形用户界面国际标准,各种标准化组织为此作了大量的努力。到目前为止,从各种迹象来看,O SF/M ot if极有可能成为唯一的图形用户界面工业标准。本文介绍的V iewkit是基于M o tif的更高级的界面开发工具,它继承了M o tif的各种优点,在此基础上进一步对各种界面元素集成,大大提高了制作用户界面的效率,给应用程序界面的开发者带来了极大的方便。 2 ViewKit的编程环境和要求 V iew Kit是一个由SG I公司提供的IRI S操作系统平台上实现的用C++类库编程的面向对象界面开发工具。它对IRIS IM用户界面元素进行更高集成。IRI S IM是O SF/M ot if在SGI工作站上的拓展。用V iew Kit编程对编程者和系统环境有以下两点要求: (1)要求程序员必须先熟悉C++语言、IR IS IM界面工具和O SF/M o tif界面工具。(2)进行编译连接V iew Kit库时,必须装上由SG I公司提供的I RO开发系统和C++开发系统,其中IDO系统包括C编译器、X窗口系统和IRI S I M开发系统,C++开发系统包括V iewK it开发子系统。 3 ViewKit编程的总体框架 可分为以下5个步骤: (1)用include语句包括进V iewK it应用程序所需要的头文件。(2)在M ain()主函数中用VK A PP的一个实例初始化一个系统,建立与整个系统资源的联系。 (3)用C++类的概念合理组织V iew K it组件,建立自己所需的应用程序界面组件类,并加入回调函数、事件处理函数和翻译函数等。(4)实现所创建组件类的对象。(5)进入事件处理循环。 按照以上步骤编写完一个V iew K it应用程序后,还须再做以下两项工作,应用程序才能运行: 1)对原文件进行编译连接,具体格式如下: CC-o<目标文件名><原文件名>-IV k-I Vkhelp-IXm-IXt-IXll 注意:由于这几个库之间存在依次的依赖关系,所以连接各个库选项的顺序不能随意颠倒,否则将会出现大量的连接错误信息。 2)编写资源文件 资源文件是一个普通的正文文件,在调用初始化函数时,其中的内容进入到系统内部的资源数据库中,以供应用程序之用。 下面举个实例来说明以上的步骤 : — 57 — 计算机工程与应用 1997.10 ·开发与应用·

面向对象自行车租赁系统

自行车租赁系统 姓名:占伟婷 时间: 2016.12.1

一.可行性分析 1.引言 1.1 编写目的: 可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。 经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。本报告经审核后,交老师审查。 1.2项目背景: 公共自行车租赁项目从绿色环保出发,迎合当前社会,绿色、节能、减排的大方向和主题,最大限度地节约成本、保护环境,促进社会经济的可持续发展,普及推广能源资源节约、生态环境保护知识,开展经常性的绿色文明城市建设宣传教育,引导市民树立绿色消费、环保生活观念,培育创美好城市生活社会文化氛围 1.3参考资料 《软件工程导论》,张海藩,清华大学出版社。 2.可行性研究的前提 2.1要求 主要功能:自行车租赁管理信息系统,按照功能划分的原则,把系统划分为基本信息管理、客户会见管理、系统用户管理、日常用户管理、系统帮助信息5个子系统 输出要求:数据完整,详实。 输出要求:简捷,快速,实时。 安全及保密要求:服务器的管理员享有对所有数据库的管理与修改。后台工作人员具有查看所有车辆信息及订票信息的权利和修改车辆信息的权利。

2.2目标 让越来越多人拥有绿色、环保、低碳出行的理念,同时在他们出行的过程中达到自身健身、减肥的目的。 2.3条件、假定和限制 建议软件寿命:3年。 硬件条件: PC机 运行环境:windos。 数据库:sql server 2.4可行性研究方法 ⑴市场预测法 ⑵投资估算法 ⑶增量净效益法 2.5决定可行性的主要因素 ⑴成本/效益分析结果:效益>成本。 ⑵技术可行,现有技术可完全承担开发任务。 ⑶操作可行,软件能被用户快速接受。 3.技术可行性分析 3.1系统简要描述 随着两型社会的宣传与实践,低碳绿色的出行方式越来越受到追捧,全国各地兴起了建设公共自行车租赁系统的热潮。据不完全统计,已有株洲、杭州、北京等市建成公共自行车租赁系统,还有合肥、柳州、银川等市在规划或建设中。 公共自行车租赁系统在国外已很普及,所以在国内也必将推广普及。现在很多学校都在向

相关文档
相关文档 最新文档