软件建模技术-第3章-类图概要课件_第1页
软件建模技术-第3章-类图概要课件_第2页
软件建模技术-第3章-类图概要课件_第3页
软件建模技术-第3章-类图概要课件_第4页
软件建模技术-第3章-类图概要课件_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

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

文档简介

第三章类图3.1类图的概念3.2UML中的类3.3类图中的关系3.4阅读类图3.5如何建立类图3.6Rose2003类图操作第三章类图3.1类图的概念3.1类图的概念1、类图类图是描述类、协作(类或对象间的协作)、接口及其关系的图。3.1类图的概念1、类图3.1类图的概念图3-1电子商务网站的对象模型3.1类图的概念图3-1电子商务网站的对象模型3.1类图的概念2、类图的作用

类图常用来描述业务或软件系统的组成、结构和关系。3.1类图的概念2、类图的作用3.1类图的概念3、类图的组成元素类接口协作关系注释约束包3.1类图的概念3、类图的组成元素3.2UML中的类1、类的表示(1)类的定义类是具有相似结构、行为和关系的一组对象的描述符。(2)类的表示3.2UML中的类1、类的表示3.2UML中的类(3)类的命名由字符、数字、下划线组成的惟一的字符串;采用CamelCase格式(大写字母开头,混合大小写,每个单词一大写开始,避免使用特殊符号)类名的两种表示方法简单名Order路径名java::awt::RectangetbusinessRule::Order3.2UML中的类(3)类的命名3.2UML中的类(4)类的属性属性描述了类的静态特征;属性名的第一个字母小写;属性的定义格式

[可见性]属性名[:类型][‘[’多重性[次序]‘]’][=初始值][{特性}]说明:可见性包括+、-、#、~例:#visibility:Boolean=false

colors:Color[3]points:Point[2..*ordered]name:String[0..1]3.2UML中的类(4)类的属性3.2UML中的类(5)类的操作操作名的命名规范习惯采用和属性名相同的命名规则。类的操作的定义格式

[可见性]操作名[(参数列表)][:返回类型][{特性}]例:+hide():Boolean#create()-attachXWindow(xwin:XwindowPtr)3.2UML中的类(5)类的操作3.2UML中的类(6)类的职责职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。WashingMachineBrandnameModelnameSerialnumberCapacityAddclothes()Adddetergent()Removeclothes()Takedirtyclothesasinputandproducecleanclothesasoutput3.2UML中的类(6)类的职责WashingMachi3.2UML中的类(7)类的约束

约束指定了类所要满足的一个或多个规则。在UML中,约束是用花括号括起来的自由文本。

WashingMachineBrandnameModelnameSerialnumberCapacityAddclothes()Adddetergent()Removeclothes(){capacity=16or18or20lb}3.2UML中的类(7)类的约束WashingMachi3.2UML中的类2、类的种类(1)抽象类当某些类有一些共性的方法或属性时,可以定义一个抽象类来抽取这些共性,然后将包含这些共性方法和属性的具体类作为该抽象类的继承;抽象类是一种不能直接实例化的类,不能用抽象类创建对象;抽象类可以实现多态;3.2UML中的类2、类的种类3.2UML中的类(1)抽象类在UML中,抽象类和抽象方法的表示是将其名字用斜体表示。3.2UML中的类(1)抽象类3.2UML中的类(2)接口接口是一种类似于抽象类的机制,是一个没有具体实现的类。接口可以实现多态;在UML中接口有两种表示方法:

《Interface》图标表示法Collection构造符号表示法3.2UML中的类(2)接口《Interface》图标表示3.2UML中的类(3)关联类当两个类之间具有多对多的关系,并且有些属性不属于关联两端任何一个类;关联类通过一条虚线和对应的关联连接;3.2UML中的类(3)关联类3.2UML中的类(4)主动类主动类的实例称为主动对象,一个主动对象拥有一个控制线程并且能够发起控制活动;具有独立的控制期。从某种意义上说,它就是一个线程。在UML2.0中,主动类的表示方法为:在类的两边加上垂直线。3.2UML中的类(4)主动类3.2UML中的类(5)嵌套类将一个类的定义放在另一个类定义的内部,这就是嵌套类。在UML中,可以采用一个锚图标来表示这种关系3.2UML中的类(5)嵌套类3.3类图中的关系按照关系的性质分为4种:关联泛化依赖实现3.3类图中的关系按照关系的性质分为4种:1、关联association关联是模型元素间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链的描述。关联可以有方向,可以是单向关联或双向关联。1、关联associationClass1Class2associationnamerolename1rolename2multiplicity1multiplicity21、关联关联有名称、角色、多重性和导航性等语法。Class1Class2associationnamero1、关联(1)关联名描述关联的作用;通常使用动词或动词短语;1、关联(1)关联名1、关联(2)角色关联两端的类可以某种角色参与关联;通常使用名词或名词短语;1、关联(2)角色1、关联(3)多重性某个类有多少个对象可以和另一个类的单个对象关联;1、关联(3)多重性1、关联(3)多重性在UML中,常用的关联的多重性表示格式如下:0..10或1110..*(0..n)0或多个*0或多个1..*(1..n)1或多个885,7..105或7~101、关联(3)多重性1、关联(4)导航性用箭头显示导航性;描述源对象通过链接访问目标对象;只有源对象才能访问目标对象;1、关联(4)导航性1、关联(5)关联的约束关联可加上一些约束,以加强关联的含义;1、关联(5)关联的约束1、关联(6)限定符在关联端紧靠源类图标处可有限定符,带有限定符的关联称为限定关联。限定符的作用:用于将一个多(或一)对多关联转化为一个多(或一)对一关联。限定符是关联的属性,而不是类的属性。1、关联(6)限定符1、关联(6)限定符1、关联(6)限定符1、关联(7)关联的种类自返关联二元关联(前述)N元关联1、关联(7)关联的种类聚合Aggregation一种特殊形式的关联。在一个二元关联中两个类之间的整体与部分的关系。聚合Aggregation组合Composition是一种特殊形式的聚合;表示类之间整体和部分的关系。整体与部分具有相同的生存期。组合Composition2、泛化Generalization表示两个类元间“一般”与“特殊”的关系。对应面向对象编程语言中类与类之间的继承关系。AthleteSwimmerGolfer2、泛化GeneralizationAthleteSwimm3、实现Realization表达一种说明元素与实现元素之间的关系;在实现关系中,说明元素(称为提供者),实现元素(称为客户)典型应用:接口与实现它的类、协作与被协作实现的用例都是实现关系。3、实现Realization4、依赖Dependency描述两个或多个元素之间语义上的联系,如果一个元素(提供者)的变化将影响另一个元素(客户),则称客户依赖于提供者。4、依赖Dependency4、依赖依赖关系可以分为以下四类:1)使用依赖(Usage)2)抽象依赖(Abstraction)3)授权依赖(Permission)4)绑定依赖(Binding)4、依赖依赖关系可以分为以下四类:(1)使用依赖

表示客户使用提供者提供的服务以实现它的行为,包括:使用<<use>>--声明使用一个类时需要用到已存在的另一个类。

调用<<call>>--声明一个类调用其他类的操作的方法。

参数<<parameter>>--声明一个操作和它的参数之间的关系。

发送<<send>>--声明信号发送者和信号接收者之间的关系。实例化<<instantiate>>--声明用一个类的方法创建了另一个类的实例。

(1)使用依赖表示客户使用提供者提供的服务以实现它的行为,(2)抽象依赖表示客户与提供者之间用不同的方法表现同一个概念,通常一个概念更抽象,一个概念更具体。包括:跟踪<<trace>>--声明不同模型中的元素之间存在一些连接但不如映射精确。精化<<refine>>--声明具有两个不同语义层次上的元素之间的映射。

派生<<derive>>--声明一个实例可以从另一个实例导出。(2)抽象依赖表示客户与提供者之间用不同的方法表现同一个概念(3)授权依赖

表达提供者为客户提供某种权限以访问其内容的情形。包括:访问<<access>>--允许一个包访问另一个包的内容。导入<<import>>--允许一个包访问另一个包的内容并为被访问包的组成部分增加别名。

友元<<friend>>--允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。

(3)授权依赖表达提供者为客户提供某种权限以访问其内容的情(4)绑定依赖较高级的依赖类型,用于绑定模板以创建新的模型元素,包括:绑定<<bind>>--为模板参数指定值,以生成一个新的模型元素。

(4)绑定依赖较高级的依赖类型,用于绑定模板以创建新的模型元3.4阅读类图1、电子商务网站业务描述3.4阅读类图1、电子商务网站业务描述3.4阅读类图2、阅读顺序应遵循的原则先看清有哪些类;然后看看类之间存在的关系;结合多重性来理解类图的结构特点以及各个属性和方法的含义3.4阅读类图2、阅读顺序应遵循的原则先看清有软件建模技术-第3章-类图概要课件读图过程读出类:读出关系:从图中关系最复杂(也就是线最密集)的类开始阅读,本图中最复杂的就是Order类。

1)OrderItem和Order之间是组合关系,根据箭头的方向可知Order包含了OrderItem。

2)Order类和Customer、Consignee、DeliverOrder是关联关系。也就是说,一个订单和客户、收货人、送货单是相关的。读图过程读出类:读图过程多重性:用来说明关联的两个类之间的数量关系源类及多重性目标类及多重性分析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到多个产品读图过程多重性:用来说明关联的两个类之间的数量关系源类及多读图过程—理解方法与图Order类,有两个方法:dispatch()和close(),从名字中可以猜出它们分别实现“分拆订单生成送货单”和“完成订单”。而在DeliveOrder()类中则有一个Close()方法,同理它应该表示“完成送货”。而在OrderItem中有一个stateChange()方法和deliverState,不难猜出它就是用来改变其“是否交给收货人”标志位的先调用Order的dispatch()方法,它将根据其包含的OrderItem中产品信息,来按供应商户分拆成若干个DeliverOrder。商户登录系统后就可以获取其DeliverOrder,并在执行完后调用close()方法。这时,就将调用OrderItem的stateChange()方法来改为其状态。同时再调用Order的close()方法,判断该Order的所有的OrderItem是否都已经送到了,如果是就将其真正close()读图过程—理解方法与图Order类,有两个方法:dispat使用了更多辅助建模元素的类图使用了更多辅助建模元素的类图增强的辅助建模元素导航箭头:类的实例之间只能沿着导航箭头的方向传递,在Order中可以获取其相应的Consignee,而从Consignee中是无法了解与其相关的Order的角色名称:Customer端有一个“+Owner”字符串,这表示Customer扮演的角色是Owner,也能对关联进行命名增强的辅助建模元素导航箭头:类的实例之间只能沿着导航箭头的方导出属性:是指可以根据其他值计算出来的特性,这种属性应在其名称前加上一个“/”符号。限定符:在Order和OrderItem之间的组合关系中,OrderItem这端多了一个方框,里面写着“ProductId”。它在UML中称为限定符,存在限定符的关联称为受限关联。它用来表示某种限定关系。在本例中,它的用途是说明:对于一张订单,每一种产品只能用一个订单项约束:用来说明规则,{xor}…职责:在类的属性栏中添加注释行表示,或增加了一个新的分栏增强的辅助建模元素导出属性:是指可以根据其他值计算出来的特性,这种属性应在其名3.5如何建立类图1、类图的抽象层次概念类描述应用领域中的概念,仅包含类名,不考虑细节。分析类分析不针对具体语言,包含一些类的细节特性。设计类针对具体的语言,考虑类的实现细节。3.5如何建立类图1、类图的抽象层次概念类3.5如何建立类图2、建立类图的步骤分析问题域,确定需求;寻找类,确定类的含义和职责;定义类的属性和操作;确定类之间的关系;精化类和类间的关系;绘制类图。3.5如何建立类图2、建立类图的步骤分析问题域,确定需求;3.5如何建立类图3、寻找类的方法使用名词/动词寻找类:收集相关信息补充的需求规格说明用例项目说明文档其他文档分析信息名词、名词短语类或属性动词、动词短语操作3.5如何建立类图3、寻找类的方法使用名词/动词寻找类:3.5如何建立类图3、寻找类的方法使用CRC分析法寻找类:C-class(类)R-responsibility(职责)C-collaboration(协作)CRC分析法是根据类所要扮演的职责来确定类。脑力风暴收集信息。关键业务用类表示,其它卡片作为属性。3.5如何建立类图3、寻找类的方法使用CRC分析法寻找类:需求描述李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。分析需求描述李小平是一个爱书之人,家里各类书籍已过千册,而平时又发现类李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。发现类李小平是一个爱书之人,家里各类书籍已过千册,而平时又时筛选备选类“李小平”、“人”、“家里”很明显是系统外的概念,无须对其建模;而“个人图书管理系统”、“系统”指的就是将要开发的系统,即系统本身,也无须对其进行建模;很明显“书籍”是一个很重要的类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都是用来描述书籍的基本信息的,因此应该作为“书籍”类的属性处理,而“规则”是指书号的生成规则,而书号则是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造函数的指南。“基本信息”则是书名、作者、类别等描述书籍的基本信息统称,“关键字”则是代表其中之一,因此无需对其建模;“功能”、“新书籍”、“信息”、“记录”都是在描述需求时使用到的一些相关词语,并不是问题域的本质,因此先可以将其淘汰掉;筛选备选类“李小平”、“人”、“家里”很明显是系统外的概念,筛选修选类“计算机类”、“非计算机类”是该系统中图书的两大分类,因此应该对其建模,并改名为“计算机类书籍”和“非计算机类书籍”,以减少歧义;“外借情况”则是用来表示一次借阅行为,应该成为一个候选类,多个外借情况将组成“外借情况列表”,而外借情况中一个很重要的角色是“朋友”—借阅主体。虽然到本系统中并不需要建立“朋友”的资料库,但考虑到可能会需要列出某个朋友的借阅情况,因此还是将其列为候选类。为了能够更好地表述,将“外借情况”改名为“借阅记录”,而将“外借情况列表”改名为“借阅记录列表”;“购买金额”、“册数”都是统计的结果,都是一个数字,因此不用将其建模,而“特定时限”则是统计的范围,也无需将其建模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏着一个关键类—书籍列表,也就是执行统计的主体。筛选修选类“计算机类”、“非计算机类”是该系统中图书的两大分得到候选类在使用“名词动词法”寻找类的时候,很多团队会在此耗费大量的时间,特别是对于中大型项目,这样很容易迷失方向。其实在此主要的目的是对问题领域建立概要的了解,无需太过咬文嚼字书籍计算机类书籍非计算机类书籍借阅记录借阅记录列表书籍列表得到候选类书籍计算机类书籍非关联分析,建模多重性分析,再建模关联分析,建模多重性分析,再建模职责分析书籍类:从需求描述中,可找到书名、类别、作者、出版社;同时从统计的需要中,可得知“定价”也是一个关键的成员变量。书籍列表类:书籍列表就是全部

的藏书列表,其主要的成员方法

是新增、修改、查询(按关键字

查询)、统计(按特定时限统计

册数与金额)。借阅记录类:借阅人(朋友)、

借阅时间。借阅记录列表类:主要职责就是

添加记录(借出)、删除记录

(归还)以及打印借阅记录职责分析书籍类:从需求描述中,可找到书名、类别、作者、出版社限定与修改导航性分析:Book与BookList之间、BorrowRecord和BorrowList之间是组合关系均无需添加方向描述,而Book与BorrowRecord之间则是双方关联,也无需添加。约束:Book对象创建后就不能够

被删除只能被修改,因此在Book

类边上加上用自由文本写的约束;

一本书要么属于计算机类,要么

属于非计算机类,因此在ItBook

和OtherBook间加了“{Xor}”约束。限定符:一本书只有一册,因此只

能够被借一次,因此对于一本Book

而言只能有一个RecordId与其对应。限定与修改导航性分析:Book与BookList之间、Bor3.6Rose类图操作--类图到代码的转换绘制类图ToolsJava/J2EEProjectSpecification定义代码存放路径选种类,选择ToolsJava/J2EEGenerateCode说明:生成将文件中的“@roseuid4C88633D003E”为代码标识号,用于标识代码中的类、操作和其他模型元素。

Rose生成代码时,会默认生成构造方法。如不想生成,可将ToolsOptionsJavaClass选项的GenerateDefaultConstructor设为False(默认为True)。3.6Rose类图操作--类图到代码的转换绘制类图说明:新建类图选择ToolsJava/J2EEReverseEngineer选择类选中的类以及与该类相关联的类被添加拖拽至绘图面板即可3.6Rose2003类图操作--代码到类图的转换新建类图3.6Rose2003类图操作--代码到类图的转换3.6Rose2003类图操作—编辑代码选中类选择ToolsJava/J2EEEditCode窗口左下角打开相应代码3.6Rose2003类图操作—编辑代码选中类※

思考与练习※1、读图:要求按照3.4.2(P39)步骤※思考与练习※1、读图:要求按照3.4.2(P39)步骤※

思考与练习※2、画类图:一个教室有多张桌子,每一张桌子对应一排椅子,一排椅子可以做两个人。3、画类图:一个文件夹由多个文件或文件夹组成,文件有加密和无加密的。※思考与练习※2、画类图:一个教室有多张桌子,每一张桌子实例

:建模类图※

思考与练习※实例

:建模类图※思考与练习※答案答案第三章类图3.1类图的概念3.2UML中的类3.3类图中的关系3.4阅读类图3.5如何建立类图3.6Rose2003类图操作第三章类图3.1类图的概念3.1类图的概念1、类图类图是描述类、协作(类或对象间的协作)、接口及其关系的图。3.1类图的概念1、类图3.1类图的概念图3-1电子商务网站的对象模型3.1类图的概念图3-1电子商务网站的对象模型3.1类图的概念2、类图的作用

类图常用来描述业务或软件系统的组成、结构和关系。3.1类图的概念2、类图的作用3.1类图的概念3、类图的组成元素类接口协作关系注释约束包3.1类图的概念3、类图的组成元素3.2UML中的类1、类的表示(1)类的定义类是具有相似结构、行为和关系的一组对象的描述符。(2)类的表示3.2UML中的类1、类的表示3.2UML中的类(3)类的命名由字符、数字、下划线组成的惟一的字符串;采用CamelCase格式(大写字母开头,混合大小写,每个单词一大写开始,避免使用特殊符号)类名的两种表示方法简单名Order路径名java::awt::RectangetbusinessRule::Order3.2UML中的类(3)类的命名3.2UML中的类(4)类的属性属性描述了类的静态特征;属性名的第一个字母小写;属性的定义格式

[可见性]属性名[:类型][‘[’多重性[次序]‘]’][=初始值][{特性}]说明:可见性包括+、-、#、~例:#visibility:Boolean=false

colors:Color[3]points:Point[2..*ordered]name:String[0..1]3.2UML中的类(4)类的属性3.2UML中的类(5)类的操作操作名的命名规范习惯采用和属性名相同的命名规则。类的操作的定义格式

[可见性]操作名[(参数列表)][:返回类型][{特性}]例:+hide():Boolean#create()-attachXWindow(xwin:XwindowPtr)3.2UML中的类(5)类的操作3.2UML中的类(6)类的职责职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。WashingMachineBrandnameModelnameSerialnumberCapacityAddclothes()Adddetergent()Removeclothes()Takedirtyclothesasinputandproducecleanclothesasoutput3.2UML中的类(6)类的职责WashingMachi3.2UML中的类(7)类的约束

约束指定了类所要满足的一个或多个规则。在UML中,约束是用花括号括起来的自由文本。

WashingMachineBrandnameModelnameSerialnumberCapacityAddclothes()Adddetergent()Removeclothes(){capacity=16or18or20lb}3.2UML中的类(7)类的约束WashingMachi3.2UML中的类2、类的种类(1)抽象类当某些类有一些共性的方法或属性时,可以定义一个抽象类来抽取这些共性,然后将包含这些共性方法和属性的具体类作为该抽象类的继承;抽象类是一种不能直接实例化的类,不能用抽象类创建对象;抽象类可以实现多态;3.2UML中的类2、类的种类3.2UML中的类(1)抽象类在UML中,抽象类和抽象方法的表示是将其名字用斜体表示。3.2UML中的类(1)抽象类3.2UML中的类(2)接口接口是一种类似于抽象类的机制,是一个没有具体实现的类。接口可以实现多态;在UML中接口有两种表示方法:

《Interface》图标表示法Collection构造符号表示法3.2UML中的类(2)接口《Interface》图标表示3.2UML中的类(3)关联类当两个类之间具有多对多的关系,并且有些属性不属于关联两端任何一个类;关联类通过一条虚线和对应的关联连接;3.2UML中的类(3)关联类3.2UML中的类(4)主动类主动类的实例称为主动对象,一个主动对象拥有一个控制线程并且能够发起控制活动;具有独立的控制期。从某种意义上说,它就是一个线程。在UML2.0中,主动类的表示方法为:在类的两边加上垂直线。3.2UML中的类(4)主动类3.2UML中的类(5)嵌套类将一个类的定义放在另一个类定义的内部,这就是嵌套类。在UML中,可以采用一个锚图标来表示这种关系3.2UML中的类(5)嵌套类3.3类图中的关系按照关系的性质分为4种:关联泛化依赖实现3.3类图中的关系按照关系的性质分为4种:1、关联association关联是模型元素间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链的描述。关联可以有方向,可以是单向关联或双向关联。1、关联associationClass1Class2associationnamerolename1rolename2multiplicity1multiplicity21、关联关联有名称、角色、多重性和导航性等语法。Class1Class2associationnamero1、关联(1)关联名描述关联的作用;通常使用动词或动词短语;1、关联(1)关联名1、关联(2)角色关联两端的类可以某种角色参与关联;通常使用名词或名词短语;1、关联(2)角色1、关联(3)多重性某个类有多少个对象可以和另一个类的单个对象关联;1、关联(3)多重性1、关联(3)多重性在UML中,常用的关联的多重性表示格式如下:0..10或1110..*(0..n)0或多个*0或多个1..*(1..n)1或多个885,7..105或7~101、关联(3)多重性1、关联(4)导航性用箭头显示导航性;描述源对象通过链接访问目标对象;只有源对象才能访问目标对象;1、关联(4)导航性1、关联(5)关联的约束关联可加上一些约束,以加强关联的含义;1、关联(5)关联的约束1、关联(6)限定符在关联端紧靠源类图标处可有限定符,带有限定符的关联称为限定关联。限定符的作用:用于将一个多(或一)对多关联转化为一个多(或一)对一关联。限定符是关联的属性,而不是类的属性。1、关联(6)限定符1、关联(6)限定符1、关联(6)限定符1、关联(7)关联的种类自返关联二元关联(前述)N元关联1、关联(7)关联的种类聚合Aggregation一种特殊形式的关联。在一个二元关联中两个类之间的整体与部分的关系。聚合Aggregation组合Composition是一种特殊形式的聚合;表示类之间整体和部分的关系。整体与部分具有相同的生存期。组合Composition2、泛化Generalization表示两个类元间“一般”与“特殊”的关系。对应面向对象编程语言中类与类之间的继承关系。AthleteSwimmerGolfer2、泛化GeneralizationAthleteSwimm3、实现Realization表达一种说明元素与实现元素之间的关系;在实现关系中,说明元素(称为提供者),实现元素(称为客户)典型应用:接口与实现它的类、协作与被协作实现的用例都是实现关系。3、实现Realization4、依赖Dependency描述两个或多个元素之间语义上的联系,如果一个元素(提供者)的变化将影响另一个元素(客户),则称客户依赖于提供者。4、依赖Dependency4、依赖依赖关系可以分为以下四类:1)使用依赖(Usage)2)抽象依赖(Abstraction)3)授权依赖(Permission)4)绑定依赖(Binding)4、依赖依赖关系可以分为以下四类:(1)使用依赖

表示客户使用提供者提供的服务以实现它的行为,包括:使用<<use>>--声明使用一个类时需要用到已存在的另一个类。

调用<<call>>--声明一个类调用其他类的操作的方法。

参数<<parameter>>--声明一个操作和它的参数之间的关系。

发送<<send>>--声明信号发送者和信号接收者之间的关系。实例化<<instantiate>>--声明用一个类的方法创建了另一个类的实例。

(1)使用依赖表示客户使用提供者提供的服务以实现它的行为,(2)抽象依赖表示客户与提供者之间用不同的方法表现同一个概念,通常一个概念更抽象,一个概念更具体。包括:跟踪<<trace>>--声明不同模型中的元素之间存在一些连接但不如映射精确。精化<<refine>>--声明具有两个不同语义层次上的元素之间的映射。

派生<<derive>>--声明一个实例可以从另一个实例导出。(2)抽象依赖表示客户与提供者之间用不同的方法表现同一个概念(3)授权依赖

表达提供者为客户提供某种权限以访问其内容的情形。包括:访问<<access>>--允许一个包访问另一个包的内容。导入<<import>>--允许一个包访问另一个包的内容并为被访问包的组成部分增加别名。

友元<<friend>>--允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。

(3)授权依赖表达提供者为客户提供某种权限以访问其内容的情(4)绑定依赖较高级的依赖类型,用于绑定模板以创建新的模型元素,包括:绑定<<bind>>--为模板参数指定值,以生成一个新的模型元素。

(4)绑定依赖较高级的依赖类型,用于绑定模板以创建新的模型元3.4阅读类图1、电子商务网站业务描述3.4阅读类图1、电子商务网站业务描述3.4阅读类图2、阅读顺序应遵循的原则先看清有哪些类;然后看看类之间存在的关系;结合多重性来理解类图的结构特点以及各个属性和方法的含义3.4阅读类图2、阅读顺序应遵循的原则先看清有软件建模技术-第3章-类图概要课件读图过程读出类:读出关系:从图中关系最复杂(也就是线最密集)的类开始阅读,本图中最复杂的就是Order类。

1)OrderItem和Order之间是组合关系,根据箭头的方向可知Order包含了OrderItem。

2)Order类和Customer、Consignee、DeliverOrder是关联关系。也就是说,一个订单和客户、收货人、送货单是相关的。读图过程读出类:读图过程多重性:用来说明关联的两个类之间的数量关系源类及多重性目标类及多重性分析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到多个产品读图过程多重性:用来说明关联的两个类之间的数量关系源类及多读图过程—理解方法与图Order类,有两个方法:dispatch()和close(),从名字中可以猜出它们分别实现“分拆订单生成送货单”和“完成订单”。而在DeliveOrder()类中则有一个Close()方法,同理它应该表示“完成送货”。而在OrderItem中有一个stateChange()方法和deliverState,不难猜出它就是用来改变其“是否交给收货人”标志位的先调用Order的dispatch()方法,它将根据其包含的OrderItem中产品信息,来按供应商户分拆成若干个DeliverOrder。商户登录系统后就可以获取其DeliverOrder,并在执行完后调用close()方法。这时,就将调用OrderItem的stateChange()方法来改为其状态。同时再调用Order的close()方法,判断该Order的所有的OrderItem是否都已经送到了,如果是就将其真正close()读图过程—理解方法与图Order类,有两个方法:dispat使用了更多辅助建模元素的类图使用了更多辅助建模元素的类图增强的辅助建模元素导航箭头:类的实例之间只能沿着导航箭头的方向传递,在Order中可以获取其相应的Consignee,而从Consignee中是无法了解与其相关的Order的角色名称:Customer端有一个“+Owner”字符串,这表示Customer扮演的角色是Owner,也能对关联进行命名增强的辅助建模元素导航箭头:类的实例之间只能沿着导航箭头的方导出属性:是指可以根据其他值计算出来的特性,这种属性应在其名称前加上一个“/”符号。限定符:在Order和OrderItem之间的组合关系中,OrderItem这端多了一个方框,里面写着“ProductId”。它在UML中称为限定符,存在限定符的关联称为受限关联。它用来表示某种限定关系。在本例中,它的用途是说明:对于一张订单,每一种产品只能用一个订单项约束:用来说明规则,{xor}…职责:在类的属性栏中添加注释行表示,或增加了一个新的分栏增强的辅助建模元素导出属性:是指可以根据其他值计算出来的特性,这种属性应在其名3.5如何建立类图1、类图的抽象层次概念类描述应用领域中的概念,仅包含类名,不考虑细节。分析类分析不针对具体语言,包含一些类的细节特性。设计类针对具体的语言,考虑类的实现细节。3.5如何建立类图1、类图的抽象层次概念类3.5如何建立类图2、建立类图的步骤分析问题域,确定需求;寻找类,确定类的含义和职责;定义类的属性和操作;确定类之间的关系;精化类和类间的关系;绘制类图。3.5如何建立类图2、建立类图的步骤分析问题域,确定需求;3.5如何建立类图3、寻找类的方法使用名词/动词寻找类:收集相关信息补充的需求规格说明用例项目说明文档其他文档分析信息名词、名词短语类或属性动词、动词短语操作3.5如何建立类图3、寻找类的方法使用名词/动词寻找类:3.5如何建立类图3、寻找类的方法使用CRC分析法寻找类:C-class(类)R-responsibility(职责)C-collaboration(协作)CRC分析法是根据类所要扮演的职责来确定类。脑力风暴收集信息。关键业务用类表示,其它卡片作为属性。3.5如何建立类图3、寻找类的方法使用CRC分析法寻找类:需求描述李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。分析需求描述李小平是一个爱书之人,家里各类书籍已过千册,而平时又发现类李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。发现类李小平是一个爱书之人,家里各类书籍已过千册,而平时又时筛选备选类“李小平”、“人”、“家里”很明显是系统外的概念,无须对其建模;而“个人图书管理系统”、“系统”指的就是将要开发的系统,即系统本身,也无须对其进行建模;很明显“书籍”是一个很重要的类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都是用来描述书籍的基本信息的,因此应该作为“书籍”类的属性处理,而“规则”是指书号的生成规则,而书号则是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造函数的指南。“基本信息”则是书名、作者、类别等描述书籍的基本信息统称,“关键字”则是代表其中之一,因此无需对其建模;“功能”、“新书籍”、“信息”、“记录”都是在描述需求时

温馨提示

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

评论

0/150

提交评论