面向对象的分析设计-2

上传人:飞*** 文档编号:57314284 上传时间:2018-10-20 格式:PPT 页数:54 大小:438.50KB
返回 下载 相关 举报
面向对象的分析设计-2_第1页
第1页 / 共54页
面向对象的分析设计-2_第2页
第2页 / 共54页
面向对象的分析设计-2_第3页
第3页 / 共54页
面向对象的分析设计-2_第4页
第4页 / 共54页
面向对象的分析设计-2_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《面向对象的分析设计-2》由会员分享,可在线阅读,更多相关《面向对象的分析设计-2(54页珍藏版)》请在金锄头文库上搜索。

1、面向对象的分析设计(二),静态结构-用例图 静态结构-类图 动态行为-顺序图(交互图),静态结构-用例图 静态结构-类图 动态行为-顺序图(交互图),用例图(use case)-概括(一),用例模型由Jacobson首先使用,并加入由他所倡导的OOSE方法中,被认为是第二代面向对象技术的标志。用例描述的是外部执行者(Actor)所理解的系统功能。它用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。,用例图(use case)-概括(二),用例描述了待开发系统的功能需求 。 用例将系统看作黑盒,从外部执行者的角度来理解系统 。 用例驱动了需求之后

2、各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发的系统,从而影响到开发工作的各个阶段和 UML 的各个模型。,用例图(use case)-概括(三),用例图包含系统、执行者和用例三种模型元素。 在结构化分析过程 (SA)中,将数据和功能分开考虑,先识别出数据对象,然后通过使用数据流图刻画数据对象之间的关系来描述系统功能。 在面向对象的分析(OOA)中,使用用例将数据和功能一起考虑。在需求获取阶段,画出简单用例图,在需求分析阶段,将用例图进行细化,同时画出对象的类图和交互图等。,用例图-系统,系统是用例模型的一个组成部分,代表的是一部机器或一个业务活动,而不

3、是真正实现的软件系统。 一般用方框来表示。 系统的边界用来说明构建的用例模型的应用范围。 识别系统边界一般的做法是,先识别出系统的基本功能,然后以此为基础定义一个稳定的、精确定义的系统架构,以后再不断地扩充系统功能,逐步完善。,用例图-用例(一),用例代表的是一个完整的功能,用例是动作序列的集合,系统执行该动作序列来为执行者产生一个可观察的结果。 动作是系统的一次执行。从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。在UML中,用例被定义成系统执行的一系列动作,动作执行的结果能被指定执行者察觉到。,用例图-用例(二),在UML中,用例表示为一个椭圆。方框表示系统边界,小人状图案表示执

4、行者。,用例图-用例(三),用例和执行者之间存在连接关系,它们直接的关系属于关联(association),又称通信关联,这种关联表示那种执行者能与该用例通信。关联关系是双向的多对多关系,一个执行者可以与多个用例通信,一个用例也可以与多个执行者通信。 用例表示的也是一个类,而不是某个具体的实例。用例描述了他代表的功能的各个方面。也就是包含了用例执行期间可能发生的种种情况。用例的实例(也是一种动作)代表系统的一种实际使用方法,这个实例通常叫作情景(scenario)。情景是系统的一次具体执行路线。,用例图-用例(四),用例总由执行者初始化。用例所代表的功能必须由执行者激活,而后才能执行。换句话说

5、,执行者需要系统完成的功能都是通过用例完成的,执行者一定会直接或间接地命令系统执行用例。 用例为执行者提供值。用例必须为执行者提供实在的值,虽然这个值并不总是重要的,但是能被执行者识别。 用例具有完全性。用例是一个完整的描述。用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。,用例图-执行者(一),执行者是指用户在系统中所扮演的角色,是与系统交互的人或事。其图形化的表示是一个小人状图案。 执行者是一个群体概念,代表的是一类能使用某个功能的人或事,执行者不是指某个个体。 执行者在用例图中是用类似人的图形来表示但执行者未必是人。 执行者可以分为主要执行者和次要执行者。主要执行者(prim

6、ary actor)指的是执行系统主要功能的执行者,次要执行者指的是使用系统次要功能的执行者,次要功能是指一般完成维护系统的功能。,用例图-执行者(二),执行者是一个类,它拥有与类相同的关联描述,在用例图中,可以用泛化(generalization)关联描述若干执行者之间的关系。既将某些执行者的共同行为抽取出来表示成概括的行为,且将它们描述为超类。,用例图之间关系,用例一般用一个恰当的动宾词组来命名。用例之间的关系存在以下三种: 泛化关联 generalization 扩展关联 extend 包含关联 include,关联关系-泛化关联generalization,子用例继承了超用例的特征(属

7、性和行为),子用例可以出现在用例出现的任何位置。,关联关系-扩展关联extend,一个用例中加入一些新的动作后则构成另一个用例,与泛化关联不同之处在于它在一个扩展点上进行扩展,用来描述特殊场景。引入扩展在于方便处理泛化中不容易描述的特殊情况,便于扩展系统。,关联关系-包含关联include,一个用例使用另一个用例时,这两个用例之间就构成了包含关系。 如果若干个用例的某些行为是相同的,则可以把这些相同的行为提取出来单独作为一个用例,这个用例称作抽象用例。这样当某个用例使用该抽象用例时,就好像这个用例包含了抽象用例的所有行为。,关联关系-包含关联include,用例图-总结,用例大多在需求阶段产生

8、,随着工作深入逐步细化。 用例模型获取时遵循先获取执行者,再获取用例的顺序。 确定用例的过程是对获取的用例进行提炼和归纳的过程, 需要保持项目规模和用例个数之间的相对均衡。,静态结构-用例图 静态结构-类图 动态行为-顺序图(交互图),类图(class diagram)和对象图概括,类图和对象图描述了类和对象的静态结构,它是面向对象(OO)技术的核心。 类图和对象图可以用于系统开发的不同阶段。在需求分析阶段的类图比较抽象,在设计阶段将需求分析阶段的类图进行细化。,类图-简介和表示法,类图(Class Diagram)描述类和类之间的静态关系。与数据模型不同,它不仅显示了信息的结构,同时还描述了

9、系统的行为。 类描述一类对象的属性和行为。在UML中,类的可视化表示为一个划分成三个格子的长方形 ,最顶部栏表示类的名字,中间层栏表示类的属性,底层栏表示类的操作。在类图的简化画法中可以省略了属性和操作栏。,类图-类的获取和命名,类图最顶部栏包含类的名字。类的命名应尽量用应用领域中的术语,应明确、无歧义,以利于开发人员与用户之间的相互理解和交流。一般而言,类的名字是名词。 类的获取是一个依赖于人的创造力的过程,必须与领域专家合作,对研究领域仔细地分析,抽象出领域中的概念,定义其含义及相互关系,分析出系统类,并用领域中的术语为类命名。,类图-类的属性(一),类图中间层栏包含类的属性,用以描述该类

10、对象的共同特点。 确定类属性主要考虑如下因素: 属性表示关于对象的信息,一般来说,类的属性应能描述并区分每个特定的对象 。 只有系统感兴趣的特征才包含在类的属性中 。 系统建模的目的也会影响到属性的选取。 通常对于外部对象来说,属性是可获取(gettable)和可设置的(settable)。 术语属性和变量的含义完全不同。属性表示一个抽象定义的特性,独立于特性的内部实现;而变量是一个内部的实现机制。然而大多数情况下,属性最终是由一个简单的变量实现的。,类图-类的属性(二),UML规定类的属性的语法为:可见性 属性名 多重性:类型 = 初始值 约束 可见性:+ public private #

11、protected 属性名:属性的名称 多重性:属性的值可能有多个 类型:象 字符型、数字型等类型 初始值:属性的初值 约束:包含三类,可变化的(changeable)表示对修改属性的值没有约束;仅增加的(addonly)对于多重性大于1的属性可以增加附加值,但一旦被创建就不可对值进行消除或改变;冻结(frozen)指在实例化出一个对象赋初值后就不允许改变属性值。 例: private sex 2 :string = “male” frozen,类图-类的操作,操作是一个服务的实现,是对一个对象等做什么事情的抽象。一个类可以有任意数目的操作,也可以没有操作。 操作通常也被称为功能,但是它们被约

12、束在类的内部,只能作用到该类的对象上。操作名、返回类型和参数表组成操作界面。 UML规定操作的语法为:可见性 操作名 (参数表) : 返回类型 特征串 特征串主要有查询(IsQuery)、顺序(Sequence)、监护(guarded)和并发(concurrent),其中后三个特征表达了操作的并发语义。 举例:public getSex():string IsQuery UML对操作和方法进行了区别。操作详述了一个可以有类的任何一个对象请求以影响行为的服务;方法是操作的实现。,类表示方法举例,类图举例,类图-类的职责,类的职责是类的契约或责任。可以将类的职责用自由文本的形式在类图下面进行描述。

13、 在需求阶段,如还不能清楚定义类的属性和操作,可以采用类的简化画法,然后在类的下方采用自由文本来描述类的职责。,类图-关联,关联(Association)表示两个类之间存在某种语义上的联系。 关联可以有方向,关联上加上箭头表示方向,在UML中称为导航(Navigability)。 只在一个方向上存在导航表示的关联,称作单向关联 。 在两个方向上都有导航表示的关联,称作双向关联。 UML规定,不带箭头的关联可以意味着未知。,类图-关联的命名,可以在关联的一个方向上为关联起一个名字,而在另一各方向上起另一个名字,名字通常仅挨着直线书写。为了避免混淆,在名字的前面或后面带一个表示关联方向的黑三角,黑

14、三角的尖角指明这个关联只能用在尖角所指的类上。为关联命名有几种方法,其原则是该命名是否有助于理解该模型,类图-关联的角色,关联两头的类以某种角色参与关联。如图中,“公司“以“雇主“的角色,“人“以“雇员“的角色参与的“雇用“关联。“雇主“和“雇员“称为角色名。如果在关联上没有标出角色名,则隐含地用类的名称作为角色名。角色还具有多重性,表示可以有多少个对象参与该关联。在图中,雇主(公司)可以雇佣(签工作合同)多个雇员,表示为“*“; 雇员只能被一家雇主所雇佣,表示为“1“。,类图-角色的多重性,多重性表示参与对象的数目的上下界限制。表示方法如下: 01 表示0到1个对象 0* 或* 表示0到多个

15、对象 57 表示5到7个对象 2 表示2个对象 如果图中没有明确表示关联的重数,那就意味者1,类图-关联类,在有些问题中,关联关系不仅需要一个名称、需要定义相关对象的角色及其参与这些角色的对象数量,而且还需要设置一些属性、操作以及其它特征。,类图-关联类的存在价值,首先从概念上讲,这种信息应当从属于人与公司之间的“雇佣关系”,而不是人或者公司自身的属性,既然工作年限是关联的一个属性,就应当把它记录在关联关系中。 其次从实现上讲,这种信息记录的实现方式受到关联关系中各个角色的多重性的影响。例如图中规定一个人只能被一家公司所雇佣,所以共工作年限可以作为人的一个属性,在实现中直接在人的的类中增加一个

16、属性即可,当然此时还应当增加另一个属性记录他所受雇的公司。但是如果这种关系发生变化,例如国家允许个人谋求第二职业,甚至多个职业时,这种实现必须改变。 从上述可知,关联可能要记录一些信息,因此引入一个关联类来记录,也就是说,与一个关联关系相连的类称作关联类。,类图-整体/部分关联(一),UML对于整体/部分关联有特殊的表示法:组成和聚集。 组成(composition)关联表示整体拥有各部分,部分与整体共存,如整体不存在了,部分也会随之消失。“整体”称作组成对象,“部分”称作成分对象。 组成的三个重要特征:(1)如果没有成分对象,组成对象也不存在。(2)在任何时候,每个给定的成分对象只能是 组成

17、对象的组成部分。(3)组成是典型的异构。成分对象很可能由多个类型混 合组成 组成对象和每个成分对象之间的关联表示为一端有黑色菱形块的关联线,菱形块放在组成对象一侧。,类图-整体/部分关联(二),类图-整体/部分关联(三),聚集(Aggregation)是一种特殊形式的关联。聚集也表示类之间的整体/部分关联,但主要强调组/成员的关联。整体被称作聚集对象,部分称作构成对象。 例如森林是树木的集合。聚集具有三个特征: 构成对象不存在,聚集对象还可以存在。例如把一个部门的所有职工都解雇,那么该部门仍然存在。这个特性用处不太大。 在任何时候,每个对象都可以是多个聚集的构成。一个人可能属于多个俱乐部。 聚集往往是同构的,也就是,典型的聚集的构成对象将属于同一个类。例如树木都是由树木组成。 聚集对象和每个构成对象之间的关联表示为一端有菱形块的关联线,菱形块放在聚集对象一侧 。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号