PowerDesigner中的对象与关系映射建模(20210215090221)

PowerDesigner中的对象与关系映射建模(20210215090221)
PowerDesigner中的对象与关系映射建模(20210215090221)

PowerDesigner中的对象与关系映射建模

Sybase公司PowerDesigner.上海研发中心余亚,土晓旳

概述

从80年代中期开始,随着C++语言的成功,面向对象语言已经成为软件开发中的主导语言。现在很多商用软件,尤其是企业信息系统,都是使用而向对象语言进行开发的。应用而向对彖方法,我们通过类来抽彖不同类别的实体,屈性来表示实体的静态特征,关联来抽象实体间的联系,继承来抽象类别的包含关系。

很多的应用程序都需耍进行数据存储,关系型数据库是放常用的数据管理系统。在关系型数据库屮,表.列和外键是抽象数据的基木元索。关系型数据库是建立在关系计算和布尔代数基础之上的,SQL是数据库的操作语言,通过关系运算,连接、联合等,來操作数据。

我们很容易的看出,面向对象模型和关系模型是不完全匹配的。比如

1.对象叮以存储到多张表,表也可以存储多个类的对彖。

2.对彖Z间的关系是双向的,而表之间的关系是单向的。

3.对象Z间有继承关系,表Z间没有。

为了解决这种不匹配,人们定义了很多映射模式来建立两种模型间的对应关系。这些映射模式逻辑上解决了模型间的不匹配,使得面向对象程序能够正确地和关系关系型数拥库进行交互,但是对于程序的开发,仍然冇很多问题碍耍解决。

问题

对于设计人员來说,他们需耍找到并且描述这两种模型元索间的映射关系,以便编程人员能够世确地实现数据的存储和查询。现在很多建模工貝仅捉供其屮一种模型的支持,比如Together仅支持对象建模.ERWin仅支持数据建模。即使同时支持两种模型,这种支持也很不完整,比如Rose中的数据建模功能。分析设计人员常常需耍两种不同的工具来进行建模,如果他们想描述这两种模型元素间的对应关系.他们只能通过文档或者表格的形式。这很容易产生错误?并目?如果模型发生改变,这些文档需要手工更改,容易造成不一致,维护起來很闲难。

对于编码人员,他们需耍应用某种技术来实现模型的这种对应关系。如果通过语言捉供的数据库访问接「1,比如Java的JDBC或者.Net"勺ADO. Net,对于每一个对彖的毎一个存储操作,编码人员需耍编写存取操作的SQL,数据咋控制和访问代码,这是一项繁琐、巫复性的劳动。即使应用O/R映射的框架,比如Hibernate,

EJB 3.0或者.Net平台的NHibcmatc,他们需要编写映射文件或者通过标记來定义O/R映射框架所需要的映射元数据。这些映射元数据只不过是我们在设计阶段定义的映射关系另外一种表现方式.转换成XML或者标记的方式,无疑这种转换増加了错误的可能性和维护的难度。

PowerDesigner 解决之道

PowerDesigner提供对于多达8种模塑的支持,其屮包J5面向对象模塑和关系数据榄型。作为一个集成的企业建榄匸具,PowerDesigner并不是简单的将儿种模型工具罗列在一起。各种模型相互Z间可以建立关联,通过这种关联,它提供了企业模型统一、一致的视图。其屮模盘间的映射和白动生成是建立模型间关联重要的手段。

模型可以描述系统的静态特征和动态特征,而静态特征对以用來表述系统的持久状态,比如面向对彖模型屮的实体类,数据康模型的表,XML模世中的元索节点等。在PowerDesigner中,我们可以在各种可以描述持久状态模世间建立映射,比如XML模型到而向对象模型间的映射,面向对彖模型到关系数据模型的映射等。下面我们就來看一

下.PowerDesigner是如何支持面向对彖模型到关系模型的映射的。

1.1对象/关系映射

下表列出了PowerDesigner中面向对象元索和关系模型元索间的对应关系:

在PowerDesigner中,我们可以通过三种方式来建立面向对象模型和关系模型间的映射:

1.手工建立映射。

2.口动模型生成。

它们分别适川于不同的开发需求,下面我们就来看如何通过这两种方式来建立映射。

1?2手工建立映射

这种方式适用于以下几种情况:

1.在已经存在的模型间建立映射。企业的信息系统是一个界构的环境,很多应用

程序和数据库都是独立开发的,它们具有不同的模型,如果它们Z间盂要进行

数据交互,则盂要建立它们Z间的映射,比如新的ERP 系统中和企业原冇的数

据库间的映射。

2.数据库和程序由不同的组负责设计。大型的企业应川程序可能包含很多业务子

系统,每个业务了系统只考虑如何实现它自C的业务需求,而数据库设计要从

整体出发,考虑整个应用程序的需求。对于每个业务模块,需要定义它的逻辑

模型和数据库模型间的映射。

在建立映射之前,我们需要给面向对象模型创建数据源,然后添加要映射的数据库模型。表1中可以映射的而向对彖元素都有个映射的定义窗口,比如下图所示的类的映射属性页。通过这个映射属性页,川户可以添加或者删除对应的数据库模型元索,这些元索只能是表1中该元索对应的类型。

像其他模型的元数抓-?样,PowerDesigner会把映射元数据存储在模型中,映射元数据通过快捷方式來记录对应的模型元索。如果対应的模型发牛改变,比如农的名称发生改变,对于映射元数据没冇影响。当川户需要得到对应元数据的属性的时候,PowerDesigner会解析快捷方式,找到目标元素,用户得到的是当前元素的信息.对比于文档或者表格?这种方式提高了一致性和可维护性。血且PowerDesigner提供了变更影响分析视图,它可以帮助川户在变更之前分析可能产生的影响,比如在改变列的类型Z前,用户可以了解到是否会造成映射到此列的加性类型的不匹配。

也许川户认为这种操作方式太复朵,川户需要切换到毎个面向对象的窗口来定义它的映

射。从PowerDesigner 12开始,用户町以通过另外一种史加便捷的方式,映射编辑器,来定义元索间的映射关系。映射编辑器提供了一种All-In-One的操作方式,通过元模型和目标模型的树状视图,用户可以方便的通过托拽的方式来定义所冇的映射。

1?3模型自动生成1 |T I

在很多时候我们要开发一个全新的系统,而数据席仅仅考虑这个系统的数据管理需求,或者开发新的应川程序访问已冇的数据库。采用面向对象方法的软件开发通常采用自顶向下的开发过程,先建立企业的应用模型,然厉再进行数据库设计。用户也可以采川口底向上的开发过程,也就是以数据为屮心的开发过程,先进行数据库设计,或者应用己有的数据库模型,再设计应川程序模型。

既然我们定义了模型间映射模式,如杲冇了一种模型,为什么不能自动生成另外一模型,并h建立它们间的映射。PowerDesigner就提供了这种模型的自动生成功能,使得川户能够重川现有的模型,方便的生成II标模型。対于面向对象模型和数据库模烈來说,这种自动生成功能是双向的,即町以通过面向对彖模型來生成数据库模型.也口J以通过数据库模型來生成面向对彖模型。

1.3.1 h动牛?成数据库模型这种模式适合于自顶向下的开发过程,即先建立应用程序模型,再设计数据库。我们可以应用PowerDesigner提供的转换模式,将应用程序模型中描述持久信息的面向对彖元素,实体类、关联、继承.生成数据库模型对应的元素。

根据已经被证明的映射模式,PowerDesigner提供了一些缺省的转换模式,用户也可以定制转换模式來控制生成过程

1.3.1.1基本转换模式

1.类

用户可以通过类的持久属性和生成类型來控制类的白动转换,PowerDesigner仅会自动转

换持久的类。转换的类型冇表、迁移列和抽象数据类型,其中表和抽象数据类型都容易理解,迁移列主耍控制继承中类的转换,我们会在继承转换屮详细讨论它的川法。川户还可以指定生成表的名称。

2.属性

如果持久类的生成类型不是抽象数据类型,PowerDesigner^将该类中的持久属性转换成表的列。PowerDesigner提供了一些缺省的转换模式,比如数据类型的対应关系。用户可以定制转换的过程,他可以定义生成列的一些属性,名称、类型、长度等。

3.标识符

持久类的标识符会被转换成表的键,主标识符会被转换成主键。

4.操作

如果持久类的操作具冇存储过程或者存储函数的范型,相应的存储过程或者存储两数会被生成。

13.1.2关联转换

用户可以通过端点的度來控制外键是否为必需的,如果子表对应的持久类端的最小度为1,那么外键为必需的,即子表的外键列是非空的;如果为0,那么外键为可选的。

1.3.1.3继承转换

PowerDesigner会将继承转换成表和关联,川户通过棊木映射中提到的生成类型来控制转换,久成类型卷示对于该持久类单独的表会工成,生成类型辽移刃表示该类屈性生成的列会存在于其他类朱成的表中,没有单独的表会被生成。

PowerDesigner也支持混合映射模式的转换,不过这种转换并不削山用户可以参考PowerDesigner的文档查看详细用法。

1?3丄4其他映射模式的支持

PowerDesigner还可以通过嵌入来支持细粒度的转换。比如,在员工信息类屮,我们冇-?个屈性家庭住址.该屈性是对象类型.类型为地址类。我们不想为地址类单独生成表,只想把它嵌入到员工信息表中。在PowerDesigner中,我们可以通过,设置属性的类生成类型为嵌入來实现这一点。

1.3.2自动生成面向对彖模型

PDM到OOM的转换适合于自底向上的开发过程,对于以数据为屮心的应用系统或者访问己冇数据库上的应用系统,这种转换是非常冇用的。PDM到00M的转换类似于OOM到PDM转换的逆过程,PowerDesigner会把PDM中的元索转换成OOM中对应的元素。但是其中继承的转换是不可逆的,因为PDM中没有子类的概念,所以用户离要手工更改生成后的对彖模型。

1.3.3模型和并

PowerDesigner提供了模犁?合并功能,支持迭代式的模型自动转换。自动生成的目标模型并不一定完全满足我们的需耍,我们常常耍对它进行修改.但是源模型也发生了改变,有时我们既想同步II标模型和源模型,乂想保持我们对II标模型所作的修改,这时模型的合并显得非常重要。通过PowerDesigner的模型合并窗口,川户可以了解到雨新生成的模烈和当前的丨I标模烈的差异,从而叮以根据自C的需要, 选择是否保持或者覆盖以前的模型。

用八还对以通过PowerDesigner的流体模型了解源模型和目标模型间的转换关系。

1.4自动代码牛?成

从上面可以看到,通过PowerDesigner,设计人员可以方便的完成应用程序的设计.数据库设计以及0/R映射定义,那么编程人员通过编码实现这些设计。对丁0/R映射的实现,我们町以看到,不管使用什么技术,编码人员都需要进行人量的工作。1

我们知道MDA的I I标就是把现尙的以代码为屮心的丿F发模式转换成以模型为屮心的开发模式,让模型生成代码,把开发人员从繁琐的编码工作屮解放岀来,从而专注于系统的架构和业务逻辑上。PowerDesigner通过其町扩展性提供了对于MDA 的支持。在PowerDesigner中?所有的模型都是通过元模型进行描述的,可以通过GTL (通用模板语言)和VBScripl來访问这些元模熨。那么我们可以通过元模熨的信息來做他想要做的事,包括自动代码生成。

PowerDesigner已经提供了对于主耍持久化技术的支持,Hibernate、EJB3、NHibemate. https://www.360docs.net/doc/ea17049496.html,等,用户可以直接使用这些扩展模型。除了O/R映射实现代码,这些扩展模型还可以生成测试代码,方便川户对生成的代码进行测试。川户只需耍添加相应的扩展模型,并且通过扩展属性设亘特定扩展模型所需的信息,就可以实现自动代码生成。下图是应用Hibernate扩展模型空成映射文件的预览窗口。

川户也可以对这些扩展模空进行定制或者开发他口C的扩展模鑒以满足£l C的需要。关于如何扩展PowerDesigner, nf以参阅PowerDesigner用户文档和高级使用手册。

结论

我们可以看出,通过PowerDesigner的模型映射,设计人员可以很方便的定义O/R 映射,不管是手工的方式还是通过口动模型转换。O/R映射兀数据同模型保存在一起,保证了一致性,方便的和模型同步,提高了可维护性。通过自动代码生成,编码人员不再需耍进行繁琐、重复性的劳动.提高了开发的生产率。

关系映射annotation

一对一(One-To-One) 使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3).通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键上 添加唯一约束)。 1.共享主键的一对一关联映射: @Entity @Table(name="Test_Body") public class Body { private Integer id; private Heart heart; @Id public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @OneToOne @PrimaryKeyJoinColumn public Heart getHeart() { return heart; }

public void setHeart(Heart heart) { this.heart = heart; } } @Entity @Table(name="Test_Heart") public class Heart { private Integer id; @Id public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } 通过@PrimaryKeyJoinColumn批注定义了一对一关联 2.使用外键进行实体一对一关联: @Entity @Table(name="Test_Trousers") public class Trousers { @Id public Integer id;

关系与映射学习指导重点

关系与映射学习指导 学习目标 理解笛卡尔积、二元关系、运算关系等概念,理解映射、满射、单射、双射等概念,理解有关定理,掌握有关定理的证明方法和有关的例题的处理方法。 内容提要 (一) 笛卡尔积: A ×B ={(a ,b )|a ∈A , b ∈B },注意(a ,b )为有次序的元素偶. 从集合A 到B 中的关系: A ×B 中的每一子集R 称为从A 到B 中的关系. 若(a ,b )∈R ,则称a 与b 是R -相关的,记作aRb . 关系R 的定义域: Dom (R )={a |存在b ∈B ,使aRb }(?A ). 关系R 的值域: Ran (R )={ b |存在a ∈A ,使aRb }(?B ). 关系R 的象集: R (A ~)={b |存在a ∈A ~,使得aRb }(?B ). 其中集合A ~ ?A . 关系R 的逆: 设R ?A ×B ,则B ×A 的子集1 -R ={(b ,a )|aRb }称为R 的逆. 关系的复合: S R ={(a ,c )|存在b ∈B ,使得aRb ,bSc },其中R ?A ×B ,S ?B ×C . 设A ,B ,C ,D 为集合;R ?A ×B ,S ?B ×C ,T ?C ×D ,则有关系的逆与复合运算满足: (1) 1 1)(--R =R ; (2) 1 )(-R S =1 -R 1 -S ; (3) T (S R )=(T S ) R . (二) 映射: F ∶X →Y ,即?x ∈X ,有唯一y ∈Y ,使得xFy . 映射F 的象: y =F (x ),即对于每一x ∈X ,使得xFy 成立的y . 映射F 的原象: )(1 y F -,即对于y ∈Y ,使得xFy 成立的x (x ∈X ). 映射的复合: (G F )(x )=G (F (x )),其中F ∶X →Y ,G ∶Y →Z . 满射: 若f (X )=Y ,则称f 为从X 到Y 上的满射. 单射: 若?1x ,2x ∈X , 1x ≠2x ,有f (1x )≠f (2x ),则称f 为从X 到Y 上的单射. 双射: 若f 即是单射又是满射的. 逆映射: 由y =f (x )确定的从Y 到X 的映射1 -f :Y →X ,其中f ∶X →Y 是双射. 1: 设f ∶X →Y ,A ,B ?Y ,则逆映射1 -f 满足 (1)1-f (A ∪B )=1-f (A )∪1-f (B ); (2)1-f (A ∩B )=1 -f (A )∩1 -f (B ); (3)1 -f (A -B )=1 -f (A )-1 -f (B ). 结论2: 设f ∶X →Y (1) 若f 是单射,则对于X 的任意子集A ,有1 -f (f (A ))=A . (2) 若f 是满射,则对于Y 的任意子集B ,有f (1 -f (B ))=B . (三) 运算 运算: 映射f : A ×B →C 是一个从A ×B 到C 中的运算.特别的,映射f : A ×A →A 是A 上的一个运算,并且称运算f 在A 上封闭. 若f (a ,b )=f (b ,a ), 则称运算f 满足交换律;若f (f (a ,b ),c )=f (a ,f (b ,c )), 则称运算f 满足结合律. f 的右零元e : ?a ∈A , 使f (a ,e )= a ; f 的左零元e : ?a ∈A , 使f (e ,a )= a ; f 的零元e : 既是f 的左零元,又是f 的右零元.

必修1映射经典习题(含答案)

映射例题答案: 例1、在下列对应中、哪些是映射、那些映射是函数、那些不是?为什么? 设A={1,2,3,4},B={3,5,7,9},对应关系是f(x)=2x+1,x属于A 设A={1,4,9},B+{-1,1,-2,2,-3,3}对应关系是‘A中的元素开平方’ 设A=R,B=R,对应关系是f(x)=x的3次方,x属于A 设A=R,B=R,对应关系是f(x)=2x的2次方+1,x属于A 解析:1、是一一映射,且是函数 2、不是映射(象是有且唯一) 3、是一一映射,且是函数 4、是映射,但不是函数,因为B中不是所有值在A中都有对应。 例2、设A={a,b,c},B={0,1},请写出两个从A到B的映射 从A到B的映射共有2^3=8个: (a,b,c)→(0,0,0); (a,b,c)→(0,0,1); (a,b,c)→(0,1,0); (a,b,c)→(1,0,0); (a,b,c)→(0,1,1); (a,b,c)→(1,0,1); (a,b,c)→(1,1,0); (a,b,c)→(1,1,1)。 例3、假设集合m={0 -1 1} n={-2 -1 0 1 2} 映射f:M→N 满足条件“对任意的x属于M ,x+f(x) 是奇数”,这样的映射有____个 ①当x=-1时,x+f(x)=-1+f(-1)恒为奇数,相当于题目中的限制条件“使对任意的x属于M,都有x+f(x)是奇数” f(-1)=-2,0,2 ②当x=0时,x+f(x)=f(0),根据题目中的限制条件“使对任意的x属于M,都有x+f(x)是奇数”可知f(0)只能等于-1和1 ③当x=1时,x+f(x)=1+f(1)恒为奇数 f(1)=-2,0,2 综上①②③可知,只有第②种情况有限制,所以这样的映射共有3×2×3=18个 例4、设集合A={-1,0,1} B={2,3,4,5,6 } 从A到B的映射 f满足条件:对每个X∈A 有 f(X)+X为偶数那么这样的映射f的个数是多少?

UML类图-关系数据库之间的映射

UML类图与关系数据库之间的映射策略 摘要:UML是目前面向对象程序设计中的一种标准的建模技术。在关系数据库系统的设计过程中,我们可先利用UML建立商业模型,然后将其映射成表。本文主要讨论如何将UML 类图中的类映射成表的策略。 关键词:UML 类表关系建模映射 一.概论 在关系数据库设计中,用来创建数据库逻辑模型的标准方法是使用实体关系模型(ER 模型)。ER模型的中心思想是:可以仅通过实体和它们之间的关系合理地体现一个组织的数据模型。但这样做似乎对描述一个组织的信息过于简单化,并且词汇量也远远不足。所以,迫切需要使用更加灵活、健壮的模型来代替ER模型。 标准建模语言UML是由世界著名的面向对象技术专家发起的,在综合了著名的Booch 方法、OMT方法和OOSE方法的基础上而形成的一种建模技术,它通过用例图、类图、交互图、活动图等模型来描述复杂系统的全貌及其相关部件之间的联系。UML可以完成ER 模型的所有建模工作,而且可以描述ER模型所不能表示的关系。 在UML中,类图主要用于描述系统中各种类及其对象之间的静态结构。在关系数据库领域中,类与表相对应。本文主要讨论将UML类图中的类及其对象映射成关系型数据库中的表的策略。 二.UML类图中的类映射成表的策略 UML中的类图主要由类及其关系组成,而类之间的关系又可以细分为: (1)泛化:在UML类图中,如果子类型的接口包括超类型的接口中的每个元素。则超类与子类之间构成泛化关系。泛化通常可以用继承或授权的方式实现。 (2)关联:在UML类图中,关联表示类的实例之间存在的某种关系。它通常可以有1对1、1对多和多对多等情形。 (3)聚集:在UML类图中,聚集描述了部分与整体之间的关系。 (4)组成:在UML类图中,组成由聚集演变而成,它表示一个部分对象仅属于一个整体,并且部分对象通常与整体对象共存亡。 下面结合例子,分别讨论在将类映射成表的过程中这些关系的实现技术。 假设,有一个电脑公司专门从事软件开发,其项目主要由项目开发部门承担,它们之间构成多对多的关联(即一个项目可由多个部门承担,而一个部门又可以承担多个项目的开发工作);项目开发部门由经理及一般职员组成,项目开发部门和组成人员之间构成聚集关系,而人(抽象类)又可以进一步和一般职员及经理两个子类之间构成继承关系;每个项目具有一定的属性,它们之间构成组成关系。 综上所述,其主要关系的UML类图如图1所示。

关系与映射典型例题解析

关系与映射典型例题解析 例1 设集合A = {1, 2, 3, 4}上的二元关系R = {(1, 1), (1, 2), (2, 4), (3, 1), (3, 3)},S = {(1, 3), (2, 2), (3, 2), (4, 4)},用定义求11112,,,,,----R S S R R S R R S . [思路] 求复合关系R S ,就是要分别将R 中有序对(a , b )的第2个元素b 与S 中的每个有序对(c , d )的第1个元素进行比较,若它们相同(即b =c ),则可组成R S 中的1个元素(a , d ),否则不能. 幂关系的求法与复合关系类似. 求关系R 的逆关系,只要把R 中的每个有序对的两个元素交换位置,就能得到1-R 中的所有有序对. 解 R S = {(1, 1), (1, 2), (2, 4), (3, 1), (3, 3)} {(1, 3), (2, 2), (3, 2), (4, 4)} = {(1, 3), (1, 2), (2, 4), (3, 3), (3, 2)} S R ={(1, 3), (2, 2), (3, 2), (4, 4)} {(1, 1), (1, 2), (2, 4), (3, 1), (3, 3)} ={(1, 1), (1, 3), (2, 4), (3, 4)} 2R =R R = {(1, 1), (1, 2), (2, 4), (3, 1), (3, 3)} {(1, 1), (1, 2), (2, 4), (3, 1), (3, 3)} ={(1, 1), (1, 2), (1, 4), (3, 1), (3, 2), (3, 3)} 1-R ={(1, 1), (1, 2), (2, 4), (3, 1), (3, 3)}1- ={(1, 1), (1, 3), (2, 1), (3, 3), (4, 2)} 1-S ={(1, 3), (2, 2), (3, 2), (4, 4)}1- = {(2, 2), (2, 3), (3, 1), (4, 4)} 1-S 1-R ={(1, 1), (1, 3), (2, 1), (3, 3), (4, 2)} {(2, 2), (2, 3), (3, 1), (4, 4)} ={(1, 1), (3, 1), (4, 2), (4, 3)} 注:由例1可知,关系的复合运算不满足交换率,即R S ≠S R . 例2 对于以下给定的集合A 、B 和关系f ,判断是否构成映射f :B A →. 如果是,试说明f :B A →是否为单射、满射或双射的. (1)A ={1, 2, 3, 4, 5},B ={6, 7, 8, 9, 10},f ={(1, 8), (3, 9), (4, 10), (2, 6), (5, 9)}; (2)A ={1, 2, 3, 4, 5},B ={6, 7, 8, 9, 10},f ={(1, 7), (2, 6), (4, 5), (1, 9), (5, 10)};

映射详解(经典)

课题:§1.2.2映射 教学目的:(1)了解映射的概念及表示方法,了解象、原象的概念; (2)结合简单的对应图示,了解一一映射的概念. 教学重点:映射的概念. 教学难点:映射的概念. 教学过程: 一、引入课题 复习初中已经遇到过的对应: 1.对于任何一个实数a,数轴上都有唯一的点P和它对应; 2.对于坐标平面内任何一个点A,都有唯一的有序实数对(x,y)和它对应; 3.对于任意一个三角形,都有唯一确定的面积和它对应; 4.某影院的某场电影的每一张电影票有唯一确定的座位与它对应; 5.函数的概念. 二、新课教学 1.我们已经知道,函数是建立在两个非空数集间的一种对应,若将其中的条件“非空数集”弱化为“任意两个非空集合”,按照某种法则可以建立起更为普通的元素之间的对应关系,这种的对应就叫映射(mapping)(板书课题). 2.先看几个例子,两个集合A、B的元素之间的一些对应关系 (1)开平方; (2)求正弦 (3)求平方; (4)乘以2; 3.什么叫做映射? 一般地,设A、B是两个非空的集合,如果按某一个确定的对应法则f,使对于集合A中的任意一个元素x,在集合B中都有唯一确定的元素y与之对应,那么就称对应f:A→B为从集合A到集合B的一个映射(mapping). 记作“f:A→B” 说明: (1)这两个集合有先后顺序,A到B的射与B到A的映射是截然不同的.其

中f表示具体的对应法则,可以用汉字叙述. (2)“都有唯一”什么意思? 包含两层意思:一是必有一个;二是只有一个,也就是说有且只有一个的意思。4.例题分析:下列哪些对应是从集合A到集合B的映射? (1)A={P | P是数轴上的点},B=R,对应关系f:数轴上的点与它所代表的实数对应; (2)A={ P | P是平面直角体系中的点},B={(x,y)| x∈R,y∈R},对应关系f:平面直角体系中的点与它的坐标对应; (3)A={三角形},B={x | x是圆},对应关系f:每一个三角形都对应它的内切圆; (4)A={x | x是新华中学的班级},B={x | x是新华中学的学生},对应关系f:每一个班级都对应班里的学生. 思考: 将(3)中的对应关系f改为:每一个圆都对应它的内接三角形;(4)中的对应关系f改为:每一个学生都对应他的班级,那么对应f:B A是从集合B到集合A的映射吗? 5.完成课本练习 三、作业布置 补充习题

各种关系及对应的关联词

(一)并列关系 几个分句分别叙说有关联地几件事情、几种情况,或者说明同一事物地几个方面.分句间地关系是平列地,或者是相对待地.常用地关联词语是:资料个人收集整理,勿做商业用途 也,又,还,同时, 同样 既……也(又)也……也又……又一方面……(另)一方面 一边……一边有时……有时一会儿……一会儿 不是……而是是……不是 ①它既不需要谁来施肥,也不需要谁来灌溉. ②小刘一面擦汗,一面反驳. ③这武器不是机关枪,而是马克思列宁主义. (二)承接关系 几个分句按顺序叙述连续发生地动作或相关地事情.常用地关联词语是: 就、便、又、才、于是、然后、 接着、跟着、终于 首先……然后起先……后来 ①孔乙己知道自己不能和他们谈天,便只好向孩子们说话. ②文章必须不断修改,然后拿去发表. ③我先是诧异,接着是很不安. (三)选择关系 几个分句说明可供选择地事项;或者说出选定地一种,舍弃另一种.常用地关联词语是: 或或是或者或者……或者是……还是 不是……就是要么(要就是)……要么(要就是) 与其……不如(无宁) 宁可……也不 ①人地死,或重于泰山,或轻于鸿毛. ②不是在沉默中爆发,就是在沉默中死亡. ③文章与其长而空,倒不如短而精. ④战士们宁可牺牲生命,也不放弃阵地. (四)递进关系 后面地分句比前面地分句意思更进一层,一般由轻到重,由小到大,由浅到深,由易到难. 常用地关联词语是: 不但(不仅、不只、不光)……而且(还) 而且并且况且何况甚至 尚且……何况(更不用说)别说(不要说)……连(就是) ①这种桥不但形式优美,而且结构坚固. ②邮局离得很远,而且不通公共汽车. ③别说不让她去,连迟去一会儿都不乐意呢. (五)因果关系 几个分句,有说明原因地,有说明结果地.一般先说因,再说果;也有先说果,再说因地.常用地关联词语是: 因为……所以既然(既)……那么(就)由于……就(所以)

PowerDesigner中的对象与关系映射建模

PowerDesigner中的对象与关系映射建模 Sybase 公司PowerDesigner上海研发中心余亚,王晓昀 概述 从80年代中期开始,随着C++语言的成功,面向对象语言已经成为软件开发中的主导语言。现在很多商用软件,尤其是企业信息系统,都是使用面向对象语言进行开发的。应用面向对象方法,我们通过类来抽象不同类别的实体,属性来表示实体的静态特征,关联来抽象实体间的联系,继承来抽象类别的包含关系。 很多的应用程序都需要进行数据存储,关系型数据库是最常用的数据管理系统。在关系型数据库中,表、列和外键是抽象数据的基本元素。关系型数据库是建立在关系计算和布尔代数基础之上的,SQL是数据库的操作语言,通过关系运算,连接、联合等,来操作数据。 我们很容易的看出,面向对象模型和关系模型是不完全匹配的。比如 1. 对象可以存储到多张表,表也可以存储多个类的对象。 2. 对象之间的关系是双向的,而表之间的关系是单向的。 3. 对象之间有继承关系,表之间没有。 为了解决这种不匹配,人们定义了很多映射模式来建立两种模型间的对应关系。这些映射模式逻辑上解决了模型间的不匹配,使得面向对象程序能够正确地和关系关系型数据库进行交互,但是对于程序的开发,仍然有很多问题需要解决。 问题 对于设计人员来说,他们需要找到并且描述这两种模型元素间的映射关系,以便编程人员能够正确地实现数据的存储和查询。现在很多建模工具仅提供其中一种模型的支持,比如Together仅支持对象建模,ERWin仅支持数据建模。即使同时支持两种模型,这种支持也很不完整,比如Rose中的数据建模功能。分析设计人员常常需要两种不同的工具来进行建模,如果他们想描述这两种模型元素间的对应关系,他们只能通过文档或者表格的形式。这很容易产生错误,并且如果模型发生改变,这些文档需要手工更改,容易造成不一致,维护起来很困难。 对于编码人员,他们需要应用某种技术来实现模型的这种对应关系。如果通过语言提供的数据库访问接口,比如Java 的JDBC或者.Net的https://www.360docs.net/doc/ea17049496.html,,对于每一个对象的每一个存储操作,编码人员需要编写存取操作的SQL,数据库控制和访问代码,这是一项繁琐、重复性的劳动。即使应用O/R 映射的框架,比如Hibernate, EJB 3.0或者.Net平台的NHibernate,他们需要编写映射文件或者通过标记来定义O/R映射框架所需要的映射元数据。这些映射元数据只不过是我们在设计阶段定义的映射关系另外一种表现方式,转换成XML或者标记的方式,无疑这种转换增加了错误的可能性和维护的难度。 PowerDesigner解决之道 PowerDesigner提供对于多达8种模型的支持,其中包括面向对象模型和关系数据模型。作为一个集成的企业建模工具,PowerDesigner并不是简单的将几种模型工具罗列在一起。各种模型相互之间可以建立关联,通过这种关联,它提供了企业模型统一、一致的视图。其中模型间的映射和自动生成是建立模型间关联重要的手段。 模型可以描述系统的静态特征和动态特征,而静态特征可以用来表述系统的持久状态,比如面向对象模型中的实体类,数据库模型的表,XML模型中的元素节点等。在PowerDesigner中,我们可以在各种可以描述持久状态模型间建立映射,比如XML模型到面向对象模型间的映射,面向对象模型到关系数据模型的映射等。下面我们就来看一下,PowerDesigner 是如何支持面向对象模型到关系模型的映射的。

从类模型映射到关系模型

根据领域模型分析数据模型 Mapping from the Class Model to the Relational Model 从类模型映射到关系模型 Having described the two domains of interest and the notation to be used, we can now turn our attention as to how to map or translate from one domain to the other. The strategy and sequence presented below is meant to be suggestive rather than proscriptive - adapt the steps and procedures to your personal requirements and environment. 在需要对两个领域建模时,现在我们可以关注如何从一个领域映射或转换映射到另一个领域。以下的策略和方法,就是要启发,而不是强制的步骤和程序应用到您的个人需求和环境。 1. Model Classes Firstly we will assume we are engineering a new relational database schema from a class model we have created. This is obviously the easiest direction as the models remain under our control and we can optimise the relational data model to the class model. In the real world it may be that you need to layer a class model on top of a legacy data model - a more difficult situation and one that presents its own challenges. For the current discussion will focus on the first situation. At a minimum, your class model should capture associations, inheritance and aggregation between elements. 1. 类建模 首先,我们将假设从已创建的类模型生成一个新的关系数据库模型。这显然是最容易的,可控制的,可以通过关系数据库模型反向优化类模型。在现实世界中可能你需要将类模型作为数据模型的上层,这是更困难的情况,也对自己提出了一个挑战。对于目前的讨论将集中在第一种情况。至少,你的类模型应捕元素之间的联系、继承和聚集关系。 2. Identify persistent objects Having built our class model we need to separate it into those elements that require persistence and those that do not. For example, if we have designed our application using the Model-View-Controller design pattern, then only classes in the model section would require persistent state. 2. 确认持久对象 已建成的类模型,我们需要区分这些元素,那些需要持久化和那些不是。例如,如果我们设计我们的应用程序使用Model - View- Controller设计模式,那么只有MODEL模型部分需要持久化状态。

一函数与映射的基本概念

一、函数与映射的基本概念 一、基本概念 1.函数的定义: 设A 、B 是非空的数集,如果按某个确定的对应关系f ,使对于集合A 中的每一个元素x ,在集合B 中都有唯一的元素y 和它对应,那么就称这样的对应“f :A →B ”为从集合A 到B 的一个函数,记作y =f (x ),x ∈A ,其中x 叫做自变量.x 的取值范围A 叫做函数的定义域;与x 的值相对应的y 的值叫做函数值,函数值的集合C={y|y = f (x ),x ∈A }叫做函数的值域)(B C ?. 函数符号y =f (x )表示“y 是x 的函数”,或简记为f (x ).这里的“f ”即对应法则,它确定了y 与x 的对应关系.从函数概念看,“定义域、值域和对应法则”是构成函数的三个要素,其中,“定义域和对应法则”是两个关键性要素,定义域和对应法则一旦确定,函数的值域也随之确定. 2、对应法则 是指y 与x 的对应关系,它含有两层意思,一是对应的过程(形式),即由x 求出y 的运算过程,一般体现在函数的解析表达式中;二是运算的结果(本质),即y 的值,两个对应法则是否相同,要看对于同一个自变量的值所得到的函数值是否相同,有时形式上不同的对应法则本质上是相同的。例如:x x x y x y ++=+=2 2 cos sin 1与的对应法则是相同的。 3、同一个函数 两个函数当且仅当定义域和对应法则二者均相同时才表示同一个函数,而值域相同是两函数为同一函数的必要非充分条件. 4、变换字母 在函数的定义域及对应法则不变的条件下,用不同的字母表示自变量及对应法则,这对于函数 本身并无影响,比如f (x )=x 2+1,g (t )= t 2+1,都表示同一函数. 5、区间及其表示方法. 区间是数学中常用的表示数集的术语与符号.设b a R b a <∈,、, 规定闭区间: [a ,b ]={}b x a x ≤≤|,开区间:(a ,b )={}b x a x <<|, 半开半闭区间:(a ,b ]={}b x a x ≤<|,[a ,b )={}b x a x <≤|. 其中a 、b 分别为区间的左端点、右端点,b -a 为区间长度. 符号+∞读作正无穷大,﹣∞读作负无穷大,它们都不是一个具体的数. 用+∞或-∞作为区间的端点,表示无穷区间,并且只能用开区间的形式. 如:{}a x x a >=+∞|),(,{}}|),(b x x b <=-∞,R =+∞-∞),( 6.映射的概念: 映射是两个集合间的一种特殊的对应关系,即若按照某种对应法则f ,对于集合A 中的任一元素,在集合B 中都有唯一的元素与之对应,那么这样的对应(包括集合A 、B 和对应法则f )就叫做集合A 到集合B 的映射,记作f :A →B .在映射f :A →B 中,若A 中元素a 与B 中元素b 对应,则b 叫做a 的象,a 叫做b 的原象.因而,映射可以理解为“使A 中任一元素在B 中都有唯一象”的特殊对应(即单值对应).如果映射f :A →B 满足①A 中不同元素在B 中有不同的象;②B 中任一元素均有原象,那么这个映射就是A 到B 上的一一映射. 7、映射与函数的关系 函数是映射,但映射不一定是函数。由映射的概念可知,函数本质上是定义在两个非空数集

对象关系映射-复习

1、在Hibernate中,下列说法正确的有()。【选三项】A.Hibernate是一个开放源代码的对象关系映射框架 B.Hibernate对JDBC进行了轻量级的对象封装 C.Hibernate可以大大减少操作数据库的工作量 D.Hibernate提供了数据查询机制,但没有提供恢复机制 2、关于Hibernate,下列说法错误的是()。 A.Hibernate是一个对象-关系映射工具 B.在MVC模式中,Hibernate属于控制层 C.Hibernate在JDBC的方式上进行封装,以简化JDBC方式繁琐的编码工作D.在Hibernate中,可以通过xml格式的配置文件保存对象-关系的映射信息 3、在Hibernate中,下列关于SessionFactory说法正确的有()。【选两项】 A.它是线程安全的 B.它不是线程安全的 C.它是轻量级的 D.一个SessionFactory实例对应一个数据存储源 4、在Hibernate中,下列关于Session说法正确的有()。【选三项】 A.它是线程安全的 B.它不是线程安全的 C.它是轻量级的 D.Session也被称为持久化管理器,它提供了和持久化相关的操作 5、在Hibernate中,下列关于Transaction说法正确的有()。【选三项】 A.事务Transaction为应用程序指定以原子操作单元为范围的对象 B.在对数据库进行增加、修改和删除操作时一定要加上Transaction C.在对数据库进行查询操作时一定要加上Transaction D.获得Transaction的方法:Transaction tr = session.beginTransaction(); 6、在Hibernate中,如果数据库是MySql或者SQLServer,则generator属性值不可以使用()。 A.hilo B.native C.sequence D.indentity 7、在Hibernate中,如果数据库是Oracle或者DB2,则generator属性值不可以使用()。 A.hilo B.native

各种关系及对应的关联词讲解

各种关系及对应的关联词 (一)并列关系 几个分句分别叙说有关联的几件事情、几种情况,或者说明同一事物的几个方面。分句间的关系是平列的,或者是相对待的。常用的关联词语是: 1也,又,还,同时, 同样 2既……也(又)也……也又……又一方面……(另)一方面 一边……一边有时……有时一会儿……一会儿 3不是……而是是……不是 ①它既不需要谁来施肥,也不需要谁来灌溉。 ②小刘一面擦汗,一面反驳。 ③这武器不是机关枪,而是马克思列宁主义。 (二)承接关系 几个分句按顺序叙述连续发生的动作或相关的事情。常用的关联词语是:1就、便、又、才、于是、然后、 接着、跟着、终于 2首先……然后起先……后来 ①孔乙己知道自己不能和他们谈天,便只好向孩子们说话。 ②文章必须不断修改,然后拿去发表。 ③我先是诧异,接着是很不安。 (三)选择关系 几个分句说明可供选择的事项;或者说出选定的一种,舍弃另一种。常用的关联词语是: 1或或是或者或者……或者是……还是 2不是……就是要么(要就是)……要么(要就是) 3与其……不如(无宁) 4宁可……也不 ①人的死,或重于泰山,或轻于鸿毛。 ②不是在沉默中爆发,就是在沉默中死亡。 ③文章与其长而空,倒不如短而精。 ④战士们宁可牺牲生命,也不放弃阵地。 (四)递进关系 后面的分句比前面的分句意思更进一层,一般由轻到重,由小到大,由浅到深,由易到难。 常用的关联词语是: 1不但(不仅、不只、不光)……而且(还) 2而且并且况且何况甚至 3尚且……何况(更不用说)别说(不要说)……连(就是) ①这种桥不但形式优美,而且结构坚固。 ②邮局离得很远,而且不通公共汽车。 ③别说不让她去,连迟去一会儿都不乐意呢。 (五)因果关系 几个分句,有说明原因的,有说明结果的。一般先说因,再说果;也有先说果,再说因的。常用的关联词语是:

类比推理之对应关系

类比推理之对应关系 湖北分校张静 类比推理一向是广大考生的最爱,很多人都觉得这一模块相对简单,结合今年的国考,我们发现类比所考察的考点有对应关系、包含关系、同一关系和词义关系等,而大多数类比题目都以常识为出题背景,比如第97题的八卦:乾坤,第100题的音符∶乐谱∶五线谱,第103题的鸳鸯∶凤凰∶雌雄。整体来看,对应关系仍是我们国联考中的重要考查内容,而对应关系所涉及的内容却有很多。以今年国考为例: 第96题:小麦∶馒头 A. 麋鹿∶麝香 B. 叶绿体∶细胞 C. 乌贼∶墨汁 D. 棉花∶布鞋 本题考查的是原材料和成品之间的对应关系,小麦是做馒头的原料,馒头是小麦加工得到的成品,A中麝香是麝鹿体内的,C中墨汁是乌贼体内的,B中叶绿体也是位于细胞中,因此只能选择答案D,棉花是做布鞋的原材料,布鞋是成品。 第101题:经济赤字∶收入∶开支 A. 债务纠纷∶还钱∶借钱 B. 优胜劣汰∶适应∶淘汰 C. 销售利润∶进价∶售价 D. 背信弃义∶诺言∶谎言 本题考查的是概念运算的对应关系,开支-收入=经济赤字,而C选项中售价-进价=销售利润,因此正确选项是C。本题的考点我们在培训中曾经给大家讲过,因为2014浙江省考就曾考过类似的考点:路程:时间:速度 A. 压强:面积:压力 B. 功率:电流:电压 C. 本金:利率:利息 D. 原价:折扣:现价 因此,上过我们笔试培训课程的考生,面对这一题应该是得心应手。 第102题:铁匠∶火炉∶镰刀 A. 医学家∶试管∶药剂 B. 记者∶摄像机∶新闻稿 C. 科学家∶科技文献∶新产品 D. 网民∶互联网∶营销 本题考查的是职业和使用工具之间的对应关系,这也是国联考中常考的一种对应关系,铁匠使用火炉打制镰刀,医学家使用试管配制药剂。因此答案选A。

对象-关系数据库之间的映射1

对象-关系数据库之间的映射 为什么对象-关系数据库的映射对于现代开发者是一件大事呢?一方面,对象技术(例如 Java 技术)是应用于新软件系统开发的最常见的环境。另外,关系数据库仍然是许多人都青睐的持久信息存储方法,并且在较长时间内这种情况不太会改变。请继续读下去,了解如何使用这种技术。 为什么要写有关对象-关系数据库之间的映射的文章呢?因为在对象范例和关系范例之间“阻抗不匹配”。对象范例基于软件工程的一些原理,例如耦合、聚合和封装,而关系范例则基于数学原理,特别是集合论的原理。两种不同的理论基础导致各自有不同的优缺点。而且,对象范例侧重于从包含数据和行为的对象中构建应用程序,而关系范例则主要针对数据的存储。当为访问而寻找一种合适的方法时,“阻抗不匹配”就成了主要矛盾:使用对象范例,您是通过它们的关系来访问对象,而使用关系范例,则通过复制数据来联接表中的行。这种基本的差异导致两种范例的结合并不理想,不过话说回来,本来就预料到会有一些问题。使对象-关系数据库之间的映射成功的一个秘诀就是理解这两种范例和它们的差异,然后基于这些认识来进行明智的取舍。 本文应该能够消除现今开发周期中一些普遍共有的误解,对对象-关系数据库之间映射所涉及到的一些问题提供了切合实际的看法。这些策略基于我的开发经验,项目范围从小到大,涉及金融、销售、军事、远程通信和外购等行业。我已对使用 C++、 Smalltalk、Visual Basic 和 Java 语言编写的应用程序应用了这些原则。 如何将对象映射成关系数据库 在这一节中,我会描述一些将对象成功映射成关系数据库所需的基本技术。 ?将属性映射成列 ?在关系数据库中实现继承 ?将类映射成表 ?映射关联、聚合和组合 ?实现关系 将属性映射成列 类属性将映射成关系数据库中的零或几列。要记住,并不是所有属性都是持久的。例如,

对应与映射教案


一、我们学习过的 (一)函数的概念 (二)对应 1. 对于任何一个实数 a,数轴上都有唯一的点 P 和它对应;

2. 对于坐标平面内任何一个点 A,都有唯一的有序实数对(x,y)和它对应; 3. 对于任意一个三角形,都有唯一确定的面积和它对应; 4.某影院的某场电影的每一张电影票有唯一确定的座位与它对应; 二、我们要学习的新知识 (一) 、我们已经知道,函数是建立在两个非空数集间的一种对应,若将其中的条件“非空数集”弱化为“任意两个非空集合” ,按 照某种法则可以建立起更为普通的元素之间的对应关系,这种的对应就叫映射。 A 开平方 B A 求正弦 B
300 9 4 1 450 600 900
(1)
(2)
A
求平方
B
A
乘以 2
B
1 -1 2 -2 3 -3
1 2 3
(3)
(4)
在上面图中,图(1)(2)(3)(4)用箭头所标明的 A 中元素与 B 中元素的对应法则,是不是映射?是不是函数关系? , , , (二) 、映射:一般地,设 A、B 是两个非空的集合,如果按某一个确定的对应法则 f,使对于集合 A 中的任意一个元素 x,在集合 B 中都有唯一确定的元素 y 与之对应,那么就称对应 f:A ?B 为从集合 A 到集合 B 的一个映射。记作“f:A ? B” 说明: (1)这两个集合有先后顺序,A 到 B 的射与 B 到 A 的映射是截然不同的.其中 f 表示具体的对应法则,可以用汉字叙述. (2) “都有唯一”什么意思? 包含两层意思:一是必有一个;二是只有一个,也就是说有且只有一个的意思。 ⑶集合 A 中元素 x 称为原象,集合 B 中对应的元素 y 称为象 ㈢、例题分析:1、下列哪些对应是从集合 A 到集合 B 的映射? (1)A={P | P 是数轴上的点},B=R,对应关系 f:数轴上的点与它所代表的实数对应; (2)A={ P | P 是平面直角体系中的点},B={(x,y)| x∈R,y∈R},对应关系 f:平面直角体系中的点与它的坐标对应; (3)A={三角形},B={x | x 是圆},对应关系 f:每一个三角形都对应它的内切圆; (4)A={x | x 是新华中学的班级},B={x | x 是新华中学的学生},对应关系 f:每一个班级都对应班里的学生.

映射教学设计

《映射》教学设计 单位:西乡二中姓名:龚宗文 一、教材依据: 北京师范大学出版社数学教材必修一第二章第三节映射二、设计思想: 1.映射是近、现代数学中的一个非常重要的概念,其思想也渗透于整个中学数学教材之中。平面内的封闭图形与其面积,平面上的点与有序数对,在它们之间实际上是一种映射关系。于是在映射的观点之下,一些看上去很不相同的研究对象之间的联系被揭示了出来。 2.映射与前面学习的集合有着密切的关系,事实上,映射是两个集合中的一种特殊的对应关系,即如果按照某种对应法则,对于集合A中的任何一个元素,在集合B中都有惟一的元素与它对应,那么这样的对应(包括对应法则)叫做集合A到集合B的映时。 3.本小节是在函数概念之后学习的,是建立在数集上的对应扩展到任意集合上,符合学生的认知规律。《新课标》要求:了解映射的概念,本小节先讲映射的概念,后讲一一映射的概念,我们知道,对应包括“一对多”、“多对一”、“一对一”等情况,而映射是“象”惟一的这种特殊的对应,它包括“多对一”、“一对一”等情形.至于一一映射,它则是一种特殊的映射,应该指出,一一映射在数学中有着特殊重要的意义,对很多问题的研究都是通过—一映射将问题转化,并获得解决的。例如平面解析几何中通过点到数对的一一映射将几何问题化成代数问题解决,通过“取对数”的—一映射将数的乘除

运算转化为加减运算等等。在本章中介绍反函数时,也要用到一一映射的概念,可见,学习映射(特别是—一映射)的概念,对理解、掌握整个高中数学内容有着重要作用 4.映射是将生活中的诸多问题抽象为数学问题,因而,在学习中使学生认识到“数学就在身边,生活离不开数学”,同时使学生意识到将映射中的集合数字化就是函数。 三、教学目标: 1.知识与技能:了解映射的概念,掌握象、原象等概念及其简单应用。2.过程与方法;学会用集合与对应的语言来刻画函数,体会对应关系在刻画函数概念中的作用。 3.情感、态度与价值观:树立数学应用的观点,培养良好的思维品质。 四、教学重点:映射的概念。 五、教学难点:映射的概念。 六、教法选择:问题引导式 七、学法指导:以问题为导向,抓住映射的本质,来判断一个对应是否为映射,并会求解像与原像。 八、教学准备:教师准备:熟悉教材和资料,做好教材分析 学生准备:预习教材 九、教学过程: 情境导入 1.函数的概念是什么?(由学生回顾回答) (设A,B是两个非空数集,如果按照某种对应关系f,集合A中的每

对象关系在模型中的实现案例

对象关系在模型中的实现案例 —基础软件部吴春云一、案例介绍: 在一个项目中,存在多个业务对象,各个业务对象间存在各种关系。从结构上来看,对象关系可以分为依赖、继承、关联、聚合、组合,从数量上来看,对象关系可以分为一对一、一对多、多对多。本案例主要介绍如何在开发中通过代码来表示对象间的各种关系,并基于这种关系进行前后端数据交互及持久化。 二、关系的概念及实现: 1.结构关系 1.1继承 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。所以继承关系,确切的说是类与类之间的关系,但是对象又是类的实例,所以就这个角度理解为对象之间的关系,例如父与子的关系,动物与狗的关系,汽车与大众的关系等。 工作流结构部分的实体类:SysNode(环节)、SysTransactNode (办理环节)、SysActivityNode(活动环节)、SysDecisionNode(决策环节)应用了这种继承关系,使得子类拥有了父类环节中的属性,但子类本身代码大大简化,结构清晰。 public class SysTransactNode extends SysNode{}

public class SysActivityNode extends SysTransactNode{} public class SysDecisionNode extends SysTransactNode{} 1.2依赖 依赖就是一个对象A使用到了另一个对象B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是对象B的变化会影响到对象A。比如某人要过河,需要借用一条船,此时某人与一条船之间的关系就是依赖。表现在代码层面,一般指由局部变量、返回值建立的对于其他对象的调用关系,如对象B作为参数被对象A在某个方法中使用。 1.3关联 关联体现的是两个类之间语义级别的一种强依赖关系,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。 1.4聚合 聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,为多个整体对象共享,比如计算机与CPU、公司与员工的关系等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。 1.5组合 组合也是关联关系的一种特例,它体现的是一种contains-a的

相关文档
最新文档