CH06对象建模

上传人:小**** 文档编号:240743355 上传时间:2024-05-04 格式:PPT 页数:200 大小:5.03MB
返回 下载 相关 举报
CH06对象建模_第1页
第1页 / 共200页
CH06对象建模_第2页
第2页 / 共200页
CH06对象建模_第3页
第3页 / 共200页
点击查看更多>>
资源描述
第第第第6 6 6 6章章章章对象建模对象建模OBJECT MODELING学习完本章后,你应该具备以下能力学习完本章后,你应该具备以下能力:理解对象建模中各种模型之间的关系;理解对象建模中各种模型之间的关系;构造捕获系统功能需求的用例模型;构造捕获系统功能需求的用例模型;理解需求分析中用例的作用;理解需求分析中用例的作用;发现系统中的类、明确类之间的关系,构造发现系统中的类、明确类之间的关系,构造类图;类图;构造顺序图和协作图。构造顺序图和协作图。学习目标学习目标内容概要内容概要:用例和用例图用例和用例图类图类图顺序图顺序图协作图协作图状态图与活动图状态图与活动图 内容概要内容概要相关基本概念相关基本概念对象对象(1)定义定义1:对象是具有相同状态的一组操作的集合。对象是具有相同状态的一组操作的集合。(2)定义定义2:对象是对问题域中某个东西的抽象,这种抽象反对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作的封装。就是说,对象是对属性值和操作的封装。类类(class)“类类”是对具有相同数据和相同操作的一组相似对象的定义,是对具有相同数据和相同操作的一组相似对象的定义,类是对具有相同属性和行为的一个或多个对象的描述。类是对具有相同属性和行为的一个或多个对象的描述。实例实例(instance)实例就是由某个特定的类所描述的一个具体的对象,实例就是由某个特定的类所描述的一个具体的对象,消息消息(message)消息就是要求某个对象执行在定义它的那个类中所定义的某个消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。操作的规格说明。方法方法(method)方法就是对象所能执行的操作,也就是类中所定义的服务。方方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。法描述了对象执行操作的算法,响应消息的方法。属性属性(attribute)属性就是类中所定义的数据,它是对客观世界实体所具有的性属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。质的抽象。类的每个实例都有自己特有的属性值。封装封装(encapsulation)封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。相关基本概念相关基本概念继承继承(inheritance)在面向对象的软件技术中,继承是子类自动地共享基类中定在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。义的数据和方法的机制。多态性多态性(polymorphism)多态性是指子类对象可以像父类对象那样使用,同样的消息多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。既可以发送给父类对象也可以发送给子类对象。重载重载(overloading)1)函数重载是指在同一作用域内的若干个参数特征不同的函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;函数可以使用相同的函数名字;2)运算符重载是指同一个运算符可以施加于不同类型的操运算符重载是指同一个运算符可以施加于不同类型的操作数上面。作数上面。相关基本概念相关基本概念接口接口接口是描述某个类或构件的一个服务操作集接口是描述某个类或构件的一个服务操作集 Requirements artifacts6.1 6.1 面向对象的需求工程面向对象的需求工程例:一家公司的对象模型。该公司有许多部门,每例:一家公司的对象模型。该公司有许多部门,每个部门由一名经理管理,也有的经理不管理任何部个部门由一名经理管理,也有的经理不管理任何部门,每个部门生产多种产品,每种产品仅由一个部门,每个部门生产多种产品,每种产品仅由一个部门生产。公司有许多员工为之工作,员工分为工人门生产。公司有许多员工为之工作,员工分为工人和经理,每名工人可参加多个项目,每个项目需要和经理,每名工人可参加多个项目,每个项目需要多个工人参与,每位经理可主持多个项目,每个项多个工人参与,每位经理可主持多个项目,每个项目由一位经理主持。目由一位经理主持。对象模型例子对象模型例子面向对象建模面向对象建模【UML支持工具支持工具】Together(纯纯Java开发开发)Rational Rose(功能强大,市场占有率高功能强大,市场占有率高)Argo UML(开放源代码开放源代码)Visio(MS office 组件组件,随随Studio.NET 2003)Visual UML(易用,功能强大,与易用,功能强大,与Rose生成生成的模型可相互转换的模型可相互转换)StarUML(开放源代码开放源代码)Eclipse(插件,集成开发工具插件,集成开发工具)为什么使用为什么使用为什么使用为什么使用UMLUML建模,可以建立什么模型建模,可以建立什么模型建模,可以建立什么模型建模,可以建立什么模型UML是一种统一的、标准化的建模语言是一种统一的、标准化的建模语言 UML是一种应用面很广泛的建模语言是一种应用面很广泛的建模语言 模型的种类模型的种类模型的用途模型的用途业务模型业务模型对业务过程、工作流、组织的建模对业务过程、工作流、组织的建模需求模型需求模型对捕获的需求进行整理和分析的工具,辅助开发人员对捕获的需求进行整理和分析的工具,辅助开发人员与用户进行沟通与用户进行沟通设计模型设计模型包含高层设计(架构模型)和详细设计模型,用于统包含高层设计(架构模型)和详细设计模型,用于统一开发人员、沟通设计信息一开发人员、沟通设计信息数据库模型数据库模型设计数据库的结构、表结构以及与应用系统的交互设计数据库的结构、表结构以及与应用系统的交互实现模型实现模型用来理清软件的组成、部署方案,为安装与维护人员用来理清软件的组成、部署方案,为安装与维护人员的工作提供指导的工作提供指导草图与蓝图草图与蓝图蓝图一般是指采用蓝图一般是指采用CASE工具绘制的、正式的、规范的工具绘制的、正式的、规范的UML模型模型 草图则通常是指手工绘制的、规范度较低的在纸张的草图则通常是指手工绘制的、规范度较低的在纸张的UML模型模型 大胆地绘制草图,尽可能基于草图进行讨论。对于局部大胆地绘制草图,尽可能基于草图进行讨论。对于局部的、重要性不高的、共享范围较小的的、重要性不高的、共享范围较小的UML模型,直接将模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在草图的基础上用高度共享的,在草图的基础上用CASE工具绘制成为正工具绘制成为正式的蓝图,并将其纳入统一的模型管理中式的蓝图,并将其纳入统一的模型管理中 谁应该建模谁应该建模业务建模业务建模:以领域专家为主,需求分析人员是主力,系统分:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与析员、架构师可参与需求模型需求模型:以需求分析人员为主,系统分析员是主力,领域:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与专家提供指导,架构师和资深开发人员参与设计模型设计模型:高层设计模型以架构师为主,系统分析员从需求:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。细设计模型则以资深开发人员为主,架构师提供指导。实现模型实现模型:以资深开发人员(设计人员)为主,架构师提供:以资深开发人员(设计人员)为主,架构师提供总体指导。总体指导。数据库模型数据库模型:以数据库开发人员为主,架构师提供指导,资:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。深开发人员(设计人员)予以配合。6.2.1 6.2.1 模型元素模型元素模型元素模型元素 可可可可以以以以在在在在图图图图中中中中使使使使用用用用的的的的概概概概念念念念统统统统称称称称为为为为模模模模型型型型元元元元素素素素。模模型型元元素素在在图图中中用用其其相相应应的的视视图图元元素素(符符号号)表表示示,下下图图给给出出了了常常用用的的元元素素符符号:类、对象、结点、包和组件等。号:类、对象、结点、包和组件等。属性属性用例用例包包结点结点状态状态 组件组件类类操作操作对象对象属性属性操作操作接口接口注释注释 关联关联关联关联:连接:连接:连接:连接(connectconnect)模型元素及链接模型元素及链接模型元素及链接模型元素及链接(link)(link)实例。实例。实例。实例。依赖依赖依赖依赖:表示一个元素以某种方式依赖于另一种元素。:表示一个元素以某种方式依赖于另一种元素。:表示一个元素以某种方式依赖于另一种元素。:表示一个元素以某种方式依赖于另一种元素。泛泛泛泛化化化化:表表表表示示示示一一一一般般般般与与与与特特特特殊殊殊殊的的的的关关关关系系系系,即即即即“一一一一般般般般”元元元元素素素素是是是是“特特特特殊殊殊殊”关系的泛化。关系的泛化。关系的泛化。关系的泛化。聚合聚合聚合聚合:表示整体与部分的关系。:表示整体与部分的关系。:表示整体与部分的关系。:表示整体与部分的关系。除除除除了了了了上上上上述述述述的的的的模模模模型型型型元元元元素素素素外外外外,模模模模型型型型元元元元素素素素还还还还包包包包括括括括消消消消息息息息,动动动动作作作作和和和和版版版版类类类类(stereotypestereotype)等。等。等。等。6.2.1 6.2.1 模型元素模型元素关联关联关联关联聚合聚合聚合聚合组合组合组合组合组合组合依赖依赖依赖依赖细化细化细化细化细化细化泛化(继承)泛化(继承)泛化(继承)泛化(继承)模模型型元元素素与与模模型型元元素素之之间间的的连连接接关关系系也也是是模模型型元元素素,常常见见的的关关系系有有关关联联(association)、泛泛化化(generalization)、依依赖赖(dependency)和和聚聚合合(aggregation),其其中中聚聚合合是是关关联联的的一一种种特特殊形式。这些关系的图示符号如图所示。殊形式。这些关系的图示符号如图所示。关联的重数关联的重数关联的重数关联的重数重重重重数数数数(multiplicity)(multiplicity)表表表表示示示示多多多多少少少少个个个个对对对对象象象象与与与与对对对对方方方方对对对对象象象象相相相相连连连连接接接接(右右右右上上上上图图图图),常用的重数符号有:常用的重数符号有:常用的重数符号有:常用的重数符号有:“0.1”0.1”0.1”0.1”表示零或表示零或表示零或表示零或1 1 1 1“0.*”“0.*”“0.*”“0.*”或或或或“*”“*”“*”“*”表示零或多个表示零或多个表示零或多个表示零或多个“1.*”1.*”1.*”1.*”表示表示表示表示1 1 1 1或多个或多个或多个或多个“1,3,7”1,3,7”1,3,7”1,3,7”表示表示表示表示1 1 1 1或或或或3 3 3 3或或或或7 7 7 7(枚举型)(枚举型)(枚举型)(枚举型)重数的默认值为重数的默认值为重数的默认值为重数的默认值为1 1 1 1。6.2.3 6.2.3 关联的表示关联的表示PersonHobby1 11 1*带有多重性关联带有多重性关联带有多重性关联带有多重性关联 有有序序关联与导航(导引)关联与导航(导引)在关联的多端标注在关联的多端标注ordered指明指明这些对象是有序的这些对象是有序的(如右下图如右下图)。)。关联可以用箭头,表示该关联使关联可以用箭头,表示该关联使用的方向用的方向(单向或双向单向或双向),称为,称为导引导引或或导航导航(navigation)。(a)(a)指定链接之指定链接之间间 有明确的顺序有明确的顺序0.*0.*1.*1.*orderedordered保险合同保险合同个人个人PolygonPoint1 1 1 11 14.*4.*4.*4.*4.*4.*orderedordered图图(b)(b)单向关联单向关联UML语语言言定定义义了了五五种种类类型型,9种种不不同同的的图图,把把它它们们有有机机的的结结合起来就可以描述系统的所有视图。合起来就可以描述系统的所有视图。用用用用例例例例图图图图(Use case diagram)从从用用户户角角度度描描述述系系统统功功能能,并并指指出出各功能的操作者。各功能的操作者。静静静静态态态态图图图图(Static diagram),表表示示系系统统的的静静态态结结构构。包包括括类类图图、对象图对象图、包图包图。行行行行为为为为图图图图(Behavior diagram),描描述述系系统统的的动动态态模模型型和和组组成成对对象间的交互关系。包括象间的交互关系。包括状态图状态图、活动图活动图。交交交交互互互互图图图图(Interactive diagram),描描述述对对象象间间的的交交互互关关系系。包包括括顺序图顺序图、合作图合作图。实实实实现现现现图图图图(Implementation diagram)用用于于描描述述系系统统的的物物理理实实现。包括现。包括构件图构件图、部件图部件图。图图(Diagrams)【对象建模中图的关系对象建模中图的关系】需求获取需求获取分析分析设计设计用例图用例图活动图活动图类图类图顺序图顺序图状态图状态图类图类图协作图协作图结构型的图结构型的图:(1 1)对象结构建模)对象结构建模类图类图和和对象图对象图(2 2)应用结构建模)应用结构建模包图包图、构件图构件图、部署图部署图行为型的图行为型的图:(1 1)对象交互建模)对象交互建模顺序图顺序图、协作图协作图(通信图、(通信图、交互综述图、定时图)、交互综述图、定时图)、状态图状态图(状态机)(状态机)(2 2)对象行为建模)对象行为建模用例图用例图、活动图活动图为什么要建立如此多的模型为什么要建立如此多的模型?不同的图之间是重叠的不同的图之间是重叠的.可以通过不同的视图观察同一系统可以通过不同的视图观察同一系统.结果结果:(1)(1)当出现不一致时当出现不一致时,知道应该在什么地方下工夫研究知道应该在什么地方下工夫研究;(2)(2)所有观点一致时所有观点一致时,则事情就完成了则事情就完成了.对象结构建模对象结构建模类图和对象图类图和对象图(class diagram&object diagram)1.1.什么是类图?什么是类图?任何系统都需要从两方面进行描述:任何系统都需要从两方面进行描述:结构信息结构信息和和行为信息行为信息。系统的组成表达了系统各组成要素之间的联系,称为结构;这系统的组成表达了系统各组成要素之间的联系,称为结构;这些组成要素的执行逻辑称为行为。在面向对象方法中,系统的些组成要素的执行逻辑称为行为。在面向对象方法中,系统的结构信息是通过类图(结构信息是通过类图(class diagram)来描述的;而系统行来描述的;而系统行为信息则通过用例图、交互图(包括顺序图和协作图)和状态为信息则通过用例图、交互图(包括顺序图和协作图)和状态图来描述的。图来描述的。结构信息结构信息说明了系统的组成部分是什么,说明了系统的组成部分是什么,行为信息行为信息则说明则说明了系统做什么。了系统做什么。6.2 类图(类图(Class Diagram)类图(类图(class diagram)表达了系统的静态结构信息,表达了系统的静态结构信息,即系统是由哪些类组成的,这些类之间的关系是什即系统是由哪些类组成的,这些类之间的关系是什么。么。类图显示系统各个部分以及怎样将它们组装起来类图显示系统各个部分以及怎样将它们组装起来;但但却不能模拟组装后系统的工作情况。却不能模拟组装后系统的工作情况。6.2 类图类图(Class Diagram)类图类图是对象建模的核心。类图可以:是对象建模的核心。类图可以:定义一个系统的必要资源(人、材料、信息、行为)。定义一个系统的必要资源(人、材料、信息、行为)。定义了资源之间的关系。定义了资源之间的关系。可以生成代码。可以生成代码。可以用代码生成模型(逆向工程)可以用代码生成模型(逆向工程)为其他的图提供基础。为其他的图提供基础。6.2 类图类图(Class Diagram)构造类图的三个关键问题是:构造类图的三个关键问题是:系统中有哪些需要关心的类?系统中有哪些需要关心的类?这些类是如何描述的?这些类是如何描述的?这些类之间的联系是什么?这些类之间的联系是什么?6.2 类图类图(Class Diagram)类图层次类图层次(1)(1)概念层概念层(conceptual)概念层类图描述问题域中的概念(事物),一般概念层类图描述问题域中的概念(事物),一般这些概念与类有很自然的联系,但未必有直接的映射这些概念与类有很自然的联系,但未必有直接的映射关系。关系。概念层的类图独立程序设计语言,类的描述可能概念层的类图独立程序设计语言,类的描述可能会有少量属性和操作名称。会有少量属性和操作名称。6.2 类图类图(Class Diagram)(2)(2)说明层说明层(specification)说明层描述软件的接口部分,而不是软件的实现部说明层描述软件的接口部分,而不是软件的实现部分。接口可能因为实现环境等不同而有不同的实现。分。接口可能因为实现环境等不同而有不同的实现。主要列出属性和操作名称。主要列出属性和操作名称。(3)(3)实现层实现层(implementation)实现层的类图将考虑类的实现问题,提供类的细节。实现层的类图将考虑类的实现问题,提供类的细节。6.2 类图类图(Class Diagram)2.2.类的命名和表示类的命名和表示命名命名:采用符合编程语言规定的命名规则。采用符合编程语言规定的命名规则。在一个包中,类名是独一无二的;不同的包可以在一个包中,类名是独一无二的;不同的包可以有相同的类名。因此,命名时要指明包名。有相同的类名。因此,命名时要指明包名。格式格式:包名包名:类名类名6.2 类图类图(Class Diagram)6.2 类图类图(Class Diagram)3.3.类的类型类的类型存在三种不同类型的类:存在三种不同类型的类:实体类实体类、边界类边界类和和控制类控制类。(1 1)实体类)实体类 实体类描述要保存到持久存储体中的信息。如:数据库、各实体类描述要保存到持久存储体中的信息。如:数据库、各种形式的数据文件中的信息。包括:种形式的数据文件中的信息。包括:活动者类活动者类。活动者类代表出现在用例模型中的活动者。活动。活动者类代表出现在用例模型中的活动者。活动者是现实世界中与系统交互的人和者是现实世界中与系统交互的人和/或机构。例如,订单处或机构。例如,订单处理系统中客户是一个活动者类。理系统中客户是一个活动者类。业务类业务类描述业务的地点、物品、概念和事件。例如订单处理描述业务的地点、物品、概念和事件。例如订单处理系统中的订单、商品等都是业务类。系统中的订单、商品等都是业务类。6.2 类图类图(Class Diagram)(2 2)边界类)边界类 也也称称界界面面类类(UI类类),是是组组成成系系统统用用户户界界面面的的屏屏幕幕显显示示、菜菜单单和和报报表表。例例如如,订订单单处处理理系系统统中中客客户户登登录录系系统统的的界界面面、显显示和编辑订单的屏幕等都属于示和编辑订单的屏幕等都属于UI类。类。边界类位于系统与外界的交界处。如:窗体类、报表类、边界类位于系统与外界的交界处。如:窗体类、报表类、描述通信协议的类、直接与外设交互的类、直接与外部系统交描述通信协议的类、直接与外设交互的类、直接与外部系统交互的类。互的类。(3)控制类)控制类控制类是主要负责其它类工作的类。如:主程序类、主窗控制类是主要负责其它类工作的类。如:主程序类、主窗体类。体类。6.2 类图类图(Class Diagram)边界类、控制类和实体类的表示方法边界类、控制类和实体类的表示方法边界类边界类实体类实体类控制类控制类class1Class1Class1class1Class1Class1class1Class1Class14.4.建立类图的步骤建立类图的步骤(1)(1)研究分析问题域,确定系统需求。研究分析问题域,确定系统需求。(2)(2)确定类,明确类的含义和职责,确定属性和操作。确定类,明确类的含义和职责,确定属性和操作。(3)(3)确定类之间的关系。确定类之间的关系。(4)(4)细化类和类之间的关系,解决命名冲突、功能重复细化类和类之间的关系,解决命名冲突、功能重复等问题。等问题。(5)(5)绘制类图,并给元素必要的文字说明。绘制类图,并给元素必要的文字说明。6.2 类图类图(Class Diagram)5.5.如何发现类如何发现类 到目前为止,还没有一种非常有效的确定对象的方法,因到目前为止,还没有一种非常有效的确定对象的方法,因此,对同一个问题域,不同的项目小组可能会得出不同的侯选此,对同一个问题域,不同的项目小组可能会得出不同的侯选对象。相信随着面向对象方法的发展、成熟,会出现一些大家对象。相信随着面向对象方法的发展、成熟,会出现一些大家都认可的发现对象的算法式策略。都认可的发现对象的算法式策略。6.2 类图类图(Class Diagram)寻找类的方法寻找类的方法(1)根据用例描述中的名词确定类的候选者根据用例描述中的名词确定类的候选者。使用使用CRC分析法寻找类。分析法寻找类。CRC是类(是类(class)、职责)、职责(responsibility)和协作()和协作(collaboration)的简称。)的简称。CRC分分析法根据类所要扮演的职责来确定类。析法根据类所要扮演的职责来确定类。(2)根据边界类、控制类和实体类的划分来帮助发现系统中的根据边界类、控制类和实体类的划分来帮助发现系统中的类。类。对问题域进行分析,或利用已有的问题域分析结果得到类。对问题域进行分析,或利用已有的问题域分析结果得到类。(3)参考设计模式来确定类参考设计模式来确定类。根据软件开发过程提供的指导原则寻找类。(根据软件开发过程提供的指导原则寻找类。(Rational Unified Process)6.2 类图类图(Class Diagram)Wirfs-Brock的名词短语策略的名词短语策略 Wirfs-Brock名名词词短短语语策策略略是是从从需需求求说说明明书书中中寻寻找找名名词词短短语语,分以下几个步骤:,分以下几个步骤:仔细阅读并理解需求文档(?);仔细阅读并理解需求文档(?);寻找需求说明书中出现的名词短语;寻找需求说明书中出现的名词短语;将将名名词词短短语语分分解解为为三三部部分分:明明显显的的对对象象、明明显显无无意意义义的对象、不确定的对象;的对象、不确定的对象;去掉无意义的名词短语;去掉无意义的名词短语;进进一一步步讨讨论论、研研究究不不确确定定对对象象,使使每每一一个个短短语语成成为为明明显的对象或无意义的对象。显的对象或无意义的对象。6.2 类图类图(Class Diagram)Wirfs-Brock的的CRC策略策略 该该策策略略与与Wirfs-Brock的的名名词词短短语语策策略略一一样样,也也是是以以需需求求说说明明书书为为基基础础寻寻找找对对象象,但但不不同同的的是是寻寻找找的的不不是是名名词词,而而是是动动词词(verb)。名名词词策策略略主主要要强强调调“对对象象是是什什么么(人人、地地点点、事事物物)”;而而动动词词策策略略则则强强调调“对对象象做做什什么么”(例例如如,打打印印、计计算算、显显示示等等)。这这种种策策略略一一般般称称之之为为类类-责责任任-协协作作(class-responsibility-collaboration,简称简称CRC)。6.2 类图类图(Class Diagram)CRC模模型型是是一一组组标标准准索索引引卡卡片片的的集集合合,每每个个卡卡片片被被分分三三部部分分。类类代代表表相相似似对对象象的的集集合合;职职责责是是类类所所知知道道或或所所要要做做的的事事情;协作者是一个类为完成其职责与之交互的其他类。情;协作者是一个类为完成其职责与之交互的其他类。CRC卡卡片片是是一一种种有有效效的的用用于于领领域域建建模模的的工工具具,并并且且在在有有的的软软件件过过程程中中(例例如如极极限限编编程程XP)使使用用CRC模模型型作作为为一一种种基基本的设计技术。本的设计技术。6.2 类图类图(Class Diagram)类名类名职责职责协作者协作者6.2 类图类图(Class Diagram)联合策略联合策略 第第三三种种策策略略是是几几种种方方法法的的综综合合。该该策策略略提提供供了了一一个个确确定定侯侯选类和对象的清单:选类和对象的清单:有形实物有形实物。如发票、订单、发货单、商品等。如发票、订单、发货单、商品等。角色角色。如职工、经理、销售部、仓库等。如职工、经理、销售部、仓库等。事事件件/交交互互。事事件件(incidents)是是指指在在某某一一时时刻刻发发生生的的事事情情,如如发发送送订订单单、登登记记选选课课等等;而而交交互互(interaction)是是指指系系统统与与其其它它系系统统进进行行交交互互作作用用时时发发生生的的事事件件,如如从从ATM机机取取款款等。等。具有报表格式的一些说明具有报表格式的一些说明。如税率表等。如税率表等。6.2 类图类图(Class Diagram)建立好侯选类表后,再根据以下原则挑选类建立好侯选类表后,再根据以下原则挑选类:系统是否记忆该对象?为什么?系统是否记忆该对象?为什么?系统是否需要该对象提供某种服务?为什么?系统是否需要该对象提供某种服务?为什么?对对象象是是否否具具有有一一个个或或更更多多可可识识别别的的属属性性?如如果果某某个个对对象象没没有有或只有一个属性,则要认真考虑是否有必要保留该对象。或只有一个属性,则要认真考虑是否有必要保留该对象。是否具有更多这种类型的对象可以组合成一个类?如果某个是否具有更多这种类型的对象可以组合成一个类?如果某个类只有一个对象,则要认真考虑是否有必要保留该对象。类只有一个对象,则要认真考虑是否有必要保留该对象。避免将系统产生的结果作为对象。这种情况经常发生在系统避免将系统产生的结果作为对象。这种情况经常发生在系统以报表或屏幕显示的方式产生输出时。以报表或屏幕显示的方式产生输出时。6.2 类图类图(Class Diagram)6.6.建立类之间的联系建立类之间的联系(1)(1)泛化联系泛化联系(2)(2)关联关联-聚合聚合-组合组合(3)(3)依赖依赖6.2 类图类图(Class Diagram)泛化关系定义了一般元素和特殊元素之间的分类关系。类泛化关系定义了一般元素和特殊元素之间的分类关系。类之间的泛化关系就是类之间继承关系。之间的泛化关系就是类之间继承关系。泛化关系是泛化关系是“a-kind-of”关系。关系。泛化泛化-特化联系反映了类之间的一种继承关系。继承允许子特化联系反映了类之间的一种继承关系。继承允许子类共享其父类所具有的特征类共享其父类所具有的特征 UML中,有许多元素具有泛化关系:用例、参与者、关联、中,有许多元素具有泛化关系:用例、参与者、关联、包、组件、数据类型、接口、结点、子系统、状态、信号、包、组件、数据类型、接口、结点、子系统、状态、信号、事件、协作等。事件、协作等。泛化关系泛化关系(generalization)泛化关系泛化关系如何处理多态性?如何处理多态性?如:如:多边形类多边形类边数:是一个整数,指出该图形有几个边边数:是一个整数,指出该图形有几个边顶点数据:由每个顶点的坐标构成的数组顶点数据:由每个顶点的坐标构成的数组绘图:用直线连接每两个相邻的顶点绘图:用直线连接每两个相邻的顶点正多边形类正多边形类:边数:继承边数:继承“多边形多边形”类,不加改动类,不加改动顶点数据:外接圆圆心的坐标和多边形一个顶点的坐标顶点数据:外接圆圆心的坐标和多边形一个顶点的坐标绘图:计算每个顶点的坐标,并用直线连接每两个相邻的顶点绘图:计算每个顶点的坐标,并用直线连接每两个相邻的顶点泛化关系泛化关系如何处理多态性?如何处理多态性?轴向矩形轴向矩形:边数:取消这个属性边数:取消这个属性顶点数据:左上顶点和右下顶点的坐标顶点数据:左上顶点和右下顶点的坐标绘图:计算横边和竖边的长度,按轴向画出每个边绘图:计算横边和竖边的长度,按轴向画出每个边泛化关系泛化关系 表示法表示法用用*号表示多态号表示多态用用表示拒绝继承表示拒绝继承 关联关联(association)是对象(类)之间的一种二元关系,是对象(类)之间的一种二元关系,用于表达对象之间的静态联系。静态联系是指最终可以通过对用于表达对象之间的静态联系。静态联系是指最终可以通过对象属性来表示的一个对象对另一个对象的依赖关系。例如,一象属性来表示的一个对象对另一个对象的依赖关系。例如,一名教师指导多名学生做毕业论文。名教师指导多名学生做毕业论文。关联关联 图与代码图与代码关联图示:public class A/END CLASS DEFINITION Apublic class B/END CLASS DEFINITION Bpublic class C private D theD;/END CLASS DEFINITION Cpublic class D private C theC;/END CLASS DEFINITION Dpublic class E private F theF;/END CLASS DEFINITION Epublic class F/END CLASS DEFINITION F(1 1)关联名)关联名可给关联加上关联名,以说明关联的作用。可给关联加上关联名,以说明关联的作用。关联名通常是动词或动词短语。关联名通常是动词或动词短语。作用:明确关联含义。作用:明确关联含义。“公司公司”类与类与“人人”类之间类之间有多种含义,有多种含义,“人人”类可是类可是“公司公司”的客户、雇员的客户、雇员或所有者等,为了明确可加关联名或所有者等,为了明确可加关联名:“雇佣雇佣”、“属属于于”、“拥有拥有”、“工作工作”等。等。图图关联名关联名(2 2)关联角色)关联角色关联两端的类可以某种角色参与关联。关联两端的类可以某种角色参与关联。命名角色命名角色:用户定义角色名:用户定义角色名默认角色默认角色:类名:类名角色多重性角色多重性:一端类的一个对象,另一端类可以:一端类的一个对象,另一端类可以有多少个对象参与关联。有多少个对象参与关联。表示:表示:0.1 0.*(0.n,*)1(1.1)1.*(1.n)7 6.9图与代码图与代码角色角色public class Company private System.Collections.ArrayList employee;/END CLASS DEFINITION Companypublic class Person private Company employer;/END CLASS DEFINITION Person(3 3)关联类)关联类public class Studentspublic class Coursespublic class Results public float result=0;public Students student=null;public Courses course=null;(3)关联类关联类的改进示意图:关联类的改进示意图:(4 4)关联的约束关联的约束 通过在关联上加上约束,以加强关联的含义。通过在关联上加上约束,以加强关联的含义。(5)n元关联按照关联所连接的类的数量,关联可分为反身关按照关联所连接的类的数量,关联可分为反身关联、二元关联和联、二元关联和N N元关联。元关联。人类0.n1子女子女父父年份类运动员类运动队类记录类nnn多边形类点类3.n1聚合聚合(aggregation)和和组合组合(composition)聚合与组合的区别聚合与组合的区别:聚合关系是聚合关系是“has-a”关系,组合关系是关系,组合关系是“contains-a”关系;关系;聚合表示较弱的整体聚合表示较弱的整体/部分关系,组合表示较强的整体部分关系,组合表示较强的整体/部分部分关系;关系;聚合关系中,代表部分事物的对象可以属于多个聚合对象,聚合关系中,代表部分事物的对象可以属于多个聚合对象,具有共享性,而组合关系中,代表部分事物的对象不可以属具有共享性,而组合关系中,代表部分事物的对象不可以属于多个聚合对象,不具有共享性;于多个聚合对象,不具有共享性;聚合关系中,代表整体事物的对象与代表部分事物的对象聚合关系中,代表整体事物的对象与代表部分事物的对象,有各自独立的生存期,而组合关系中,有完全一致的生存期;有各自独立的生存期,而组合关系中,有完全一致的生存期;在聚合在聚合/组合关系实现中,可同样对待。组合关系实现中,可同样对待。聚合聚合(aggregation)和和组合组合(composition)一个比较复杂的类图示例一个比较复杂的类图示例依赖关系:假设有两个元素依赖关系:假设有两个元素A和和B,如果修改元素,如果修改元素A的的定义,可能会导致元素定义,可能会导致元素B的定义需要修改,则称元素的定义需要修改,则称元素B依赖元素依赖元素A。类之间的依赖关系表现为:类之间的依赖关系表现为:一个类向另一类对象发送消息(如方法调用);一个类向另一类对象发送消息(如方法调用);一个类对象是另一个类的数据成员;一个类对象是另一个类的数据成员;一个类是另一个类的操作参数类型。一个类是另一个类的操作参数类型。依赖关系依赖关系(dependency)依赖关系依赖关系(dependency)有一个可以讨论的问题是:在类图中能否表达类和类之有一个可以讨论的问题是:在类图中能否表达类和类之间的消息传递?文献(邵维忠、杨芙清,间的消息传递?文献(邵维忠、杨芙清,19981998)详细讨论了该)详细讨论了该问题。他们认为,在问题。他们认为,在UMLUML中,类图被定义成中,类图被定义成“静态结构图静态结构图”,即类图中只表示系统的静态结构信息,而不表示其动态信息,即类图中只表示系统的静态结构信息,而不表示其动态信息,而是分别用顺序图和协作图来表示系统的动态信息。并认为,而是分别用顺序图和协作图来表示系统的动态信息。并认为,类图不能表示动态建模信息的主张在理论上没有充分的依据。类图不能表示动态建模信息的主张在理论上没有充分的依据。6.2 类图类图(Class Diagram)类图例子类图例子6.2 类图类图(Class Diagram)对象图类图类图与对象图的区别类图与对象图的区别类图类图对象图对象图类具有三个分栏类具有三个分栏,即名称分栏、属性分栏、即名称分栏、属性分栏、操作分栏。操作分栏。对象只有两个分栏,即名称分栏、属性对象只有两个分栏,即名称分栏、属性分栏。分栏。在类的名称分栏中,只有类名。在类的名称分栏中,只有类名。对象的名称包括对象名、冒号和类名对象的名称包括对象名、冒号和类名(1234:order1234:order),并且要标以下划线。),并且要标以下划线。类的属性分栏定义了所有属性的特征。类的属性分栏定义了所有属性的特征。对象则只定义了属性的当前值,用以测对象则只定义了属性的当前值,用以测试用例中。试用例中。在类中列出了操作。在类中列出了操作。对象图中不包含操作,因为对于属于同对象图中不包含操作,因为对于属于同一个类的对象而言,其操作是相同的。一个类的对象而言,其操作是相同的。类使用关联连接,关联使用名称和类使用关联连接,关联使用名称和/角色、角色、多重性以及约束等特征定义。类代表的多重性以及约束等特征定义。类代表的是对象的分类,所以有必要说明可以参是对象的分类,所以有必要说明可以参与关联的对象的数目。与关联的对象的数目。对象使用链连接,链拥有名称和对象使用链连接,链拥有名称和/或角色,或角色,但没有多重性。对象代表的是单独的实但没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因此没有体,所有的链都是一对一的,因此没有多重性。多重性。对象图的价值在于:对象图的价值在于:通过建立问题域模型的一个例子进行需求分析;通过建立问题域模型的一个例子进行需求分析;通过建立测试用例的模型,测试类图的正确性。通过建立测试用例的模型,测试类图的正确性。对象图的作用对象图的作用关于类图的一点说明关于类图的一点说明数据建模数据建模传统方法传统方法:E-R图。仅对数据建模,不能对行为建模,如图。仅对数据建模,不能对行为建模,如触发器、存储过程等建模。触发器、存储过程等建模。UML方法方法:类图。用类图描述数据库模式,用类描述数据:类图。用类图描述数据库模式,用类描述数据表,用类的操作来描述触发器和存储过程。表,用类的操作来描述触发器和存储过程。6.2 类图类图(Class Diagram)行为建模行为建模(一一)6.3 6.3 用例和用例图用例和用例图 一种功能需求捕获技术一种功能需求捕获技术6.3.1 6.3.1 用例的定义用例的定义问题:如何认识一个新的系统问题:如何认识一个新的系统v黑盒的观点;黑盒的观点;v白盒的观点。白盒的观点。6.3.1 6.3.1 用例的定义用例的定义取款取款存款存款查询余额查询余额客户输入正确密码客户输入正确密码客户选择取款操作,并确定取款金额客户选择取款操作,并确定取款金额查询余额?查询余额?系统显示余额系统显示余额是是否否系统从账户余额减去取款金额系统从账户余额减去取款金额打印账单?打印账单?系统显示余额系统显示余额否否是是取信用卡,结束操作取信用卡,结束操作6.3.1 6.3.1 用例的定义用例的定义 如如果果ATM机机已已开开机机,且且系系统统处处于于正正常常状状态态,系系统统提提示示客客户户插插入入信信用用卡卡,系系统统识识别别信信用用卡卡及及其其类类型型,如如果果卡卡的的类类型型正正确确,则则提提示示客客户户输输入入密密码码。客客户户输输入入信信用用卡卡密密码码,由由系系统统验验证证信信用用卡卡密密码码是是否否正正确确。如如果果密密码码不不正正确确,则则提提示示客客户户再再次次输输入入密密码码,如如果果密密码码错错误误输输入入5 5次次以以上上,则则自自动动退退卡卡;如如果果密密码码正正确确,则则显显示示下下一一步步操操作作界界面面,并并提提示示客客户户选选择择操操作作类类型型。客客户户可可以以先先选选择择查查询询余余额额操操作作,系系统统显显示示该该账账户户余余额额,并并返返回回操操作作界界面面;客客户户也也可可以以直直接接选选择择取取款款操操作作,系系统统提提示示客客户户输输入入取取款款金金额额,并并在在客客户户输输入入取取款款金金额额后后判判断断取取款款金金额额是是否否超超出出账账户户余余额额。如如果果超超出出,则则系系统统提提示示客客户户;否否则则系系统统提提示示正正在在操操作作中中,待待操操作作完完毕毕后后,系系统统修修改改账账户户余余额额信信息息,并并提提示示客客户户是是否否需需要要打打印印账账单单,如如果果需需要要打打印印账账单单,则则系系统统打打印印账账单单;否否则则退退卡卡完完成成取取款款操作。操作。用用用用例例例例建建建建模模模模技技技技术术术术,用用用用于于于于描描述述系系统统的的功功能能需需求求。在在在在宏宏宏宏观观观观上上上上给给给给出出出出模模模模型型型型的的的的总总总总体体体体轮轮轮轮廓廓廓廓。通通过过对对典典型型用用例例的的分分析析,使使开开发发者者能能够够有有效效地了解用户的需求。地了解用户的需求。6.3.1 6.3.1 用例建模概述用例建模概述贸易经理贸易经理贸易经理贸易经理风险分析风险分析风险分析风险分析设置边界设置边界设置边界设置边界进行交易进行交易进行交易进行交易交易估价交易估价交易估价交易估价更新帐目更新帐目更新帐目更新帐目使用使用使用使用使用使用使用使用扩展扩展扩展扩展营销人员营销人员营销人员营销人员超越边界超越边界超越边界超越边界评价评价评价评价记帐系统记帐系统记帐系统记帐系统销售人员销售人员销售人员销售人员图图6.146.146.3.1 6.3.1 用例的定义用例的定义 用例获取的是功能需求。所有的用例合在用例获取的是功能需求。所有的用例合在一起构成用例模型,它描述了系统的全部功一起构成用例模型,它描述了系统的全部功能,回答了能,回答了“系统应该为每个用户做什么?系统应该为每个用户做什么?”这样的问题,而不是这样的问题,而不是“系统应该做什么?系统应该做什么?”的问题。的问题。6.3.1 6.3.1 用例的定义用例的定义小结小结:用例用例是对一个参与者(是对一个参与者(actor)使用系统的一项功)使用系统的一项功能时所进行的能时所进行的交互过程的一个文字描述序列交互过程的一个文字描述序列。用例用例是系统、子系统或类是系统、子系统或类 与与 外部的参与者外部的参与者(actoractor)交互的动作序列的说明,包括可选的动)交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列。作序列和会出现异常的动作序列。理解理解1 1)用例并不是系统的全部需求,用例只是描)用例并不是系统的全部需求,用例只是描述功能性方面的需求。述功能性方面的需求。2 2)用例分析是一种功能分解技术)用例分析是一种功能分解技术3 3)用例是与实现无关的系统功能描述,用例)用例是与实现无关的系统功能描述,用例实现可用协作描述。实现可用协作描述。编写系统需求说明时,应根据需求大纲,一个需求大纲可能包括下列方面内容:系统的目的和范围系统中术语表用例系统采用的技术开发过程中的参加人员、业务规则、系统运行所依赖的条件、安全要求、文档要求等法律、政治、组织机构等方面的问题6.3.1 6.3.1 用例的定义用例的定义6.3.3 6.3.3 为什么使用用例?为什么使用用例?用例的作用是:用例的作用是:1.1.用例提供了一种捕获功能需求的系统而且直觉的方法。用例提供了一种捕获功能需求的系统而且直觉的方法。易于使用易于使用交流问题(开发人员、用户、领域专家)交流问题(开发人员、用户、领域专家)讲故事方式讲故事方式2.2.用例驱动整个开发过程。用例驱动整个开发过程。因为大部分活动如分析、设计和测试都是从用例开始执行的。因为大部分活动如分析、设计和测试都是从用例开始执行的。6.3.36.3.3为什么使用用例?为什么使用用例?3.3.用例把系统当作一个黑盒。用例把系统当作一个黑盒。一个用例没有指定任何与这些需求相关的系统的内部结构。一个用例没有指定任何与这些需求相关的系统的内部结构。过早地说明内部结构给设计者带来了额外的约束,没有这些约过早地说明内部结构给设计者带来了额外的约束,没有这些约束设计者们能更自由地建立一个正确实现客观可见行为的系统,束设计者们能更自由地建立一个正确实现客观可见行为的系统,并存在出现突破方案的可能性。并存在出现突破方案的可能性。【例例】1.1.“提交改变到定单数据库提交改变到定单数据库”2.2.“显示结果到显示结果到Web页面页面”4.4.使需求的定义更加完备。使需求的定义更加完备。用例是所有用户和系统之间相互作用的一种描述,也就是用例是所有用户和系统之间相互作用的一种描述,也就是说,它是从用户的观点,在限制的工作环境下描述外部系统的说,它是从用户的观点,在限制的工作环境下描述外部系统的行为。行为。5.5.用例用来文档化系统需求,并且还可以将系统根据功能进行用例用来文档化系统需求,并且还可以将系统根据功能进行分类。分类。从本质上讲,一个用例是用户与计算机之间的一次典型交从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。互作用。6.3.3 6.3.3 为什么使用用例?为什么使用用例?6.6.用例不仅可以使开发人员考虑到各种正常的事件;用例不仅可以使开发人员考虑到各种正常的事件;也有助于观察到各种异常情况,进而有助于发现隐也有助于观察到各种异常情况,进而有助于发现隐性需求。性需求。7.7.支持增量式、迭代式系统开发生命周期。支持增量式、迭代式系统开发生命周期。考虑考虑数据流程图数据流程图与与用例用例的区别。的区别。6.3.3 6.3.3 为什么使用用例?为什么使用用例?1.活动者活动者(actors)“The actors represent what interacts with the system.”Jacobson 92An actor represents a role that an entity such as a user,a hardware device,or another system plays in interacting with the system.活动者是指系统以外的、需要使用系统或与系统交互的事物活动者是指系统以外的、需要使用系统或与系统交互的事物人、设备、外部系统等。人、设备、外部系统等。6.3.4 6.3.4 用例中的有关概念用例中的有关概念角色的类型:角色的类型:系统用户系统用户:是最常见的一种角色。是直接使用系统的人。是最常见的一种角色。是直接使用系统的人。另一个系统另一个系统:如:如DSS可作为可作为MIS的一个活动者。补货系统可作的一个活动者。补货系统可作为定单处理系统的活动者。为定单处理系统的活动者。时间时间:当经过一定时间触发系统中的某个事件时,时间就成:当经过一定时间触发系统中的某个事件时,时间就成了角色。例如定期的某些业务处理工作。了角色。例如定期的某些业务处理工作。6.3.4 6.3.4 用例中的有关概念用例中的有关概念表示表示管理员管理员管理员管理员 6.3.4 6.3.4 用例中的有关概念用例中的有关概念活动者之间的关系活动者之间的关系客户商业客户雇员管理者可操作的功能比一般参与者要多6.3.4 6.3.4 用例中的有关概念用例中的有关概念2.2.事件流事件流事件流表达了用例执行的细节。事件流有三种:事件流表达了用例执行的细节。事件流有三种:主主事事件件流流:是是正正常常情情形形,是是用用例例中中最最常常用用的的路路径径。取款用例的主事件流是顺利取到款。取款用例的主事件流是顺利取到款。其其他他事事件件流流:是是从从主主事事件件流流分分支支出出来来的的,但但不不是是错错误条件。误条件。(视具体情况决定是否会执行视具体情况决定是否会执行)错误流错误流:错误条件。错误流表示系统本身的问题。:错误条件。错误流表示系统本身的问题。6.3.4 6.3.4 用例中的有关概念用例中的有关概念客户输入正确密码客户输入正确密码客户选择取款操作,并确定取款金额客户选择取款操作,并确定取款金额查询余额?查询余额?系统显示余额系统显示余额是是否否系统从账户余额减去取款金额系统从账户余额减去取款金额打印账单?打印账单?系统显示余额系统显示余额否否是是取信用卡,结束操作取信用卡,结束操作主主事事件流件流主主事事件流件流其他事件流其他事件流事件流描述了以下几个方面的内容:事件流描述了以下几个方面的内容:简要说明简要说明:包括执行用例的不同类型的用户和用户通过该:包括执行用例的不同类型的用户和用户通过该用例要达到的最终结果。用例要达到的最终结果。前提条件前提条件:即开始用例之前必须满足的条件,如,前提条:即开始用例之前必须满足的条件,如,前提条件可能是另一个用例已经执行或用户具有运行当前用例的件可能是另一个用例已经执行或用户具有运行当前用例的权限。并不是所有的用例都有前提条件。权限。并不是所有的用例都有前提条件。6.3.4 6.3.4 用例中的有关概念用例中的有关概念 事事件件流流路路径径:事事件件流流描描述述了了执执行行用用例例功功能能的的具具体体步步骤。包括:骤。包括:用例如何开始用例如何开始用例的各种路径用例的各种路径主事件流主事件流其他事件流其他事件流错误事件流错误事
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!