软件工程软件工程-03_第1页
软件工程软件工程-03_第2页
软件工程软件工程-03_第3页
软件工程软件工程-03_第4页
软件工程软件工程-03_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 面向对象的方法与UML第三章面向对象的概念与UML3.1 面向对象系统的概念3.2 统一建模语言UML概述3.3 UML的模型元素3.4 UML的图3.5 UML的元模型结构3.1 面向对象系统的概念客观世界中的应用问题面对的主体都是物理的或概念的实体。从这些实体出发,分析实体的作用、责任以及它们之间协作,从而找出问题的解,是很自然的。面向对象技术就是适合用这种方式分析和解决问题的方法。它的基石就是问题领域中识别出来的各种对象。依赖这些对象提供的服务和对象之间相互的协同(关系),实现期望的功能。面向对象技术能够在解决方案中直接模拟问题领域,并与人类的思维习惯相一致。软件工程3什么是面向

2、对象n Peter Coad 和 Edward Yourdon 提出面向对象方法的概念:面向对象= 对象+ 分类 + 继承+ 消息通信n 采用这四个概念开发的软件系统就是面向对象的软件系统。n 一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。软件工程4面向对象范型的特点面向对象系统中的对象是数据抽象与过程抽象的综合体。所谓过程抽象是指当使用某个过程时,无需关心过程内部的实现细节,只要知道如何调用该过程以及该过程完成什么功能即可。所谓数据抽象是指使用结构或记录等方式把某个实体的数据集中起来,使得使用者能够以单元为单位使用数据。面向对象范型在数据抽象中组织过

3、程抽象。软件工程5面向对象系统的状态分别保存在各个对象的数据存储中,而不是保存在一些全局变量中。 系统解决问题的控制流包含在各个对象中的操作内。并通过消息传递,控制流从一个对象转移到另一个对象。算法被分布到各种实体中。通过执行消息传递和对象中的操作实现算法的功能。软件工程6面向对象的特点抽象性:对象包含数据抽象和行为抽象; 封装性:信息隐蔽(使用与实现分开); 共享性: 同一个类中所有对象共享相同的数据结构和行为; 同一应用中的对象通过继承关系,共享共同的数据结构和行为; 不同应用中的对象通过复用,共享数据结构和行为。软件工程7对象(object) 对象是系统中描述客观事物的实体,是构成系统的

4、一个基本单元,由一组属性值和一组对属性进行操作的服务组成。对象 = 对象名+数据(属性)+操作(行为) 属性值一般只能通过执行对象的操作来改变。 操作(方法或服务)描述了对象执行的功能,若 通过消息传递,还可以为其他对象使用。 对象可以是外部实体、信息结构、组织结构、地点或位置、操作规程等。、角色、软件工程8(56, 10)(20, 20)(23, 30)(60, 35)(46, 37)(50, 45)(10, 50)(50, 60)(35, 60)(35, 85)(50, 85)计算机窗口中的三个多边形对象软件工程9表示多边形的三个对象软件工程10quadrilateral2(35, 60)

5、(35, 85)(50, 85)(50, 60)draw move(Dx, Dy)contains?(aPoint)quadrilateral1(46, 37)(50, 45)(60, 35)(56, 10)draw move(Dx, Dy)contains?(aPoint)triangle(10, 50)(20, 20)(23, 30)draw move(Dx, Dy)contains?(aPoint)类(class) 把具有相同属性(数据结构)和服务(操作) 的对象归在一起就形成了类。 类的定义包括一组数据属性和在数据上的一组合法操作。 属于某一个类的各个对象都是该类的实例(instanc

6、e),它们都可使用类中的操作。 类定义了各个实例所共有的数据结构,使用类的构造函数,可以在创建该类的实例时初始化这个实例的状态。软件工程11由两个四边形对象导出一个类软件工程12quadrilateralpoint1 point2 point3 point4draw move(Dx, Dy)contains?(aPoint)quadrilateral2(35, 60)(35, 85)(50, 85)(50, 60)draw move(Dx, Dy)contains?(aPoint)quadrilateral1(46, 37)(50, 45)(60, 35)(56, 10)draw move(D

7、x, Dy)contains?(aPoint)消息(message) 消息是一个对象向另一个对象传递的信息。有四类消息:发送对象请求接收对象提供服务、发送对象激活接收对象、发送对象询问接收对象、发送对象仅传送信息给接收对象。 消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表(可能是空的),如quadrilateral1. move(15, 20) 。 接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的值结合起来。软件工程13继承(inheritance) 如果某几个类之间具有共性的东西(属性和行为),抽取出来放在一个泛化类中,将各个类的特有的东西放在特化类

8、中分别描述,则可建立起特化类对泛化类的继承。 继承是使用已有的类定义做为基础建立新类的定义技术。 已有的类可当做泛化类(父类)来引用,则新类相应地可当做特化类(子类)来引用。软件工程14建立继承结构的好处: 易编程、易理解代码短, 结构清晰 易修改 共同部分只要在一处修改即可 易增加新类 只须描述不同部分怎样建立一个好的继承层次 类可以从父类继承,父类又可以从它的父类继承,形成多层次的继承结构。 当增加一个新类时,不一定在最低层,可能需要插在中间层,这样可能需要调整原来的层次结构。软件工程15a) 建立一个新类起重车。它的底盘、发动机、轮胎、驱动装置等都在已有类汽车中。关系如右图所示。新类是已

9、有类的特殊情形。这时直接让起重车类作为汽车类的子类即可。起重车类 汽车类 软件工程16起重车救火车载重车大轿车汽车增加一个新类拖拉机。它的底盘、发动机等与汽车不同,但驱动装置、轮胎等与汽车相同。调整继承结构。建立一个新的一般的车辆类, 把拖拉机与汽车类的共性放到车辆类中,拖拉机与汽车类都成为车辆类的子类。车辆是抽象类,相关操作到子类汽车找。b)汽车拖拉机软件工程17拖拉机汽车车辆另一种情形是在已有类的基础上加入新类, 使得新类成为已有类的泛化类。例如,已经存在三角形类,四边形类,想加入一个多边形类,并使之成为三角形和四边形类的泛化类。c)三角形类多边形类四边形类软件工程18六边形四边形三角形多

10、边形d)前三个情况主要是通过查找(应用领域)类库, 找到可以原封不动地继承的类或可以通过调整 继承层次结构继承的类。但如果在已有的继承 层次中找不到可以继承的已有类,就从新开始 完全独立地建立一个类。多继承如果一个类需要用到多个现有类的特征,可以从多个类中继承,称为多继承。例如退休教师是继承退休者和教师这两个类的某些特征或行为而得到的一个新类。软件工程19多态性和动态绑定n 对象互相通信,即一个对象发消息给另一个对象,执行某些行为或又发消息给另外的对象,从而执行系统的功能。软件工程20退休教师教师退休者多态性指同名的函数或操作可在不同类型的对象中有各自相应的实现。例如a) 整数“+”:整数加法

11、b) 浮点数“+”:浮点数加法c) 字符串“+”:字符串连接d) 点“+”:两个点的坐标位置分别叠加具有多态的函数或操作在运行时才根据实际的对象类型,执行相应实现程序的连接,此即动态绑定。软件工程21例如,想要在屏幕上画一系列多边形,多态性允许发送消息draw,根据消息接收对象的类型不同,画出不同的多边形。draw针对的是一系列的类型(类族)而不仅仅是一个类型。多态性的实现有 2 种: 利用继承关系,把所有数据类型当作一个抽象数据类型的子类型。软件工程22 利用模板机制,把所有可能的数据类型用一个参数化的数据类型来代替。动态绑定保证在程序执行时实施与对象P 连接的操作。如果P 是矩形类的实例,

12、则执行与矩形连接的操作,如果P 是三角形类的实例,则执行与三角形连接的操作。动态绑定把函数调用与目标代码块的连接延迟到运行时进行。这样,只有发送消息时才与接收消息实例的一个操作绑定。软件工程233.2统一建模语言UML概述UML 是Unified Modeling Language的缩写。 它是一种标准的语言,以直观的表述、定义、构造和文档化软件为主的系统的工作制品。UML聚集了来自下列建模的精髓: 数据建模(实体关系图ERD) 业务建模(工作流) 对象建模 构件建模它可用于软件生命周期各个过程,并适用于各种不同的实现技术。软件工程24UML的特点n 统一标准 融合了当前一些流行的面向对象开发

13、方法的主要概念和技术,成为一种面向对象的标准化的统一建模语言。 提供了标准的面向对象的模型元素的定义和表示法,有标准的语言工具可用。 已成为工业标准化组织OMG的正式标准。n 面向对象 支持面向对象的主要概念,提供了一批基本的模型元素的表示图形和方法。软件工程25n 可视化,表示能力强大 一种图形化语言,系统的逻辑模型和实现模型都能用UML的模型图形清晰地表示。 可以处理与软件的说明和文档有关的问题。 提供了语言的扩展机制,用户可以根据需要增加定义自己的衍型(StereoType)、标记值和约束等。 可用于各种复杂类型的软件系统的建模。n 独立于过程 系统建模语言,独立于开发过程。软件工程26

14、n 容易掌握使用 概念明确,建模表示法简洁明了,图形结构清晰,容易掌握使用。 着重学习三个方面的主要内容:(1) UML的基本模型元素(2) 组织模型元素的规则(3) UML语言的公共机制n 与程序设计语言的关系 用Java,C+ 等编程语言可实现一个系统。 一些CASE工具可以根据UML所建立的系统模型来产生Java、C+ 等代码框架。软件工程27UML的定义n UML定义有两个组成部分:语义和表示法。n 语义用自然语言描述,表示法定义了UML的可视化标准表示符号,这决定了UML是一种可视化的建模语言。n 在语义上,模型是元模型的实例。UML定义给出了语法结构的精确定义。n 使用UML时,要

15、从不同的角度观察系统,为此定义了概念“视图”。视图是对系统的模型在某方面的投影,注重于系统的某个方面。软件工程283.3 UML的模型元素UML的三个主要组成元素1) 基本构造块(basic building blocks )2) 组织构造块的规则(rules)3) 运用于整个UML的公共机制(common mechanisms) UML包括三种基本构造块:1) 事物(things)2) 关系(relationships)3) 图(diagrams)软件工程29UML 事物 结构事物1)Class(类)类类名名操操作作2) Interface(接口) 描述了一个类或构件的服务(操作)集。ISp

16、elling软件工程30属属性性Windoworigin sizeopen( ) close( ) move( ) display( )3) Collaboration(协作) 合作完成某个特定任务的一组类及其关联的集合,用于对用例的实现建模。4) Use Case(用例) 表示系统想要实现的行为,不关心这些行为是怎样实现的。实实现现Place Order协协作作用用例例Order Management软件工程315) Active Class(主动类) 与一般类相同,但它至少拥有一个进程或线程,故能够启动控制活动。6) Component(构件) 系统中物理的、可替代的部件。Orderfor

17、m软件工程32.javaEventManagersuspend() flush()7) Node(节点) 系统在运行时存在的物理元素。软件工程33成绩管理课程管理应用服务器数据库服务器UML事物 行为事物8)Interaction(交互)交互由在特定的上下文环境同完成一定任务的一组对象之间传递的消息组成。交互涉及的元素包括消息、动作序列和链。消消息息Assign(development)对对象象软件工程34p:Person:Company有有名名对对象象9) State Machine(状态机) 状态机描述了一个对象或一个交互在生存周期内响应所经历的状态序列。 状态机涉及的元素包括状态、转换、

18、活动等。KeypressExitinitializingcommandidleFinished软件工程35UML事物 分组事物10) package(包) 包是把元素组织成组的机制,结构事物、行为事物甚至其他分组事物都可以放进包内。 包不象构件(仅在运行时存在),它纯粹是概念上的(即它仅在开发时存在)。软件工程36业务对象包应用包用户接口包UML事物 注释事物11) Note(注释) 依附于一个元素或一组元素之上,对其进行约束或解释的简单符号。See policy8-5-96.doc for details about these algorithms.软件工程37CashAccountpre

19、sentValue()UML Relationships(关系)UML中有 4 种关系: 依赖 关联 泛化 实现关系特征: 这四种关系是UML模型中可以包含的基本关系。 它们也有变体。例如,依赖的变体有细化、跟踪、包含和延伸。软件工程381) 依赖(Dependency) 两个事物之间的语义关系,其中目标事物发生变化会影响源事物的语义。 图中虚线箭头从源事物指向目标事物,表示源事物依赖于目标事物。软件工程39IteratorCourseCourseScheduleadd(c:Course) remove(c:Course)两个类之间的依赖关系可以是: 源类访问定义在目标类内部的数据值; 源类的

20、操作调用了定义在目标类的操作; 源类的返回类或参数是目标类的实例;如果在顺序图中的两个对象存在消息的传送, 而且它们之间没有结构方面的连接,可以在类图上用依赖关系建模。依赖的变体包含特定的语义,表明类之间的关系、包之间的关系、用例之间的关系、对象之间的关系、建模元素与模型之间的关系等。软件工程40类之间的依赖关系可以是:a.友元依赖 目标类(如二叉树)视源类(如迭代器)为友元,允许源类访问目标类的所有私有属性和操作。b.导出依赖 两个类或对象如果存在导出依赖,则表明源类(如年龄)可以从目标类(如出生年月) 通过计算导出。软件工程41BirthDayAgeBinaryTreeIteratorc.

21、细化依赖 在类图中表示同一模型的不同详细程度的规格说明,源类比目标类更为详细。d.实例化依赖 若要强调一个类的对象是由另一个类的对象创建的,可用实例化依赖。它表明源类创建了目标类的一个实例。软件工程42StackArraychessboard from simpleChessboard from optimizede.使用依赖 不加任何修饰的依赖即为使用依赖。也可用修饰强调源类的语义依赖于目标类的具有共有可见性的构成的语义。绑定(Binding)依赖这种依赖关系中的目标类是模板类,源类是从模板实例化的类。f.软件工程43 Stack StackBinary TreeBinary Search

22、Tree包之间的依赖关系可以是:a.访问依赖 它表明源包被赋予了可访问目标包的权限。b.导入依赖 它表明了源包可以访问目标包里的元素,但各个包有自己独立的命名空间,这意味着属于不同包的两个元素可以重名。导入依赖可以使目标包内的公共可见元素进入源包的命名空间。软件工程44targetsourcetargetsource用例之间的依赖关系可以是:a.包含依赖 它表明源用例显式地包含目标用例作为其行为的一部分。此时将源用例称为基用例,目标用例称为内含用例。如果两个用例之间具有包含依赖关系,则表明基用例的动作序列中有特定的步骤把内含用例的动作序列包含进来。base use caseinclusion

23、use caseb.扩展依赖 软件工程45它表明目标用例扩展了源用例的行为。此时, 源用例称为基用例,目标用例称为扩展用例。扩展用例在特定条件下为基用例提供附加的动态行为。例如,在人机交互过程中出现差错时进行的异常处理即为扩展动作。base use caseextension use case扩展依赖与包含依赖的区别在于,如果仅将扩展从基用例地动作序列中去除,基用例仍然是语义完备的,即它的执行仍将产生有意义的结果。而包含依赖则不然。软件工程462) 关联(Association) 关联是一种结构关系,它描述一组链,这些链是类之间或类与接口之间的连接。通过这种连接,一个对象可以访问另一个对象的属

24、性或调用另一个对象的操作。 关联是双向的,其中的角色代表一个类的对象在另一个类中的存在。0.1*employeremployee 聚合(aggregation)是一种特殊类型的关联,它描述了整体和部分间的结构关系。软件工程47 聚合关系在整体端有一个菱形作为标记。 复合聚合(composite aggregate) 是一种特殊的聚合关系,它表明整体对象与部分对象具有相同的生存周期。0.10.1聚合,单向导航导航0.*0.3)角色的重复度(Multiplicity)软件工程48*复合聚合,双向部分 类名2部分 类名1整体 类名表明角色在关联关系中出现的次数。如1,0.1,1.*,*等。 导航(n

25、avigation)一般默认关联关系是双向的,而导航则限制关联关系到一个方向。在图中用箭头指明方向。1.*1 限定关联(qualification)如教师与学生的关系由课程的标识决定。软件工程49departmentcompany教师教学生teachernCourseID11教师教课学生选课限定类*目标类 关联类关联关系是两个类之间的语义连接。在比较简单的情况下,关联关系的语义用关联关系的名字来概括。但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问, 为此可以建立关联类,描述关联的属性。软件工程50coursestudent11.*companypersonemployeeempl

26、oyerjob关联类description dateHired salary3) 泛化(Generalization) 一般化特殊化的关系(继承)。表明特化类共享一个或多个泛化类的结构和行为。 如果两个类被定义为具有泛化关系,就意味 着在任何泛化类(父类)的对象出现的地方, 都可以用特化类(子类)来代替。软件工程51依赖泛化关联软件工程52DialogBoxControlConsoleWindowEventWindowopen() close() move() display()handleEvent() 继承的多态性表明子类的操作的动态行为可代替父类的同名操作的动态行为。 泛化关系的变体:实

27、现继承。它规定其中的子类可继承其父类的结构和行为,但其可见性成为私有,也不支持父类的接口。4) 实现(Realization) 类之间的语义关系,其中的一个类元指定了由另一个类保证执行的契约。 两种情况出现实现关系:1) 在接口和实现它们的类或构件之间;2) 在用例和它们的协作之间。软件工程53 实现Place Order 协作用例 Order Management软件工程54 模型中主要的图形元素状态机用例接口注释构件关联依赖聚合泛化实现复合软件工程55节点包 对象属性值操作类属性操作3.4 UML的图Use CaseUse CaseDiagrams顺序图DiagramsScenarioSc

28、enarioDiagrams模型协作图DiagramsScenarioDiSagcreanmarsioD状iag态ram图s活动图软件工程56StateDi构aSgrtaa件mtes 图DiagramsComponent DCiaomgrpaomnsent D部iag署ram图sState DiaSgrtaamtesD对iag象ram图sUUseseCaCsaese DiD用aigarga例rmams 图sDiStSgattaetes Daia类rgarma图msUML图的作用UML 可以用于: 使用用例(use cases)和参与者(actors) 描述系统的边界和它的主要功能。 使用交互图

29、(顺序图、协作图)具体描述用例的实现。 使用类图表示系统的静态结构。 使用状态图模型化对象的行为。 使用构件图和部署图展现系统的物理实现体系结构。 使用衍型(stereotypes)扩展建模能力。软件工程57UML工作的实例某大学用计算机管理的注册(registration)系统注册管理员设置一个学期的所有课程信息 一个课程可以有多个课程选课单。学生选择4门主修课和2门选修课当某学生在学期注册了,则记账(billing)系统会得到,在该学期给该学生开设账号。学生在注册后一段时间可以使用系统增加/撤销所 选课程。教授使用这个系统接受他们课程的选课名册。注册系统的用户将得到登录的确认。(passw

30、ord),用于软件工程58用例图(use case diagram)用例图展现了一组用例、参与者(Actor)以及它们之间的关系。用例图通常包括用例、参与者和扩展关系、包含关 系等。用例图的功能是支持系统的行为,即该系统在它的 上下文环境中所提供的外部可见服务。包含与扩展的区别。在扩展关系中,基础用例没有 扩展也是完整的,而在包含关系中,基础用例依赖 于包含用例的执行结果。用例图的两种使用方式: 上下文环境建模:说明位于系统之外并与系统进 行交互的参与者以及他们所扮演的角色的含义。 功能需求建模:说软明件系工统程想要的行为。59参与者(Actors)n 参与者定义了一组与系统有信息交互关系的人

31、、事、物。它是用例的客户并与用例进行交互。 一个参与者针对每一个与之通信的用例扮演一 种角色。n 角色可以是人或外部系统。它定义了系统的边界。RegistrarProfessorStudentBilling System软件工程60用例(Use Cases)一个用例是一种系统应表现行为的模式: 每个用例是一个参与者与系统在一次对话中所执行的相关事务的序列。要调查参与者以确定他们的要求: Registrar(注册管理员) 维护所有课程信息 Professor(教授) 要求选课 Student(学生) 维护选课表 Billing System(记账系统) 从注册中心接受记账信息Maintain C

32、urriculumRequest Course RosterMaintain Schedule软件工程61用例的规格说明为每个用例建立一个规格说明,描述用例的流(flow of event)。 从参与者角度编写它包含在用例执行时系统必须为参与者提供的各种细节。典型的内容有 用例如何开始和结束 基本的 候补的 异常的流流流软件工程62维护所有课程信息的流用例开始于注册管理员登录到注册系统并敲入他的时。系统检验此是否有效,并提示注册管理员选择当前学期或下个学期。注册管理员敲入他期望的学期。然后系统提示选择他所期望的活动,包括:Add,Delete,Review或Quit。如果选择Add,则执行增加

33、课程的子流。流。a)b)如果选择Delete,则执行删除课程的子如果选择Review,则执行审查所有课程信息的子流。c)d)如果选择Quit,则用例终止。软件工程63register course(注册课程)用例用例允许学生在本学期注册他的课程申请。 如果在本学期开学的一段时间内学生作出add 或drop的变更,他还可修改和删除他的课程选择。课程目录系统提交一个表格,列出本学期所有的课程申请。基本流:a)当学生想要注册课程申请或者想要改变他的已有的选课表时,本用例开始。软件工程64b) 系统要求学生具体说明他可能会执行的功能(建立、更新或者删除一个选课表)。c) 一旦学生提交了请求信息,将执行

34、某一个子流。 如果学生选择“建立一个选课表”,则执行一个“建立”子流的服务。 如果学生选择“更新一个选课表”,则执行一个“更新”子流的服务。 如果学生选择“删除一个选课表”,则执行一个“删除”子流的服务。软件工程65建立选课表子流a) 系统检索来自课程目录系统的一个有效的课程申请的列表,并把这个表显示给学生。b) 学生根据这个有效的课程申请列表选择 4 门主修课申请和 2 门选修课申请。一旦学生作出他的选择,系统为学生建立一个选课表,包括了这个学生选择的课程申请。c)d)执行“提交选课表”子软件工程66用例图的事例n 注册系统的用例图直观地描述了参与者和用例之间的关系。Request Cour

35、se RosterProfessorStudentMaintain ScheduleBilling SystemMaintain CurriculumRegistrar软件工程67交互图 用例的实现用例图描述了系统的外部视图。交互图则描述了如何通过对象之间的交互实现用例。交互图展现了按一定的目的进行的一种交互, 它由在一个上下文中的一组对象及它们之间交互的信息组成。交互图有两种类型: 顺序图(Sequence diagram) 协作图(Collaboration diagram)软件工程68顺序图(Sequence Diagram)n 顺序图也称为序列图,它按时间顺序显示对象之间的交互。mat

36、h 101 : Student1: fill in info2: submit3: add course(joe,math 01)4: are you open?5: are you open?6: add (joe)7: add (joe)软件工程69math 101 section 1registration managerregistrationform顺序图展现了一组对象和由这组对象收发的消息, 用于按时间顺序对控制流建模。对象表述为虚垂线顶端的矩形框。这些对象都排列 在图的顶部,其生命线从图的顶部画到图的底部。 垂线是对象的生命线,说明对象在一段时间内存在。对象可以在交互过程中创建,

37、在交互过程中撤销。 生命线之间的箭头表示消息。消息出现的次序自上 而下。消息箭头可以回到同一条生命线,指明自调用,即对象发给自己的消息。软件工程70顺序图的控制焦点是一个瘦高的矩形,表示一个对象执行一个动作所经历的时间段。矩形的顶部表示动作的开始,底部表示动作的结束(可以由一个返回消息来标记)。顺序图的构造步骤: 首先,把参加交互的对象放在图的上方,横向排列。通常把发起交互的对象放在左边,较下级对象依次放在右边。 然后,把这些对象发送和接收的消息纵向按时间顺序从上到下放置。 这样,就提供了控制流随时间推移的清晰的可视化轨迹。软件工程71选课的顺序图 : 学生 : 选课表单 : 课程登记管理器

38、: 课程目录 : 课程打开取课程列表取课程列表显示课程列表重复4门课选择4门主修课和2门选修课把课程加入计划添加学生软件工程72ActorBoundaryControlEntityn 边界类是直接与系统外部实体交互的类,描述系统与外部(人或其他系统)的接口建模, 其原型为。n 控制类是为特定用例的控制行为建模的类,协调特定于用例的行为所需的。,其原型为n 实体类是用来保存或更新某个对象的信息的类,独立于它的环境。原型为。软件工程73协作图(Collaboration Diagram)n 协作图也称为合作图,它显示了对象与周围对象之间的交互,以及它们之间的链接。course form : 1:

39、set course info2: processCourseForm3: add course: RegistrartheManager : CurriculumManageraCourse : Course4: new course软件工程74协作图展现了一组对象,这组对象之间的连接以及这组对象收发的消息。协作图中的协作不是参与者与系统之间的交互, 而是系统内部某一个用例中各个对象之间信息传递的方式。消息上所附编号指明执行顺序。协作图的构造步骤:将参加交互的对象作为图的顶点。将连接这些对象的链表示为图的弧。用对象发送和接收的消息修饰这些链。协作图提供了在协作对象的结构组织的上下文环境中观察

40、控制流的一个清晰的可视化轨迹。软件工程75类图(class diagram)类图从系统的逻辑视图展现了一组类、接口、协作和它们之间的关系。类图给出系统的静态设计视图,主动类的类图给出了系统的静态进程视图。在类图中UML建模元素包括: 类及其结构和行为; 接口; 协作; 关联、依赖、泛化关系; 多重性和导航指示符; 角色名字。软件工程76类(Class)类是具有共同结构、共同行为、共同关系和共同语义的对象的集合。通过检查在顺序图和协作图中的对象可以发现类。一个类用间隔为三部分的矩形描绘。类应当使用领域的术语来命名: 应建立命名的标准 例如,所有的类都是以大写字母开头的单一名词软件工程77类的事例

41、软件工程78CourseOfferingProfessorStudentCourseRegistrationManagerRegistrationFormScheduleAlgorithm操作(Operations)n 一个类的行为通过类的各种操作来表达。n 这些操作可以通过检查交互图来寻找。3: add course(joe,math 01)软件工程79RegistrationManageraddCourse(Student,Course)registration managerregistration form属性(Attributes)n 一个类的结构通过它的属性来表达。n 通过检查类的定义、问题的需求,并参照领域知识来发现属性。每个课程选课单有课程号number 、地点location、时间time软件工程80CourseOfferingnumber location time类的事例软件工程81StudentnamemajorCourseOfferinglocationopen() addStudent(StudentInfo)Professorna

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论