1静态视图2UML中关系有哪些?分别如何用图形表示?UML图有哪些?其中哪些是静态图?哪些是动态图?知识回顾知识回顾3面向对象思想Rose模型的4种视图UML中类图阅读与绘制UML中对象图阅读与绘制课堂小结本讲主要内容本讲主要内容4Ø每个对象都扮演了一个角色,并为其它成员提供特定的服务或执行特定的行为。Ø在面向对象世界中,行为的启动是通过将“消息”传递给对此行为负责的对象来完成的;同时还将伴随着执行要求附上相关的信息(参数);而收到该消息的对象则会执行相应的“方法”来实现需求。Ø用类和对象表示现实世界,用消息和方法来模拟现实世界的核心思想u面向对象分析特点面向对象思想面向对象思想5u类在UML中的表示Ø名称:每个类都有一个惟一的名称,通常采用CamelCase格式表示。Ø属性:是已被命名的类的特性,它描述该类实例中包含的信息。Ø操作:是类所提供的服务,它可以由类的任何对象请求以影响其行为Ø属性名和操作名也通常采用CamelCase格式表示,只不过首字母通常为小写。面向对象思想(续)面向对象思想(续)6u类在UML中的表示Ø图形分析:Ø在Rose中设计一个供应用商类。面向对象思想(续)面向对象思想(续)7vRose模型放在4种视图下,分别是:l用例视图(UseCaseView):用于对需求建模,主要包括用例图、活动图,必要时也会用到对业务建模的顺序图或协作图等,有时还包括领域类图。l逻辑视图(LogicalView):用于对分析设计过程建模,主要包括类图、顺序图、协作图、状态图、包图等,有时也用到活动图。l组件视图(ComponentView):也称构件视图,建模软件的组件及其相互间的关系。组件可以是任何一个可重用的软件领域内的组成部分,如源程序、二进制文件、方法、类、可执行文件、文本文件等。l部署视图(DeploymentView):建模系统的各个硬件节点及其相互间的通信方式RoseRose模型的模型的44种视图种视图8v4种视图的关系l用例视图用于对系统的高层建模,站在用户的角度描述系统的功能及行为。在此基础上,对系统进行分析与设计,通过另外3个视图加以表示。逻辑视图部署视图组件视图用例视图RoseRose模型的模型的44种视图种视图9先看清有哪些类,然后看看类之间存在的关系,并结合多重性来理解类图的结构特点以及各个属性和方法的含义u类图绘制练习UMLUML中类图阅读与绘制中类图阅读与绘制10Ø读出类:图中共有7个类,Order、OrderItem、Customer、Consignee、DeliverOrder、Peddlery、Prodcut。Ø读出关系:从图中关系最复杂(也就是线最密集)的类开始阅读,本图中最复杂的就是Order类。1)OrderItem和Order之间是组合关系,根据箭头的方向可知Order包含了OrderItem。2)Order类和Customer、Consignee、DeliverOrder是关联关系。也就是说,一个订单和客户、收货人、送货单是相关的。u读图过程UMLUML中类图阅读与绘制(续)中类图阅读与绘制(续)11产品是属于某个商户的,可以注册0到多个产品Prodcut(0…n)Peddlery(1)每个订单项中都包含着唯一的一个产品Product(1)OrderItem(1)每个商户可以有相关的0个或多个送货单DeliverOrder(0…n)Peddlery(1)每张送货单都对应着一个收货人Consignee(1)DeliverOrder(1)一张送货单对应订单中的一到多个订单项OrderItem(1…n)DeliverOrder(1)说明:系统根据订单项的产品所属的商户,将其分发给商户,拆成了多个送货单!一个订单有一个或多个送货单DeliverOrder(1…n)Order(1)订单是由订单项组成的,至少要有一个订单项,最多可以有n个OrderItem(1…n)Order(1)每个订单只能够有一个收货人Consignee(1)Order(1)订单是属于某个客户的,客户可以有0个或多个订单Order(0…n)Customer(1)分析目标类及多重性源类及多重性u类图分析UMLUML中类图阅读与绘制(续)中类图阅读与绘制(续)12使用了更多辅助建模元素的类图使用了更多辅助建模元素的类图UMLUML中类图阅读与绘制(续)中类图阅读与绘制(续)13Ø导航箭号:类的实例之间只能沿着导航箭头的方向传递,在Order中可以获取其相应的Consignee,而从Consignee中是无法了解与其相关的Order的Ø角色名称:Customer端有一个“+Owner”字符串,这表示Customer扮演的角色是Owner,也能对关联进行命名增强的辅助建模元素分析增强的辅助建模元素分析14Ø导出属性:是指可以根据其他值计算出来的特性,这种属性应在其名称前加上一个“/”符号。Ø限定符:在Order和OrderItem之间的组合关系中,OrderItem这端多了一个方框,里面写着“ProductId”。它在UML中称为限定符,存在限定符的关联称为受限关联。它用来表示某种限定关系。在本例中,它的用途是说明:对于一张订单,每一种产品只能用一个订单项。Ø约束:用来说明规则,{xor}…Ø职责:在类的属性栏中添加注释行表示,或增加了一个新的分栏增强的辅助建模元素分析(续)增强的辅助建模元素分析(续)15Ø关联类即是关联也是类,它不仅像关联那样连接两个类,而且还可以定义一组属于关系本身的特性uu关联类特殊类分析特殊类分析16uu主动类与嵌套类Ø主动类的实例称为主动对象,一个主动对象拥有一个控制线程并且能够发起控制活动;它不在别的线程、堆栈或状态机内运行,具有独立的控制期。从某种意义上说,它就是一个线程。Ø在诸如Java的语言中,允许你将一个类的定义放在另一个类定义的内部,这就是嵌套类,在Java中也称为内层类。嵌套类是声明在它的外层类中的,因此只能够通过外层类或外层类的对象对它进行访问特殊类分析(续)特殊类分析(续)17Ø子集约束:常见对象约束语言常见对象约束语言18Ø异或关系:常见对象约束语言(续)常见对象约束语言(续)19Ø小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计uu需求描述建类图的过程建类图的过程20uu发现类发现类Ø小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计建类图的分析过程建类图的分析过程21uu筛选备选类筛选备选类11Ø“小王”、“人”、“家里”很明显是系统外的概念,无须对其建模;Ø而“个人图书管理系统”、“系统”指的就是将要开发的系统,即系统本身,也无须对其进行建模;Ø很明显“书籍”是一个很重要的类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都是用来描述书籍的基本信息的,因此应该作为“书籍”类的属性处理,而“规则”是指书号的生成规则,而书号则是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造函数的指南。Ø“基本信息”则是书名、作者、类别等描述书籍的基本信息统称,“关键字”则是代表其中之一,因此无需对其建模;Ø“功能”、“新书籍”、“信息”、“记录”都是在描述需求时使用到的一些相关词语,并不是问题域的本质,因此先可以将其淘汰掉;建类图的分析过程(续)建类图的分析过程(续)22Ø“计算机类”、“非计算机类”是图书的两大分类,因此应该对其建模,并改名为“计算机类书籍”和“非计算机类书籍”,以减少歧义;Ø“外借情况”则是用来表示一次借阅行为,应该成为一个候选类,多个外借情况将组成“外借情况列表”,而外借情况中一个很重要的角色是“朋友”—借阅主体。虽然到本系统中并不需要建立“朋友”的资料库,但考虑到可能会需要列出某个朋友的借阅情况,因此还是将其列为候选类。为了能够更好地表述,将“外借情况”改名为“借阅记录”,而将“外借情况列表”改名为“借阅记录列表”;Ø“购买金额”、“册数”都是统计的结果,都是一个数字,因此不用将其建模,而“特定时限”则是统计的范围,也无需将其建模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏着一个关键类—书籍列表,也就是执行统计的主体。uu筛选备选类筛选备选类22建类图的分析过程(续)建类图的分析过程(续)23u得到候选类Ø在使用“名词动词法”寻找类的时候,很多团队会在此耗费大量的时间,特别是对于中大型项目,这样很容易迷失方向。其实在此主要的目的是对问题领域建立概要的了解,无需太过咬文嚼字书籍计算机类书籍非计算机类书籍借阅记录借阅记录列表书籍列表建类图的分析过程(续)建类图的分析过程(续)24关联分析,建模,多重性分析,再建模关联分析,建模,多重性分析,再建模25书籍类:从需求描述中,可找到书名、类别、作者、出版社;同时从统计的需要中,可得知“定价”也是一个关键的成员变量。书籍列表类:书籍列表就是全部的藏书列表,其主要的成员方法是新增、修改、查询(按关键字查询)、统计(按特定时限统计册数与金额)。借阅记录类:借阅人(朋友)、借阅时间。借阅记录列表类:主要职责就是添加记录(借出)、删除记录(归还)以及打印借阅记录职责分析职责分析26导航性分析:Book与BookList之间、BorrowRecord和BorrowList之间是组合关系均无需添加方向描述,而Book与BorrowRecord之间则是双方关联,也无需添加约束:Book对象创建后就不能够被删除只能被修改,因此在Book类边上加上用自由文本写的约束;一本书要么属于计算机类,要么属于非计算机类,因此在ItBook和OtherBook间加了“{Xor}”约束限定符:一本书只有一册,因此只能够被借一次,因此对于一本Book而言只能有一个RecordId与其对应限定与修改限定与修改27Ø对象是一个存在于时间和空间中的具体实体,而类仅代表一个抽象,抽象出对象的“本质”。Ø类是共享一个公用结构和一个公共行为对象集合。Ø类是静态的,对象是动态的;类是一般化,对象是个性化;类是定义,对象是实例;类是抽象、对象是具体。对象与类图的关系对象与类图的关系28Ø对象名:由于对象是一个类的实例,因此其名称的格式是“对象名:类名”,这两个部分是可选的,但如果是包含了类名,则必须加上“:”,另外为了和类名区分,还必须加上下划线。Ø属性:由于对象是一个具体的事物,因此所有的属性值都已经确定,因此通常会在属性的后面列出其值。对象图的表示法对象图的表示法29Ø先找出类和对象,通常类在“class”、“new”、“implements”等关键字之后的,而对象名则通常是在类名之后的。Ø确定类间的关系。Ø针对交互在某特定时刻各对象的状态,使用对象图为这些对象建模。Ø绘制对象间的连接关系。对象图的绘制过程对象图的绘制过程30对象图绘制对象图绘制31Ø类图的绘制过程与如何读懂一个类图。Ø类图中的几种特殊类。Ø类图中的常用辅助建模元素。Ø对象图的绘制过程与如何读懂一个类图。课堂小结课堂小结321:利用rationalrose设计课堂中分析的个人图书管理系统UML类图。课后作业课后作业