《UML类及关系》PPT课件.ppt_第1页
《UML类及关系》PPT课件.ppt_第2页
《UML类及关系》PPT课件.ppt_第3页
《UML类及关系》PPT课件.ppt_第4页
《UML类及关系》PPT课件.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

UML Unified Modeling Language 统一建模语言 (三) 类与关系,杜育根 ,2,类,什么是类? 通常在对系统建模时,将会涉及到如何识别业务系统中的事物,这些事物构成了整个业务系统。 在UML中,把所有的这些事物都建模为类 类的定义: 是对一组具有相同属性、操作、关系和语义的对象的描述 一个类描述了一组对象的公共的结构和行为。,3,类是真实世界事物的抽象。 当这些事物存在于真实世界中时, 它们是类的实例, 并被称为对象。 同一个类的各对象具有 相同的属性 提供相同的操作, 有相同的语义。,4,类,例,建造一所房子 事物: 房主关心 墙、门、窗户、橱柜、灯 等是主要的事物 水管工关心:排水管、存水管、通风口等事物 事物的属性: 使事物有别于其他事物 事物间的关系: 事物如何合理组合构成系统,5,类,你看到几个类?,总之,类的选择依赖于应用领域,动物 和电子设备,室内事物 和 室外事物,移动事物 和 静止事物,一个类?,图标(Icon),濒危事物,6,3.1 UML中类的表示,类的图形表示 用四部分来表示。它是分为三个分隔区(compartment)的长方形: 名称name 属性attribute 操作operation 责职responsibility,7,类的表示,类的图形表示: 顶端的分隔区为类的名字 下面两个分隔区显示时,可省略的,可以分别列出类的属性或操作 类的名字 每个类所必备的 用于和其它类相区分 类的名字可分为 简单名字 简单名字是一个不包含冒号的字串 复杂名字(路径名字) 路径名是简单名字前面加上一个包含该类所在的模型包的名字 这两个名字之间用两个冒号隔开 类名 中的每个词的第一个字母通常要大写,8,类的表示 名称,9,类的表示 属性,类的属性(attribute) 它是类的一个组成部分,描述了类在软件系统中代表的事物所具备的特征。 属性的定义 在UML里,属性是类的一个命名特性(named property),它描述了此特性在类的实例中能具备的取值范围。 为了定义属性的取值范围必须为属性指定类型 例如: 布尔类型的属性可以取两个值:TRUE和FALSE; 字节型的属性只能取256个值 当一个类的属性被完备地定义后,它的任何一个对象的状态都被这些属性的特定取值所决定。,10,类的表示 属性,属性的图形表示: 类的属性被列在类图形(类符号)的第二个分隔区中 属性分隔区是可省略的 (此处指图形表示时) 当属性分隔区未被省略时, 属性的名字必须出现。 属性的名字后面是它的类型 类型和名字之间用冒号(:)分隔 如 “heightOfTheWall:Float”,11,属性的初始值: 当类的一个对象被创建时,有必要在对象的类中定义其对象属性的初始值。 初始值的图形表示: 类的属性的初始值在属性的类型的后面指定,如 “heightOfTheWall:Float = 3.5” 属性的初始值是可选的,当未为属性指定初始值时,属性的初值是不确定的 属性的可见性 Public (+) Private (-) Protected (#),12,类的表示 属性,属性的省略表示:只列出名字,属性的省略表示,属性的类型表示,除了属性的名字之外,属性的其它描述都是可省略的,包括: 类型、初值、可见性 属性名取名,如有几个词构成,除第一个词之外的每个词的第一个字母要大写,13,类的表示 操作,对象在交互中,存在着许多消息的交换 消息是一个对象发送给另一个对象,请求其提供服务的指令 一个对象接收的各个不同的消息,构成了此对象的类能提供的服务的集合。 类的操作就是对这些服务的具体实现,包括 接收服务请求的格式 类对合法请求所能提供的有效服务的承诺 如果把操作映射到C+语言,则操作就是C+的类成员函数。,14,操作的定义: 操作是一个类所能提供的服务的实现 操作是对一个对象所做事情的抽象,并且由这个类的所有对象共享。 操作: 必须有一个名字 可以有参数表 可以有返回值。,15,类的表示 操作,16,属性和操作的组织,类的构成有可能很复杂 将产生很长的属性列表和操作列表,没有必要在模型图上把所有的属性和操作都绘制在模型图上。因为: 会使UML图过于繁杂 出于表达特定问题的需要,不必要将与问题无关的属性和操作与重要的属性和操作同时绘制在模型图上 这时,可以应用UML的隐藏原则 在UML模型图上把对表达问题不重要的属性或操作隐藏 因此,如果发现模型图上某个类的属性分隔区或操作缺失或分隔区内没有内容 并不表示此类没有属性或操作 有可能它们是被省略了,17,属性和操作的组织,类的隐藏表示,可以采取4种方式: (1)隐藏分隔区 (2)有选择地隐藏属性/操作 (3)隐藏操作署名 (4)隐藏属性/操作的变体 如果一个类的所有操作和属性可以根据它们的语义分为若干组 可以在操作或属性前面为它们指定变体标记 使得同一分组的操作或属性带有同样的变体标记,18,属性和操作的组织,19,类的表示-责职,责职(responsibility) 是类的合约或责任(是一个类所承担的义务或协议 ) 一个良好定义的类应该有清晰的职责 一个类只应承担一种职责 类的职责划分的好坏,取决于其对象参与交互时,担任的职责的划分的合理性,20,类的表示-责职,类的职责的描述: 可以用非形式的普通文本描述 可以出现在操作分隔区下面的第四个分隔区内(用Metamill工具),责职,21,建模指南,类的设计是软件系统构造的第一步 它决定着软件系统架构的 合理性 软件部件的 可维护性 可重用性 可移植性 软件系统的类的设置、职责的明确、类的属性和操作的确定,其过程是 用例驱动的 (use case driven) 面向对象的,22,3.2 关系,当建造抽象时,会发现类很少单独存在。相反,大多数类都以某(几)种方式相互协作。 不仅要识别形成系统词汇的事物,而且还必须对这些事物如何相互联系建模 关系是重要的建模概念。关系代表了UML模型元素之间的语义连接。 它描述软件系统各组成部分之间的交互和协同。 三种最基本和最常用的关系,它们是: 依赖关系(dependency) 泛化关系(generalization)和 关联关系(association) 实现关系 (realization),23,关系可以描述软件系统各组成部件的结构及它们之间的基本的语义连接。 随着软件设计建造的进一步深入和细化, 需要更详细的建模手段来对这些关系进行修饰和描述,以使得 模型更趋于完备, 更能反映软件系统在各方面的真实情况, 并满足软件系统的分析、设计和建造的需要。,24,依赖关系,依赖关系是一种使用关系,说明一个事物使用另一个事物的信息和服务。 For example, pipes depend on the water heater to heat the water they carry 依赖的图形表示 把依赖画成一条有向的虚线,指向被依赖的事物 如果被使用的类发生变化,那么另一个类的操作也会受到影响。 依赖本身可以带一个名字,25,泛化关系,是一般事物(称为超类或父类)和该事物的较为特殊的种类(称为子类)之间的关系。 Or “is-a-kind-of”,泛化,基类,叶子类,26,关联关系,关联是一种结构关系 指明一个事物的对象与另一个事物的对象间的联系 关联的两端都连到同一个类是完全合法的 关联的修饰 名称 角色 多重性 聚合/组合,27,关联关系:名称及其方向,Lecturer,Course,teaches,0*,1*,Is taken by,28,关联关系:Multiplicity多重度,多重度定义了关系中的对象的数量。,29,关联关系: 多重度,1*,0*,operator,A Company have exactly 7 employees A Person can be employed by exactly one company A BankAccount can have exactly one owner A BankAccount can have one or many operators A Person may have zero to many BankAccounts; A Person may operate zero to many BankAccounts,30,关联关系: 自反关联,自反关联表示这个类的某个对象与这个类的其它对象有关联 例如,文件目录 每个目录有零个或多个子目录. 每个目录下面有零个或多个文件,31,强关联关系:聚合/组合,聚合表示部分与整体关系的关联,他们之间是可分离的,具有各自独立的生命周期。它用端点带有空菱形的线段表示,空菱形与聚合类相连接。组合是更强形式的关联,整体有管理部分的特有的职责,整体和部分是不可分的,整体与部分共存亡。它用一个实菱形物附在组合端表示。,32,导航,Navigability is shown by an arrowhead on the end of the relationship. If a relationship has no arrowhead, then it is bidirectional. Navigability indicates that you can traverse the relationship in the direction of the arrow; May also be able to traverse back the other way, but it will be computationally expensive to do so.,Order,Product,navigable,Not navigable,navigability,33,关联类,问题:在多对多的关联中,有些属性不属于关联端的类 Example: Each Person has a salary with each Company Each Company employs many persons with different salary Can not make the Person salary an attribute of the Person class. Because each Person instance may work for many companies and may have a different salary with each Company. Can not make the Person salary an attribute of Company, because each Company instance employs many Persons all with potentially different salaries.,Company,Person,*,*,Solution: use “Association Class”,34,Association class is an association that is also a class, and consists of the class, association and the dashed line虚线. It may have attributes, operations and relationships You can use an association class when there is exactly one unique link between any pair of objects at any point in time If a pair of objects may have many links to each other at a given point in time, then you reify the relationship by replacing it with a normal class.,Company,Person,Job,salary: Double,| |,Association Class协作类,35,关系建模,为简单依赖建模 两个类之间的连接,其中的一个类使用另一个类作为它的操作参数 依赖,从含有操作的类指向被该操作用作参数的类。,36,关系建模:对继承关系建模,37,关系建模:对结构关系建模,图5-11所显示的是取自一个学校的信息系统中的一组类。,38,练 习,请画出三个类之间的关系,包括多重性,39,练习,学会画出基本的建模元素 添加一个类 设置类的属性和操作

温馨提示

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

最新文档

评论

0/150

提交评论