(技术经济及管理专业论文)基于对象关系映射的对象持久化模型的分析与设计.pdf_第1页
(技术经济及管理专业论文)基于对象关系映射的对象持久化模型的分析与设计.pdf_第2页
(技术经济及管理专业论文)基于对象关系映射的对象持久化模型的分析与设计.pdf_第3页
(技术经济及管理专业论文)基于对象关系映射的对象持久化模型的分析与设计.pdf_第4页
(技术经济及管理专业论文)基于对象关系映射的对象持久化模型的分析与设计.pdf_第5页
已阅读5页,还剩90页未读 继续免费阅读

(技术经济及管理专业论文)基于对象关系映射的对象持久化模型的分析与设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 中文摘要 作为软件中描述数据的两种主流模型对象模型和关系模型,具有不 同的理论基础和模型特点对象模型用对象来表示现实世界中的事物;利用 对象模型,能够很好地描述和设计复杂的软件系统。这使得面向对象的设计 方法在软件开发中大行其道,已经成为业务数据分析的基础,成为几乎所有 应用开发的标准技术。但令人沮丧的是,与其同基于对象模型,理论上模式 最相匹配的面向对象数据库却无法担任主流,大多数应用的存储还要在关系 型数据库中实现。但是对象模型与关系模型对数据的描述方式是不同的:对 象包含属性和行为,对象之间有继承、关联等关系,而关系数据库包含表、 关系及表之间的关系使用主、外键表示等。这就突显出对象模型与关系模型 的模式失配问题。 。 在绝大多数的应用中,内存中暂时存在的对象需要永久的保存在关系数 据库中,使得设计者要花费大量的精力解决对象型数据向关系型数据转化, 并将数据存储在关系型数据库中的问题。 实现在关系数据库存取对象,常用的做法有:第一种方法是s q l 语句嵌 入到应用代码即直接编写s q l 代码来存取对象;第二种方法是将s q l 代码在 专门的数据类( 或存储过程) 中编写;实质是将执行s q l 操作的源代码封装 到了数据类中,是一种局部封装。但着两种方式都使得对象模型与关系数据 库模式的耦合度大,不容易维护,因为无论是对象还是关系模式的微小改动, 都将导致应用程序的重新编译只适合小型应用系统或快速原型化。第三种。 也是主流方法,即专门编制持久层实现对象和关系之间的映射,这种机制使 应用程序的开发人员不需要了解关系数据库的模式,也不需要了解操作对象 在数据库的存储方式就可以透明地操作存储在关系数据库中的数据,有利开 基于对象关系映射的对象持久化模型的分析与设计 发大规模的应用程序。但由于在设计体系中加入了持久层,势必造成效率方 面的问题,使得在持久层的设计中不单单只是处理模式失配的问题,还要求 有相应的机制解决效率等问题,持久层的设计要权衡诸如性能、读取频率、 可扩展性、空间耗费、支持事务、游标、处理对象标识等,使持久层具有应 用系统所要求的功能,并结合实际应用环境来权衡持久层的各种功能,满足 最基本的、最满足应用环境的功能需求。 持久层的映射要遵循一定的规则,不同的持久层所支持的映射规则是不 相同的。但一般的o p o t ( o b j e c tr e l a t i o nm a p p i n g ) 都要支持类、属性、方 法的映射、关系映射、继承的映射、数据完整性的映射等基本功能。本文对 映射规则结合实例进行了深入分析,介绍了各种映射概念、方法,同时对实 现同一目标的不同方法进行了横向的对比,有的还给出了使用原则。 目前流行且非常成熟的j 2 e e 是主流的创建企业级应用的平台,j d o 是其 轻量级的版本,但作为中间件也存在着诸如占用资源过多,依赖于】( ! l i l 的数 据实体表示方式的特点:而微软的n e t 出现的时间比较短,目前在这个平台 上没有成熟统一的架构本文描述和设计的便是基于微软的n e t 的的中间件 的架构,严格地说它不是狭义上的对象关系映射及持久化工具,因为它站在 软件整体设计的视角以数据实体和数据访问作为核心实现目标,同时预留和 简单实现了实体控制、业务规则等功能。 本文提出的n e t l i g h t 一种主要解决对象关系映射,数据库访问的中间件 的架构,虽然是一种轻量级的、相对来说较简单的架构,但是它的架构基于 分层,结构清晰,经过功能的强化,在添加更多的模块之后是可作为一个企 业级的、具有较大的扩展性、祸合度较小的中间件框架。跟常用的框架的分 层的区别在于对数据实体层迸一步细分为数据实体和数据操纵层。使得业务 逻辑层的代码更清晰,和数据实体层的耦合度进一步降低。n e t l i g h t 分层设 置为业务外观层、业务逻辑层、实体控制层、数据实体层和数据访问层的五 层架构来封装不同数据库的连接访问、数据表示、数据的查询、插入、删除 及修改等,以及业务的逻辑处理和业务服务的提供,使上层只需要调用下层 封装过的操作,而不必关心其实现细节,各行各职,减少了系统和存储介质 及各功能单位的相互耦合,使代码清晰度高,具有较高的可维护性,可使软 2 中文摘要 件设计中的部分工作可以并行,提高了开发效率。 关于n e t l i g h t 的类结构,本文详细介绍并结合实例分析了系统的映射规 则、数据库访问的封装、数据实体的表示、数据实体的控制、业务逻辑及业 务服务的提供等等,列出了实现层次功能的关键类,常用方法以及类间的调 用关系等。 本文另一个特点是突破主流的面向对象的设计方法,提出了在中间件的 设计中使用a o p ( 面向方面编程) 设计方法,并通过对比其与面向对象方法处 理相同业务逻辑时在降低系统耦合、使业务逻辑清晰化等的表现,说明了a o p 的思想,并在n e t l i g h t 中提出尝试使用a o p ,以解决一些诸如身份权限检验, 日志记录等经常被业务逻辑调用,和业务逻辑耦合但却属于整个系统的处理。 解决了面向对象编程时有时存在的与业务逻辑紧耦合、不易扩展缺乏灵活性 的缺点。 但论文中实现的仅仅是一些中间件的一些较基础的功能,一些功能接口 还有待填充和完善:对a o p 的支持也只是处于设想阶段;作为一个理论上的 框架,需要结合实际工程来检验系统的设计合理性,并结合实际不断的加以 完善。 关键词:对象关系映射n e t l i g h t 持久层中间件 a b s t r a c l a st w om a j o rd a t a - d e s c r i b i n gm o d e l ,o b j e c tm o d e la n dr e l a t i o nm o d e l , h a v et h e i ro w l ld e f f e r e n tc h a r a c t e r i s t i ca n dt h e o r e t i c a lp r i n c i p l e ,w h i c hi so b j e c t m o d e ld e s c r i b e st h er e a l i t i c a lt h i n ga n dd e s i g n st h ec o m p l i c a t e ds o f t w a r es y s t e m u s i n gt h eo b j e c t t h i si st hr e a s o nw h y t h eo o p ( o b j e e t - o r i e n t e dp r o g r a m m i n g ) i s t h em a j o rm e t h o do fs o f t w a r ed e v e l o p m e n ta n dt h ep r i n c i p l eo fb u s i n e s sd a t a a n a l y s i s t h er e a l i t y ,w h i c hi st h eo o d b i sn o tp o p u l a r ,f r u s t r a t e st h es o f t w a r e d e v e l o p e r ,b e c a m et h er d b i ss t i l lt h em o s ti m p o r t a n tm e c h a n i s mf o rd a t as t o r e b u tt h e yh a sd e f f e r e n tp r i n c i p l eo f d e s c r i b i n gd a t a ,t h e r ei st h ep r o b l e mb e t w e e n t h e mc a l l e di m p e d e n e e - m i s m a t c h i nm o s ta p p l i c a t i o n s ,t h et e m p o r a r yd a t as t o r ei nm e m o r yn e e dt ob e p e r s i s t e n tt ot h er d b ,s o t h ed e v e l o p b rs p e n tm o s tt i m ea n de n e r g yt ot r a n s i tt h e o b j e c td a t at ot h er e l a t i o nd a t aa n ds o l u t et h ed a t as t o r ei nr d b f o rt h ed e s t i n a t i o no fd a t am a n i p u l a t i o ni nr d b ,t h em e t h o d si n c l u d e :1 s q le m b e d d e di nt h ea p p l i c a t i o nc o d e , u s i n ga n o t h e rw o r d s ,c o m p i l es q l c o d e t od i r e c t l yt om a n i p u l a t et h ed bd a t ai nt h ea p p l i c a t i o n ;2 t h el o c a le n c a p u l a t i o nb y w h i c ht h es q lc o d ei se r n b e d d e di n l a t ac l a s s ;t h et w ow a y sc a u s et h ee o u p l h a g p r o b l e mb e t w e e nt h et w od a t am o d e ,8 0a n yc h a n g e so ft h et w om o d ew i l l r e c o m p i l et h ea p p l i c a t i o n t h e y 缸ef i t t e dt ot h es m a l la p p l i e a t i n o rr a d 3 p e r s i s t e n c e l a y e rm a d ef o ro r m ( o b j e e t - r e l a t i o nm a p p i n g ) t h ea p p l i c a t i o n d e v e l o p e r sw h o d o n tn e e dt ok n o wa b o u tt h er d ba n dt h ed a t as t o r ei nt h ed b , c a nm a n i p u l a t et h ed a t ai nt h er d b t r a n s p a r e n t l y n o to n l yc a ni ts o l u t et h e i m p e d e n e m i s m a t c hp r o b l e m , b u tt h ee f f i c i e n c yt h i n g m a n yt h i n g s ,l i k e 基于对象关系映射的对象持久化模型的分析与设计 p e r f o r m a n c e ,r e a df r e q u e r e n c e ,e x t e n s i b i l i t y ,s p a c ec o n s u m p t i o n ,t r a s a c t i o a n s u p p o r t ,c u r s o ra n ds oo n ,m a k et h ep e r s i s t e n c el a y e rb e s i z e du pt ot h e a p p l i c a t i o n i n o r d e rt os a t i s f yt h ec o m m a n df r o mt h ea p p l i c a t i n ,t h ep e r s i s t e n c e n e e dt o ob cr e c o n s i d e r e d ac o m m o np e r s i s i t e n c en e e dt os u p p o r tt h em a p p i n go fc l a s s , p r o p e r t y , m e t h o dr a l a t i o n s h i p ,i n h e r i t e n c ea n dt h ed a t ai n t e g r i t yw h i c ha r et h ef u n d e m e n t a l f u n c t i o n s i nt h ep a p e r ,t h ee x a m p l e sa r eu s e dt oh e l pu n d e r s t a n d i n gt h em a p p i n g m e t h o d ,t oc o m p a r et h ed e f f e r e n tw a y st oa c h i e v et h es a n l eg o a la n dt oc o n c l u d e t h ep r i n c i p l eo f c h o o s i n gt h er i g h tm e t h o d t h ef r a m e w o r kn a m e dn e t l i g h td e s c r i b e di n t h i s 、p a p e r i sb a s eo n m i c r o s o f t n e to nw h i c ht h e r es t i l lh a sn oi n t e g r a t e df r a m e n l em i d d l e w a r e f r a m ei sn o tj u s tf o ro r ma n do b j e c tp e r s i s t e n c ej u s tp r i m a r ym o d u l e a tt h e s a m et i m e i tp r o v i d e sf u n c t i o nf o re n t i t ye n n t r o l m e n ta n db u s i n e s s p r i n c i p l ea n d s o o n n e t l i g h ti st h em i d d l e w a r ef r a m et h a tc a ns o l u t et h e0 r m ,a l t h o u g hi ti s l i g h ta n dc o m p a r a t i v e l ys i m p l e ,t h ed e s i g ni d e ai sb a s e so nt h es t r u c t u r el a y e r , h a sc l e a rs t r u c t u r ea n dc a nb ei m p r o v e dt of o rt h ee n t e r p r i s e - l a y e dd e s i g na f t e r f u n c t i o nr e i n f o r c e d c o m p a r e dt or e g u l a rf r a m e w o r k ,i ts u b d i v i d e st h ed a t ae n t i t y i n t ot w ol a y e r s ,d a t ae n t i t ya n dd a t am a n i p u l a t i o nl a y e r s ,w h i c hm a k et h e b u s i n e s sl a y e r sc o d em o r ec o n c i s ea n dl o wt h ec o u p l i n gd e g r e e n e t l i g h ti s d e s i g n e dt of i v el a y e r s , b u s i n e s sf k a d e , e n t i t ye o n t r o l m e n t , b u s i n e s sl o g i c , d a t ae n t i t ya n dd a t aa c c e s sl a y e r s ,t oe n c a p u l a t et h ea c c e s st od e f e r e n td a t a b a s e , d a t ae x p r e s s ,d a t ai n s e r t , s e l e c t ,d e l e t ea n du p d a t e ,b u s i n e s sl o g i ca n d b u s i n e s ss e v i c e a f t e rt h i s ,t h eu p p e rl a y e r j u s tu s et h eo p e r a t i o ne n c a p s u l a t e di n t h el o w e rl a y e r ,a n dd o n tc a r et h eo p e r a t i o nd e t a i l e a c hc o m p o n e n ti nt h e s y s t e mh a si t ss p e c i a lt a s k ,w h i c hm a k e st h ec o d ec l e a r ,d e c o u p l e ss y s t e m c o m p o n e n t s , e n h a n c e st h es y s t e mm a i n t a i n a b i l i t ya n di m p r o v et h ea p p l i c a t i o n d e v e l o p m e n t se f f i c i e n c y r e l a t e dt ot h ec l a s sa r c h i t e c t u r eo f n e t l i g h t ,t h i sp a p e rp r e s e n t e dd e t a i l e dt h e 2 a b s t r a c t o r m p r i n c i p l e ,t h ee n e a p u l a t i o no f d a t a b a s ea c c e s s ,t h ed a t ae n t i t ye x p r e s s i o n , d a t ae n t i t yc o n t r o l m e n t ,b u s i n e s sl o g i ca n db u s i n e s ss e r v i c e a tt h es a m et i m e , t h ek e yc l a s s ,t h es t a p l em e t h o da n dt h et r a n s f e ra m o n ge n t i t i e sa l ep r e s e n t e di n t h i sp a p e r a n o t h e rl i g h t s p o ti nt h i sp a p e ri st h ei m p l e m e n t a t i o no fn e wt e c h n o l o g y n a m e da o p ( a s p e e to r i e n t e dp r o g r a m m i n g ) i nt h em i d d l e w a r ei n s t e a do f0 0 m e t h o d i ts o l u t es o m em o d u l et r a s f e r ,w h i c h i ss o m em o d u l el i k ei d a u t h e t i c a t i o n ,l o gr e c o r dt h a tb e l o n gt ot h es y s t e mb u to f t e na l et r a n s f e r r e db y b u s i n e s sl o 百c i tm a k e su pf o r t h ed e f i c i e n c ys o m e t i m e sm a d eb y0 0m e t h o d , d e c o u p l e st h e s em o d u l e sf r o m b u s i n e s sl o g i c k e y w o r d s :o r mn e t l i g h tp e r s i s t e n c el a y e r m i d d l e w a r e 西南财经大学 学位论文原刨性及知识产权声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究工作所取得的成果。除文中已经注明引用的内容外, 本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对 本文的研究做出重要贡献的个人和集体,均己在文中以明确方式标 明。因本学位论文引起的法律结果完全由本人承担。 本学位论文成果归西南财经大学所有。 特此声明 龇奸秘氰 2 0 0 7 年4 月2 0 日 i 绪论 1 绪论 数据是任何计算机应用程序存在的意义。应用程序的核心是使某人或另 一个计算机系统能够访问其数据。在企业环境中,数据不仅必须是可访问的, 而且还必须是持久的持久数据存储存在于应用程序的活动内存之外,即使 服务器崩溃仍能存在,通常在乎面文件系统或数据库中。虽然持久数据被读 入瞬时存储器以供使用或修改,但它始终被写到外部数据存储中长期存储 在多数的管理信息系统中都存在着大量的数据。常见的就包括数据集、 图片、模型、报表、文件、任务书等,尤其在设计大中型企业的管理信息系 统时,往往涉及到如文本、超文本、声音、图形、图像、c a d 图等类型,数 据需要进行版本管理等等,这些数据具有信息量大、结构复杂、数据间存在 着普遍和复杂的关系、需要版本管理等特点。在企业环境中,对这些数据的 管理是大中型企业管理信息系统设计中的重要研究课题。 数据管理首先需要对这些信息进行建模。层次型、网状型、关系型这三 种常用数据模型在面对具有上述特点的工程数据时显得力不从心,而正在发 展中的面向对象模型( 亦称o o 模型滋认为是目前最适合的。但由于作为主流 的信息载体是关系型数据库,这样就存在着对象模型向关系模型的数据处理 方式的转化。基于对象关系映射的中间件产品已经有很多成熟的产品,比如 j 2 e e ,h i b e r n a t e 等,这些体系都比较完善,但也存在着对资源的耗费比较大。 基于x m l 等特点,这对于一些需要快速构建的一些中小型项目来说,无论从 效率还是经济上来说都不是最佳的选择,于是就出现了一些量身定做的轻量 级的中间件的产品及设计,由于大多数基于j a v a 平台的中间件的设计与产品 都比较成熟,而基于n e t 出现时间较晚,在其上构建的平台还没有成熟的架 构,有较大的研究空间。本文就着眼于基于n e t 的,主要完成对象关系映射 及持久化功能的中间件设计,但设计是站在系统分层的高度进行的,不仅完 基于对象关系映射的对象持久化模型的分析与设计 成其映射及持久化的基本功能,而且最大限度地实现系统解耦,为以后应用 系统的升级和更新设置总的框架,在当前的简单的框架中能不断加入新的功 能,实现新的设计思想。 本文首先对框架涉及到的操作对象对象模型和关系模型的原理、基 本概念、主要技术、实现工具和主要特点进行了详细介绍,并对两个模型进 行了对比分析,接着具体化到对象持久化理论和技术,介绍对象持久化的主 流方式,详细分析了对象持久化层的功能需求和目标;然后,对对象持久化 层的核心功能对象关系的映射规则逐一地介绍实现方法,分析优势不足 及其适用环境,这对具体的设计打下了坚实的理论基础;最后,在前面提出 的理论基石上,以对象持久化和数据访问的实现为核心,构建了基于m i c r o s o f t 的n e t 框架的n e t l i g l l t 中间件的框架,实现了对象持久层的核心功能,并从 性能方面作了优化改善;从理论上本文的最大亮点在于将系统按照降低耦合 化的原则分层,并且为了进一步实现代码的独立化,在设计中引入了 a o p ( a s p e c t - o r i e n t e dp r o g r a m m i n g ) ,即面向方面编程的设计思想,并做了简 要的分析介绍,为系统向大型化、结构化发展打下了基础。在框架的分析介 绍中,需要引入代码的地方,考虑到篇幅问题,我尽量将能说明问题的部分 列出,帮助对模型框架的理解。 论文的目的不仅仅在于分析介绍实现基于对象关系映射的对象持久化的 规则和实现机制,更重要的是将分层、结构化以及面向方面编程等考虑问题 的思想方式引入到设计中,建好框架,重在设计思想,以便框架在今后能不 断完善,甚至用新的、完全不同的方式来设计更适合应用的系统。 2 2 关系模型与对象模型 2 关系模型与对象模型 数据模型是数据库结构的基础,它是描述数据、数据联系、数据语义以 及一致性约束的概念工具的集合。数据模型在整个数据库系统中具有非常重 要的地位。它既与应用程序和数据相关,又和数据库管理系统( d a t a b a s e m a n a g e m e n ts y s t e m ,d b m s ) 相关:既可用于描述应用领域的数据,又可用 于描述数据库系统的实现方式。目前数据库系统的数据模型主要包括网状模 型、层次模型、关系模型和面向对象数据库模型 研究工作涉及的数据模型主要是关系数据模型和面向对象数据模型,下 面分别介绍面向对象模型和关系模型。 2 1 对象模型 面向对象方法起源于面向对象的编程语言面向对象发展是从s i m u l a 开 始,s m a l l t a l k 第一个做了相对完整的实现,而c + + 第一个被广泛使用的面向 对象语言,c 拌和j a v a 是更纯粹的面向对象语言。人们将面向对象的基本概 念和运行机制运用到其它领域,获得了一系列相应领域的面向对象的技术 面向对象方法已被广泛应用于程序设计语言、形式定义、设计方法学、操作 系统、分布式系统、人工智能、实时系统、数据库、人机接口、计算机体系 结构以及并发工程、综合集成工程等,在许多领域的应用都得到了很大的发 展。 , 2 1 1 基本概念 ( 1 ) 标识:每个对象都有自己的标识,将其与其他对象予以区分标识 是将对象与抽象数据类型( a d t ) 区别的关键。当一个对象被创建时,不管它与 基于对象关系映射的对象持久化模型的分析与设计 所有其他对象状态相同,这个对象都是不同于所有其他对象的。 ( 2 ) 状态:对象拥有自己的状态( 对象在某个特定的时刻有状态值) 。 对象在生存期中可能保持一种状态,也可能在不同的状态间转化。由于对象 具有封装性,只有通过访问检查对象的行为才能了解对象的当前状态。 ( 3 ) 行为:对象提供行为这个抽象概念以使用户可以相互作用。对象的 行为由对象提供的操作( 接口) 、操作对调用做出的响应以及操作带来的对象 的状态变化构成任何与对象的作用必须通过对象的接口进行,然后通过响 应接口作用的对象行为( 通过返回值或产生的作用) 作用于对象。 ( 4 ) 封装:提供了一种抽象机制,使外界无法看到,了解抽象机制的运 行细节。客户端只能通过对象的公共行为作用于对象,却无法了解状态和行 为的运行或操作细节。 ( 5 ) 类型:是具体化的接口。对象通过类型描述接口来实现一种类型。 一种类型的所有对象通过相同的接口互相作用。一个对象可以同时实现不同 的类型。 ( 6 ) 类:实际上是一种实现对象一种方式。类定义了对象实现的类型, 如何实现接1 3 要求的行为以及如何存储( 记住) 状态信息。每个对象仅仅需 要存储各自的状态信息。目前,类是最普遍的对象处理方式,但不是唯一的, 比如范式。 ( 7 ) 关系:类型之间存在关系,这说明一种类型的对象与另一种类型的 对象相互联系。这种联系可以从一个对象引出与之相关的其他对象。 关联关系是对象之间最弱的一种关系,表示对象间的某种联系,使一个 对象知道另一个对象的属性或方法。关联有单向的和双向的。 聚合是关联的一种,是对象间的整体和部分之间的关系。 组成是更强的聚合,组成关系中代表整体的对象负责代表部分对象的生 命周期。在组成关系中,一个部分对象仅属于一个整体对象,并且部分对象 通常与整体对象共存亡。 依赖也是对象之间的一种关系,它表示一个对象依赖于另一个对象的定 义 ( 8 ) 继承:描述类型或类之间的概念当作用于类型,比如类型b 继承 类型a ,不仅仅说明b 的对象也是a 的对象,更重要的是b 的对象继承自a 。 4 2 关系模型与对象模型 b 的对象也是a 的对象,类型b 从属于a 。当作用于类时,类b 使用了类a 的实现方式并且可能重写覆盖。 ( 9 ) 消息:从源对象到目标对象的请求,消息在目标对象上作为方法调 用实现。对象相互问是通过消息来协作。 2 1 2 对象建模工具 u m l ( u n i v e r s a lm o d e l i n gl a n g u a g e ) ,统一建模语言是面向对象的分析设计 方法的产物。面向对象方法研究的大爆发产生了众多的建模语言,在使用户 拥有丰富的建模工具的同时,也由于各种方法存在差异,各具特点使用户难 以适从。 r a t i o n a l 的b o o c h 、r u m b a u g h 和j a c o b s o n 三人将他们各自建模方法互相 融合,兼收并取,在各大厂家组成的u m l 协会的支持下,于1 9 9 7 年1 月正 式发布了u m l1 0 。1 9 9 7 年1 1 月1 7 日,0 m g 采纳l r m l l 1 作为基于面向 对象技术的标准建模语言。u m l 是一种定义良好,易于表达、功能强大且普 遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。 u m l 的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的 应用领域。其中最常用的是建立软件系统的模型,不仅支持面向对象的分析 与设计,还支持从需求分析开始的软件开发的全过程。但它同样可以用于描 述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数 据的信息系统、具有实时要求的工业系统或工业过程等。总之,u m l 是一个 通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。 作为一种建模语言,u m l 的定义包括u m l 语义和u l 儿表示法两个部 分: ( 1 ) u m l 语义:描述基于u m l 的精确元模型定义。元模型为u l 讧l 的 所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者 能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外 u m l 还支持对元模型的扩展定义。 ( 2 ) u m l 表示法:定义u m l 符号的表示法,为开发者或开发工具使用 这些图形符号和文本语法、为系统建模提供了标准。这些图形符号和文字所 基于对象关系映射的对象持久化模型的分析与设计 表达的是应用级的模型,在语义上它是u m l 元模型的实例。 标准建模语言u m l 的重要内容可以由下列五类图( 共9 种图形) 来定义: 第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。 第二类是静态图( s t a t i c d i a g r a m ) ,包括类图、对象图和包图。其中类图 描述系统中类的静态结构。不仅定义系统中的类、表示类之间的联系如关联、 依赖、聚合等,也包括类的内部结构( 类的属性和操作) 。类图描述的是一种 静态关系,在系统的整个生命周期都是有效的。 对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点 在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的 一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。 第三类是行为图( b e h a v i o r d i a g r a m ) ,描述系统的动态模型和组成对象 问的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状 态的转移条件。通常,状态图是对类图的补充。实际上并不需要为所有的类 画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类 画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关 系,有利于识别并行活动。 第四类是交互图( i n t e r a c t i v e d i a g r a m ) ,描述对象间的交互关系。其中顺 序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时 显示对象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似, 显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它 们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系, 则选择合作图。这两种图合称为交互图。 第五类是实现图( i m p l e m e n t a t i o nd i a g r a m ) ,其中构件图描述代码部件的 物理结构及各部件之间的依赖关系。部件图有助于分析和理解部件之问的相 互影响程度。配置图定义系统中软硬件的物理体系结构。它可以显示实际的 计算机和设备( 用节点表示) 以及它们之间的连接关系,也可显示连接的类 型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点跟 可执行软件单元的对应关系。 从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求; 其次根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统 6 2 关系模型与对象模型 的行为。其中在第一步与第二步中所建立的模型都是静态的,包括用例图、 类图、对象图、组件图和配置图等五个图形,是标准建模语言u m l 的静态建 模机制。第三步中包括状态图、活动图、顺序图和合作图等四个图形,是标 准建模语言u m l 的动态建模机制。因此,标准建模语言u m l 的主要内容也 可以归纳为静态建模机制和动态建模机制两大类。 本文使用类图构造对象的静态模型所以对类图构造对象模型做详细介 绍。 ( 1 ) 类的表示 类的u m l 表示是一个长方形,垂直地分为三个区。顶部区域显示类的 名字。中间的区域列出类的属性底部的区域列出类的操作。当在一个类图 上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的( 当 图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要 的) 。图1 显示一个航线班机如何作为u m l 类建模类名称是f l i g h t ,中 间区域有f l i g h t 类的3 个属性:航班编号f l i g h t n u m b e r ,起飞时间d e p a r t u r e t i m e 和飞行时间f l i g h t d u r a t i o n 。在底部区域中可以看到f l i g h t 类有两个操作: d e l a y f l i g h t 和g e t a r r i v a l t i m e 属性格式为属性名称:属性类型,如 d e p a r t u r e t i m e :d a t e 。含有默认值的属性表示为:属性名称:属性类型= 默认 值,如在银行账户应用程序中,一个新的银行账户会以零为初始值。 f l i g h t f l i t h t n t m b e r :i n t e l e z d e p a r t u t e t i n e :d a t e f l i g h t d u c a t i o n :i i l 啊n - d e l a y f l i g h t ( n u t o f n i n :i n t ) gd a t a g c t & t t i a l t i a 0 = d a t a b s n k a c c o u n t 。o g 虹n 。e k 。:。 ;:器。 d e p o z i t ( m m u n t :d o l l t m s ) v i t h d r a v l ( m o u n t :d o l l a r s ) 图1 :n i g h t 和b a n k a c c o u n t 的类图 类操作表示为操作名( 参数列表) :返回类型,类f l i g h t 中操作d e l a y f l i g h t 操作有一个i n t e g e r 类型的输入参数n u r a b e r o f m i n u t e s :d e l a y f l i g h t 操作没有返 回值。 、 ( 2 ) 可见性 在面向对象的设计中,存在属性及操作可见性的记号u m l 识别四种类 型的可见性:p u b l i c ,p r o t e c t e d ,p r i v a t e 及p a c k a g e 。见表1 - 7 基于对象关系映射的对象持久化模型的分析与设计 表l :可见性的标识符 u m l 规范并不要求属性及操作可见性必须显示在类图上,但是它要求为 每个属性及操作定义可见性。为了在类图上的显示可见性,放置可见性标志 于属性或操作的名字之前。 ( 3 ) 接口: 接口是没有实例的类,在u m l 2 中,一个接口被认为是类建模元素的特 殊化。因此,接口就象类那样绘制,但要加上“h a t e r f a c e ,如图:一条带有闭 合的单向箭头的点线意味着实现,p r o f e s s o r 和s m d e n t 类都实现了p e r s o n 的接 口。如图2 : 、 图2 :含有接口的类图 ( 4 ) 类的关系: 双向关联:双向关联的类彼此知道他们之间联系。图3 描述f l i g h t 类和 p l a n e 类之间的一个标准类型的关联: f l i g h t f l i d i t t s t b e r :i n t t t e r p l a n e d e p t r t 口e t i o e :d e t e 0 “s i 廿1 n t i r r := 盘。e ,e :i 篡* - i ,。 f l i t i l t | i t t t i e t :l i t t t e s d e ,t r t i t o t i r f r t :s t r i q t r r i v i t f l i r t t r t :s t r i i ft s s i t n e d f l i o 1 d e l = y l r l i d t ( r u t h e r e f l l i n :| i n i t e s ) := 1 i f :;:;:乏 t e t l r r i v t l x i t e0 :d t t e 图3 :表示类闻双向关联的类图 单向关联:相关的两个类只有一个知道这种联系的存在,下图为一个帐 户透支的单向关联的例子:单向的关联,表示为一条带有指向已知类的开放 2 关系模型与对象模型 箭头,如同双向关联,单向关联包括一个角色名和一个多重值描述,但是与 双向关联不同的时,单向关联只包含已知类的角色名和多重值描述在图中 的例子中,o w r d r a w n a c c o u n t s r e p o r t 知道b a n k a c e o u n t 类,而且知道 b a n k a c c o u n t 类扮演 o w r d r a w n a c c o u n t s 的角色。然而,和标准关联不同, b a n k a c c o u n t 类并不知道它与o v e r d r a w n a e c o u n t s r e p o r t 关联 图4 :表示类间单向关联的类图 关联尾部可能出现的多重值描述关联的量的关系:如表2 : 表2 :表示关联关系的量的标识表 l 表示 o 1 1 0 。 l 一 6o 2 l i 意义 0 或1 个只一个0 或多个多个1 或多个只能6 个 0 到21 个l l 关联类:有时需要保存关于关联自身的信息,关联类由此产生。关联类 和一般类一样表示。不同的是,主类和关联类之间用一条相交的点线连接。 聚合:聚合是一种特别类型的关联,用于描述“总体到局部”的关系。部 分类的生命周期独立于整体类的生命周期。有聚合关系的关联指出,某个类 是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长 的时间。为了表现一个聚合关系,需要画一条从父类到部分类的实线,并在 父类的关联末端画一个未填充棱形图5 显示车和轮胎间的聚合关系的例子: 图5 :表示类问聚合关联的类图 组合:是聚合的更紧密的关系,子类实例的生命周期依赖于父类实例的 生命周期。表示方法与聚集方法类似,只是将菱形框填充即可。在图中,显 示了c o m p a n y 类和d e p a r t m e n t 类之间的组合关系,一个c o m p a n y 类实例至 少总有一个d e p a r t m e n t 类实例,当c o m p a n y 实例被移除销毁时,d e p a r l m e n t 9 摹于对象关系映射的对象持久化模型的分析与设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论