版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程软件工程1 1软件工程软件工程第六章第六章 面向对象技术面向对象技术6.1 6.1 面向对象的概念面向对象的概念6.26.2 UML UML统一建模语言统一建模语言软件工程软件工程2 2n(1)优点)优点 整体思路清楚,目标明确。整体思路清楚,目标明确。 设计工作中阶段性非常强,有利于系统开发的总体管理和控制。设计工作中阶段性非常强,有利于系统开发的总体管理和控制。 在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷。在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷。 n(2)缺点)缺点 用户要求难以在系统分析阶段准确定义,致使系统在交付使用用户要求难以在系统分析阶段准确定义
2、,致使系统在交付使用时产生许多问题。时产生许多问题。 用系统开发每个阶段的成果来进行控制,不能适应事物变化的用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。要求。 系统的开发周期长。系统的开发周期长。 导入导入 结构化方法优缺点结构化方法优缺点软件工程软件工程3 3n哲学的观点认为现实世界是由各种各样的实体(事物、对哲学的观点认为现实世界是由各种各样的实体(事物、对象)所组成的,每种对象都有自己的内部状态和运动规律,象)所组成的,每种对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用就构成了各不同对象间的相互联系和相互作用就构成了各 种不同的种不同的系统,并进而构成整
3、个客观世界。系统,并进而构成整个客观世界。n同时人们为了更好的认识客观世界,把具有相似内部状态同时人们为了更好的认识客观世界,把具有相似内部状态和运动规律的实体(事物、对象)综合在一起称为类。类和运动规律的实体(事物、对象)综合在一起称为类。类是具有是具有 相似内部状态和运动规律的实体的抽象,进而人相似内部状态和运动规律的实体的抽象,进而人们抽象的认为客观世界是由不同类的事物间相互联系和相们抽象的认为客观世界是由不同类的事物间相互联系和相互作用所构成的一个整体。互作用所构成的一个整体。n计算机软件的目的就是为了模拟计算机软件的目的就是为了模拟 现实世界,使各种不同现实世界,使各种不同的现实世界
4、系统在计算机中得以实现,进而为我们工作、的现实世界系统在计算机中得以实现,进而为我们工作、学习、生活提供帮助。学习、生活提供帮助。 6.1 6.1 面向对象的概念面向对象的概念软件工程软件工程4 46.1 6.1 面向对象的概念面向对象的概念软件工程软件工程5 5n客观世界中的应用问题面对的主体都是物理的或客观世界中的应用问题面对的主体都是物理的或概念的概念的实体实体。n从这些实体出发,分析实体的从这些实体出发,分析实体的作用作用、责任责任以及它以及它们之间们之间协作协作,从而找出问题的解,是很自然的。,从而找出问题的解,是很自然的。n面向对象技术就是适合用这种方式分析和解决问面向对象技术就是
5、适合用这种方式分析和解决问题的方法。它的基石就是题的方法。它的基石就是问题领域中识别出来的问题领域中识别出来的各种对象各种对象。依赖这些对象提供的服务和对象之间。依赖这些对象提供的服务和对象之间相互的协同(关系),实现期望的功能。相互的协同(关系),实现期望的功能。n面向对象技术能够在解决方案中直接模拟问题领面向对象技术能够在解决方案中直接模拟问题领域,并与人类的思维习惯相一致。域,并与人类的思维习惯相一致。6.1 6.1 面向对象的概念面向对象的概念软件工程软件工程6 6什么是面向对象什么是面向对象nPeter Coad 和和 Edward Yourdon 提出面向对象方提出面向对象方法的概
6、念:法的概念: 面向对象面向对象 = 对象对象 + 分类分类 + 继承继承 + 消息通信消息通信n采用这四个概念开发的软件系统就是面向对象的采用这四个概念开发的软件系统就是面向对象的软件系统。软件系统。n一个面向对象的程序的每一成份应是一个面向对象的程序的每一成份应是对象对象,计算,计算是通过新的是通过新的对象的建立对象的建立和和对象之间的通信对象之间的通信来执行来执行的。的。软件工程软件工程7 7面向对象的特点面向对象的特点n抽象性:对象包含数据抽象和行为抽象;抽象性:对象包含数据抽象和行为抽象;n封装性:信息隐蔽(使用与实现分开);封装性:信息隐蔽(使用与实现分开);n共享性:共享性: 同
7、一个类中所有对象共享相同的数据结构同一个类中所有对象共享相同的数据结构和行为;和行为; 同一应用中的对象通过继承关系,共享共同一应用中的对象通过继承关系,共享共同的数据结构和行为;同的数据结构和行为; 不同应用中的对象通过复用,共享数据结不同应用中的对象通过复用,共享数据结构和行为。构和行为。软件工程软件工程8 8对象(对象(object) 对象是系统中描述客观事物的实体,是构成系统对象是系统中描述客观事物的实体,是构成系统的一个基本单元,由一组属性值和一组对属性进的一个基本单元,由一组属性值和一组对属性进行操作的服务组成。行操作的服务组成。 对象对象 = = 对象名对象名+ +数据数据( (
8、属性属性)+)+操作操作( (行为行为) ) 属性值一般只能通过执行对象的操作来改变。属性值一般只能通过执行对象的操作来改变。 操作(方法或服务)描述了对象执行的功能,若操作(方法或服务)描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。通过消息传递,还可以为其他对象使用。 对象可以是对象可以是外部实体外部实体、信息结构信息结构、事件事件、角色角色、组织结构组织结构、地点或位置地点或位置、操作规程操作规程等。等。软件工程软件工程9 9计算机窗口中的三个多边形对象计算机窗口中的三个多边形对象(50, 60)(50, 85)(35, 60)(35, 85)(50, 45)(60, 35)
9、(56, 10)(46, 37)(10, 50)(20, 20)(23, 30)软件工程软件工程1010表示多边形的三个对象表示多边形的三个对象drawmove( x, y)contains?(aPoint)(10, 50)(20, 20)(23, 30)triangledrawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2软件工程软件工程
10、11 11类(类(classclass) 把具有相同属性(数据结构)和服务(操作)把具有相同属性(数据结构)和服务(操作)的对象归在一起就形成了的对象归在一起就形成了类类。 类的定义包括一组数据属性和在数据上的一组类的定义包括一组数据属性和在数据上的一组合法操作。合法操作。 属于某一个类的各个对象都是该类的实例属于某一个类的各个对象都是该类的实例(instance),它们都可使用类中的操作。,它们都可使用类中的操作。 类定义了各个实例所共有的数据结构,使用类类定义了各个实例所共有的数据结构,使用类的构造函数,可以在创建该类的实例时初始化的构造函数,可以在创建该类的实例时初始化这个实例的状态。这
11、个实例的状态。软件工程软件工程1212由两个四边形对象导出一个类由两个四边形对象导出一个类drawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2drawmove( x, y)contains?(aPoint)point1point2point3point4quadrilateral软件工程软件工程1313消息消息(messagemessag
12、e)消息是一个对象向另一个对象传递的信息。有消息是一个对象向另一个对象传递的信息。有四类消息:发送对象四类消息:发送对象请求接收对象提供服务请求接收对象提供服务、发送对象发送对象激活接收对象激活接收对象、发送对象、发送对象询问接收对询问接收对象象、发送对象、发送对象仅传送信息给接收对象仅传送信息给接收对象。消息的使用类似于函数调用,消息中指定了某消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表(可能是一个实例,一个操作名和一个参数表(可能是空的),如空的),如quadrilateral1. move(15, 20) 。接收消息的实例执行消息中指定的操作,并将接收消息的实
13、例执行消息中指定的操作,并将形式参数与参数表中相应的值结合起来。形式参数与参数表中相应的值结合起来。软件工程软件工程1414消息消息(messagemessage)软件工程软件工程1515继承(继承(inheritanceinheritance) 如果某几个类之间具有共性的东西如果某几个类之间具有共性的东西 ( (属性和行属性和行为为) ),抽取出来放在一个泛化类中,将各个类的,抽取出来放在一个泛化类中,将各个类的特有的东西放在特化类中分别描述,则可建立特有的东西放在特化类中分别描述,则可建立起特化类对泛化类的继承。起特化类对泛化类的继承。 继承是使用已有的类定义做为基础建立新类的继承是使用已
14、有的类定义做为基础建立新类的定义技术。定义技术。 已有的类可当做泛化类(父类)来引用,则新已有的类可当做泛化类(父类)来引用,则新类相应地可当做特化类(子类)来引用。类相应地可当做特化类(子类)来引用。软件工程软件工程1616n建立继承结构的好处:建立继承结构的好处: 易编程、易理解易编程、易理解 代码短代码短, , 结构清晰结构清晰 易修改易修改 共同部分只要在一处修改即可共同部分只要在一处修改即可 易增加新类易增加新类 只须描述不同部分只须描述不同部分n怎样建立一个好的继承层次怎样建立一个好的继承层次 类可以从父类继承,父类又可以从它的父类可以从父类继承,父类又可以从它的父类继承,形成多层
15、次的继承结构。类继承,形成多层次的继承结构。 当增加一个新类时,不一定在最低层,可当增加一个新类时,不一定在最低层,可能需要插在中间层,这样可能需要调整原能需要插在中间层,这样可能需要调整原来的层次结构。来的层次结构。软件工程软件工程1717a)建立一个新类建立一个新类起重车起重车。它的。它的底底盘盘、发动机发动机、轮胎轮胎、驱动装置驱动装置等都在已有类等都在已有类汽车汽车中。关系如中。关系如右图所示。新类是已有类的特右图所示。新类是已有类的特殊情形。这时直接让殊情形。这时直接让起重车起重车类类作为作为汽车汽车类的子类即可。类的子类即可。起重车起重车类类汽车类汽车类汽车汽车载重车载重车大轿车大
16、轿车救火车救火车起重车起重车软件工程软件工程1818b)增加一个新类增加一个新类拖拉机拖拉机。它的。它的底盘底盘、发动机发动机等与等与汽车汽车不同,但不同,但驱动装置驱动装置、轮胎轮胎等与等与汽车汽车相同。相同。调整继承结构。建立一个新的一般的调整继承结构。建立一个新的一般的车辆类车辆类,把把拖拉机拖拉机与与汽车类汽车类的共性放到的共性放到车辆类车辆类中,中,拖拉拖拉机机与与汽车类汽车类都成为都成为车辆类车辆类的子类。的子类。车辆车辆是抽象类,相关操作到子类是抽象类,相关操作到子类汽车汽车找找汽车汽车拖拉机拖拉机车辆车辆汽车汽车拖拉机拖拉机软件工程软件工程1919c)另一种情形是在已有类的基础
17、上加入新类,另一种情形是在已有类的基础上加入新类,使得新类成为已有类的泛化类。使得新类成为已有类的泛化类。例如,已经存在例如,已经存在三角形类三角形类,四边形类四边形类,想加,想加入一个入一个多边形类多边形类,并使之成为,并使之成为三角形三角形和和四边四边形类形类的泛化类。的泛化类。三角形类三角形类四边形类四边形类多多边边形形类类六边形六边形多边形多边形四边形四边形三角形三角形软件工程软件工程2020d)前三个情况主要是通过查找(应用领域)类库,前三个情况主要是通过查找(应用领域)类库,找到可以找到可以原封不动地继承的类原封不动地继承的类或可以或可以通过调整通过调整继承层次结构继承的类继承层次
18、结构继承的类。但如果在已有的继承。但如果在已有的继承层次中找不到可以继承的已有类,就从新开始层次中找不到可以继承的已有类,就从新开始完全独立地建立一个类。完全独立地建立一个类。n如果一个类需要用到多个现有类的特征,可以如果一个类需要用到多个现有类的特征,可以从多个类中继承,称为从多个类中继承,称为多继承多继承。n例如例如退休教师退休教师是继承是继承退休者退休者和和教师教师这两个类的这两个类的某些特征或行为而得到的一个新类。某些特征或行为而得到的一个新类。多继承多继承软件工程软件工程2121多态性和动态绑定多态性和动态绑定n对象互相通信,即一个对象发消息给另一个对对象互相通信,即一个对象发消息给
19、另一个对象,执行某些行为或又发消息给另外的对象,象,执行某些行为或又发消息给另外的对象,从而执行系统的功能。从而执行系统的功能。退休者退休者教师教师退休教师退休教师软件工程软件工程2222多态性多态性指同名的函数或操作可在不同类型的指同名的函数或操作可在不同类型的对象中有各自相应的实现。例如对象中有各自相应的实现。例如a) 整数整数“+”:整数加法:整数加法b) 浮点数浮点数“+”:浮点数加法:浮点数加法c) 字符串字符串“+”:字符串连接:字符串连接d) 点点“+”:两个点的坐标位置分别叠加:两个点的坐标位置分别叠加具有多态的函数或操作在运行时才根据实际具有多态的函数或操作在运行时才根据实际
20、的对象类型,执行相应实现程序的连接,此的对象类型,执行相应实现程序的连接,此即动态绑定。即动态绑定。软件工程软件工程2323n例如,想要在屏幕上画一系列多边形,例如,想要在屏幕上画一系列多边形,多态多态性性允许发送消息允许发送消息draw,根据消息接收对象的,根据消息接收对象的类型不同,画出不同的多边形。类型不同,画出不同的多边形。ndraw针对的是一系列的类型(类族)而不仅针对的是一系列的类型(类族)而不仅仅是一个类型。仅是一个类型。n多态性的实现有多态性的实现有 2 种:种: 利用利用继承继承关系,把所有数据类型当作一个关系,把所有数据类型当作一个抽象数据类型的子类型。抽象数据类型的子类型
21、。软件工程软件工程2424 利用利用模板模板机制,把所有可能的数据类型用机制,把所有可能的数据类型用一个参数化的数据类型来代替。一个参数化的数据类型来代替。n动态绑定保证在程序执行时实施与对象动态绑定保证在程序执行时实施与对象 P 连连接的操作。如果接的操作。如果 P 是是矩形类矩形类的实例,则执行的实例,则执行与与矩形矩形连接的操作,如果连接的操作,如果 P 是是三角形类三角形类的实的实例,则执行与例,则执行与三角形三角形连接的操作。连接的操作。n动态绑定把函数调用与目标代码块的连接延动态绑定把函数调用与目标代码块的连接延迟到运行时进行。这样,只有发送消息时才迟到运行时进行。这样,只有发送消
22、息时才与接收消息实例的一个操作绑定。与接收消息实例的一个操作绑定。软件工程软件工程25256.2 6.2 统一建模语言统一建模语言UMLUMLnUML 是是Unified Modeling Language的缩写。的缩写。 它它是一种标准的语言,以直观的表述、定义、构造是一种标准的语言,以直观的表述、定义、构造和文档化软件为主的系统的工作制品。和文档化软件为主的系统的工作制品。nUML聚集了来自下列建模的精髓:聚集了来自下列建模的精髓: 数据建模(实体关系图数据建模(实体关系图ERD) 业务建模业务建模 (工作流)(工作流) 对象建模对象建模 构件建模构件建模n它可用于软件生命周期各个过程,并
23、适用于各种它可用于软件生命周期各个过程,并适用于各种不同的实现技术。不同的实现技术。软件工程软件工程2626UMLUML的特点的特点n统一标准统一标准 融合了当前一些流行的面向对象开发方法融合了当前一些流行的面向对象开发方法的主要概念和技术,成为一种面向对象的的主要概念和技术,成为一种面向对象的标准化的统一建模语言。标准化的统一建模语言。 提供了标准的面向对象的模型元素的定义提供了标准的面向对象的模型元素的定义和表示法,有标准的语言工具可用。和表示法,有标准的语言工具可用。 已成为工业标准化组织已成为工业标准化组织OMG的正式标准。的正式标准。n面向对象面向对象 支持面向对象的主要概念,提供了
24、一批基支持面向对象的主要概念,提供了一批基本的模型元素的表示图形和方法。本的模型元素的表示图形和方法。软件工程软件工程2727n可视化,表示能力强大可视化,表示能力强大 一种图形化语言,系统的逻辑模型和实现一种图形化语言,系统的逻辑模型和实现模型都能用模型都能用UML的模型图形清晰地表示。的模型图形清晰地表示。 可以处理与软件的说明和文档有关的问题。可以处理与软件的说明和文档有关的问题。 提供了语言的扩展机制,用户可以根据需提供了语言的扩展机制,用户可以根据需要增加定义自己的衍型(要增加定义自己的衍型(StereoType)、标)、标记值和约束等。记值和约束等。 可用于各种复杂类型的软件系统的
25、建模。可用于各种复杂类型的软件系统的建模。n独立于过程独立于过程 系统建模语言,独立于开发过程。系统建模语言,独立于开发过程。软件工程软件工程2828n容易掌握使用容易掌握使用 概念明确,建模表示法简洁明了,图形结构概念明确,建模表示法简洁明了,图形结构清晰,容易掌握使用。清晰,容易掌握使用。 着重学习着重学习三个方面的主要内容:三个方面的主要内容: (1) UML的基本模型元素的基本模型元素 (2) 组织模型元素的规则组织模型元素的规则 (3) UML语言的公共机制语言的公共机制n与程序设计语言的关系与程序设计语言的关系 用用Java,C+ 等编程语言可实现一个系统。等编程语言可实现一个系统
26、。 一些一些CASE工具可以根据工具可以根据 UML所建立的系统所建立的系统模型来产生模型来产生Java、C+ 等代码框架。等代码框架。软件工程软件工程2929UMLUML的定义的定义nUML定义有两个组成部分:语义和表示法。定义有两个组成部分:语义和表示法。n语义语义用自然语言描述,用自然语言描述,表示法表示法定义了定义了UML的可的可视化标准表示符号,这决定了视化标准表示符号,这决定了UML是一种可视是一种可视化的建模语言。化的建模语言。n在语义上,模型是元模型的实例。在语义上,模型是元模型的实例。UML定义给定义给出了语法结构的精确定义。出了语法结构的精确定义。n使用使用UML时,要从不
27、同的角度观察系统,为此时,要从不同的角度观察系统,为此定义了概念定义了概念“视图视图”。视图是对系统的模型在某。视图是对系统的模型在某方面的投影,注重于系统的某个方面。方面的投影,注重于系统的某个方面。软件工程软件工程3030UMLUML的构成的构成nUML的三个主要组成元素的三个主要组成元素1) 基本构造块基本构造块(basic building blocks )2) 组织构造块的组织构造块的规则规则(rules)3) 运用于整个运用于整个UML的的公共机制公共机制(common mechanisms)nUML包括三种基本构造块包括三种基本构造块:1) 事物(事物(things)2) 关系(
28、关系(relationships)3) 图(图(diagrams)软件工程软件工程3131UML UML 事物事物 结构事物结构事物1) Class(类)(类)2) Interface(接口)(接口) 描述了一个类或构件的描述了一个类或构件的服务(操作)集。服务(操作)集。ISpelling 类名类名属性属性操作操作open( )close( )move( )display( )originsizeWindow操作操作属性属性类名类名软件工程软件工程32323)Collaboration(协作)(协作) 合作完成某个特定任务的一组类及其关联的合作完成某个特定任务的一组类及其关联的集合,用于对用
29、例的实现建模。集合,用于对用例的实现建模。4)Use Case(用例)(用例) 表示系统想要实现的行为,不关心这些行为表示系统想要实现的行为,不关心这些行为是怎样实现的。是怎样实现的。Place OrderOrderManagement用例用例协作协作实现实现实现实现协作协作用例用例软件工程软件工程33335)Active Class(主动类)(主动类) 与一般类相同,但它至少拥有一个进程或与一般类相同,但它至少拥有一个进程或线程,故能够启动控制活动。线程,故能够启动控制活动。6)Component(构件)(构件) 系统中物理的、可替系统中物理的、可替代的部件。代的部件。Orderform.j
30、ava suspend()flush()EventManager软件工程软件工程34347)Node(节点)(节点) 系统在运行时存在的物理元素。系统在运行时存在的物理元素。数据库数据库服务器服务器应用应用服务器服务器课程课程管理管理成绩成绩管理管理软件工程软件工程3535UMLUML事物事物 行为事物行为事物8)Interaction(交互)(交互)n交互由在特定的上下文环境中共同完成一定任交互由在特定的上下文环境中共同完成一定任务的一组对象之间传递的消息组成。务的一组对象之间传递的消息组成。n交互涉及的元素包括消息、动作序列和链。交互涉及的元素包括消息、动作序列和链。p:Person:Co
31、mpanyAssign(development)消息消息有名对象有名对象匿名对象匿名对象有名对象有名对象匿名对象匿名对象消息消息软件工程软件工程36369)State Machine(状态机)(状态机) 状态机描述了一个对象或一个交互在生存状态机描述了一个对象或一个交互在生存周期内响应事件所经历的状态序列。周期内响应事件所经历的状态序列。 状态机涉及的元素包括状态、转换、事件状态机涉及的元素包括状态、转换、事件活动等。活动等。initializingcommandidleKeypressFinishedExit软件工程软件工程3737UMLUML事物事物 分组事物分组事物10) package
32、(包)(包) 包是把元素组织成组的机制,结构事物、行包是把元素组织成组的机制,结构事物、行为事物甚至其他分组事物都可以放进包内。为事物甚至其他分组事物都可以放进包内。 包不象构件(仅在运行时存在),它纯粹是包不象构件(仅在运行时存在),它纯粹是概念上的(即它仅在开发时存在)。概念上的(即它仅在开发时存在)。用户接口用户接口包包业务对象业务对象包包应用包应用包软件工程软件工程3838UMLUML事物事物 注释事物注释事物11) Note(注释)(注释) 依附于一个元素或一组元素之上,对其进依附于一个元素或一组元素之上,对其进行约束或解释的简单符号。行约束或解释的简单符号。CashAccountp
33、resentValue()See policy8-5-96.doc for details about these algorithms.软件工程软件工程3939UML RelationshipsUML Relationships(关系)(关系)nUML中有中有 4 种关系:种关系: 依赖依赖 关联关联 泛化泛化 实现实现 n关系特征:关系特征: 这四种关系是这四种关系是UML模型中可以包含的基本模型中可以包含的基本关系。关系。 它们也有变体。例如,依赖的变体有细化、它们也有变体。例如,依赖的变体有细化、跟踪、包含和延伸。跟踪、包含和延伸。软件工程软件工程40401)依赖(依赖(Depende
34、ncy) 两个事物之间的语义关系,其中目标事物发两个事物之间的语义关系,其中目标事物发生变化会影响源事物的语义。生变化会影响源事物的语义。 图中虚线箭头从图中虚线箭头从源源事物指向事物指向目标目标事物,表示事物,表示源事物依赖于目标事物。源事物依赖于目标事物。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator软件工程软件工程4141n两个类之间的依赖关系可以是:两个类之间的依赖关系可以是: 源类源类访问访问定义在目标类内部的数据值;定义在目标类内部的数据值; 源类的操作源类的操作调用调用了定义在目标类的操作;了定义在目标类的操作;
35、 源类的返回类或参数是目标类的源类的返回类或参数是目标类的实例实例;n如果在顺序图中的两个对象存在消息的传送,如果在顺序图中的两个对象存在消息的传送,而且它们之间没有结构方面的连接,可以在类而且它们之间没有结构方面的连接,可以在类图上用依赖关系建模。图上用依赖关系建模。n依赖的变体包含特定的语义,表明类之间的关依赖的变体包含特定的语义,表明类之间的关系、包之间的关系、用例之间的关系、对象之系、包之间的关系、用例之间的关系、对象之间的关系、建模元素与模型之间的关系等。间的关系、建模元素与模型之间的关系等。软件工程软件工程4242n类之间的依赖关系类之间的依赖关系可以是:可以是:a.友元依赖友元依
36、赖 目标类(如二叉树)视源类(如迭代器)为目标类(如二叉树)视源类(如迭代器)为友元,允许源类访问目标类的所有私有属性友元,允许源类访问目标类的所有私有属性和操作。和操作。b. 导出依赖导出依赖 两个类或对象如果存在导出依赖,则表明源两个类或对象如果存在导出依赖,则表明源类(如年龄)可以从目标类(如出生年月)类(如年龄)可以从目标类(如出生年月)通过计算导出。通过计算导出。IteratorBinaryTreeAgeBirthDay软件工程软件工程4343c.细化依赖细化依赖 在类图中表示同一模型的不同详细程度的规在类图中表示同一模型的不同详细程度的规格说明,源类比目标类更为详细。格说明,源类比
37、目标类更为详细。d. 实例化依赖实例化依赖 若要强调一个类的对象是由另一个类的对象若要强调一个类的对象是由另一个类的对象创建的,可用实例化依赖。它表明源类创建创建的,可用实例化依赖。它表明源类创建了目标类的一个实例。了目标类的一个实例。Chessboardfrom optimizedchessboardfrom simpleArrayStack软件工程软件工程4444e.使用依赖使用依赖 不加任何修饰的依赖即为使用依赖。也可用不加任何修饰的依赖即为使用依赖。也可用修饰修饰强调源类的语义依赖于目标类强调源类的语义依赖于目标类的具有共有可见性的构成的语义。的具有共有可见性的构成的语义。f.绑定(绑
38、定(Binding)依赖)依赖这种依赖关系中的目标类是模板类,源类是这种依赖关系中的目标类是模板类,源类是从模板实例化的类。从模板实例化的类。Binary SearchTreeBinary Tree Stack Stack软件工程软件工程4545n包之间的依赖关系包之间的依赖关系可以是:可以是:a.访问依赖访问依赖 它表明源包被赋予了可访问目标包的权限。它表明源包被赋予了可访问目标包的权限。b. 导入依赖导入依赖 它表明了源包可以访问目标包里的元素,但各它表明了源包可以访问目标包里的元素,但各个包有自己独立的命名空间,这意味着属于不个包有自己独立的命名空间,这意味着属于不同包的两个元素可以重名
39、。导入依赖可以使目同包的两个元素可以重名。导入依赖可以使目标包内的公共可见元素进入源包的命名空间。标包内的公共可见元素进入源包的命名空间。sourcetargetsourcetarget软件工程软件工程4646n用例之间的依赖关系用例之间的依赖关系可以是:可以是:a.包含依赖包含依赖 它表明源用例显式地包含目标用例作为其行为它表明源用例显式地包含目标用例作为其行为的一部分。此时将源用例称为的一部分。此时将源用例称为基用例基用例,目标用,目标用例称为例称为内含用例内含用例。如果两个用例之间具有包含依赖关系,则表明如果两个用例之间具有包含依赖关系,则表明基用例的动作序列中有特定的步骤把内含用例基用
40、例的动作序列中有特定的步骤把内含用例的动作序列包含进来。的动作序列包含进来。b.扩展依赖扩展依赖 base use caseinclusion use case软件工程软件工程4747它表明源用例扩展了目标用例的行为。此时,它表明源用例扩展了目标用例的行为。此时,源用例称为源用例称为基用例基用例,目标用例称为,目标用例称为扩展用例扩展用例。扩展用例在特定条件下为基用例提供附加的动扩展用例在特定条件下为基用例提供附加的动态行为。例如,在人机交互过程中出现差错时态行为。例如,在人机交互过程中出现差错时进行的异常处理即为扩展动作。进行的异常处理即为扩展动作。扩展依赖与包含依赖的区别在于,如果仅将扩扩
41、展依赖与包含依赖的区别在于,如果仅将扩展从基用例地动作序列中去除,基用例仍然是展从基用例地动作序列中去除,基用例仍然是语义完备的,即它的执行仍将产生有意义的结语义完备的,即它的执行仍将产生有意义的结果。而包含依赖则不然。果。而包含依赖则不然。base use caseextension use case软件工程软件工程4848n对象之间的依赖关系对象之间的依赖关系可以是:可以是:a.转换依赖转换依赖 当需要在交互图上表示对象状态的转换时可以当需要在交互图上表示对象状态的转换时可以用转换依赖。主要强调由于消息而导致对象状用转换依赖。主要强调由于消息而导致对象状态的改变。转换依赖连接的目标对象和源
42、对象态的改变。转换依赖连接的目标对象和源对象是同一个对象。是同一个对象。b.调用依赖调用依赖 当需要在交互图或对象图上显式强调对象之间当需要在交互图或对象图上显式强调对象之间或操作之间的调用关系时要用调用依赖。它表或操作之间的调用关系时要用调用依赖。它表明源对象引用了目标对象的操作,或源操作引明源对象引用了目标对象的操作,或源操作引用了目标操作。用了目标操作。c.复制依赖复制依赖 软件工程软件工程4949为了在交互图或活动图上描述对象复制的动作为了在交互图或活动图上描述对象复制的动作可以采用复制依赖。它连接两个对象,目标对可以采用复制依赖。它连接两个对象,目标对象是源对象的完全相同而又独立的副
43、本。象是源对象的完全相同而又独立的副本。d.发送依赖发送依赖 它连接一个对象(在源端)和一个消息(在目它连接一个对象(在源端)和一个消息(在目标端),表明源对象在交互过程中发送了一个标端),表明源对象在交互过程中发送了一个消息,可以用在状态机的描述中。消息,可以用在状态机的描述中。它针对内嵌有状态机的对象,可用来描述如何它针对内嵌有状态机的对象,可用来描述如何通过发送信号以产生某种事件的动作。通过发送信号以产生某种事件的动作。n建模元素与模型之间的依赖关系建模元素与模型之间的依赖关系是:是:a.回溯依赖回溯依赖 它连接两个模型元素,表明目标是源的历史上它连接两个模型元素,表明目标是源的历史上的
44、前驱。如交互和协作就是从用例导出的。的前驱。如交互和协作就是从用例导出的。软件工程软件工程50502)关联(关联(Association) 关联关联是一种结构关系,它描述一组链,这是一种结构关系,它描述一组链,这些链是类之间或类与接口之间的连接。通些链是类之间或类与接口之间的连接。通过这种连接,一个对象可以访问另一个对过这种连接,一个对象可以访问另一个对象的属性或调用另一个对象的操作。象的属性或调用另一个对象的操作。 关联是双向的,其中的角色代表一个类的关联是双向的,其中的角色代表一个类的对象在另一个类中的存在。对象在另一个类中的存在。 聚合(聚合(aggregation)是一种特殊类型的关是
45、一种特殊类型的关联,它描述了整体和部分间的结构关系。联,它描述了整体和部分间的结构关系。employeremployee0.1*软件工程软件工程5151 聚合关系在整体端有一个菱形作为标记。聚合关系在整体端有一个菱形作为标记。 复合聚合(复合聚合(composite aggregate) 是一种特是一种特殊的聚合关系,它表明整体对象与部分对象殊的聚合关系,它表明整体对象与部分对象具有相同的生存周期。具有相同的生存周期。3)角色的重复度(角色的重复度(Multiplicity)复合聚合复合聚合, ,双向导航双向导航0.*0.10.*整体整体 类名类名部分部分 类名类名2部分部分 类名类名1聚合聚
46、合, ,单向导航单向导航0.1软件工程软件工程5252表明角色在关联关系中出现的次数。如表明角色在关联关系中出现的次数。如1,0.1,1.*,*等。等。 导航(导航(navigation)一般默认关联关系是双向的,而导航则限制一般默认关联关系是双向的,而导航则限制关联关系到一个方向。在图中用箭头指明方关联关系到一个方向。在图中用箭头指明方向。向。 限定关联(限定关联(qualification)如教师与学生的关系由课程的标识决定。如教师与学生的关系由课程的标识决定。companydepartment11.*软件工程软件工程5353 关联类关联类关联关系是两个类之间的语义连接。在比较关联关系是两
47、个类之间的语义连接。在比较简单的情况下,关联关系的语义用关联关系简单的情况下,关联关系的语义用关联关系的名字来概括。的名字来概括。但在某些情况下,需要对关但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问,联关系的语义做详细的定义、存储和访问,为此可以建立关联类,为此可以建立关联类,描述关联的属性描述关联的属性。teacherstudent1*教师教课教师教课nCourseIDcourse学生选课学生选课教师教学生教师教学生1*限定类限定类目标类目标类软件工程软件工程54543)泛化(泛化(Generalization) 一般化一般化特殊化特殊化的关系(继承)。表明特化的关系(继承)
48、。表明特化类共享一个或多个泛化类的结构和行为。类共享一个或多个泛化类的结构和行为。 如果两个类被定义为具有泛化关系,就意味如果两个类被定义为具有泛化关系,就意味着在任何泛化类(父类)的对象出现的地方,着在任何泛化类(父类)的对象出现的地方,都可以用特化类(子类)来代替。都可以用特化类(子类)来代替。descriptiondateHiredsalaryjobcompanycompany11.*employeremployee软件工程软件工程5555EventConsoleWindowDialogBoxControl Windowopen()close()move()display()handle
49、Event()泛化泛化关联关联依赖依赖软件工程软件工程5656 继承的多态性表明子类的操作的动态行为继承的多态性表明子类的操作的动态行为可代替父类的可代替父类的同名操作同名操作的动态行为。的动态行为。 泛化关系的变体:泛化关系的变体:实现继承实现继承。它规定其中。它规定其中的子类可继承其父类的结构和行为,但其的子类可继承其父类的结构和行为,但其可见性成为私有,也不支持父类的接口。可见性成为私有,也不支持父类的接口。4)实现(实现(Realization) 类之间的语义关系,其中的一个类元指定类之间的语义关系,其中的一个类元指定了由另一个类保证执行的契约。了由另一个类保证执行的契约。 两种情况出
50、现实现关系:两种情况出现实现关系: 1)在接口和实现它们的类或构件之间;)在接口和实现它们的类或构件之间; 2)在用例和它们的协作之间。)在用例和它们的协作之间。软件工程软件工程5757Place OrderOrderManagement用例用例实现实现协作协作软件工程软件工程5858类类属性属性操作操作对象对象属性值属性值操作操作接口接口用例用例构件构件节点节点状态机状态机包包注释注释依赖依赖关联关联泛化泛化实现实现聚合聚合复合复合 模型中主要的图形元素模型中主要的图形元素软件工程软件工程5959UMLUML模型的图形模型的图形Use CaseDiagramsUse CaseDiagrams
51、ScenarioDiagramsScenarioDiagramsStateDiagramsStateDiagramsComponentDiagramsComponentDiagramsStateDiagramsStateDiagrams对象图对象图ScenarioDiagramsScenarioDiagramsUse CaseDiagramsUse CaseDiagramsStateDiagramsStateDiagrams模型模型软件工程软件工程6060UMLUML图的作用图的作用nUML 可以用于可以用于: 使用用例(使用用例(use cases)和参与者()和参与者(actors)描)描
52、述系统的边界和它的主要功能。述系统的边界和它的主要功能。 使用交互图(顺序图、协作图)具体描述用使用交互图(顺序图、协作图)具体描述用例的实现。例的实现。 使用类图表示系统的静态结构。使用类图表示系统的静态结构。 是用状态转换图模型化对象的行为。是用状态转换图模型化对象的行为。 使用构件图和部署图展现系统的物理实现体使用构件图和部署图展现系统的物理实现体系结构。系结构。 使用衍型(使用衍型(stereotypes)扩展建模能力。)扩展建模能力。软件工程软件工程6161UMLUML工作的实例工作的实例n某大学用计算机管理的注册(某大学用计算机管理的注册(registration)系统)系统 注册
53、管理员设置一个学期的所有课程信息注册管理员设置一个学期的所有课程信息 一个课程可以有多个课程选课单。一个课程可以有多个课程选课单。 学生选择学生选择4门主修课和门主修课和2门选修课门选修课 当某学生在学期注册了,则记账(当某学生在学期注册了,则记账(billing)系统)系统会得到通知,在该学期给该学生开设账号。会得到通知,在该学期给该学生开设账号。 学生在注册后一段时间可以使用系统增加学生在注册后一段时间可以使用系统增加/撤销所撤销所选课程。选课程。 教授使用这个系统接受他们课程的选课名册。教授使用这个系统接受他们课程的选课名册。 注册系统的用户将得到密码(注册系统的用户将得到密码(pass
54、word),用于),用于登录的确认。登录的确认。软件工程软件工程6262用例图(用例图(use case diagramuse case diagram)n用例图展现了一组用例、参与者(用例图展现了一组用例、参与者(Actor)以及它们)以及它们之间的关系。之间的关系。n用例图通常包括用例、参与者和扩展关系、包含关用例图通常包括用例、参与者和扩展关系、包含关系等。系等。n用例图的功能是支持系统的行为,即该系统在它的用例图的功能是支持系统的行为,即该系统在它的上下文环境中所提供的外部可见服务。上下文环境中所提供的外部可见服务。n用例图的两种使用方式:用例图的两种使用方式:上下文环境建模上下文环境
55、建模:说明位于系统之外并与系统进:说明位于系统之外并与系统进行交互的参与者以及他们所扮演的角色的含义。行交互的参与者以及他们所扮演的角色的含义。功能需求建模功能需求建模:说明系统想要的行为。:说明系统想要的行为。 软件工程软件工程6363参与者(参与者(ActorsActors)n参与者定义了一组与系统有信息交互关系的人、参与者定义了一组与系统有信息交互关系的人、事、物。它是用例的客户并与用例进行交互。事、物。它是用例的客户并与用例进行交互。一个参与者针对每一个与之通信的用例扮演一一个参与者针对每一个与之通信的用例扮演一种角色。种角色。n角色可以是人或外部系统。它定义了系统的边角色可以是人或外
56、部系统。它定义了系统的边界。界。软件工程软件工程6464用例(用例(Use CasesUse Cases)n一个用例是一种系统应表现行为的模式一个用例是一种系统应表现行为的模式:每个用例是一个参与者与系统在一次对话中所执每个用例是一个参与者与系统在一次对话中所执行的相关事务的序列。行的相关事务的序列。 n要调查参与者以确定他们的要求:要调查参与者以确定他们的要求:Registrar(注册管理员)(注册管理员) 维护所有课程信息维护所有课程信息Professor(教授)(教授) 要求选课名单要求选课名单Student(学生)(学生) 维护选课表维护选课表Billing System(记账系统)(
57、记账系统) 从注册中心接受从注册中心接受记账信息记账信息软件工程软件工程6565用例的规格说明用例的规格说明n为每个用例建立一个规格说明,描述用例的事件为每个用例建立一个规格说明,描述用例的事件流(流(flow of event)。)。从参与者角度编写从参与者角度编写n它包含在用例执行时系统必须为参与者提供的各它包含在用例执行时系统必须为参与者提供的各种细节。种细节。n典型的内容有典型的内容有用例如何开始和结束用例如何开始和结束基本的事件流基本的事件流候补的事件流候补的事件流异常的事件流异常的事件流软件工程软件工程6666保持所有课程信息保持所有课程信息的事件流的事件流n用例开始于注册管理员登
58、录到注册系统并敲入他用例开始于注册管理员登录到注册系统并敲入他的密码时。系统检验此密码是否有效,并提示注的密码时。系统检验此密码是否有效,并提示注册管理员选择当前学期或下个学期。注册管理员册管理员选择当前学期或下个学期。注册管理员敲入他期望的学期。然后系统提示选择他所期望敲入他期望的学期。然后系统提示选择他所期望的活动,包括:的活动,包括:Add,Delete,Review或或Quit。a)如果选择如果选择Add,则执行增加课程的子事件流。,则执行增加课程的子事件流。b)如果选择如果选择Delete,则执行删除课程的子事件流。,则执行删除课程的子事件流。c)如果选择如果选择Review,则执行
59、审查所有课程信息的子,则执行审查所有课程信息的子事件流。事件流。d)如果选择如果选择Quit,则用例终止。,则用例终止。软件工程软件工程6767register courseregister course(注册课程)(注册课程)用例用例n用例允许学生在本学期注册他的课程申请。用例允许学生在本学期注册他的课程申请。n如果在本学期开学的一段时间内学生作出如果在本学期开学的一段时间内学生作出add或或drop的变更,他还可修改和删除他的课程选的变更,他还可修改和删除他的课程选择。择。n课程目录系统提交一个表格,列出本学期所有课程目录系统提交一个表格,列出本学期所有的课程申请。的课程申请。n基本事件流
60、:基本事件流:a) 当学生想要注册课程申请或者想要改变他的当学生想要注册课程申请或者想要改变他的已有的选课表时,本用例开始。已有的选课表时,本用例开始。软件工程软件工程6868b) 系统要求学生具体说明他可能会执行的功系统要求学生具体说明他可能会执行的功能(建立、更新或者删除一个选课表)。能(建立、更新或者删除一个选课表)。c) 一旦学生提交了请求信息,将执行某一个一旦学生提交了请求信息,将执行某一个子流。子流。 如果学生选择如果学生选择“建立建立一个选课表一个选课表”,则,则执行一个执行一个“建立建立”子事件流的服务。子事件流的服务。 如果学生选择如果学生选择“更新更新一个选课表一个选课表”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试验室设备精度维护管理办法
- 消防演练计划组织实施方案
- 涂层作业面漆厚度控制计划
- 高强混凝土大型梁板焊接质量验收规范
- 标准作业程序书实施监督制度
- 早教感官刺激日间任务模板
- 边界防火墙访问控制管理方案
- 物流缓冲区物料流向生产排程指导书
- 结构裂缝观测整改验收方案
- 环保检测岗异常排放处置流程
- (2026年)世界哮喘日:让每位哮喘患者都能获得抗炎吸入剂-这仍是当务之急课件
- 2026年株洲市荷塘区社区工作者招聘笔试参考题库及答案解析
- 车间火灾应急指南
- 2026年北京市西城区高三一模地理试卷(含答案)
- 其他地区2025年昌都市政府系统急需紧缺人才引进招聘11人笔试历年参考题库附带答案详解(5卷)
- 中国中煤能源集团有限公司2026届高校毕业生春季招聘备考题库及答案详解(各地真题)
- 2026广东广州铁路运输法院合同制审判辅助人员招聘3人笔试参考题库及答案解析
- 2026年地铁行车调度业务实操试题
- 第三单元 认识国家制度 单元行动与思考 课件-2025-2026学年统编版道德与法治八年级下册
- 幕墙预埋件检测标准与操作指南
- 2025年湖南省农业信贷融资担保有限公司员工招聘笔试历年典型考点题库附带答案详解
评论
0/150
提交评论