《《类图和对象图》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《类图和对象图》PPT课件.ppt(78页珍藏版)》请在三一办公上搜索。
1、类图和对象图,UML中的类图(Class Diagram)与对象图(Object Diagram)具有强大的表达能力,能够有效地对现实世界的业务领域和计算机系统建立可视化的对象模型。类图与对象图用来表达对象模型的静态结构。,类图表达一组类和它们之间的联系。描述各个类本身的组成,即类的属性、操作和对对象的约束条件等。描述系统中类之间的各种静态的联系。类图是一种静态结构图,它描述的是系统的静态结构,而不是系统的行为。类之间的静态联系主要类型有:关联、聚合、复合、继承、依赖等,类的定义,什么是类(class)具有相似结构、行为和关系的一组对象的描述符类的组成 类名属性操作UML中,类表示为划分为三格
2、的矩形,类名:类名必须唯一,可以是简单名,也可以是路径名。如果用英文,则单词首字母大写,多单词合并写。,学生,学校:学生,学校,WashingMachine,包名在左,类名在右,中间用双冒号隔开。这种类型的类名叫:路径名(pathname)。,类的属性,属性的格式可见性 属性名:类型多重性次序=缺省值特性可见性:可访问性多重性:属性值个数格式次序:属性值顺序特性:对该属性性质的一个约束说明,如只读选取类的属性时只考虑系统用到的特征,不必将所有属性都表示出来,原则上,由类的属性应能区分每个特定的对象。,属性是类的一个特性。一个类可具有零个到多个属性;属性名必须唯一。,类的属性,可见性属性的可访问
3、性,四类:公共(public)私有(private)保护(protected)实现(implementation)子类无法继承和访问父类的私有属性和实现属性,类的属性,举例可见性 属性名:类型多重性次序=缺省值特性+size:Area=(100,100)#visibility:Boolean=false-origin:Pointcolors:color3Points:Point2.*orderedName:String0.1,类的操作,操作:用于修改、检索类的属性或执行某些动作,通常也称为功能。,格式:可见性操作名(参数列表):返回值类型特性参数列表:参数名1:类型=缺省值,参数名2:类型=缺
4、省值,,+display():Location+hide()#create()-attachXWindow(xwing:XwindowPtr),类之间的关系,常见的类之间的关系包括:关联、聚集、组合、泛化、依赖、实现.,关联,关联(association)表示类与类之间的关系链(link)表示的是对象与对象之间的关系,链是关联的实例。一个关联可以有两个或多个关联端(association end),每个关联端连接到一个类。关联可以是单向的uni-directional 或 双向的bi-directional两个类之间的关联将在所生成的代码中体现出来,表现为类中有一个方法可以访问到另一个类,关联
5、,关联,关联名用于明确表达关联的含义。客户?雇员?老板?可有可无 动词短语 斜体导航性(方向性)从一个类(对象)可以访问到另一个,反过来却不行,用带箭头的实线,表示单向关联,无箭头表示双向关联被关联的对象不知道谁与自己关联,但关联对象知道自己与谁有关联,关联名,关联,关联角色(role)关联两端的类可以以某种角色参与关联。如果在关联上没有标出角色名,则隐含地用类名作为角色名。生成代码后会有和角色名相应的属性出现。自返关联通常必须标明角色。,关联角色n 表示多重性,关联角色+表示可见性,关联,关联角色的多重性(multiplicity)多重性表示可以有多少个对象参与该关联非负整数的子集表示0 表
6、示没有实例的关联,一般不用0.10.n1 即1.13.61.nn,一个教师可开设1到3门课程,一门课程可以有1到多个教师,course的多重性,teacher的多重性,关联,关联类(association class)关联本身也可以有特性,通过建立关联类可以进一步描述关联的属性、操作和其他信息。通过虚线与关联连接。,public class Company private String companyName;public Person employee;public class Person private String personName;public Company employer;
7、public class Contract private Double salary;,改成#,代码如何修改?,关联,关联的约束/依赖约束是UML三种扩展机制之一:约束、版型、标记值给关联加上约束,可以加强关联的含义。,关联的约束/依赖,关联,限定关联在关联端紧靠源类图标处可以有限定符(qualifier),带有限定符的关联称为受限关联或限定关联。限定符的作用就是在给定关联一端的一个对象和限定符之后,可以唯一确定另一端的一个对象或对象集。受限关联用于一对多或多对多的关联。将目标类的多重性从“多”降为“一”。Rose2003不能直接表示限定符。,关联,限定关联例:一客户可以在bank中有多个账
8、户,但给定了一个账户account后,其只对应0.1个客户(bank,account)0.1个costomercostomer 多个(bank,account)表达customer和bank之间的关系?,关联,限定关联为何引入限定符?在设计软件时十分有用应用系统根据关键字对数据集作查询,常用到受限关联。引入限定符的一个目的就是把多重性从n降到1或0.1,则查询结果是单个对象,效率高。如果引入限定符后,另一端的多重性仍为n,则意义不大。,关联,关联的种类,(1)自返关联,(2)二元关联,(3)N元关联,关联,自返关联:又称递归关联,是一个类与自身的关联,即同一个类的两个对象间的关联。,关联,Ro
9、se 2003不能直接表示N元关联。一个人在一个项目中可以使用多种开发语言;一个项目中使用某种语言的可以有多个开发者;一个开发者用某种语言可以开发多个项目。,聚集与组合,聚集(aggregation)是一种特殊的关联,表示类之间的整体与部分关系,个体可以属于多个整体。,聚集与组合,组合(composition)是整体和部分的关系,个体唯一属于一个整体。组合关系中的“整体”控制着“部分”的生存期。组合是一种特殊的聚集关系,又称强聚集。,泛化关系,Generalization,一般元素和特殊元素之间的关系。即OO语言中,类之间的继承关系,泛化关系,泛化的目的自顶向下的属性继承。可以使得子类共享父类
10、的属性和操作,实现继承。自底向上的实例替换。可以使得子类的实例用于任何父类被声明使用的地方,实现多态。,继承,Rose中可以看到子类已继承了父类的属性private、implementation属性不被继承public、protected属性可被继承,泛化关系,抽象类(abstract,斜体表示):不能产生实例的类,因为类中的方法往往只是声明,而没有具体实现。,依赖关系,一个元素B的改变会影响另一个元素A,则称A依赖于B,二者之间存在依赖关系。,调用,一个类调用另一个类的方法参数,一个类的方法使用另一个类作为形式参数发送,消息的发送者与接收者之间的关系实例化,一个类的方法创建了另一个的实例,依
11、赖关系,class MyDependentClass.void myFunction1(MyReferencedClass r).MyReferencedClass myFunction2().void myFunction3()MyReferencedClass m,MyDependentClassatt:intmyFunction(),MyReferencedClass,依赖(引用一个类),参数,or 返回类型,or 局部变量,派生属性和派生关联,派生属性(关联)指可以由其他属性(关联)计算得到的属性,名字前加”/”.,抽象类和接口,抽象类,接口,抽象类和接口,interface MyAb
12、stractClass.class MyClass implements MyInterface.,UML 符号-接口的实现描述,实现关系,一个元素完成另外一个元素的操作功能,则二者之间构成实现关系。如接口类及其实现;接口没有属性,只有声明的操作方法(对于方法没有实现部分),而由实现类具体定义实现部分。Rose中画法右键options版型显示IconLabelDecoration,版型,版型(stereotype)是UML的3种扩展机制之一.版型是建模人员在已有的构造块上派生出新的构造块,这些新的构造块与特定问题相关.版型可以应用于所有类型的模型元素.,系统预定义的版型,用户自义的版型,边界类
13、、控制类和实体类,UML中三种主要的类版型边界类,boundary class控制类,control class实体类,entity class,引入多种类版型帮助分析和设计人员确定系统中的类.,边界类,边界类位于系统与外界的交界处,包括:,用户界面类,如:窗口、对话框、报表类等通讯协议类,如:TCP/IP的类直接与外部设备交互的类直接与外部系统交互的类,边界类的UML表示方法:,边界类,通过用例图可以确定需要的边界类,每个Actor/User case对至少需要一个边界类.边界类一般可以没有属性,只有操作.,但并不是每个Actor/Use case都需要生成惟一边界类,多个actor启动同一
14、use case可以使用同一边界类.,存取款窗口,转账窗口,实体类,实体类保存要放进持久存储体(数据库/文件等)的信息.,实体类通过事件流和交互图发现,采用目标领域术语命名.通常实体类对应数据库中的表,其属性对应表的字段,但实体类与数据库中的表不一定是一一对应关系.,控制类,控制类是负责管理或控制其他类工作的类.,每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用.控制类较少接收消息,发出较多消息.,类图,类加上它们之间的关系就构成类图,其中包含接口、包、关系等元素,同时也可以包含对象、链等实例.类图描述类和类之间的静态关系.,类图的抽象层次,概念层类图,描述应用领域
15、的概念.,说明层类图,描述软件的接口部分,不是实现部分.,实现层类图考虑实现问题,提供类的细节.,练习,一个教室有若干桌子,桌和椅一一对应,每个椅子坐两个人。派生关联:一个桌子可供两人使用。一个文件夹可以有多个子文件夹或多个文件,文件有的是加密的,有的是未加密的。,构造类图,研究分析问题领域,确定系统需求.确定类,明确类的含义和职责,确定属性和操作.确定类之间的关系.调整和细化类及类之间的关系.绘制类图并增加相应的说明.,建立类图的步骤,构造类图,寻找类的三种常用方法:1.使用名词/动词法分析寻找类收集相关信息补充的需求规格说明用例项目词汇表其他文档分析信息名词、名词短语 类或属性动词、动词短
16、语 操作筛选、细化,2.使用CRC(class responsibility collaboration)卡片分析法寻找类是一种根据类所要扮演的职责来确定类的方法脑力风暴收集信息关键业务用类表示,其他卡片作为属性或行为3.根据边界类、控制类和实体类的划分来帮助寻找系统中的类,画UML图时,不必刻意将所有符号都用上,20的符号可满足80的建模要求。,实例,小张是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按照计算机类、非计算机类分别建档,实现按照书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统
17、会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按照特定时间周期进行统计。,1.找备选类2.得到候选类书籍、计算机类书籍、非计算机类书籍,借阅记录、借阅记录列表、书籍列表3.确定类关系4.给关联添加多重性5.职责分析6.细化,小张是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按照计算机类、非计算机类分别建档,实现按照书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成
18、书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按照特定时间周期进行统计。,构造类图时注意,不要试图使用所有的符号.不要过早陷入细节,根据阶段、层次逐步细化.构造完成要将模型与目标问题对照验证其是否合理.,OO设计的原则,开闭原则(Open/Closed Principle,OCP)Liskov替换原则(Liskov Substitution Principle,LSP)依赖倒置原则(Dependency Inversion Principle,DSP)接口分离原则(Interface Segre
19、gation Principle,ISP),开闭原则,指一个模块在扩展性方面是开放的,在更改性方面是封闭的例:output逻辑复杂,修改复杂,开闭原则,开闭原则添加具有print方法的接口。,Liskov替换原则,子类可以替代父类出现在任何父类出现的地方,依赖倒置原则,依赖关系尽量依赖接口(或抽象类),而不是依赖具体类。高层的类依赖抽象类和接口,具体的实现类也只与抽象类和接口有关,具体细节的改变不会对高层的类产生影响。,接口分离原则,设计时采用多个与特定客户类有关的接口比采用一个通用的接口好。,接口分离原则,设计过程中注意的问题,遵守OO设计原则.不同类中相似方法的名称应该相同.遵守已有的约定
20、俗成的习惯.尽量减少消息模式的数目.只要可能,使消息具有一致的模式,以利于理解.设计简单的类.类的职责要明确,不要在类中提供太多的服务,应该从类名可以比较容易推断出用途.泛化结构的深度要适当.定义简单的方法.一个方法内不要包含过多的功能.,对象图,对象图(Object Diagram)是显示了一组对象和它们之间的关系。使用对象图来说明数据结构、类图中的类或组件等实例的快照。对象图和类图一样,反映了系统的静态过程,但它是以实际的或原型化为基础来表达对象间的关系。对象图显示某时刻对象和对象之间的关系。一个对象图可看成一个类图的特殊实例,实例和类可在对象图中同时表示。,什么是对象,1对象对象是一件事
21、、一个实体、一个名词,是客观存在的事物。一些对象是活的,一些对象不是。现实世界中的对象有汽车、人、房子、桌子、狗、支票簿或雨衣。所有的对象都有属性,例如汽车有厂家、型号、颜色和价格。狗有种类、年龄、颜色和喜欢的玩具、对象还有行为(behavior):汽车可以从一个地方移动到另一个地方,狗会叫。2对象的特点:对象具有状态、行为和标识三个特点。,什么是对象,状态:对象的状态指对象在某一时刻,对象所有属性值的集合。行为:没有一个对象是孤立存在的,对象可以被操作,也可以操作别的对象。而行为就是一个对象根据它的状态改变和消息传送所采取的行动和所做出的反应 标识:为了将一个对象与其它所有对象区分开来,我们
22、通常会给它起一个“标识”3对象与类的区别(1)对象是一个存在于时间和空间中的具体实体,而类是一个模型,该模型抽象出对象的“本质”:一组公共属性和一组公共方法。(2)类是静态的,对象是动态的;类是一般化,对象是个性化;类是定义,对象是实例;类是抽象、对象是具体。,对象图的概念,1.对象图对象图是描述对象及其关系的图。对象图可以看作类图在某一时刻的实例。几乎使用与类图完全相同的标识。他们的不同点在于,对象图显示类的多个对象实例,而不是实际的类。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。,对象图的概念,2.对象图的作用对象图常用来描述业务或软件系统在某一时刻,对象的组成、结构和关系。
23、3.对象图的组成元素组成对象图的元素有:对象、链、注释、约束。,对象的表示,UML中,表示一个对象,主要是标识它的名称、属性。对象由一个矩形表示,它包含2栏,在第一栏写入对象名,在第二栏列出属性名及属性值,格式如:”属性名=属性值”对象名有下面三种表示格式,不同点在于第一栏表示对象的格式不同:(1)对象名:类名对象名在前,类名在后,用冒号来连接。对象名和类名都加下划线。,对象的表示,(2):类名这是对匿名对象的表示方法。这种格式用于尚未给对象取名的情况,前面的冒号不能省略。,(3)对象名省略格式,即省略掉类名。只有对象名,对象名必须加下划线。,链的表示,链是两个对象间的语义关系。关联是两个类间的关系。就象对象是类的实例一样,链是关联的实例。链分单向链和双向链。1双向链,角色,链的表示,2单向链,:PersonDetails,:Address,源对象,目标对象,阅读对象图的方法,对象图中,对象间的关系称为链。阅读对象图的方法:(1)找出图中所有的类(2)了解每个对象的语义(3)了解对象之间连接含义,对象图的实例,作业,1、简述类图的三个抽象层次。2、简述UML中3种主要的类版型,并分别画出它们的Icon表示形式。3、简述OO设计的原则。4、简述类与类之间的关系并举例。,
链接地址:https://www.31ppt.com/p-5565929.html