收藏 分销(赏)

UML建模 (7).ppt

上传人:pc****0 文档编号:13362745 上传时间:2026-03-08 格式:PPT 页数:72 大小:984.50KB 下载积分:10 金币
下载 相关 举报
UML建模 (7).ppt_第1页
第1页 / 共72页
UML建模 (7).ppt_第2页
第2页 / 共72页


点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,5,章,UML,类图,软件学院:宋 波,20,11,20,12,学年,第,1,学期,软件工程专业,(2009,级全日制本科,),知识点,类的定义,类规范与类的应用,属性、操作规范与应用,关联关系、关联规范与应用,泛化关系、泛化规范与应用,依赖关系、依赖规范与应用,聚集关系、聚合规范与应用,学习目标,掌握类图的基本概念,掌握类图的基本操作,掌握类规范与类的应用,掌握属性规范与应用、操作规范与应用,掌握关联规范与应用、泛化规范与应用,掌握依赖规范与应用、聚合规范与应用,掌握逻辑包规范与应用,课堂练习:,画出模型图,能正确表示出以下要求:,一个雇员最多有一个经理;,经理管理多个雇员;,经理不管理任何雇员。,Employee,Manager,0.n,1,5.4,聚集和组成关系,关联关系的基本形式是,双向的,,这表明关联关系两端的类的,地位是平等,的。,关联关系又是一种,结构,关系,其中的,角色,代表着一个类的对象在另一个类中的,存在,,即类中的对象是相互拥有的。,当需要打破这种平等关系,而强调类与对象之间有向的拥有关系时,可以用,聚集,或,组成,关系对,关联,关系进行修饰,以表示类和对象之间的,拥有,关系。,5.4.1,聚集关系,聚集用端点带有,空心菱形,的线段表示,空菱形,与聚集类相连接,箭头的方向,是从,部分,指向,整体,。,聚集(,Aggregation,)是表示两个类之间的,整体,与,部分,的关系,表明聚集关系中的,客户端,是以,供应端的类的对象,作为其一部分。,在聚集关系的客户端的类被称为,聚集类,,聚集类的实例是聚集对象。,位于聚集关系的供应端的类的实例是被聚集对象,包含,或,拥有,的部分;,如果两个类具有聚集关系,则表示其中的,聚集对象,在物理上是由其他对象构造而来的,或逻辑上包含另一个对象,,聚集对象,具有其部分的所有权。,生成的,Java,源代码,public class circle,private double radius;,public style theStyle;,public class style,private Color color;,private Boolean isFilled;,public circle theCircle;,没有添加角色名,CPU,1,个人计算机,音箱,主机,键盘,鼠标,显示器,1,1,1,1,1,2,磁盘驱动器,声卡,显卡,内存,连接到,1,1,*,1,2,1,实例,实例,在上个例子中的每个部分都属于一个整体,但聚集的关系并不是只有这种情况。,例如:在一个家庭影院系统中,电视机和影碟机可以共用一个遥控器,那么这个遥控器既是电视机的组成部分,也是影碟机的组成部分。,聚集上的约束,有时一个聚集体可能有多种部分体组成,这些部分体之间是,“,Or”,关系。,我们在两个整体部分关系线之间加上一花括号括起来的,“,Or”,来表示这个,约束,,并用,虚线,连接这两个关系线。,实例,一顿饭,汤,沙拉,主食,甜点,1,1,1,1,1,or,5.4.2,组成关系,组成(,Composition,)表示的也是类之间的整体与部分的关系。,组合关系中的整体与部分具有相同的,生存周期,,即,整体,不存在了,,部分,也会随之消失。,组合是一种特殊形式的聚集。,组成关系,组合用端点带有实心菱形的线段表示,实心菱形与组合类相连接,箭头的方向是从部分指向整体。,组成,组成是强类型的聚集。组成中的每个部分体只能属于一个整体。,咖啡桌,桌腿,桌面,1,1,1,课堂练习:,沈阳师范大学是由多个学院组成。,在,Windows,操作系统下,窗口是由菜单和按钮组成的。,课堂练习:,一个电子邮件消息由邮件头、邮件体和未指明数目的附件构成的。描述它们之间的关系。,5.5,泛化关系,泛化用从,子类,指向,父类,的箭头表示,指向父类的是一个,空三角形,。,在,父类,中已经定义的属性和操作,在,子类,中不需要再定义。,UML,中的泛化可以直接映射为,Java,语言的,extends,关键字。,单重继承关系,Java,源代码,public class phoneCard,public class NoneNumPhoneCard,extends,phoneCard ,public class NumPhoneCard,extends,phoneCard ,5.6,依赖关系,Course(,课程,),类是独立的供应者,Schedule(,课程表,),类是依赖于,Course,类的客户类,课程表类的操作,add,和,remove,都使用了课程类中的数据,课程类是这两个操作的参数的类型,一旦课程发生变化,课程表也要随之改变。,5.6,依赖关系,两个类之间的,依赖,(Dependency),关系表明其中的一个类,(,客户类,课程表,),依赖于另一个类,(,供应类,课程,),所提供的,某些,服务,。,UML,中的依赖关系表示为一个,带虚线,的箭头,箭头所指向的类是,供应类,(,被依赖的类,),,箭头的出发点的类是,客户类,。,接口,接口是一系列,操作,的集合,它指定了一个,类,,或者一个,部件,所能提供的,服务,。,接口只能拥有操作,不能拥有属性。,接口可以用一个类图标表示。,接口名前可以带有构造型,,以与类的省略表示形式相区别。,接口也可以用一个,小圆,表示,在圆的下面是,接口的名字,。,实现,接口强调的是类的,外部行为规范,,它不强调此动态行为的,实现方法,。,在,UML,中,如果要描述某个类实现了给定的接口,就可以使用,实现,(Realization),关系。,实现,实现,关系是用一个以,空心三角形,为终点的,虚线,箭头,箭头指向的分类符是,接口,或,用例,。,实现关系还有一种图形表示形式,它只用于接口的图标表示法,,实现,关系被绘制为一条连接接口或部件的,实线,。,实现关系,Java,源代码,public interface shapes,public abstract Double getArea();,public abstract Double getCircum();,Java,源代码,class circle implements shapes,private double radius;,public Double getArea(),return null;,public Double getCircum(),return null;,Java,源代码,class square implements shapes,private Integer width;,private Integer height;,public Double getArea(),return null;,public Double getCircum(),return null;,5.8,抽象类,没有具体对象的类称为,抽象类,(Abstract Class),。,抽象类一般作为,父类,,用于描述其他类,(,子类,),的公共属性和行为。,5.8,抽象类,抽象类中一般都带有抽象方法,:,抽象方法,是用来描述抽象类的所有,子类,应具有什么样的行为,抽象方法只标记出,返回值、方法的名称和参数表,,方法的,具体实现细节,并不详细地书写出来,而是由继承抽象类的,子类,来实现。,抽象类的子类一定要实现抽象类中的抽象方法,否则这个子类仍然是一个,抽象类,。,抽象类,Java,源代码,public abstract class Vehicle,public abstract Void run();,public class Ship extends Vehicle,public void run(),return null;,public class Car extends Vehicle,public void run(),return null;,接口与抽象类的区别,接口只能拥有,操作,,不能拥有,属性,;,而抽象类可以含有,属性,,接口中声明的所有方法都没有,实现部分,,而抽象类中某些方法可以有,具体的实现,。,课堂练习:阅读抽象类,边界类,边界类是描述,系统,与,参与者,之间交互的抽象要素。,边界类只是对系统与参与者之间交互的,抽象建模,,并不表示交互的具体内容及交互界面的具体形式。,边界类,边界类,位于系统与外界的交界处:,窗体(,Form,)、对话框(,Dialog Box,)、以及表示通信协议(例如,,TCP/IP,)的类、直接与外部设备交互的类、直接与外部系统交互的类等都是边界类的例子。,边界类,对于每一个,参与者,,都应该至少设置一个,边界类,,以表示参与者与系统所进行的交互处理。,如果这个参与者与系统存在频繁的交互,并且各个交互内容之间不存在较密切的关系,就需要为,这个参与者,的每一种交互内容设置一个,边界类,。,实体类,实体类是系统表示,客观实体,的抽象要素。,像书店信息系统中的“书目”、“书单”等都属于实体类。,实体类保存的是放进,持久存储体,的信息:,所谓持久存储体是指像,数据库系统,、,文件,等可以永久存储数据的介质。,实体类,一般地,每个,实体类,在数据库中有对应的,表,,实体类中的,属性,对应数据库中表的,字段,。,但这并不意味着实体类和数据库中的表是一一对应的。,有可能是,一个实体类,对应,多个表,,也可能是,多个实体类,对应,一个表,。,控制类,控制类是负责其他类工作的类。,每个用例,通常有,一个控制类,,控制用例中的事件发生顺序。,控制类也可以在多个用例间共用。其他类并不向控制类发送消息,而是由控制类发出很多消息。,“出售图书”控制类,总结:,类图中的组成元素:,类、接口、协助、关系、注释、约束和包;,关系把类、协作、接口连接在一起构成一个图;,约束是对某些类和接口进行约束。,类的种类:,抽象类,不能直接实例化的类;,接口,接口中的方法都是抽象方法;,关联类,它的属性与两个都有关,但都不属于其中的一个;,模板类,(,参数化类,),在类实例化时,再确定参数的类型;,主动类和嵌套类。,5.10,类图建模,类图建模需要反复执行以下两个步骤:,确定类及其关联。,确定属性和操作。,1.,确定类和关联,(,1,)可以通过分析用例图确定类及其关联。通过图,3.8,的用例图分析,可以确定,Grades,和,ReportCards,两个类。,1.,确定类和关联,(,2,)通过用例图中的参与者名称,可以确定,Teacher,、,Student,和,Administrator,三个附加类。,(3),检查用例图中各个用例(功能)所属的类:,发布学生成绩报告单,Grades,类。,输入成绩,Grades,类。,更新成绩,Grades,类。,保存成绩,Grades,类。,加载成绩,Grades,类。,查询成绩,Grades,类。,生成学生成绩报告单,ReportCards,类。,系统登录,Login,类。,(,4,)创建类之间的关联:,Teacher,发布,Grades,。,Teacher,输入,Grades,。,Teacher,更新,Grades,。,保存,Grades,。,加载,Grades,。,Teacher,查询,Grades,。,Student,查询,Grades,。,Administrator,查询,Grades,。,Administrator,生成,ReportCards,。,归类为,Teacher,维护,Grades,归类为,Grades,类的私有操作,Grades,类提供查询成绩操作,Grades,类与,ReportCards,类是组成关系,系统的类之间的关联如下,Teacher,维护,Grades,。,Login,允许访问一个,WebSite,。,WebSite,显示,Grades,。,Teacher,通过,Login,查询,Grades,。,Administrator,通过,Login,查询,Grades,。,Administrator,生成,ReportCards,。,Student,通过,Login,查询,Grades,。,Grades,类与,ReportCards,类之间是组成关系。,学生成绩系统的类模型,1,2,3,4,5,6,7,8,(,6,)标识出类关联之间的多重性,一个,Teacher,至少维护一个,Grades,一个,Grades,只由一个,Teacher,维护,一个,Grades,只包含在一个,ReportCards,中,一个,ReportCards,至少包含一个,Grades,一个,Administrator,至少生成一个,ReportCards,一个,ReportCard,只由一个,Administrator,生成,学生成绩系统的类模型,2,确定属性和操作,(,1,),Grades,类,输入成绩,InputGrades(),更新成绩,UpdateGrades(),分发成绩,Distribute(),存储成绩,SaveGrades(),加载成绩,LoadGrades(),(,2,),ReportCard,类,生成学生成绩报告单,Generate(),(,3,),WebSite,类,用户名,UserName,用户密码,Password,登录功能,Login(),查询成绩,ViewGrades(),学生成绩系统的类模型,综合案例分析:,沈阳:张三,电子商务网站,北京蛋糕店,北京:李四,订货人,电子商务网站,各地蛋糕店,收货人,订货人,网站,商户,收货人,收货人,送货单,商户,订单项,怎样阅读,UML,类图,重点把握三项内容:类、关系、多重性。阅读顺序应遵循的原则:,首先搞清楚每个类的语义;,其次理解类间关系;,第三,结合多重性来理解类图的结构特点以及个个属性和方法的含义。,1.,理解类的语义,该类图包含,7,个类:,order(,订单,),,,orderitlm(,订单项,),customer(,顾客,),consignee(,收货人,),delierorder(,送货单,),peddlery(,商户,),product(,产品,),且每个类都定义了若干属性和方法。,2.,分析类关系,关系包含关联,(,包括聚合、组合,),、泛化、实现、依赖四种,在类图中,类之间存在的关系通常就包括这几种。,阅读类图时,从图中最复杂的类开始。在本例中,这个类就是,oeder(,订单,),。然后逐一地分析该类与其他类之间的关系。,(1)order,与,orderitlm,之间是组合关系,根据箭头的方向可知是,orderitlm,组合为,order,。即,order,包含了,orderitlm,。,(2)order,和,customer,、,consignee,、,deliverorder,是关联关系,即一个订单和客户、收货人、送货单是相关的。,第二复杂关系的类就是,deliverorder(,送货单,),,和它相关的也有,4,个类:,order,、,orderltem congsinee,、,peddlery,,即表示送货单与订单是相关的,同时还关联到订单项。另外,它与商户、收货人的关联关系也是很显然的。,分析完这两个类之后,会发现图中的几乎所有的关系都已经明了,只剩下一个,product,(产品),与它关联的类是,peddlery,和,orderltem,,显然产品属于某个商户的,订单项中必须指出是哪种商品。,3.,分析关联的多重性,order,类包含了两个方法:,dispatch(),和,close(),,它们分别实现“分拆订单生成送货单“和”完成订单“,而在,deliveorder(),类中有一个,close(),方法,同理它表示”完成订单“。,在,orderitem,中有一个,statechange(),方法和,deliverstate,,它们是用来改变其”是否交给收货人“标志位的。,阅读:先调用,order,的,dispatche(),方法,它将根据包含的,orderitem,中的产品信息来按供应商分拆成若干个,deliverorder,。商户登录系统后即可获取,deliverorder,,并执行完后调用,close(),方法。,这时,将调用,orderitem,的,statechange(),方法来改变其状态。,同时,再调用,order,的,close,方法。判断该,order,的所有的,ordeitem,是否都送到了,如果是就其,close(),掉。,源类,目标类,关联分析,Customer(1),Order(0,n),订单是属于某个客户的,网站的客户可以有,0,个或多个订单,Order(1),Consignee(1),每个订单只能够有一个收货人,Order(1),OrderItem(1,n),订单是由订单项组成的,至少要有一个订单项,最多可以有,n,个,Order(1),DeliverOrder(1,n),一个订单有一个或多个送货单,说明:系统根据订单项的产品所属的商户,将其分发给商户,拆成了多个送货单!,DeliverOrder(1),OrderItem(1,n),一张送货单对应订单中的一到多个订单项,DeliverOrder(1),Consignee(1),每张送货单都对应着一个收货人,Peddlery(1),DeliverOrder(0,n),每个商户可以有相关的,0,个或多个送货单,OrderItem(1),Product(1),每个订单项中都包含着唯一的一个产品,Peddlery(1),Prodcut(0,n),产品是属于某个商户的,可以注册,0,到多个产品,4,关联的导航性,对象的消息只能沿着导航箭头的方向发送给另一对象。,可以从对象,order,向,consignee,导航,但不能从,consignee,向,Order,导航。即在,Order,中可以获取其相应的,Consignee,,而从,Consignee,不能了解,Order,。,总 结,离开了类之间的关系,类模型仅仅只是一堆代表领域词汇的杂乱矩形方框。,关系说明这些词汇表达的概念之间的连接,这样才能完整地说明我们所建模的对象。,关联是类之间最基础的概念性连接。关联的多重性说明了一个类的多少个对象能够和另一个类的单个对象发生联系。和类一样关联也可以有自己的属性和操作。,总 结,一个类可以继承其他类的属性和操作。继承了属性和操作的了叫子类,被继承的类叫父类或超类。通过在初步类模型中寻找不同类的共同属性和操作可以发现类之间的继承关系。,抽象类只是为了提供其他类继承的基类之用,它本身不产生对象实例。,在依赖关系中一个类使用了另一个类。,类图给出了类的一般性定义。在某一特定时刻,及时对类的具体实例建模则要使用对象图。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服