2020年2月9日11时24分1UML结构•构造块——这些是基本UML建模元素(事物、关系和图)•公共机制——达到特定目标的公共UML方法。(规格说明等)•构架——系统构架的UML视图。(可见性,完整性等)2020年2月9日11时24分21、UML构造块•物件(事物)—这些是建模元素本身。(结构、行为、分组、注释)•关系——这些把物件联系在一起,关系说明两个或多个物件是如何语义相关的。(依赖、关联、泛化、实现)•图——这些是UML模型的视图,它们展现物件的集合。(9种)2020年2月9日11时24分31)UML物件UML物件可以分成:•结构物件——UML模型的名词,如类、接口、协作、用例、活动类、组件、节点。•行为物件——UML模型的动词,如交互、状态机。•分组物件——包,它用于把语义上相关的建模元素分组为内聚的单元。•注解物件——注解,它附加到模型以捕获特殊信息。属性用例包结点状态组件类操作对象属性操作接口注释2020年2月9日11时24分42)UML关系关联组合(组装)聚合(聚集)依赖实现泛化(继承,概括)2020年2月9日11时24分5用UML对系统建模1、UML中的图:用例图、类图、对象图、状态图、序列图、协作图、活动图、构件图、部署图共九种用例图:用于显示若干角色,以及这些角色与系统提供的用例之间的连接关系。•类图:用来表示系统中的类和类之间的关系,它是对系统静态结构的描述。•对象图:是类图的变体,两者之间的差别在于,对象图表示的是类的对象实例,而不是真实的类。对象图是类图的一个范例。•序列图:用来反映若干个对象之间的动态协作关系,也就是随着时间的流逝对象之间是如何交互的。•协作图:和序列图的作用一样,反映的也是动态协作,除了显示消息变化称为交互外,协作图还显示了对象和它们之间的关系,称为上下文有关。由于协作图或序列图都反映对象之间的交互,所以建模者可以任意选择一种反映对象间的协作,如果需要强调时间和序列,最好选择序列图,如果需要强调上下文相关,最好选择协作图。状态图:是对类所描述事物的补充说明,它显示了类的所有对象可能具有的状态,以及引起状态变化的事件。•活动图:反映一个连续的活动流,相对于描述活动流来说,活动图更常用于描述某个操作执行时的活动状况。•构件图:用来反映代码的物理结构•部署图:用来显示系统中软件和硬件的物理架构2020年2月9日11时24分6用UML对系统建模2、UML模型:包含用例模型,静态模型,动态模型共三种•用例模型:从用户角度描述系统需求,是所有开发活动的指南。包含:一或者多张用例图•静态模型:描述系统的元素与元素间的关系。包括:类图,对象图,构件图,部署图•动态模型:描述系统随时间发展的行为。包含:状态图,序列图,协作图,活动图2020年2月9日11时24分72020年2月9日11时24分8UML中的图类图对象图用例图顺序图协作图状态图活动图构件图实施图2020年2月9日11时24分9类图和对象图面向对象的开发方法的基本任务是建立对象模型,是软件系统开发的基础。UML中的对象类图(ClassDiagram)与对象图(ObjectDiagram)表达了对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。一、类图,是面向对象模型的最基本的模型元素,用类图来描述。类图(Classdiagram)由系统中使用的类以及它们之间的关系组成,是描述系统的一种图式,分为长式和短式。类及类型名均用英文大写字母开头,属性及操作名为小写字母开头。常见类型有:Char,Boolean,Double,Float,Integer,Object,Short,String等。类图是构建其它图的基础。2020年2月9日11时24分10小汽车注册号:String日期:Cardata速度:Integer方向:Direction属性:类型类名操作类名对象是对象类的实例(instance),用对象图来描述。对象图亦分长式和短式。对象名:类名属性操作对象名类图与对象图丁一:作家姓名=丁一年龄=30丁一办公室中的PC:计算机名称=Dell466内存=64丁一家里的PC:计算机名称=长城PIIMMX内存=64对象图2020年2月9日11时24分11(1)属性(attribute)属性用来描述类的特征,表示需要处理的数据。属性定义:visibilityattribute-name:type=initial-value{property-string}可见性属性名:类型=缺省值{约束特性}其中:可见性(visibility)表示该属性对类外的元素是否可见。分为:public(+)公有的,即模型中的任何类都可以访问该属性。private(-)私有的,表示不能被别的类访问。protected(#)受保护的,表示该属性只能被该类及其子类访问。如果可见性未申明,表示其可见性不确定。2020年2月9日11时24分12(2)操作对数据的具体处理方法的描述则放在操作部分,操作说明了该类能做些什么工作。操作通常称为函数,它是类的一个组成部分,只能作用于该类的对象上。操作定义:visibilityoperating-name(parameter-list):return-type{property-string}可见性操作名(参数表):返回类型{约束特性}其中:可见性同上。参数表:参数名:类型,…Parameter-name:type=default-value返回类型:操作返回的结果类型。类图的描述2020年2月9日11时24分13UML中类的关系有关联(association)、聚集(aggregation)、泛化(generalization)、依赖(depending),实现。一、关联关联是表示实例之间的结构关系公司员工0..*顾佣0..*工作于管理1..*工人老板0..1图A顾佣关联UML中类之间的关系依赖表示类之间的使用关系。泛化(概括)表示一般类和特殊类之间的关系。关联和聚集都表示实例之间的结构关系。2020年2月9日11时24分14聚集是一种特殊的关联,它指出类间的“整体-部分”关系。关联又分为:1、聚集(aggregation)聚集:整体类由部分类组成的关联,其中部分类可以独立于整体类而存在。整体类部分类2、组合或组装(composition)组装:整体类由部分类组成的关联,其中部分类不可以独立于整体类而存在。整体与部分同时存在。整体类部分类窗口工具框显示区标题聚集窗口标题工具框显示区组合关系项目人员**2020年2月9日11时24分15三、泛化泛化指出类之间的“一般与特殊关系”,即继承关系。父类与子类之间构成类的分层结构。一般类特殊人员教师学生抽象类指没有实例的类,定义一些抽象的操作,即不提供实现方法的操作,只提供操作的特征。并附以{abstract}。交叠泛化在继承树中,若存在某种具有公共父类的多重继承,称为是交叠(overlapping)的。否则是不交的(disjoint)。完全泛化一般类特化出它所有的子类,称为完全泛化,记为{complete}。不完全泛化即未特化出它所有的子类,称为是不完全泛化的,表示为{incomplete}.2020年2月9日11时24分16三、泛化{complete}人女人男人性别完全泛化交通工具drive()汽车drive()轮船drive()drive()启动轮子转动drive()启动螺旋浆Person驾驶drive()是抽象操作泛化中的多态性及带识别名称的泛化{propulsion}{propulsion}{overlapping}交通工具重叠泛化汽车船水陆两栖车2020年2月9日11时24分17继承性的实例泛化关系图形{abstract}颜色中心位置笔的粗细移动()旋转()显示(){abstract}2维{abstract}定位填充类型缩放填充多边形边数顶点数显示园直径显示旋转线端点显示0维{abstract}点显示样条控制点显示弧半径起始角弧度角显示1维{abstract}定位缩放维数2020年2月9日11时24分18OrderLineQuantity:IntegerisSatisfied1*1*1*CustomernameaddressCreditRating()OrderdataReceivedisPrepaidnumber:Stringdispatch()close()PersonalCustomercreditCardCorporateCustomercontactNamecreditRatingcreditLimitremind()billForMonth()EmployeeProduct0..1+LineItem泛化关系2020年2月9日11时24分19用例建模技术,用于描述系统的功能需求。在宏观上给出模型的总体轮廓。通过对典型用例的分析,使开发者能够有效地了解用户的需求。用例建模概述贸易经理风险分析设置边界进行交易交易估价更新帐目《include》《include》《extend》营销人员超越边界评价记帐系统销售人员用例图2020年2月9日11时24分20用例模型(Usecasemodel)用例模型描述的是外部执行者(Actor)所理解的系统功能。它描述了待开发系统的功能需求。它驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系统,从而影响到开发工作的各个阶段和UML的各个模型。用例模型由若干个用例图构成,用例图中主要描述执行者和用例之间的关系。在UML中,构成用例图的主要元素是用例和执行者及其它们之间的联系。创建用例模型的工作包括:定义系统、确定执行者和用例、描述用例、定义用例间的关系、确认模型。2020年2月9日11时24分21一、执行者(Actor)执行者是指用户在系统中所扮演的角色。执行者在用例图中是用类似人的图形来表示,但执行者可以是人,也可以是一个外界系统。注意:用例总是由执行者启动的。供货买饮料取货款客户供货人收银员自动售货系统2020年2月9日11时24分22二、用例二、用例(usecase)从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。在UML中,用例被定义成系统执行的一系列动作(功能)。用例有以下特点:用例捕获某些用户可见的需求,实现一个具体的用户目标。用例由执行者激活,并将结果值反馈给执行者。用例必须具有功能上的完整描述。二、用例2020年2月9日11时24分23用例图的元素用例图用例图描述了系统的功能需求,它是从执行者的角度来理解系统,由“执行者”、“用例”和“用例之间的关系”3类模型元素构成。图中还有另外两种类型的连接,即《include》和《extend》关系,是两种不同形式的泛化关系。用例2用例A用例执行者用例1用例3用例B《include》《include》《extend》(a)(b)(c)《include》表示一个用例使用另一个用例。(一定要先做)如图(b)要实现用例1,2必顺要先去实现用例3《Extend》通过向被扩展的用例添加动作来扩展用例。(不是非要做的,如图(c),实现用例A不一定必要先实现用例B)2020年2月9日11时24分24用例图实例用例图实例金融贸易系统贸易经理风险分析设置边界进行交易交易估价更新帐目《包含》《包含》《扩展》营销人员超越边界评价记帐系统销售人员2020年2月9日11时24分25例1建立项目与资源管理系统的Usecase图系统的主要功能是:项目管理,资源管理和系统管理。项目管理包括项目的增加、删除、更新。资源管理包括对资源和技能的添加、删除和更新。系统管理包括系统的启动和关闭,数据的存储和备份等功能。1、分析确定系统的执行者(角色)项目管理员、资源管理员、系统管理员、备份数据系统。项目管理,资源管理和系统管理。2、确定用例3、对用例进行分解,画出下层的Usecase图对上层的用例进行分解,并将执行者分配到各层次的Usecase图中。角色:角色职责:角色职责识别:角色描述模板还应画出相应的执行者描述模板及用例