第3章UML语言初览3.1概述3.2UML中的事物3.3UML中的关系3.4UML中的视图3.5UML中的图3.1概述UML用来描述模型的内容有3种,分别是事物(Things)、关系(Relationships)和图(Diagrams),而这3种内容下面又有具体的划分3.2UML中的事物3.2.1结构事物(StructureThings)3.2.2行为事物(BehaviorThings)3.2.3组织事物(GroupingThings)3.2.4辅助事物(AnnotationThings)3.2.1结构事物(StructureThings)结构事物主要包括7中1类类是具有相同属性、相同方法、相同语义和相同关系的一组对象的集合2接口接口是指类或组件所提供的、可以完成特定功能的一组操作的集合3协作协作定义了交互的操作,表示一些角色和其他元素一起工作,提供一些合作的动作4用例用例定义了系统执行的一组操作,对特定的用户产生可以观察的结果。5活动类活动类是类对象有一个或多个线程或进程的类。活动类和类相似,只是它的对象代表的元素的行为和其他的元素同时存。6组件组件是物理上可替换的,实现了一个或多个接口的系统元素。7节点节点是一个物理元素,它在运行时存在,代表一个可计算的资源,比如一台数据库服务器。用例1(fromUseCaseView)3.2.2行为事物(BehaviorThings)交互Interaction在UML图中,交互的消息通常画成带箭头的直线,如图所示状态机StateMachine状态机是对象的一个或多个状态的集合。在UML图中,状态机通常用一个圆角矩形来表示,如图3-10所示。3.2.3组织事物(GroupingThings)组织事物也称分组事物,只有一种组织事物称为包(Package)。包与组件的最大区别在于,包纯粹是一种概念上的东西,仅仅存在于开发阶段结束之前,而组件是一种物理的元素,存在于运行时。3.2.4辅助事物(AnnotationThings)类图的主要构成成分:辅助事物也称注释事物,属于这一类的只有注释(Annotation)。注释就是UML模型的解释部分。在UML图中,一般表示为折起一角的矩形,如图所示。3.3UML中的关系3.3.1关联关系(Association)3.3.2依赖关系(Dependency)3.3.3泛化关系(Generalization)3.3.4实现关系(Realization)3.3.1关联关系(Association)关联关系是一种结构化的关系,指一种对象和另一种对象有联系。给定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关对象。在UML图中,关联关系用一条实线表示如下图所示。另外,关联可以有方向,表示该关联在某方向被使用。只在一个方向上存在的关联,称作单向关联(UnidirectionalAssociation),在两个方向上都存在的关联,称作双向关联(BidirectionalAssociation)。3.3.2依赖关系(Dependency)对于两个对象X、Y,如果对象X发生变化,可能会引起对另一个对象Y的变化,则称Y依赖于X。在UML图中,依赖关系用一条带有箭头的虚线来表示,如右图所示3.3.3泛化关系(Generalization)UML中的泛化关系定义了一般元素和特殊元素之间的分类关系,与和C++及Java中的继承关系有些类似。在UML图中,泛化关系用一条带有空心箭头的实线来表示,如图左所示。3.3.4实现关系(Realization)实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来以上讲述了UML中的4种关系,除了需要注意各个关系的区别与联系以外,还要了解对关系的修饰。最常见的,对关系可以做两种修饰。第一种是命名,即可以为关系取名,第二种数字,可以表示不同对应情况的关系,比如一对多、多对一、一对一和多对多等。3.4UML中的视图视图只是表达系统某一方面特征的UML建模组件的子集,视图的划分带有一定的随意性。在最上一层,视图被划分成3个视图域:结构分类、动态行为和模型管理。主要分为以下几个视图1.静态视图2.用例视图3.配置视图4.活动视图5.状态视图6.交互视图7.模型管理视图3.5UML中的图3.5.1.用例图(UseCaseDiagram)3.5.2.类图(ClassDiagram)3.5.3.对象图(ObjectDiagram)3.5.4组件图(ComponentDiagram)3.5.5配置图(DeploymentDiagram)3.5.6时序图(SequenceDiagram)3.5.7协作图(CollaborationDiagram)3.5.8状态图(StatechartDiagram)3.5.9活动图(ActivityDiagram)3.5.1.用例图(UseCaseDiagram)用例图展现了一组用例、参与者以及它们间的关系。可以用用例图描述系统的静态使用情况。在对系统行为组织和建模方面,用例图是相当重要的。用例图的例子如右图所示。注释:①小人形状的用户和ATM是参与者;②椭圆形状的插入卡、输入密码、打印票据、验证密码及出款是用例;③这些概念在后续章节会有详细的阐述。3.5.2.类图(ClassDiagram)类图展示了一组类、接口和协作及它们间的关系,在建模中所建立的最常见的图就是类图。用类图说明系统的静态设计视图,包含主动类的类图——专注于系统的静态进程视图。系统可有多个类图,单个类图仅表达了系统的一个方面。一般在高层给出类的主要职责,在低层给出类的属性和操作。类图的例子如右图所示。注释:①图中反映了5个类之间的关联关系;②人民币账户类和美元账户类从账户类继承;③账户与ATM相关联;④用户与两种账户类相关联。3.5.3.对象图(ObjectDiagram)对象图展示了一组对象及它们间的关系表达了系统的静态设计视图或静态过程视图,除了现实和原型方面的因素外,它与类图作用是相同的。3.5.4组件图(ComponentDiagram)组件图,又称构件图,它由组件、接口和组件之间的联系构成。3.5.5配置图(DeploymentDiagram)配置图展现了对运行时处理节点以及其中组件的配署。它描述系统硬件的物理拓扑结构,以及在此结构上执行的软件执行情况注释:下图中有3个处理机与和两个设备,相互之间是关联的关系。3.5.6时序图(SequenceDiagram)时序图显示多个对象之间的动态协作,重点是显示对象之间发送的消息的时间顺序。注释:该图反映了用户与ATM的交互过程:用户把卡插入ATM中,ATM向用户发出需要密码指令,用户再把密码提供给ATM……3.5.7协作图(CollaborationDiagram)协作图在对一次交互中有意义的对象和对象间的链建模,它强调收发消息对象的组织结构,按组织结构对控制流建模。除了显示消息的交互之外,它还显示对象以及它们之间的关系。如下图例3.5.8状态图(StatechartDiagram)状态图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。一个状态图描述了一个状态机,用状态图说明系统的动态视图。注释:①标有“开始”和“结束”的是开始状态和结束状态;②整个状态的转换过程如下:从开始状态进入插入卡状态,经过输入密码操作,进入等待密码验证状态,然后进行密码验证,之后进入密码验证成功状态,再进行其他工作,最后工作完成取卡,进入到状态结束。3.5.9活动图(ActivityDiagram)活动图是状态图的一个变体,显示了系统中从一个活动到另一个活动的流程。注释:①标有“开始”和“结束”的是开始状态和结束状态。②活动图以活动作为节点,从开始状态起步,进行插入卡活动,然后输入密码,系统验证密码,并进行其他工作,最后用户取卡,接着活动结束。