第6章 类图和对象图.ppt_第1页
第6章 类图和对象图.ppt_第2页
第6章 类图和对象图.ppt_第3页
第6章 类图和对象图.ppt_第4页
第6章 类图和对象图.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 类图和对象图,学习内容,类图 绘制类图 对象图 绘制对象图 创建对象图案例分析,6.1 类图,6.1.1 类图的概念 类图显示了系统的静态结构,而系统的静态结构构成了系统的概念基础。 类图,就是用于对系统中的各种概念进行建模,并描绘出它们之间关系的图。 在大多数的 UML 模型中,我们可以将这些概念的类型概括为以下四种,分别是: 1.类 2.接口 3.数据类型 4.构件,6.1 类图,6.1.1 类图的概念 在类图中,具体来讲它一共包含了以下几种模型元素,分别是:类、接口、依赖关系、泛化关系、关联关系以及实现关系。 类图可以创建约束、注释和包等。,6.1 类图,6.1.1 类图的概念

2、类图的作用是对系统的静态视图进行建模。当对系统的静态视图进行建模时,通常是以以下三种方式来使用类图。 1. 为系统的词汇建模。 2. 模型化简单的协作。 3. 模型化逻辑数据库模式。,6.1 类图,6.1.2 类的组成 类是面向对象系统组织结构的核心。类是对一组具有相同属性、操作、关系和语义的事物的抽象。 在UML的图形表示中,类的表示法是一个矩形,这个矩形由三个部分构成,分别是:类的名称(Name)、类的属性(Attribute)和类的操作(Operation)。,6.1 类图,6.1.2 类的组成 6.1.2.1 类的名称 类的名称是每个类的图形中所必须拥有的元素,用于同其它类进行区分。类

3、的名称通常来自于系统的问题域,并且尽可能地明确表达要描述的事物,不会造成类的语义冲突。 按照UML的约定,类的名称的首字母应当大写,如果类的名称由两个单词组成,那么将这两个单词合并,第二个单词首字母也大写。类名称的书写字体也有规范,正体字说明类是可被实例化的,斜体字说明类为抽象类 如下图所示。,6.1 类图,6.1.2 类的组成 6.1.2.2 类的属性 属性是类的一个特性,也是类的一个组成部分,描述了在软件系统中所代表的对象具备的静态部分的公共特征抽象,这些特性是这些的对象所共有的。 在UML中,类的属性的表示语法为( 内的内容是可选的):可见性 属性名称 :属性类型 =初始值 属性字符串。

4、 例如,在“Goods”类中包含两个属性如下图所示。,6.1 类图,6.1.2 类的组成 6.1.2.3 类的操作 类的操作指的是类所能执行的操作,也是类的一个重要组成部分,描述了在软件系统中所代表对象具备的动态部分的公共特征抽象。 操作由一个返回类型、一个名称以及参数表来描述。在UML中,类的操作的表示语法为( 内的内容是可选的):可见性 操作名称 (参数表) :返回类型 属性字符串。 例如,在“Goods”类中包含一个操作如下图所示。,6.1 类图,6.1.2 类的组成 6.1.2.4 类的职责 在标准的UML定义中,有时还应当指明类的另一种信息,那就是类的职责。类的职责指的是对该类的所有

5、对象所具备的那些相同的属性和操作共同组成的功能或服务的抽象。 在声明类的职责的时候,可以非正式的在类图的下方增加一栏,将该类的职责逐条描述出来。 类职责的描述并不是必须的,因此也可以将其作为文档的形似存在,也就是说类的职责其实只是一段或多段文本描述。 一个类可以有多种职责,设计得好的类一般至少有一种职责。,6.1 类图,6.1.2 类的组成 6.1.2.5 类的约束 类的约束指定了该类所要满足的一个或多个规则。 在UML中,约束是用一个大括号括起来的文本信息。 在使用Rational Rose进行表达类与类之间的关联时,通常会对类使用一些约束条件。如下图所示的是在“Student”类和“Cop

6、y”类之间应当满足的约束。,6.1 类图,6.1.3 类的类型 在Rational Rose中,包含一些内置类的类型,它们是Class、ParameterizedClass、InstantiatedClass、ClassUtility、ParameterizedClassUtility、InstantiatedClassUtility和MetaClass等类型。 Class类型的类也就是我们所说的普通类,还有两种比较常用的类型是ParameterizedClass和InstantiatedClass,分别代表参数化类和实例化类。,6.1 类图,6.1.4 类的构造型 在Rational Ros

7、e中,包含一些内置构造型,包括Actor、boundary、Business Actor、Business Document、Business Entity、Business Event、Business Goal、Business Worker、control、Domain、entity、Interface、Location、Physical Worker、Resource、Service、Table、View等。 其中Action、boundary、control和entity是比较常用的构造型。 在用例图中的Actor是构造型为Actor的类,接口是一种构造型为Interface的类。,

8、6.2 类图中的关系,6.2.1 依赖关系 依赖关系表示的是两个或多个模型元素之间语义上的连接关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。 依赖关系将二个类联系起来,其中一个类会影响另一个类的行为和实现。,6.2 类图中的关系,6.2.2 泛化关系 泛化关系是用来描述类的一般和具体之间的关系。具体描述建立在对类的一般描述的基础之上,并对其进行了扩展。 因此,在具体描述中不仅包含一般描述中所拥有的所有特性、成员和关系,而且还包含了具体描述补充的信息。,6.2 类图中的关系,6.2.3 关联关系 关联关系是一种结构关系,指出了一个事物对象与另一个事物对象之间的语义上的连接。

9、关联描述了系统中对象或实例之间的离散连接,它将一个含有两个或多个有序表的类,在允许复制的情况下连接起来。 一个类关联的任何一个连接点都称为“关联端”,与类有关的许多信息都附在它的端点上。关联端有名称、角色、可见性以及多重性等特性。,6.2 类图中的关系,6.2.4 实现关系 实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,是说明和其实现之间的关系。 在实现关系中,接口只是行为的说明而不是结构或者实现,而类中则要包含了其具体的实现内容,可以通过一个或多个类实现一个接口,但是每个类必须分别实现接口中的操作。 虽然实现关系意味着要有像接口这样的说明元素,它也可以用一个具体的实现元素

10、来暗示它的说明必须被支持。,6.3 类图到数据库的转换,6.3.1 基本映射转换 类图到数据库的基本映射转化包括标识和域两个部分的内容。 1. 标识 实现对象模型的第一步便是处理标识 2. 域 属性类型是UML的术语,它对应于数据库里域的术语。域的使用不仅仅增强了更加一致的设计,而且便利了应用程序的可移植性。简单域的实现很简单,只需要定义相应的数据类型和大小。每个使用了域的属性都必须为其约束加入一条SQL检查子句。,6.3 类图到数据库的转换,6.3.2 类到表的转换 将UML模型中的类转换(映射)为关系数据库中的表时,类中的属性可以映射为数据库表中的0个或者多个属性列,但并非类中所有的属性都

11、需要映射。如果类中的某个属性本身又是一个对象,则应将其映射为表中的若干列。除此之外,也可将若干个属性映射为表中的一个属性列。 将类映射为表时,类之间继承关系的不同处理方式会对系统的设计有不同的影响;在处理类之间的继承关系时,可采用下面的四种方法。 1. 将所有的类都映射为表 2. 将有属性的类映射为数据库表 3. 子类映射的表中包含超类的属性 4. 超类映射的表中包含子类的属性,6.3 类图到数据库的转换,6.3.3 关系的转换 将UML模型向关系数据库转换时,不仅需要转换模型中的类,还需要转换类与类之间的关系,例如关联关系、泛化关系等。 关系数据库中的关系是通过表的外部键来维护的,通过外部键

12、,一个表中的记录可以与另一个表中的记录关联起来。 1. 多对多关联 2. 一对多关联,6.3 类图到数据库的转换,6.3.4 完整性与约束验证 UML模型中类与类之间的关系是对现实世界商业规则的反映,在将类图模型映射为关系数据库时,应当定义数据库中数据上的约束规则。 如果使用对象标识符的方法映射数据库表的主键,在更新数据库时就不会出现完整性问题,但是对对象之间的交互和满足商业规则来说,进行约束验证是有意义的 。 1. 父表的约束 2. 子表的约束,6.4 对象图,6.4.1 对象图的概念 对象图描述系统在某一个特定时间点上的静态结构,是类图的实例和快照,即类图中的各个类在某一个时间点上的实例及

13、其关系的静态写照。 对象图中包含对象和链。其中对象是类的特定实例,链是类之间关系的实例,表示对象之间的特定关系。 对象图所建立的对象模型描述的是某种特定的情况,而类图所建立的模型描述的是通用的情况。,6.4 对象图,6.4.2 对象图中的对象 对象是类的实例,创建一个对象通常可以从两种情况来观察:第一种情况是将对象作为一个实体,它在某个时刻有明确的值;另一种情况是作为一个身份持有者,不同时刻有不同的值。 对象的表示符号是与类用相同的几何符号作为描述符,但对象使用带有下划线的实例名将它作为个体区分开来。顶部显示对象名和类名,并以下划线标识,使用语法是“对象名:类名”,底部包含属性名和值的列表,如

14、下图所示。,6.4 对象图,6.4.3对象图中的链 链是两个或多个对象之间的独立连接,是关联的实例。通过链可以将多个对象连接起来,形成一个有序列表,称为元组。对象必须是关联中相应位置处类的直接或间接实例。 在UML中,链的表示形式为一个或多个相连的线或圆弧。在自身相关联的类中,链是两端指向同一对象的回路。如下图所示,是链的普通和自身关联的表示形式。,6.5 绘制类图,6.5.1 类图的绘制 这里以创建一个“图书管理系统”的类图为例,演示创建一个的类图的具体操作步骤。 1. 右键单击Rational Rose浏览器中的Use Case View(用例视图)。 2. 在弹出的快捷菜单中,选择“Ne

15、w”(新建)|“Class Diagram”(类图)命令。 3. 在Use Case View(用例视图)下生成的默认名为“New Diagram”的类图,输入新的类图名称“图书管理系统类图”。 4. 双击类图名称,即可打开所创建类图的操作界面。,6.5 绘制类图,6.5.2 类的绘制 我们在“图书管理系统”类图中创建一个名为“Borrower”的借阅者类,具体步骤如下所示: 1. 在图形编辑工具栏中,选择“ ” 按钮,此时光标变为“”号。 2. 在类图中单击选择任意一个位置,系统在该位置创建一个新类。系统产 生的默认名称为“NewClass”。 3. 在类的名称栏中,显示了当前所有的类的名称

16、,我们可以选择清单中的 现有类,这样便把在模型中存在的该类添加到类图中。如果创建新类, 将“NewClass”重新命名成新的名称“Borrower”即可。,6.5 绘制类图,6.5.3 类属性的创建 1. 双击类图中的“Borrower ”类,弹出 “Class Specification for NewClass” 对话框,该对话框用于对类的各种属性的设置。 2. 点击“Attributes” 选项卡,在空白窗口区域单击鼠标右键,在弹出的快捷菜单中选择“Insert” 命令。 3. 在空白窗口区域出现右图所示的添加属性编辑列表,在“Name”属性项上单击,输入属性名称“userid”;单击“

17、Type” 类型属性项,输入数据类型“String”,最后单击“OK” 按钮。,6.5 绘制类图,6.5.4 类操作的创建 1. 双击类图中的“Borrower ”类,弹出 “Class Specification for NewClass” 对话框。 2. 点击“Operations”(属性)选项卡,在空白窗口区域单击鼠标右键,在弹出的快捷菜单中选择“Insert” 命令。 3. 在空白窗口区域出现右图所示的添加操作编辑列表,在“Name”属性项上单击,输入操作名称“find”;单击“Return Type” 类型属性项,输入数据类型“String”,最后击“OK” 按钮。,6.5 绘制类图

18、,6.5.5 类关系绘制 我们将以关联关系为例,介绍如何绘制这些关系。 1. 单击“Borrower”类,选择“图书管理系统类图”工具栏中的“ ” 图标,此 时的光标变为“”符号,将光标从“Borrower类”上拖动到“Loan”类。 2. 双击类图中连接“Borrower”类和“Loan”类的双向关联的直线,弹出 “Association Specification for Untitle对话框,选择“Role B Detail” 选项卡,在“Multiplic” 下列列表中选择“1”。 3. 选择 “Role A Detail” 选项卡,在“Multiplic” 下列列表中选择“0.n”。

19、 4. 点击“OK”,完成关联关系的设置,绘制好的两个类的关联关系如下图所示。,6.5 绘制类图,6.5.5 类关系绘制 除了关联关系以外的其他三种类关系:依赖关系、实现关系和泛化关系的绘制步骤和这里演示的关联关系,最大的区别是选择工具栏上图标的不同。 1.依赖关系创建时选择的是“ ” 图标。 2.实现关系创建时选择的是“ ” 图标。 1.泛化关系创建时选择的是“ ” 图标。,6.6 绘制对象图,在Rational Rose 中不直接支持对象图的创建,但是我们可以利用协作图来创建。在协作图中添加对象的步骤如下: 1. 要创建对象,必须先有类,所以,我们要利用到前文创建好的“Borrower”类

20、。直接将浏览器中的“Borrower”类拖动到协作图编辑区域,一个没有具体实例的对象就创建好了。 2. 双击该对象的图标,弹出对象的规范设置窗口。 4. 在对象的规范设置窗口中,可以设置对象的名称、类的名称、持久性和是否多对象等。 5. 点击“OK”按钮即可。,6.6 绘制对象图,在协作图中添加对象与对象之间链的步骤如下: 1. 选择工具栏中的协作图图形编辑工具栏中的图标“ ”,或者选择菜单栏“Tools” 中“Create” 下的“Object Link”选项,此时的光标变为“”符号。 2. 单击需要链接的对象。 3. 将链的线段拖动到要与链接的对象中。 4. 双击链的线段,弹出设置链规范的

21、对话框。 5. 在弹出的对话框中,在“General”选项卡中设置链的名称、关联、角色以及可见性等。 6. 如需要在对象的两端添加消息,可以在“Messages”选项卡中进行设置。,6.7 类图和对象图建模实例,6.7.1 确定系统中的类 用例图实质上是一种系统描述的形式,所以可以根据用例描述来识别类。针对各个用例,通常可以根据如下的问题辅助识别: 1. 用例描述中出现了哪些实体? 2. 用例的完成需要哪些实体合作? 3. 用例执行过程中会产生并存储哪些信息? 4. 用例要求与之关联的每个角色的输入是什么? 5. 用例反馈与之关联的每个角色的输出是什么? 6. 用例需要操作哪些硬设备?,6.7 类图和对象图建模实例,6.7.1 确定系统中的类 对于图书管理系统来说,首先从研究用例中发现类,根据这些功能中的名词可以基本的识别出图书管理系统可以抽象出如下多个类: 1. 最主要的类就是其图书管理系统要服务的对象借阅者类,所以可以确定一个“Borrower”借阅者类。 2. 其次,借阅者借阅图书和归还图书都需要图书管理员来进行处理。因此需要确定一个“Libra

温馨提示

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

评论

0/150

提交评论