1、可视化建模与UML,教学安排,一、基础部分专题一:UML概述专题二:面向对象概念与UML的组成二、UML模型图专题三:类图、对象图、包图专题四:用例图专题五:交互图(顺序图、协作图)专题六:状态图专题七:活动图专题八:部署图与配置图三、案例分析专题九:网上书店项目分析,类图什么是类图类图的应用类图的组成类图的建模技术对象图包图实例分析图书管理系统,本次课主要内容,什么是类图?,类(Class)、对象(Object)和它们之间的关系是面向对象技术中最基本的元素。类图技术是OO方法的核心。类图标加上它们之间的关系就构成了类图。A class diagram is a graphic present
2、ation of the static view that shows a collection of declarative (static) model elements, such as classes, types, and their contents and relationships.,类图的应用,类图用于对系统静态设计视图建模。与数据模型不同,它不仅显示了信息的结构,同时还描述了系统的行为。类图中可以包含接口,包,关系等建模元素,也可以包含对象,链等实例。类图典型的应用在下面三类建模:,对系统的词汇建模对简单协作建模对逻辑数据库模式建模,类图的组成,类图通常包含下述内容:,类接
3、口协作依赖、泛化和关联关系,类图可以包含注解和约束;类图还可以有包或子系统,二者都用于把模型元素聚集成更大的组件。,类(Class),A class is the descriptor for a set of objects with similar structure, behavior, and relationships.,在UML中,类可视化表示为划分成三个格子的长方形,如图所示:,类名,属性,操作,类的关系,类之间的静态关系主要有:依赖:它表示类之间的使用关系(包括精化、 跟踪和绑定关系)泛化:它把一般类连接到它的特殊类;关联:它表示对象之间的结构关系。,类的泛化,泛化意味着子类的
4、对象可以被用在父类的对象可能出现的任何地方,但反之不行。泛化为“is-kind-of”的关系多数情况,用类和接口间的泛化指明继承关系。,类的关联,关联(association) 表示两个类之间存在某种语义上的联系,它是一种结构关系,规定了一种事物的对象可以和另一种事物的对象相联系。关联的图标:在类图中,关联用一条把类连接在一起的实线表示。,关联名称,可以给关联加上关联名,来描述关联的作用。例如Person类和Company类之间的关联可以表示多种意义,如这个人是公司的客户、雇员、所有者等。下图是使用关联名的一个例子:一般地,关联的名字通常是动词或动词短语。关联命名的原则是该命名是否有助于理解该
5、模型。,关联角色,关联两端的类可以某种角色参与关联。例如下图中,“公司”以“雇主”的角色,“人”以“雇员”的角色参与关联。“雇主”和“雇员”称为角色名。如果在关联上没有标出角色名,则隐含地用类的名称作为角色名。,关联的多重性,角色还具有多重性(Multiplicity),表示可以有多少个对象参与该关联。在下图中,雇主(公司)可以雇佣多个雇员,表示为“0.n”; 雇员只能被一家雇主雇佣,表示为“1”。,多重性指标,聚集和组合,聚集(aggregation)是一种特殊形式的关联。聚集表示类之间的整体与部分的关系。组合(composition)是一种特殊形式的聚集,组合关系中的整体与部分具有同样的生
6、存期。An aggregation is a form of association that specifies a whole-part relationship between a whole and a constituent part.A composition is a form of aggregation association with strong ownership and coincident lifetime of parts by the whole.,聚集和组合的表示,UML中聚集和组合的表示:,类的依赖,A dependency is a relationshi
7、p between two elements in which a change to one element (the supplier) may affect or supply information needed by the other element (the client).有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。在类中,依赖由各种原因引起,如:一个类向另一个类发消息;一个类是另一个类的某个操作参数类型。,类的泛化,泛化(Generalization)定义了一般元素和特殊元素之间的分类关系。在UM
8、L中,泛化表示为一头为空心三角形的连线。A generalization is a taxonomic relationship between a more general element and a more specific element. The more specific element is fully consistent with the more general element and contains additional information.,接口(Interface),接口是一组用于描述类或构件的一个服务的操作。在图形上,把接口画为一个圆;其扩展形式是接口表示为一
9、个构造型化类。,协作(Collaboration),协作是一组类、接口和其他元素的群体,它们共同工作,提供比各组成部分的功能总和更强的合作行为。,例子,类图的抽象层次,在软件开发的不同阶段使用的类图具有不同的抽象层次。一般地,类图可分为三个层次,即概念层,说明层和实现层。类的概念层,说明层和实现层的划分最先是由 Steve Cook和John Daniels引入的。,概念层(Conceptual)类图描述应用领域中的概念,一般地,这些概念和类有很自然的联系,但两者并没有直接的映射关系。说明层(Specification)类图描述软件的接口部分,而不是软件的实现部分。实现层(Implementa
10、tion)类图才真正考虑类的实现问题,揭示实现细节。,类图的三个层次的例子,建立类图的一般步骤,1. 研究分析问题领域2. 发现对象与类,明确它们的含义和责任,确定属性。3. 发现类之间的关系。把类之间的关系用关联、泛化、聚集、组合、依赖等关系表达出来。4. 设计类与关系。调整和细化已得到的类和类之间的关系,解决诸如命名冲突、功能重复等问题。5. 绘制类图并编制相应的说明。,概念模型(领域模型),如何发现类和它们之间的关系,名词-动词分析法找出以上来源中的名词或名词短语,作为候选类对候选类进行筛选,去掉冗余的、和系统无关的、以及非独立的类以动词为线索确定类之间的关系,实例分析-图书管理系统,在
11、图书管理系统中,要为每个借阅者建立一个账户,并给借阅者发放借阅卡(借阅卡可以提供借阅卡号、借阅者姓名),账户中存储借阅者的个人信息、借阅信息以及预订信息,持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预订书刊并取消预订,但这些操作都是通过图书管理员进行的。,图书管理系统,在借阅书刊时,需要输入所借阅的书刊名、书刊的ISBN/ISSN号,然后输入借阅者的图书卡号和借阅者名,完成后提交所填表格,系统验证借阅者是否有效,若有效,借阅请求被接受,系统查询借阅者所借阅的书刊是否存在,若存在,则借阅者可借出书刊,系统记录借阅记录。借阅者还书后,系统清除借阅记录。如果借阅者所借书刊已被借出,借阅者
12、还可预订该书刊。,课堂练习-网上书店系统,通过Internet接受订单一个顾客可以拥有一个帐号,系统维护顾客最多达1000000个的帐号对所有的帐号提供密码保护能够搜索标准的图书目录提供多种搜索图书目录的方法,包括按作者搜索、按书名搜索、按ISBN搜索、按关键字搜索本系统采取货到付款的方式根据顾客的定购量确定书价折扣顾客可以发表图书评论装货站工作人员负责根据订单装货收货站工作人员确保商品数量同订单相符,分析模型,分析类分为以下三种:边界类实体类控制类,边界类,边界类处理系统环境与系统内部之间的通信,为用户或另一个系统提供了接口。边界类组成了系统中依赖于环境的部分,边界类用于为系统的接口建模,代
13、表了系统和系统外的一些实体之间的接口。,边界类,实体类,实体类是模拟必须被存储的信息和关联行为的类。实体对象是实体类的实例,被用来保存或更新关于某个现象的信息,通常是持久性的。实体类通常是独立于他们的环境,对于系统环境如何与系统通信是不敏感的。,实体类,控制类,控制类是用来为特定于一个或几个用例的控制行为建模的类。控制对象是控制类的实例,它经常控制其他的对象,所以控制对象的行为是协调类型的,控制类协调实现用例的规定行为所需要的事件。控制类封装了特定于用例的行为,通常依赖于应用程序的类。,控制类,实例分析-图书管理系统,-查看具体的模型图,设计模型,实例分析-图书管理系统 -查看具体的模型图,对
14、象图(Object Diagram),对象图是表示在某一时间点上一组对象以及它们的关系的图。在图形上,对象图是顶点和弧的集合。A object diagram is a diagram that shows objects and their relationships at a point in time.,对象图与类图,对象图的模型元素有对象和链(link)。对象是类的实例;对象之间的链是类之间的关联的实例。对象与类的图形表示相似,UML中对象图与类图具有相同的表示形式。对象图实质上是类图的实例。对象图常用于表示复杂的类图的一个实例。对象图的使用相当有限,主要用于表达数据结构的示例,以及了
15、解系统在某个特定时刻的具体情况。,对象图,对象图,描述参与一个交互的各个对象在交互过程中某一时刻的状态。 可以被看作是类图在某一时刻的实例。,类图和对象图的区别,类图和对象图,包(Package),包是用于把元素组织成组的通用机制。在图形上, 把包画为带标签的文件夹。A package is a general-purpose mechanism for organizing elements into groups.,包的有关说明,包名分simple name和path name两种形式。例:CameraSensors:Vision:Camera包中可以包含其它建模元素,如class, in
16、terface, component, node, use case, package, , 等。包可以嵌套,但嵌套层次不要过深。包没有实例,即在系统运行时见不到包。包之间可以存在依赖关系, 但这种依赖关系不存在传递性。,包的应用,对建模元素进行分组。设计良好的包把一些语义上接近并倾向于一起变化的元素组织在一起。在Rose中,包可以提供一些特殊的功能,如在数据建模中,用包表示模式和域包;在数据模型和对象模型之间的转换是以包为单位进行的;在Web建模中,包可以表示某一虚拟目录(virtual directory),在该目录下的所有web元素都在这个包中;包在Rose中还可以作为控制单元(cont
17、rolled unit),以方便团队开发和配置管理。,作业1,问题:请仔细阅读以下问题描述,建立银行系统的概念类图。银行是与生活紧密相关的一个机构,银行提供了存款、取未、转账等业务。在银行设立账户的人或机构通常被称为银行的客户。一个客户可以在银行开多个账户,客户可以存钱到账户中,也可以从自己的账户中取钱,还可以将存款从一个账户转到另一个账户。客户还可以随时查询自己账户的情况,并查询以前所进行的存款、取款等交易记录。客户也有权利要求关闭账户。上面所描述的是银行的最基本功能,实际生活中的银行要具有复杂得多的功能,譬如客户可以持有信用卡,可以使用信用卡来进行存取、支付等活动。为了简化系统,本章的例子
18、只考虑上述的基本功能。在对上面描述的银行系统的基本需求进行分析后,可知这个简化的银行系统至少应该具有如下功能:(1)一个银行可以有多个账户(2)一个银行可以有多个客户(3)一个客户可以持有多个账户(4)一个账户可以有多个持有者(5)可以开户(6)可以注销账户(7)可以取钱(8)可以存钱(9)可以在银行内的账户之间转账(10)可以在不同银行的账户之间转账上面每一行描述了一个功能,这种表达有利于测试需求的定义,因为每一行描述的功能都是单独可测的。在分析系统需求时,保证每个功能可测是一个很好的习惯。例如,像“必须易于使用”就是主观的,所以可能是不可测的。要避免象这样的不清楚的需求,更有用的需求集应该列出用户认为“易于使用”的特定的用户界面的特性。,作业2,完善教材第3章中所描述的篮球比赛的类图。教材P52 习题4、5教材P60 习题4,思考题,类图代表了什么含义?查找资料阐述领域建模的方法如何发现关联关系?,