版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 面向对象方法与UML13.1 面向对象系统的概念3.2 统一建模语言UML概述3.3 UML的模型元素3.4 UML中的图3.5 UML的元模型结构1第3章 面向对象方法与UML3.1 面向对象系统的概念22第3章 面向对象方法与UML什么是对象客观世界中的应用问题面对的主体都是物理的或概念的实体。从这些实体出发,分析实体的作用、责任以及它们之间协作,从而找出问题的解,是很自然的。面向对象技术就是适合用这种方式分析和解决问题的方法。它的基石就是问题领域中识别出来的各种对象。依赖这些对象提供的服务和对象之间相互的协同(关系),实现期望的功能。面向对象技术能够在解决方案中直接模拟问题领域,
2、并与人类的思维习惯相一致。33第3章 面向对象方法与UML什么是面向对象如果一个系统是使用对象、类、继承和消息通信这样4个概念设计和实现的,则可认为这个系统是面向对象的。面向对象系统的每个成分都应是对象,计算是通过新对象的建立和对象之间的通信来执行的。面向对象=对象+类+继承+消息通信一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。44第3章 面向对象方法与UML面向对象范型的特点面向对象系统中的对象是数据抽象与过程抽象的综合体。所谓过程抽象是指当使用某个过程时,无需关心过程内部的实现细节,只要知道如何调用该过程以及该过程完成什么功能即可。所谓数据抽象是
3、指使用结构或记录等方式把某个实体的数据集中起来,使得使用者能够以单元为单位使用数据。面向对象范型在数据抽象中组织过程抽象。55第3章 面向对象方法与UML面向对象范型的特点面向对象系统的状态分别保存在各个对象的数据存储中,而不是保存在一些全局变量中。系统解决问题的控制流包含在各个对象中的操作内。并通过消息传递,控制流从一个对象转移到另一个对象。算法被分布到各种实体中。通过执行消息传递和对象中的操作实现算法的功能。66第3章 面向对象方法与UML面向对象的特点抽象性:对象包含数据抽象和行为抽象;封装性:信息隐蔽(使用与实现分开);共享性:同一个类中所有对象共享相同的数据结构和行为;同一应用中的对
4、象通过继承关系,共享共同的数据结构和行为;不同应用中的对象通过复用,共享数据结构和行为。77第3章 面向对象方法与UML面向对象系统具有的特色系统的定义从问题领域的实体出发,与人类习惯的思维方式一致。搭建的系统结构稳定性好,修改可以局部化。系统及体系结构可以使用构件组装,可复用性好。软件系统容易理解,容易修改,容易测试,适合开发大型的软件产品。软件体系结构严格按照信息(细节)隐蔽的原则设计,产品可维护性好。88第3章 面向对象方法与UML对象的定义对象是系统中描述客观事物的实体,是构成系统的一个基本单元,由一组属性值和一组对属性进行操作的服务组成。对象 = 对象名+数据(属性)+操作(行为)属
5、性表征了对象的静态特征,一般通过封装在对象内部的数据存储来定义。一旦对象的数据存储都赋了值,这个对象的状态就确定了。属性值一般只能通过执行对象的操作来改变。操作又称为方法或服务,它描述了对象执行的功能。若通过消息传递,还可以为其他对象使用。99第3章 面向对象方法与UML计算机屏幕上三个多边形(20, 20)(56, 10)(23, 30)(46, 37)(50, 45)(10, 50)(35, 60)(35, 85)(50, 60)(50, 85)(60, 35)计算机窗口中的三个多边形对象1010第3章 面向对象方法与UML表示多边形的3个对象triangle(10, 50)(20, 20
6、)(23, 30)drawmove(x, y)contains?(aPoint)quadrilateral1(46, 37)(50, 45)(60, 35)(56, 10)drawmove(x, y)contains?(aPoint)quadrilateral2(35, 60)(35, 85)(50, 85)(50, 60)drawmove(x, y)contains?(aPoint)表示多边形的三个对象1111第3章 面向对象方法与UML对象的分类对象可以分为5种: 物理对象(Physical Objects)-物理对象是最易识别的对象,通常可以在问题领域的描述中找到,它们的属性可以标识和测
7、量。 角色对象(Roles)-一个实体的角色也可以抽象成一个单独的对象。角色对象的操作是由角色提供的技能。 事件对象(Incidents)-一个事件是某种活动的一次“出现”。一个事件对象通常是一个数据实体,它管理“出现”的重要信息。事件对象的操作主要用于对数据的存取。1212第3章 面向对象方法与UML对象的分类 交互对象(Interactions)-交互表示两个对象之间的关系,这种类型的对象类似于在数据库设计时所涉及的“关系”实体。当实体之间是多对多的关系时,利用交互对象可将其简化为两个一对多的关系。 规格说明对象(Specifications)-规格说明对象表明组合某些实体时的要求。规格说
8、明对象中的操作支持把一些简单的对象组合成较复杂的对象。1313第3章 面向对象方法与UML对象的特点 对象是消息处理的主体。对象之间是通过消息互相通信的。 对象是以数据为中心的。所有操作都与对象的属性相关,而且操作的结果往往与当时所处的状态(属性的值)有关。 实现了数据封装。对象是一个黑盒,其属性值对外不可见,被完全封装在盒子内部,对属性值的访问只能通过接口中定义的(公有)接口操作进行。为了使用对象内的属性值,只需知道属性值的取值范围和可以访问该属性的接口操作,无需知道表征属性的具体数据结构和操作的实现算法。1414第3章 面向对象方法与UML对象的特点 模块独立性好。由于前3个特点,故对象内
9、部各种成分彼此相关,联系紧密,内聚性强。又由于完成对象功能所需的操作和相关数据结构基本上都被封装在对象内部,形成了面向对象系统的基本模块,因而它与外界的联系较少,对象之间的耦合比较松散。 具有并行的特点。不同的对象各自独立地处理自身的数据,彼此通过发送消息、传递信息来完成通信。所以它们具有并行工作的特点。1515第3章 面向对象方法与UML对象的两个视图设计视图:把对象看做实体,产生有关实体的声明,包括实体的属性和可以执行的操作,但不涉及实现功能的一系列动作。实现视图:用对象表示在应用程序代码中的实体,是数据存储与相关操作的统一的封装体,是数据抽象和过程抽象的实例化。1616第3章 面向对象方
10、法与UML类与封装类(Class)是一组具有相同结构、相同服务、共同关系和共同语义的对象集合。类的定义包括类名、一组数据属性和在数据上的一组合法操作。类名quadrilateral1(46, 37)(50, 45)(60, 35)(56, 10)drawmove(x, y)contains?(aPoint)quadrilateral2(35, 60)(35, 85)(50, 85)(50, 60)drawmove(x, y)contains?(aPoint)quadrilateralpoint1point2point3point4属性draw服务move(x, y)contains?(aPoi
11、nt)17由两个四边形对象导出一个类17第3章 面向对象方法与UML继承(inheritance)如果某几个类之间具有共性的东西 (属性和行为),抽取出来放在一个泛化类中,将各个类的特有的东西放在特化类中分别描述,则可建立起特化类对泛化类的继承。继承是使用已有的类定义做为基础建立新类的定义技术。已有的类可当做泛化类(父类)来引用,则新类相应地可当做特化类(子类)来引用。1818第3章 面向对象方法与UML继承(inheritance)建立继承结构的好处:易编程、易理解, 代码短, 结构清晰易修改, 共同部分只要在一处修改即可易增加新类, 只须描述不同部分怎样建立一个好的继承层次类可以从父类继承
12、,父类又可以从它的父类继承,形成多层次的继承结构。当增加一个新类时,不一定在最低层,可能需要插在中间层,这样可能需要调整原来的层次结构。1919第3章 面向对象方法与UML继承(inheritance)汽车大轿车载重车救火车起重车a) 建立一个新类起重车。它的底盘、发动机、轮胎、驱动装置等都在已有类汽车中。关系如右图所示。新类是已有类的特殊情形。这时直接让起重车类作为汽车类的子类即可。起重车类汽车类2020第3章 面向对象方法与UML继承(inheritance)b) 增加一个新类拖拉机。它的底盘、发动机等与汽车不同,但驱动装置、轮胎等与汽车相同。调整继承结构。建立一个新的一般的车辆类,把拖拉
13、机与汽车类的共性放到车辆类中,拖拉机与汽车类都成为车辆类的子类。车辆是抽象类,相关操作到子类汽车找。汽车车辆拖拉机汽车拖拉机2121第3章 面向对象方法与UML继承(inheritance)c) 另一种情形是在已有类的基础上加入新类,使得新类成为已有类的泛化类。例如,已经存在三角形类,四边形类,想加入一个多边形类,并使之成为三角形和四边形类的泛化类。多边形三角形类多边形类四边形类三角形四边形六边形2222第3章 面向对象方法与UML继承(inheritance)d) 前三个情况主要是通过查找(应用领域)类库,找到可以原封不动地继承的类或可以通过调整继承层次结构继承的类。但如果在已有的继承层次中
14、找不到可以继承的已有类,就从新开始完全独立地建立一个类。2323第3章 面向对象方法与UML多继承如果一个类需要用到多个现有类的特征,可以从多个类中继承,称为多继承。例如退休教师是继承退休者和教师这两个类的某些特征或行为而得到的一个新类。退休者教师退休教师2424第3章 面向对象方法与UML继承的种类 取代继承。如“窗口”和“Windows窗口”的关系,任何需要“窗口”的地方都可以用“Windows窗口”来代替。 内容继承。例如“四边形”与“矩形”的关系,“四边形”包括了“矩形”。 受限继承。如“鸵鸟”是一种特殊的“鸟”,它不能继承“鸟”的“会飞”的特性。 特化继承。如“汽车”与“起重车”的关
15、系。2525第3章 面向对象方法与UML多态性和动态绑定对象互相通信,即一个对象发消息给另一个对象,执行某些行为或又发消息给另外的对象,从而执行系统的功能。多态性指同名的函数或操作可在不同类型的对象中有各自相应的实现。例如a)整数“+”:整数加法b)浮点数“+”:浮点数加法c)字符串“+”:字符串连接d)点“+”:两个点的坐标位置分别叠加具有多态的函数或操作在运行时才根据实际的对象类型,执行相应实现程序的连接,此即动态绑定。2626第3章 面向对象方法与UML多态性实现的种类 利用继承关系把所有数据类型当做一个抽象数据类型的子类型。动态绑定保证在程序执行时实施与实例连接的操作。 利用模板机制把
16、所有可能的数据类型用一个参数化的数据类型来代替。2727第3章 面向对象方法与UML消息通信消息是一个对象向另一个对象传递的信息。有4类消息:发送对象请求接收对象提供服务。发送对象激活接收对象。发送对象询问接收对象。发送对象仅传送信息给接收对象。2828第3章 面向对象方法与UML消息通信消息的使用类似于函数调用,消息中指定了某一个实例、一个操作名和一个参数表(可能是空的),接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的值结合起来。系统功能的实现就是一组对象通过执行对象自身的操作和消息通信来完成的。2929第3章 面向对象方法与UML对象生存周期对象的生存周期属于对象的实现视
17、图。在程序执行过程中,它们根据需要被创建;一旦它们的使命完成不再需要它们时,对象将被销毁。从这个意义上讲,对象具有动态性。对象的创建称为实例化。对象具有状态和行为。对象的状态保存在对象内部的属性中,对象的行为通过相关的操作来表现。对象之间可以并行工作,各自独立处理自己的数据,同时改变自己的状态。对象之间还具有通信能力,它们通过互相发送消息进行通信,协同完成工作流程。3030第3章 面向对象方法与UML3.2 统一建模语言UML概述3131第3章 面向对象方法与UML什么是建模所谓建模就是对现实的简化或抽象,它滤掉了非本质的细节,集中描绘复杂问题或结构的本质,使得问题更容易理解。模型可以帮助人们
18、按照实际情况或按照人们所需要的样式对系统进行直观的描绘;模型允许人们细致地说明系统的结构和行为;模型给出一个指导人们构造系统的模板;模型可以通过文档的方式把人们的决策正式记载下来。建模是系统成功的一个基本因素。3232第3章 面向对象方法与UML建模过程原则 选择创建的模型应能反映所要处理和解决的问题。 根据观察者的角色和观察的原因,可选择用不同详细程度表示的模型。 模型建造要基于现实、反映现实。 为了完整地理解和表达系统,需要用一组从不同视角描述系统的模型。 构造模型的基本技术是抽象,应抓住与问题有关的主要特征,从抽象到具体,逐步引进问题详细可行的解决方案。3333第3章 面向对象方法与UM
19、L建模过程原则 不要追求绝对的真实和完美,只须从预期目标的角度看其是否充分。 应当分阶段刻画问题的关键方面,略去相对次要的因素。 建模语言应支持人的由模糊到清晰、由粗到细、逐渐完善的认识过程。 应采用可视化图形建模语言,例如UML。3434第3章 面向对象方法与UMLUML发展历史UML(Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不仅支持面向对象系统的分析与设计,还支持从需求分析开始的系统开发的全过程。20世纪90年代,有3种著名方法是OMT(Rumbaugh)、Booch
20、和OOSE(Jacobson)。每种方法都有自己的开发过程、表示符号和侧重点。OMT的强项在分析,而弱项在设计;Booch 91的强项在设计,而弱项在分析;OOSE的强项在行为分析,而弱项在其他领域。3535第3章 面向对象方法与UML36第3章 面向对象方法与UMLUML的特点 统一标准。融合了当前一些流行的面向对象开发方法的主要概念和技术,成为一种面向对象的标准化的统一建模语言。提供了标准的面向对象的模型元素的定义和表示法,有标准的语言工具可用。已成为工业标准化组织OMG的正式标准。 面向对象。UML支持面向对象技术的主要概念,它提供了一批基本的表示模型元素的图形和方法,能简洁明了地表达面
21、向对象的各种概念和模型元素。3637第3章 面向对象方法与UMLUML的特点 可视化,表达能力强大。一种图形化语言,系统的逻辑模型和实现模型都能用UML的模型图形清晰地表示。可以处理与软件的说明和文档有关的问题。提供了语言的扩展机制,用户可以根据需要增加定义自己的衍型(StereoType)、标记值和约束等。可用于各种复杂类型的软件系统的建模。3738第3章 面向对象方法与UMLUML的特点 独立于过程。UML是系统建模语言,不依赖特定的开发过程。 容易掌握使用。UML概念明确,建模表示法简洁明了,图形结构清晰,容易掌握使用。只要着重学习3个方面的主要内容(UML的基本模型元素、组织模型元素的
22、规则、UML语言的公共机制),基本就了解了UML,剩下的就是实践的问题了。 与编程语言的关系。 可自动生成Java,C+的代码框架3839第3章 面向对象方法与UMLUML的视图一个软件系统往往可以从不同的角度对其进行观察,从某个角度观察到的系统就构成了系统的一个视图。每个视图都是整个系统描述的一个投影,若干个不同的视图可以完整地描述出所建造的系统。每种视图用若干幅图来描述,一幅图包含了系统的某一特殊方面的信息。3940第3章 面向对象方法与UMLUML的构成UML的三个主要组成元素1)基本构造块(basic building blocks )2)组织构造块的规则(rules)3)运用于整个U
23、ML的公共机制(common mechanisms)UML包括三种基本构造块:1)事物(things)2)关系(relationships)3)图(diagrams)4041第3章 面向对象方法与UMLUML视图的4个主题域结构主题域描述了系统中的结构成员及其相互关系,包括静态视图、设计视图和用例视图;动态主题域描述了系统的行为或其他随时间变化的行为,包括状态机视图、活动视图和交互视图;物理主题域描述了系统中的计算资源及其总体结构上的部署,包括部署视图;模型管理主题域描述层次结构中模型自身的组织(利用包来组织模型),包括模型管理视图和剖面。4142第3章 面向对象方法与UMLUML的视图 用例
24、视图(Use Case View) 用例视图由一组用例图构成,其基本组成部件是用例、参与者和系统,用于从系统的外部视角描述参与者与系统的交互,进行系统的功能建模。 静态视图(Static View) 静态视图用类图表示,主要描述系统中的类以及类之间的相互关系。它用于建立系统的逻辑结构模型(应用领域的视角)与物理结构模型(系统实现的视角)。 设计视图(Design View) 设计视图由一组内部结构图、通信图和构件图实现。它用于对应用系统自身的设计层面的结构建模。4243第3章 面向对象方法与UMLUML的视图 状态机视图(State Machine View) 状态机视图用状态机图表示。每个状
25、态机图用于对一个类实例的整个生存周期的个体行为建模,它描述了该实例的一组状态和这些状态之间的迁移。 活动视图(Activity View) 活动视图用活动图表示。活动图相当于传统的程序流程图的作用,用于描述一个系统或子系统的工作流,或者描述某一算法中计算活动的控制流。 交互视图(Interaction View) 交互视图可用顺序图和通信图表示,描述系统中一组对象如何通过消息传递,共同协作来实现某一个用例或构件的功能。4344第3章 面向对象方法与UMLUML的视图 部署视图(Deployment View) 部署视图用部署图表示,部署图描述了运行时结点(如计算机等物理设备资源)的配置及其连接
26、,以及各种制品在结点网络上的分布。制品是一个物理实现单元,如一个文件,它也可以表示一个或多个构件的实现。 模型管理视图(Model Managernent View) 模型管理视图对模型自身的组织建模。一个模型由一组保存模型元素(如类、状态机、用例)的包组成。包还可以包含其他的包,因此,一个模型从一个间接包含所有模型内容的根包(Root Package)开始。包是操纵模型内容的单元,还是访问控制和配置控制的单元。每个模型元素可以被一个包或另一个元素拥有。模型管理信息通常展示在包图中,它是类图的变种。 剖面(Profile) UML是用一个元模型(Meta-model)定义的。元模型是指描述建模
27、语言自身的模型。剖面机制允许在不修改基本元模型的前提下对UML作有限的变化。4445第3章 面向对象方法与UMLUML的视图UML包含3个主要的可扩展结构:约束是以自然语言或特定形式语言书写的对语义的限制或条件,一般把约束写在花括号中,如 value 0 、 or 等。构造型也叫做衍型,可追加在其他模型元素之上,使原来的模型元素变成具有特定语义的新变种。它本质上是一种新元类(Metaclass)。一般用 标记构造型,如signal。标签值是贴在任何模型元素上被命名的信息片。4546第3章 面向对象方法与UML47第3章 面向对象方法与UML3.3 UML的模型元素4648第3章 面向对象方法与
28、UMLUML的事物事物是对模型中最具代表性成分的抽象。在UML中,可以将事物分为结构事物、行为事物、分组事物和注释事物4类。4749第3章 面向对象方法与UMLUML的事物origin(24,20)(f)用例size(12,8)suspend()flush()(c)对象open()close()windowsEventManagerdata:windowsPalce Ordermove()display()(a)类(b)主动类ISpelling(d)接口(e)状态机Initializing(g)参与者OrderManegement(h)协作Orderform.Java(i)构件Applicat
29、ionServer(j)结点UserInterfacePackage(k)包See policy.doc(l)注释UML的基本事物50第3章 面向对象方法与UMLUML的事物1结构事物结构事物是UML模型的静态部分,主要用来描述概念的或物理的元素,包括类、主动类、接口、用例、协作、构件和结点等。 类(Class)- 类用带有类名、属性和操作的矩形框来表示。类名Windoworiginsizeopen( )close( )move( )display( )属性操作4851第3章 面向对象方法与UMLUML的事物 对象(Object)- 对象是类的实例,在使用时需在其名字下边加下划线,对象的属性值
30、需明确给出。 接口(Interface)- 描述了一个类或构件的一组外部可用的服务(操作)集。接口定义的是一组操作的描述,而不是操作的实现。供口需口4952第3章 面向对象方法与UMLUML的事物 主动类(Active Class)- 主动类的实例应具有一个或多个进程或线程,能够启动控制活动。在图形上,为了与普通类区分,主动类用两侧加边框的矩形表示。EventManagersuspend()flush()5053第3章 面向对象方法与UMLUML的事物 用例(Use Case)- 亦称用况,用于表示系统想要实现的行为,即描述一组动作序列(即场景)。而系统执行这组动作后将产生一个对特定参与者有价
31、值的结果。在图形上,用例用一个仅包含其名字的实线椭圆表示。Place Order实现用例OrderManagement协作5154第3章 面向对象方法与UMLUML的事物 参与者(Aotor)- 亦称行动者或角色。参与者定义了一组与系统有信息交互关系的人、事、物,在图形上用一个简化的小人表示。 协作(Collaboration)- 用例仅描述要实现的行为,不描述这些行为的实现。这种实现用协作描述。协作定义了一个交互,描述一组角色实体和其他实体如何通过协同工作来完成一个功能或行为。在图形上,协作用一个仅包含名字的虚线椭圆表示 。Actor5255第3章 面向对象方法与UMLUML的事物 构件(C
32、omponent)- 亦称组件,是系统中物理的、可替代的部件。它通常是一个描述了一些逻辑元素的物理包。在图形上,构件用一个带有小方框的矩形来表示。Orderform.java5356第3章 面向对象方法与UMLUML的事物 结点(Node)- 是在运行时存在的物理元素。它代表一种可计算的资源,通常具有一定的记忆能力和处理能力。在图形上,结点用立方体来表示。应用服务器数据库服务器课程管理成绩管理5457第3章 面向对象方法与UMLUML的事物2行为事物行为事物是UML模型的动态部分,包括交互和状态机两类。 交互(Interaction)交互由在特定的上下文环境中共同完成一定任务的一组对象之间传递
33、的消息组成。交互涉及的元素包括消息、动作序列和链。有名对象Assign(development)p:Person:Company消息匿名对象5558第3章 面向对象方法与UMLUML的事物 状态机(State Machine)状态机描述了一个对象或一个交互在生存周期内响应事件所经历的状态序列。状态机涉及的元素包括状态、转换、事件活动等。状态用圆角矩形来表示。KeypressinitializingcommandExitidleFinished5659第3章 面向对象方法与UMLUML的事物3分组事物分组事物是UML模型的组织部分。它的作用是降低模型的复杂性。包(Package)- 是把模型元素
34、组织成组的机制,结构事物、行为事物甚至其他分组事物都可以放进包内。包不像构件(仅在运行时存在),它纯粹是概念上的(即它仅在开发时存在)。用户接口包应用包业务对象包5760第3章 面向对象方法与UMLUML的事物4注释事物注释事物是UML模型的解释部分,它们用来描述和标注模型的任何元素。通常可以用注释修饰带有约束或者解释的图。See policy8-5-96.docfor details aboutthese algorithms.CashAccountpresentValue()5861第3章 面向对象方法与UMLUML中的关系模型元素之间的关系也是模型元素,常见的关系有依赖、关联、泛化和实现
35、4种。关系特征:这四种关系是UML模型中可以包含的基本关系。它们也有变体。例如,依赖的变体有细化、跟踪、包含和延伸。5962第3章 面向对象方法与UMLUML中的关系依赖关联泛化实现聚合复合(状态)迁移同步消息简单消息异步消息UML中的关系5963第3章 面向对象方法与UMLUML中的关系1依赖(Dependency)关系两个事物之间的语义关系,其中目标事物发生变化会影响源事物的语义。图中虚线箭头从源事物指向目标事物,表示源事物依赖于目标事物。CourseScheduleadd(c:Course)remove(c:Course)IteratorCourse6064第3章 面向对象方法与UMLU
36、ML中的关系两个类之间的依赖关系可以是:源类访问定义在目标类内部的数据值;源类的操作调用了定义在目标类的操作;源类的返回类或参数是目标类的实例;如果在顺序图中的两个对象存在消息的传送,而且它们之间没有结构方面的连接,可以在类图上用依赖关系建模。依赖的变体包含特定的语义,表明类之间的关系、包之间的关系、用例之间的关系、对象之间的关系、建模元素与模型之间的关系等。6165第3章 面向对象方法与UML类之间的依赖关系a. 友元依赖 目标类(如二叉树)视源类(如迭代器)为友元,允许源类访问目标类的所有私有属性和操作。IteratorBinaryTreeb. 导出依赖 两个类或对象如果存在导出依赖,则表
37、明源类(如年龄)可以从目标类(如出生年月)通过计算导出。AgeBirthDay6266第3章 面向对象方法与UML类之间的依赖关系c. 细化依赖 在类图中表示同一模型的不同详细程度的规格说明,源类比目标类更为详细。Chessboardfrom optimizedchessboardfrom simpled. 实例化依赖 若要强调一个类的对象是由另一个类的对象创建的,可用实例化依赖。它表明源类创建了目标类的一个实例。ArrayStack6367第3章 面向对象方法与UML类之间的依赖关系e. 使用依赖 不加任何修饰的依赖即为使用依赖。也可用修饰强调源类的语义依赖于目标类的具有共有可见性的构成的语
38、义。Binary SearchTreeBinary Treef. 绑定(Binding)依赖这种依赖关系中的目标类是模板类,源类是从模板实例化的类。 Stack Stack6468第3章 面向对象方法与UML包之间的依赖关系a. 访问依赖 它表明源包被赋予了可访问目标包的权限。sourcetargetb. 导入依赖 它表明了源包可以访问目标包里的元素,但各个包有自己独立的命名空间,这意味着属于不同包的两个元素可以重名。导入依赖可以使目标包内的公共可见元素进入源包的命名空间。sourcetarget6569第3章 面向对象方法与UML用例之间的依赖关系a. 包含依赖 它表明源用例显式地包含目标用
39、例作为其行为的一部分。此时将源用例称为基用例,目标用例称为内含用例。如果两个用例之间具有包含依赖关系,则表明基用例的动作序列中有特定的步骤把内含用例的动作序列包含进来。baseuse caseinclusionuse case6670第3章 面向对象方法与UML用例之间的依赖关系b. 扩展依赖 它表明源用例扩展了目标用例的行为。此时,源用例称为基用例,目标用例称为扩展用例。扩展用例在特定条件下为基用例提供附加的动态行为。例如,在人机交互过程中出现差错时进行的异常处理即为扩展动作。baseuse caseextensionuse case扩展依赖与包含依赖的区别在于,如果仅将扩展从基用例地动作序
40、列中去除,基用例仍然是语义完备的,即它的执行仍将产生有意义的结果。而包含依赖则不然。6771第3章 面向对象方法与UML对象之间的依赖关系a. 转换依赖 当需要在交互图上表示对象状态的转换时可以用转换依赖。主要强调由于消息而导致对象状态的改变。转换依赖连接的目标对象和源对象是同一个对象。b. 调用依赖 当需要在交互图或对象图上显式强调对象之间或操作之间的调用关系时要用调用依赖。它表明源对象引用了目标对象的操作,或源操作引用了目标操作。6872第3章 面向对象方法与UML对象之间的依赖关系c. 复制依赖 为了在交互图或活动图上描述对象复制的动作可以采用复制依赖。它连接两个对象,目标对象是源对象的
41、完全相同而又独立的副本。d. 发送依赖 它连接一个对象(在源端)和一个消息(在目标端),表明源对象在交互过程中发送了一个消息,可以用在状态机的描述中。它针对内嵌有状态机的对象,可用来描述如何通过发送信号以产生某种事件的动作。6973第3章 面向对象方法与UML建模元素与模型之间的依赖关系a. 回溯依赖 它连接两个模型元素,表明目标是源的历史上的前驱。如交互和协作就是从用例导出的。7074第3章 面向对象方法与UMLUML中的关系2关联(Association)关系关联是一种结构关系,它描述了两个或多个类的实例之间的连接关系,是一种特殊的依赖。关联分为普通关联、限定关联、关联类以及聚合与其特殊情
42、形 - 复合。7175第3章 面向对象方法与UMLUML中的关系1)普通关联普通关联是最常见的关联关系,只要类与类之间存在连接关系就可以用普通关联表示。普通关联又分为二元关联和多元关联。二元关联描述两个类之间的关联,用两个类之间的一条直线来表示,直线上可写上关联名。关联通常是双向的,每一个方向可有一个关联名,并用一个实心三角来指示关联名指的是哪一个方向。如果关联含义清晰的话,也可不起名字。关联与两端的类连接的地方叫做关联端点,在关联两端连接的类各自充当了某种角色,有关的信息(如角色名、可见性、多重性等)可附加到各个端点上。7276第3章 面向对象方法与UMLUML中的关系77普通关联多重性:表
43、明一个关联的两端连接的类实例个数的对应关系。11个实例 0.* 或* 0到多个实例0.10到1个实例 1+或1.* 1到多个实例角色名:表示类实例在这个关联中扮演的角色。一个类可与它自身关联。多元关联:3个或3个以上类之间的关联。多元关联由一个菱形,以及由菱形引出的通向各个相关类的直线组成。78第3章 面向对象方法与UMLUML中的关系2)限定关联限定关联通常用在一对多或多对多的关联关系中,可以把模型中的多重性从一对多变成一对一,或将多对多简化成多对一。一种方式是在类图中关联关系的下方加约束;另一种方式是在类图中把限定词(Qualifier)放在关联关系末端的一个小方框内。目录1ordered
44、(a)(b)0.*文件目录文件名文件限定关联7379第3章 面向对象方法与UMLUML中的关系3)关联类在关联关系比较简单的情况下,关联关系的语义用关联关系的名字来概括。但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问,为此可以建立关联类(Association Class),用来描述关联的属性。关联中的每个链与关联类的一个实例相联系,关联类通过一条虚线与关联连接。7480第3章 面向对象方法与UML81第3章 面向对象方法与UMLUML中的关系4)聚合聚合(Aggregation)也称为聚集,是一种特殊的关联。它描述了整体和部分之间的结构关系。在需求陈述中,若出现“包含”、“组成
45、”、“分为 部分”等字句,往往意味着存在聚合关系。除了一般聚合之外,还有两种特殊的聚合关系:共享聚合(Shared Aggregation)和复合聚合(Composition Aggregation)。如果在聚合关系中处于部分方的实例可同时参与多个处于整体方实例的构成,则该聚合称为共享聚合。聚合和共享聚合的图示符号是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。7582第3章 面向对象方法与UMLUML中的关系4)聚合如果部分类完全隶属于整体类,部分类需要与整体类共存,一旦整体类不存在了,则部分类也会随之消失,或失去存在价值,则这种聚合称为复合聚合,在复合聚合关系中整体方的菱形为实
46、心菱形。7683第3章 面向对象方法与UMLUML中的关系4)聚合导航(Navigabihty)是关联关系的一种特性,它通过在关联的一个端点上加箭头来表示导航的方向。7784第3章 面向对象方法与UMLUML中的关系3泛化(Generalization)关系泛化关系就是一般(Generalization)类和特殊(Specialization)类之间的继承关系。特殊类完全拥有一般类的信息,并且还可以附加一些其他信息。在UML中,一般类亦称泛化类,特殊类亦称特化类。在图形表示上,用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着一般类。7885第3章 面向对象方法与UMLUML中的关系1)
47、普通泛化普通泛化与前面讲过的继承基本相同。但要了解的是,在泛化关系中常遇到一个特殊的类-抽象类。一般称没有具体对象的类为抽象类。抽象类通常作为父类,用于描述其他类(子类)的公共属性和行为。在图形上,抽象类的类名下附加一个标签值abstract 。79普通泛化可以分为多重继承和单继承。86第3章 面向对象方法与UMLUML中的关系7987第3章 面向对象方法与UMLUML中的关系2)受限泛化受限泛化关系是指泛化具有约束条件。预定义的约束有4种:交叠(Overlapping)、不相交(Disjoint)、完全(Complete)和不完全(Incomplate)。这些约束都是语义约束。8088受限泛
48、化一个一般类可以从不同的方面将其特化成不同的特殊类集合。例如人可以分成男人和女人,这覆盖了人的所有性别,约束是“完全的”,并且是互斥的,约束是“不相交的”。从职业角度,人又可以分为教师,医生,并未覆盖所有职业,约束是“不完全的”,而且允许一个人有多个职业,如医科大学的教师也可以是医生,约束是“交叠”的。89第3章 面向对象方法与UMLUML中的关系4实现(Implement)关系实现是泛化关系和依赖关系的结合,也是类之间的语义关系,通常在以下两种情况出现实现关系: 接口和实现它们的类或构件之间。 用例和实现它们的协作之间。在UML中,实现关系用带有空心箭头的虚线表示。8190第3章 面向对象方
49、法与UMLUML中的关系8191第3章 面向对象方法与UML3.4 UML中的图8292第3章 面向对象方法与UML外部视图外部视图主要用用例图、活动图和顺序图来描述。例子:系统的问题陈述如下:“在每个学期开始时,注册管理员(Registrar)设置一个学期开设的所有课程信息,并根据学生的专业,为学生提供一个可选课程的目录,列出他可选择的课程。学生(Student)可以申请这个课程目录,选择4门课程。另外,每个学生还要指定2门候补课程,以便所选课程满员或被取消的情况下进行调整。每门课程的选课学生人数限制在310名。一个学生的注册过程完成后,注册系统就会将信息发送给计费系统(Billing Sy
50、stem),这样这名学生就可以为这个学期付费了。教授(Professor)可以使用这个系统提交他计划开设的课程,查看哪些学生注册了他的课程。”8393第3章 面向对象方法与UML外部视图1用例图(Use Case Diagram)用例图展现了一组用例、参与者和扩展关系、包含关系等。该图的作用是描述系统的行为,即该系统在它的上下文环境中所提供的外部可见服务。因此,用例图有两种使用方式:一是上下文环境建模,说明位于系统之外并与系统进行交互的参与者以及它们所扮演的角色的含义;二是功能需求建模,说明系统想要的行为。8494第3章 面向对象方法与UML外部视图95第3章 面向对象方法与UML外部视图如果
51、多个用例共享一个功能,可以单独建立一个用例以描述这个功能,并建立用例之间的联系,包括“包含”和“扩展”关系。8596第3章 面向对象方法与UML外部视图2活动图(Activity Diagram)用例图描述了系统应提供的功能,但不包括实现功能的细节。如果需要描述功能的实现细节,可以使用活动图和顺序图。活动图显示了用例中的操作和操作之间的控制流和数据流。使用活动图可以表达出计算过程或工作流顺序的和并发的执行步骤。8697第3章 面向对象方法与UML外部视图分支或决策点控制流活动或动作(并行流)分叉(并行流)合并接收一个事件发送一个事件按时间点启动操作活动起始点活动终点控制流终点活动图中主要符号8
52、698第3章 面向对象方法与UML外部视图使用活动图可以描述用例的业务工作流,进行工作流建模,展示与系统交互的参与者所能观察到的活动。在后续的设计阶段,还可以利用活动图对操作的控制流建模。此时可以把活动当做程序流程图使用,对一个计算的细节部分进行描述。我们希望在活动图中既能描述执行了什么活动,又能够说明该活动由谁来完成,可以使用泳道来描述这种关系。8799第3章 面向对象方法与UML外部视图Navigate to HomeBuild HomeSearch for CourseBrowse byOfferingSubject AreaEnter Course Offering NumberSel
53、ect CourseDisplay Course OfferingReturn to HomeQuitDisplay Course OfferingSelect Course OfferingInformationReturn to HomeStudentSystemQuit“浏览课程目录”的活动图87100第3章 面向对象方法与UML外部视图3顺序图(Sequence Diagram)顺序图也称为序列图,它按时间顺序显示对象之间的交互,描述了如何通过对象之间的交互实现用例。它由在一个上下文环境中的一组对象及它们之间交互的信息组成。对象表述为虚垂线顶端的矩形框。这些对象都排列在图的顶部。其中,
54、发起用例活动的对象(如参与者)放在最左边,其他对象按边界对象、控制对象、实体对象依次排列。每个对象下面有一条虚垂线,称为该对象的生命线,表明对象在一段时间内存在,以此说明对象可以在交互过程中创建,在交互过程中撤销。88101第3章 面向对象方法与UML外部视图在生命线上覆盖的瘦高的矩形称为控制焦点,表示一个对象执行一个动作所经历的时间段。矩形的顶部表示动作的开始,底部表示动作的结束(可以用一个由虚线剪头表示的返回消息来标记)。生命线之间的箭头表示消息。它从一个对象指向另一个对象。消息箭头可以回到同一条生命线,指明自调用,即对象发给自己的消息。消息出现的次序自上而下。顺序图展现了一组对象和由这组
55、对象收发的消息,用于按时间顺序对控制流建模。89102第3章 面向对象方法与UML外部视图89103第3章 面向对象方法与UML内部视图UML的内部视图描述系统内部的过程、活动、关系和结构。下面介绍几个主要的内部视图。1类图(Class Diagram)类图是系统的静态结构视图,在类图中UML建模元素包括类及其结构和行为,接口,协作,关联、依赖、泛化关系,多重性和导航指示符,角色名字等。特别地,主动类的类图给出了系统的静态进程视图。90104第3章 面向对象方法与UML内部视图105第3章 面向对象方法与UML内部视图在类的描述中,属性和操作可具有不同的可见性。常用的可见性包括 public(
56、公用)private(私用)和 protected(保护,在继承关系中使用),在UML中分别用“+”、“-”和“#”表示。UML还允许在属性和操作后附加约束特性的说明。如在某属性后加“只读”说明该属性是只读属性;又如在某操作后加“const”说明该操作是常值操作,操作的结果不会改变类对象的值。91106第3章 面向对象方法与UML内部视图2对象图(object Diagram)对象是类的实例,对象图可以看做是类图的一个实例,对象之间的链(Link)可以是类之间关联的实例。因此,对象图展现了一组对象以及它们之间的关系,用以详述、构造和文档化系统中存在的对象以及它们之间的相互关系。92107第3章
57、 面向对象方法与UML内部视图108第3章 面向对象方法与UML内部视图3通信图(Communication Diagram)通信图在UML 2.0以前的版本称为协作图或合作图,它是动态设计视图,强调参加交互的各个对象的组织。通信图只对相互间有交互的对象和这些对象之间的关系建模,而忽略了其他对象和关联。通信图可以被视为对象图的扩展,但它除了展现出对象之间的链接外,还显示出对象之间的消息传递。在表示链接的直线上可以附加名字,对象之间的消息传递用箭头标示在链的旁边,箭头的方向从发送消息的对象指向接收消息的对象。消息上所附序列号指明消息执行的时间顺序。93109第3章 面向对象方法与UML内部视图1
58、10通信图通信图与顺序图都可以表示对象之间的交互,都属于交互图,在语义上是等价的,但它们之间也有不同。顺序图主要强调各个消息收发的时间先后次序,但没有明确表达对象之间的关系。通信图主要强调各个对象的组织关系,但时间顺序必须从消息的序列号得到,一般多用于内部视图。111第3章 面向对象方法与UML内部视图94112第3章 面向对象方法与UML内部视图4状态机图(State Machine Diagram)在UML中,一个类的对象有其生存周期过程。在此过程中对象具有若干典型的状态,当探测到某一事件发生,对象做出响应就将导致状态的转变。对象的每个状态执行若干活动或动作,从而表现出某种行为并完成某种工
59、作。状态机图通过对类的对象的生存周期建模来描述对象随时间变化的动态行为,它由状态、迁移、事件和活动组成 。95113第3章 面向对象方法与UML内部视图95114第3章 面向对象方法与UML内部视图状态分为起始状态、终止状态和中间状态。起始状态表示激活一个对象,开始该对象的生存周期的历程;终止状态表示对象完成生存周期的状态迁移的所有活动,结束对象的生存周期历程;中间状态表示对象处于生存周期的某一位置并执行相关的活动或动作。一个状态机图可以有一个起始状态和零个或多个终止状态。状态迁移表示图中一个状态到另一个状态的转换,在状态机图中用连接两个状态的箭头表示。状态迁移分成外部迁移和内部迁移。外部迁移是系统响应某个事件并导致对象状态转换的迁移,通常把事件名写在表示迁移的箭头旁,需要时可加上引发迁移的条件表达式。内部迁移也是系统响应某个事件的发生而被触发的,但它不会导致对象状态的转换,因此这种迁移只有源状态而没有目标状态也可以说,内部迁移是对象处于该状态时,为响应事件而在状态内部执行的活动或动作,它不改变状态。96115第3章 面向对象方法与UML内部视图96116第3章 面向对象方法与UML内部视图事件是指在某一时刻发生并造成影响的事。在状态机中,一个事件的发生可以触发状态的迁移。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川邻州城乡产业发展集团有限公司公开招聘财务总监的笔试模拟试题及答案详解
- 浙江交投物流集团有限公司2027年校园招聘40人笔试参考题库及答案详解
- 2026井冈山大学科研助理招聘4人考试参考题库及答案详解
- 2026年甘肃省兰州新区民政司法和社会保障局(退役军人事务局)兰州新区城乡发展局招聘城镇公益性岗位人员笔试参考题库及答案详解
- 2026“黑龙江人才周”校园引才活动暨伊春市“林都优青”事业单位引才72人笔试备考试题及答案详解
- 2026年下半年新疆维吾尔自治区招聘事业单位工作人员4789人笔试模拟试题及答案详解
- 2026年渝水区公开招聘高层次人才【6人】笔试备考题库及答案详解
- 2026年聊城大学第二批公开招聘博士(19名)笔试备考题库及答案详解
- 阿坝县人力资源和社会保障局2026年增量政策性岗位招募的(9人)笔试备考题库及答案详解
- 2026苏州工业园区星慧幼儿园教学辅助人员招聘1人笔试备考试题及答案详解
- 2026年贵州水投水务集团有限公司招聘笔试真题及答案
- “六张网”系列专题研究报告:从“纲-目-结”看“十五五”时期我国水网投资新方向
- 2026年浙江省中考英语试卷试题真题及答案详解(精校打印版)
- 智能机电技术专业招生宣讲介绍
- 泄漏的日常检查与判定培训课件
- 新版部编人教版四年级上册道德与法治(课件)10购物有学问
- 规划健康生活综合实践活动教案
- DL T 5892-2024 电气装置安装工程 蓄电池施工及验收规范
- 中医诊疗器具清洗消毒灭菌制度
- 2026年湖北省中考地理试卷(含答案及解析)
- 教师专业发展支持体系X现状分析论文
评论
0/150
提交评论