从实体关系图生成类图
- 格式:pdf
- 大小:817.45 KB
- 文档页数:8
继承、实现、依赖、关联、聚合、组合的联系与区别分别介绍这几种关系:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java 中此类关系通过关键字extends明确标识,在设计时一般没有争议性;实现指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;依赖可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;关联他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;聚合聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;组合组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;聚合跟组合其实都属于关联只不过它们是两种特殊的关联因为本是同根生所以它们之间难免会有相似之处下面让我们一起来看一下它们之间有何不同聚合与组合的概念相信不用我在此赘述大家就已经了解了下面直接上例子程老师的《大话》里举大那个大雁的例子很贴切在此我就借用一下大雁喜欢热闹害怕孤独所以它们一直过着群居的生活这样就有了雁群每一只大雁都有自己的雁群每个雁群都有好多大雁大雁与雁群的这种关系就可以称之为聚合另外每只大雁都有两只翅膀大雁与雁翅的关系就叫做组合有此可见聚合的关系明显没有组合紧密大雁不会因为它们的群主将雁群解散而无法生存而雁翅就无法脱离大雁而单独生存——组合关系的类具有相同的生命周期聚合关系图:组合关系图:从从代码上看这两种关系的区别在于:构造函数不同雁群类:[csharp]view plaincopy1.public class GooseGroup2. {3.public Goose goose;4.5.6.public GooseGroup(Goose goose)7. {8.this.goose = goose;9. }10. }[csharp]view plaincopy1.public class GooseGroup2. {3.public Goose goose;4.5.6.public GooseGroup(Goose goose)7. {8.this.goose = goose;9. }10. }大雁类:[csharp]view plaincopy1.public class Goose2.{3.public Wings wings;4.5.public Goose()6. {7. wings=new Wings();8. }9.}[csharp]view plaincopy1.public class Goose2.{3.public Wings wings;4.5.public Goose()6. {7. wings=new Wings();8. }9.}聚合关系的类里含有另一个类作为参数雁群类(GooseGroup)的构造函数中要用到大雁(Goose)作为参数把值传进来大雁类(Goose)可以脱离雁群类而独立存在组合关系的类里含有另一个类的实例化大雁类(Goose)在实例化之前一定要先实例化翅膀类(Wings)两个类紧密耦合在一起它们有相同的生命周期翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在信息的封装性不同在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的而在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在大雁类中。
复习题一、判断题(每题2分,共30分)1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。
(对)2.数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义.(错)3。
JAVA语言编译器是一个CASE工具.(对)。
4.软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。
(错)5。
软件模块之间的耦合性越弱越好.(对)6。
数据库设计说明书是一个软件配置项(对)7。
在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。
(错)8.过程描述语言可以用于描述软件的系统结构。
(错)9.如果通过软件测试没有发现错误,则说明软件是正确的。
(错)10。
快速原型模型可以有效地适应用户需求的动态变化。
(对)11.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。
(对)12.集成测试主要由用户来完成。
(错)13.确认测试计划应该在可行性研究阶段制定(错)14.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。
(错)15.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。
(对)16。
在可行性研究中最难决断和最关键的问题是经济可行性。
(╳)17。
耦合是指一个模块内各个元素彼此结合的紧密程度.(╳)18. 一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物。
( √)19。
概要设计阶段完成的主要文档是概要设计说明书。
(√)20.过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解。
(╳)21。
程序设计语言中应绝对禁止使用GOTO语句。
(╳) 22.类是关于对象性质的描述,由方法和数据组成。
(√)23。
随着软件技术的发展,人们逐渐认识到编码不仅要强调效率还要强调清晰。
(√)25.为保证程序的安全,必须做到程序中没有任何错误存在,即容错.(╳)26。
UML类图及类与类之间的关系原⽂地址:类图⽤于描述系统中所包含的类以及它们之间的相互关系,帮助⼈们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
1. 类类(Class)封装了数据和⾏为,是⾯向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。
在系统中,每个类都具有⼀定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。
⼀个类可以有多种职责,设计得好的类⼀般只有⼀种职责。
在定义类的时候,将类的职责分解成为类的属性和操作(即⽅法)。
类的属性即类的数据职责,类的操作即类的⾏为职责。
设计类是⾯向对象设计中最重要的组成部分,也是最复杂和最耗时的部分。
在软件系统运⾏时,类将被实例化成对象(Object),对象对应于某个具体的事物,是类的实例(Instance)。
类图(Class Diagram)使⽤出现在系统中的不同类来描述系统的静态结构,它⽤来描述不同的类以及它们之间的关系。
在系统分析与设计阶段,类通常可以分为三种,分别是实体类(Entity Class)、控制类(Control Class)和边界类(Boundary Class),下⾯对这三种类加以简要说明:(1) 实体类:实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,⼀般使⽤数据库表或⽂件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。
实体类来源于需求说明中的名词,如学⽣、商品等。
(2) 控制类:控制类⽤于体现应⽤程序的执⾏逻辑,提供相应的业务操作,将控制类抽象出来可以降低界⾯和数据库之间的耦合度。
控制类⼀般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有⼀个商品增加类,注册对应有⼀个⽤户注册类等(3) 边界类:边界类⽤于对外部⽤户与系统之间的交互对象进⾏抽象,主要包括界⾯类,如对话框、窗⼝、菜单等。
在⾯向对象分析和设计的初级阶段,通常⾸先识别出实体类,绘制初始类图,此时的类图也可称为领域模型,包括实体类及其它们之间的相互关系。
UML建模—EA创建Class(类图)1.新建类图2.添加类或接⼝在类图可以捕获系统-类-和模型组件的逻辑结构。
它是⼀个静态模型,描述存在什么,有哪些属性和⾏为,⽽不管如何去做。
说明关系之间的类和接⼝; 泛化、聚合和关联是在分别反映继承、组成或使⽤和连接。
3.⼯具栏从⼯具箱中的类页⾯选择类图元素和连接器。
(1)Package:包包是⼀个命名空间,也是⼀个元素。
可以包含在其它命名空间中。
包可以拥有其他包或与其他包合并,它的元素可以导⼊包命名空间中。
除了要在项⽬浏览器中使⽤包来组织您的项⽬的内容外,您还可以拖动包到图中图 (⼤多数图类型、标准和扩展)以描述结构或关系,包括包的导⼊或合并。
(2)Interface: 接⼝接⼝是实施者需要满⾜的⾏为规范(或合同)。
通过实现接⼝,类可以保证提供所需的⾏为,系统可以相同的⽅式处理⾮相关元素;也就是说,您通过共同的接⼝,使⽤复合结构图中的接⼝。
接⼝是绘制⽅式类似于类,指定操作,如下所⽰。
它们可以还可以被画成⼀个圆圈,但没有显式的操作。
右击该元素并选择使⽤圆表⽰法上下⽂菜单选项样式,可以在两者之间进⾏切换。
实现以⽆⽬标箭头的实线绘制画成⼀个圆的接⼝连接器。
接⼝不能实例化(即,不能从接⼝创建对象)。
您必须创建该类实现接⼝规范,并在类中定义每个接⼝操作。
然后,您可以实例化类。
(3)Class: 类类是对象类型的表现形式。
反映出这类对象在系统内的的结构和⾏为。
它是⼀个模板,⽤它可以创建实际运⾏的实例,虽然类可以定义控制其⾃⼰的执⾏,或者定义为模板或参数类,必须由任何绑定类定义指定参数。
类可以有属性(数据)和⽅法 (操作或⾏为)。
类可以从⽗类别继承特征和委托其他类的⾏为。
类模型通常描述系统的逻辑结构,⽽是构成组件的构造块。
类的顶部,如下所⽰,显⽰与类关联的属性(或数据元素)。
这些包含对象在运⾏时的状态。
如果该信息保存到数据存储区,并可以重新加载,它被称为持久的。
下半部分包含类的操作(或在运⾏时的⽅法)。
1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。
对象引用本身就是有向的,更适合表达我们所讨论的那种关系。
所以这种关系在设计的时候比较少用到,关联一般都是有向的。
使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。
没有生命期的依赖。
一般是表示为一种引用。
生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。
自身关联(反身关联):自己引用自己,带着一个自己的引用。
代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。
2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。
这句话怎么解,请看下面组合里的解释)。
代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。
但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。
类图的概念一、概述类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。
类图是定义其他图的基础,在类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。
类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)。
二、类类定义了一组有着状态和行为的对象。
其中,属性和关联用来描述状态。
属性通常用没有身份的数据值表示,如数字和字符串。
关联则用有身份的对象之间的关系表示。
行为由操作来描述,方法是操作的实现。
对象的生命期则由附加给类的状态机来描述。
1、名称:类的名称是每个类中所必有的构成元素。
2、属性(Attribute)(1)可见性:类中属性的可见性主要包括公有(public)、私有(Private)和受保护(Protected)。
在UML中,公有类型的用“+”表达,私有类型用“-”表达,而受保护类型则用“#”表达。
UML 的类中不存在默认的可见性,如果没有显示任何一种符号,就表示没有定义该属性的可见性。
(2)属性名:按照UML的约定,单字属性名小写。
如果属性名包含多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。
(3)属性字符串。
属性字符串用来指定关于属性的其他信息,例如某个属性应该是永久的。
任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。
(4)类属性。
属性也可以作为一个类属属性来定义,这就意味着此属性被该类的所有对象共享。
在类图中,类属性带有一条下划线。
3、操作。
类的操作是对类的对象所能做的事务的抽象,相当于一个服务的实现。
4、职责:在操作部分下面的区域,可以用来说明类的职责。
UML中各种图的画法(全)UML中各种图的画法(全)一、UML中基本的图范畴:在 UML 2 中有二种基本的图范畴:结构图和行为图。
每个 UML 图都属于这二个图范畴。
结构图的目的是显示建模系统的静态结构。
它们包括类,组件和(或)对象图。
另一方面,行为图显示系统中的对象的动态行为,包括如对象的方法,协作和活动之类的内容。
行为图的实例是活动图,用例图和序列图。
二、UML中的类图:1.类图的表示:类的 UML 表示是一个长方形,垂直地分为三个区,如图 1 所示。
顶部区域显示类的名字。
中间的区域列出类的属性。
底部的区域列出类的操作。
在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。
描述:顶部区域显示类的名字。
中间的区域列出类的属性。
底部的区域列出类的操作。
当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。
·类名:如果是抽象类,则采用斜体·类属性列表:name : attribute type 如 flightNumber : Integer,这是最常见的表达形式n ame : attribute type = default value 如balance : Dollars = 0,这是带有默认值的表达形式·类方法列表:name(parameter list) : type of value returned注意:在业务类图中,属性类型通常与单位相符,这对于图的可能读者是有意义的(例如,分钟,美元,等等)。
然而,用于生成代码的类图,要求类的属性类型必须限制在由程序语言提供的类型之中,或包含于在系统中实现的、模型的类型之中。
2.继承的表示:为了在一个类图上建模继承,从子类(要继承行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。
ER 图、对象联系图和类图的特征与比较第一部分:简述 ER 图,对象联系图和类图的基本概念和特点 ER 图:ER 图是用来表示实体联系模型(Entity Relationship Model )的方式,这个模型可以直接从现实世界中抽象出实体类型和实体间的联系。
举个例子来说。
ER 图的约定表示方法。
矩形框,表示实体类型(即考虑问题的对象) 菱形框,表示联系类型(即实体间的联系) 椭圆形框,表示实体类型和联系类型的属性(对于键的属性,在属性下面划一 条横线)直线,联系类型与其涉及的实体类型之间用直线相连,用来表示他们之间的联 系,在直线端部标注联系的种类(1:1,1:N,M:N ) 再通过一个例子来说明用 ER 图表示现实世界的特点:1)考虑零件和工程的关系,零件可以服务于不同的工程,一个工程也需要各种不 同的零件,因此,建模的时候零件和工程是一个多对多的联系。
a) b) c) d) J#、项目名称JNAME 、项目开工日期 DATE ;而part 的属性有零件号 P#、 零件名PNAME 、零件颜色 COLOR 以及零件重量 WEIGHT 。
联系类型从上面的可以看出,ER 图作为对现实世界的抽象,可以很方便的表示出现实 中实体以及实体间的联系, 不同形状的框代表不同的概念,让读者一目了然哪些是实体,哪些是联系,哪些是属性。
实体间的数量对应关系也通过连线两端的数字记 号体现出来了。
可以说, ER 图是一种简洁的模拟现实世界的符号方法。
对象联系图:使用类型构造图的思想, 可以把ER 图扩充成为对象联系图。
对象联系图可以完整地揭 示数据间的联系。
对象联系图有一下几个基本成分:F 面对上述例子做一个说明,同时给出(1) (2) (3)(4) 首先确定实体类型,这个例子中, 再确定联系类型,正如前面所述, 把实体类型和联系类型组合成 确定实体类型和联系类型的实体只有两个,就是工程和零件工程和零件的关系是 M:N 的关系ER 图(见图1) 在这个例子中,Project 的属性有项目号椭圆,表示对象类型(相当于 ER 图中的实体类型)小圆圈,表示属性是基本数据类型(例如整型、实型、字符串型等) 椭圆之间的边,表示对象之间的嵌套或引用单箭头(- >)表示属性值是单值(属性可以是基本数据类型, 也可以是另一个对象类型,即元组类型)双箭头(- >> )表示属性是多值(属性可以是基本数据类型,也可以是另一个 对象类型,即关系类型)双线箭头(= > )表示对象类型之间的超类与子类联系(从子类指向超类) 双向箭头( <―― >)表示两个属性之间的联系为逆联系。
关于ER图和UML图之间的对⽐ER图:实体-联系图(Entity-Relation Diagram)⽤来建⽴数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表⽰实体(即数据对象)、属性和联系的⽅法,⽤来描述现实世界的概念模型构成E-R图的基本要素是实体、属性和联系,其表⽰⽅法为: 实体型:⽤矩形表⽰,矩形框内写明实体名; 属性:⽤椭圆形或圆⾓矩形表⽰,并⽤⽆向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加下划线; 联系:⽤菱形表⽰,菱形框内写明联系名,并⽤⽆向边分别与有关实体连接起来,同时在⽆向边旁标上联系的类型 在E-R图中要明确表明1对多关系,1对1关系和多对多关系。
1对1关系在两个实体连线⽅向写1; 1对多关系在1的⼀⽅写1,多的⼀⽅写N; 多对多关系则是在两个实体连线⽅向各写N,M统⼀建模语⾔UMLER图与UML图中UML是⼀种定义良好、易于表达、功能强⼤且普遍适⽤的建模语⾔。
它溶⼊了软件⼯程领域的新思想、新⽅法和新技术。
它的作⽤域不限于⽀持⾯向对象的分析与设计,还⽀持从需求分析开始的软件开发的全过程。
⾯向对象技术和UML的发展过程可⽤上图来表⽰,标准建模语⾔的出现是其重要成果。
在美国,截⽌1996年10⽉,UML获得了⼯业界、科技界和应⽤界的⼴泛⽀持,已有700多个公司表⽰⽀持采⽤UML作为建模语⾔。
1996年底,UML已稳占⾯向对象技术市场的85%,成为可视化建模语⾔事实上的⼯业标准。
1997年11⽉17⽇,OMG采纳UML1.1作为基于⾯向对象技术的标准建模语⾔。
UML代表了⾯向对象⽅法的软件开发技术的发展⽅向,具有巨⼤的市场前景,也具有重⼤的经济价值和国防价值。
ER图与UML图中UML的内容⾸先,UML融合了Booch、OMT和OOSE⽅法中的基本概念,⽽且这些基本概念与其他⾯向对象技术中的基本概念⼤多相同,因⽽,UML必然成为这些⽅法以及其他⽅法的使⽤者乐于采⽤的⼀种简单⼀致的建模语⾔;其次,UML不仅仅是上述⽅法的简单汇合,⽽是在这些⽅法的基础上⼴泛征求意见,集众家之长,⼏经修改⽽完成的,UML扩展了现有⽅法的应⽤范围;第三,UML是标准的建模语⾔,⽽不是标准的开发过程。
Python设计模式-UML-类图(ClassDiagram)简介类图是⾯向对象分析和设计的核⼼,⽤来描述系统各个模块中类与类之间、接⼝与接⼝之间、类与接⼝之间的关系,以及每个类的属性、操作等特性,⼀般在详细设计过程中实施。
类图本⾝就是现实世界的抽象,是对系统中各种概念进⾏建模,并描绘出它们之间的关系,所以类图关注的对象就是元素及元素之间的关系。
类图建模步骤 - 抽象出类实体 - 识别出类的主要属性 - 画出类之间的关系 - 对各个类进⾏分析、梳理、设计类图的元素类图中包含以下⼏种模型元素:类、接⼝、关系、协作、注释、约束、包。
类 在UML的图形表⽰中,类的表⽰法是⼀个矩形,有三格组成,分别是类名、类属性、类操作。
抽象类中的类名及抽象⽅法都⽤斜体表⽰。
- 类名:⾸字母⼤写 - 类属性:格式为可见性属性名:类型 =默认值,如-name: String 可见性包括四种: + public - private # protected * package 属性名:单字属性名⼩写;多字属性名出第⼀个单词外其余单词的⾸字母⼤写 - 类操作:格式为可见性操作名(参数):返回值类型,如+getName(): String接⼝ 在UML的图形表⽰中,接⼝的表⽰法是分为两种:圆形表⽰法和构造型表⽰法。
接⼝由两栏组成,第⼀栏顶端是接⼝名称,第⼆栏是接⼝⽅法。
接⼝⽆属性只包含操作,且没有对外可见的关联。
- 圆形表⽰法 - 构造型表⽰法关系类图中类与类之间有泛化、依赖、关联、聚合、组合关系;接⼝与接⼝之间有继承关系;类与接⼝之间有实现关系。
这些关系本⾝就是类图中的元素,⽤不同的连线表⽰。
- 泛化关系 - 依赖关系 - 关联关系 - 聚合关系 - 组合关系 - 实现关系 类图中的关系较为复杂,以下分别详述。
协作 协作是指⼀些类、接⼝、关系等元素提供的交互⾏为,能够协助其他元素执⾏活动、实现功能的辅助类。
注释 对某些类和接⼝进⾏注释。
关于ER图、对象联系图、类图的比较分析一、目标:本文着眼于ER图、对象联系图和类图的分析比较。
通过自己对书上内容的理解,分析了各自的应用范围,优缺点,以期达到合理使用的目的,同时探讨了最好的表达方式。
二、基本概念:●实体联系模型:实体联系模型(Entity Relationship Model, ER模型)是最早提出来的用于描述实体类型和实体间联系的一种模型图。
ER图是直观表示概念模型的有力工具。
在ER图中有下面四个基本成分:(1)矩形框:表示实体类型(考虑问题的对象)(2)菱形框:表示联系类型(实体间的联系)(3)椭圆形框:表示实体类型和联系类型的属性。
(4)直线:联系类型和其涉及的实体类型之间以直线连接,用来表示他们之间的联系,并在直线端部标注联系的种类(1:N、M:N、1:1)。
ER图有两个明显的优点:一是接近人的思维,容易理解,二是与计算机无关,用户容易接受。
可以说,ER图是对原始问题的最初的抽象,简单易懂,遇到实际问题,首先想到的就是用ER图来抽象。
用ER图,也很好将实际问题转换成我们所熟悉的关系模型。
从而将问题的解答移植到关系数据库模型中去解决。
以下谈谈如何将ER图表示的实体联系转换成关系模型。
(1)一对一联系具有一对一联系的实体联系图图对于图示的具有一对一联系的实体联系图,如果实体E1是全参与,而E2是全参与或部分参与,则可以将其转换为如下二个关系R1(k, a, h, s);R2(h, b)其中第一个关系中的h是外键;如果E2是全参与,而 E1是全参与或部分参与,则可以转换为R1(k, a);R2(h, b, k, s)其中第二个关系中的k是外键。
(2)一对多联系具有一对多联系的实体联系图对于图示的具有一对多联系的实体联系图,如果实体E2是全参与,则可以转换成如下二个关系,其中第二个关系中的k是外键R1(k, a);R2(h, b, k, s)如果实体E2是部分参与,则必须可转换成如下三个关系R1(k, a);R2(h, b);R3(h, k, s)其中第三个关系中的k是外键。
eclipse下⽣成Java类图和时序图,⽣成UML图1.安装和使⽤AmaterasUML⽤法:在⼯程名称右键选择New-Other,弹出新建对话框可以看到AmaterasUML选项,在其中选择Class Diagram,并命名后得到.cld⽂件,接着我们把⼯程network包中三个java⽂件拖拽到.cld⽂件视图中,AmaterasUML瞬间帮我们⽣成了这三个类的关系图2.安装和使⽤ModelSpoon功能:能将Eclipse中现有的java类⽣成类图⼀:什么是ModelGoon?它是⼀个Eclipse插件,⽤于基于UML图的模型设计,以及逆向⼯程(即从已有源代码⽣成类图)。
⼆:安装下载ModelGoon-4.4.1-site.zip到电脑,从eclipse中选择help-->install new software.在work with-->Add选择已经下载的ModelGoon-4.4.1-site.zip,⼀路next完成安装。
三:使⽤安装成功后,在eclipse中File-->new-->other-->ModelGoon Diagrams选择Class Diagram,在⾃⼰Java⼯程中创建⼀个后缀是.mgc的⽂件,⽤它来⽣成类图。
⽤法很简单,直接把Java类拖拽到这个⽂件视图中,就会⾃动⽣成UML类图。
2.重启Eclipse3.新建UML图:File->New->Green UML Class Diagram->输⼊UML图名->OK->⾃⼰所需的类右键->Green UML->Add to last viewed diagramPlantUML —— 应⽤于 Eclipse 的简单快速的 UML 编辑软件在应⽤系统软件开发过程中,如果软件由很多对象组成,它的结构仅仅凭借分析很难理清,同时为了有利于软件的开发及重⽤,所以在开发系统之前建模是⾮常有必要的,在众多的建模⽅法中选择⼀种适应⾃⾝应⽤特点,⽅便不同背景的⼈们交流的建模⽅法已经成为开发⼈员及⽤户的迫切愿望。
Generate class diagrams from entity relationship diagrams Written Date : October 30, 2009
Visual Paradigm for UML (VP-UML) supports generating class diagrams from ER diagrams
(entity relationship diagram). Entities and relationships are mapped with classes and associations accordingly. This tutorial teaches generating class diagrams from entity relationships diagrams and how to synchronize documentation between classes and entities.
To generate class diagrams from entity relationship diagrams:
1.We first create Entity Model in Model Explorer. Right click on the Model Explorer and select
Model > New Model.
Create entity model in Model Explorer
2.Enter the name as Entity Model.
Input "Entity Model" in model specification dialog box
3.Now let's create entity relationship diagram under Entity Model. Right click on the Entity Model
and select Diagram > Database Modeling > Entity Relationship Diagram.
Create entity relationship diagram under "Entity Model"
4.Develop the following entity relationship diagram.
Device support history ER diagram
5.Repeat the above steps to create the following entity relationship diagram under Entity Model.
Device purchase ER diagram
6.Once the entity relationship diagrams are ready, we can then generate class diagrams from our
entity relationship model. Select Tools > Object-Relational Mapping (ORM) > Synchronize to Class Diagram.
Select "Synchronize to Class Diagram" menu item
7.The Synchronize form Entity Relationship Diagram to Class Diagram dialog will be shown.
The entity relationship diagrams in your project shows on the left hand side of the table, and the target class diagram shows on the right hand side.
ER diagram to UML class diagram mapping dialog box
8.Click on the entity relationship diagram cell and the preview will be show up.
Preview ERD diagram
9.You can name the target class diagram directly in the class diagram cell, or you can synchronize
to existing class diagram (if any).
Assign meaningful name to UML class diagram
10.Press OK to proceed.
11.Now the Synchronize to Class Diagram dialog will show up. The mapping between entity
name and class name, also the column name and attribute name will be listed in the dialog.
Let's change the name of the User class to Customer. And change the attribute name from
firstname to firstName.
Entity column to class attribute mapping table
12.We can specify the target for storing the output class diagram. Select Specify... in the Target
Parent combo box.
Selecting target model
13.Select the root node in the tree and press the New Model button. Name the model as Class
Model.
Create "Class Model"
14.Press OK to proceed.
15.Now the class diagrams being generated.
Generated UML class diagrams
16.Let's try to modify the documentation of the class PriorityType.
Modify "Priority Type" class's documentation
17.You can synchronize the documentation from class model to the associated entity model by right
click on the diagram and select Utilities > Synchronize Class Documentation to ERD.
Synchronize class documentation to ER Diagram
18.Synchronize Class Documentation to ERD dialog will list class model which contain different
documentation with the entity model.
19.Click on the entity PriorityType in the list and the differences of documentation between class
and entity model will be shown.
Synchronize class documentation dialog box
20.Select the checkbox under Synchronize column to specify the model you would like to
synchronize their documentation.
Check synchronize classes and entities
21.By select Synchronize members checbox, the documentation of the class attribute and entity
column will also being synchronized.
Check "Synchronize members" checkbox
22.Uncheck the Hide equals checkbox and all the classes/entity will be listed, even their
documentation are same.
Visual Paradigm for UML home page
(/product/vpuml/)
UML tutorials (/product/vpuml/tutorials.jsp)
Visual Paradigm home page (/)。