




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二部分软件需求分析与建模面向对象分析第1页,共198页,2022年,5月20日,11点39分,星期一实验1:软件工程CASE工具什么是软件工程环境?CASE工具的作用?主流的代表性CASE工具?软件工程各阶段工具需求?要求:理解实验内容与方法、提交实验报告习题3、4、61.6 实验要求及习题第2页,共198页,2022年,5月20日,11点39分,星期一1.现代软件工程(国家示范性软件学院系列教材) 张家浩/东南大学 机械工业出版社 2009.12.软件工程 理论与实践 许家珆 曾翎 彭德中 编著 高等教育出版社 2004.73.软件工程-实践者的研究方法 (美)Roger S. Press
2、man著 郑人杰等译 机械工业出版社 2008.6 4.Software Engineering, 6th Edition Sommerville.I. (影印版) 机械工业出版社 2003.4主要参考书:第3页,共198页,2022年,5月20日,11点39分,星期一总 目 录第1章 软件工程学概述(2学时)第2章 软件过程(2学时)第3章 软件过程模型(4学时)第4章 案例研究(2学时)第5章 软件需求分析过程(4学时)第6章 结构化分析建模(4学时)第7章 面向对象分析(6学时) 第8章 软件设计(4学时)第9章 结构化设计方法(4学时)第4页,共198页,2022年,5月20日,11点
3、39分,星期一总 目 录第10章 面向对象设计(4学时)第11章 软件实现(2学时)第12章 软件测试(4学时)第13章 软件维护(2学时) 第14章 软件项目管理(2学时)第15章 软件项目估算(1学时)第16章 软件项目计划与管理(1学时)第5页,共198页,2022年,5月20日,11点39分,星期一第7章 面向对象分析7.1 面向对象建模 7.2 用例建模 7.3 建立领域模型 7.4 行为建模 7.5 案例分析 7.6 实验要求及习题第6页,共198页,2022年,5月20日,11点39分,星期一引言:传统软件开发方法的局限性 传统的软件工具、软件技术和抽象层次越来越难以适应大规模复
4、杂软件系统的开发特点。软件能力问题已经成为制约软件发展的因素。 软件工程自70年代以来,有力的推动了软件能力的解决。自顶向下的分析与设计的方法、软件项目的工程化管理、软件工具和开发环境、软件质量保证等都对软件的发展起了非常重要的作用。传统的软件开发方法在当时的软件工程中起了主导作用,随着系统复杂性、多变性增强,传统方法的缺陷就显露了出来: (1)面向过程为主。系统围绕着由计算机来实现功能的复杂过程而建立,在分析和解决问题时与人们对现实世界的认识有一定差距。第7页,共198页,2022年,5月20日,11点39分,星期一 (2)软件结构稳定性差。需求分析阶段重点是功能模型,难以彻底明确全部需求。
5、设计阶段的软件体系结构是基于系统功能建立的。每个模块完成一个基本功能,多个模块的组合完成一个整体功能。一个模块的变动可能会影响到多个模块。用户的需求大多针对功能,功能的变化会引起体系结构的变化,不利于系统的维护。 (3)软件开发的抽象力度小。解决问题的类型一般用于“输入-处理-输出”为核心的数据处理系统,不适应于复杂的实时、交互、事件驱动、分布式等新型应用的系统开发。 (4)软件重用未能得到很好的解决。传统的方法一般从“零”开始开发软件,数据与操作作为相互分离的实体来考虑,使软件的可复用性差。重用的实施仅仅是公用模块的调用。面向对象的封装性、继承性、多态性等特性支持软件重用且重用的粒度大。软件
6、的重用导致更快地、高质量地开发软件,为软件工业化生产奠定基础。第8页,共198页,2022年,5月20日,11点39分,星期一9传统方法数据与过程是分离的过程1输入输出过程2过程3数据实体属于该对象的数据对象处理数据的方法消息对象把数据和处理数据的方法封状成一个单元消息第9页,共198页,2022年,5月20日,11点39分,星期一传统方法与面向对象方法的比较面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出第10页,共198页,2022年,5月20日,11点39分,星期一1. 与人类习惯的思维方法一致 传统
7、的程序设计技术是面向过程的设计方法,这种方法以算法为核心,把数据和过程作为相互独立的部分。 用这种方法所设计出来的软件系统其解空间与问题空间并不一致,令人感到难于理解。 面向对象的软件开发过程围绕着建立问题域的对象模型来进行:对问题领域进行自然的分解,确定需要使用的对象和类,建立适当的类等级,在对象之间传递消息实现必要的联系。面向对象方法学的优点第11页,共198页,2022年,5月20日,11点39分,星期一2. 稳定性好 传统的软件开发方法以算法为核心,开发过程基于功能分析和功能分解。 用传统方法所建立起来的软件系统的结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整
8、体修改。 面向对象方法用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。 由于现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系统也是比较稳定的。 第12页,共198页,2022年,5月20日,11点39分,星期一3. 可重用性好 用已有的零部件装配新的产品,是典型的重用技术,例如,用标准函数库中的函数作为“预制件”来建造新的软件系统。 重用是提高生产率的最主要的方法。 传统的软件重用技术是利用标准函数库,实际的库函数往往仅提供最基本、最常用的功能。 面向对象方法所使用的对象中,数据和操作是作为平等伙伴出现的,故对象具有很强的自含性。 对象固有的封装性和信息隐藏机制,使得对
9、象的内部实现与外界隔离,具有较强的独立性。 对象是比较理想的模块和可重用的软件成分。第13页,共198页,2022年,5月20日,11点39分,星期一 面向对象的软件技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性。 有两种方法可以重复使用一个对象类:(1)创建该类的实例,从而直接使用它;(2)从它派生出一个满足当前需要的新类。 继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码的基础上方便地修改和扩充,这种修改并不影响对原有类的使用。 由于可以像使用集成电路(IC)构造计算机硬件那样,比较方便地重用对象类来构造软件系统,因此,有人把对象类称为“软件IC”
10、。第14页,共198页,2022年,5月20日,11点39分,星期一4. 较易开发大型软件产品 在开发大型软件产品时,组织开发人员的方法不恰当往往是出现问题的主要原因。 用面向对象方法学开发软件时,构成软件系统的每个对象就像一个微型程序,有自己的数据、操作、功能和用途,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理。 对于大型软件产品来说,面向对象范型优于结构化范型。第15页,共198页,2022年,5月20日,11点39分,星期一5. 可维护性好 由于下述因素的存在,使得用面向对象方法所开发的软件可维护性好:(1) 面向对象的软件结构稳定性比较好;(2) 面向对象的软件比较容
11、易修改;(3) 面向对象的软件比较容易理解;(4) 易于测试和调试。 第16页,共198页,2022年,5月20日,11点39分,星期一面向对象分析也是要建立各种各样的基于对象的模型,这些模型用于理解领域问题面向对象的最大特点是面向用例(用例是指在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述),用例贯穿整个开发过程,再引入类模型和动态行为模型。在用例的描述中引入了外部角色的概念。面向对象分析(OOA,Object-Oriented Analysis)是一种半形式化的规格说明技术目前,最流行的技术是OMT和Booch开发技术第17页,共198页,2022
12、年,5月20日,11点39分,星期一 面向对象方法的代表性成果有:(1)B.Henderson-sellers 和 提出的面向 对象软件生存期喷泉模型及面向对象的系统开发方法(2)G.Booch提出的面向对象的开发方法(3)P.Coad和E.Yourd提出的OOA和OOD法 (4)J. Rumbaugh等人提出的对象建模技术(OMT)(5)Jacobson 提出的面向对象的软件工程(OOSE)(6)G.booch J.Rumbough Jacobson等人在Booch方 法、OMT和OOSE的基础上推出了统一建模语言UML第18页,共198页,2022年,5月20日,11点39分,星期一面向对
13、象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式也就是使描述问题的问题域与实现解法的解空间(求解域)在结构上尽可能一致面向对象模型对象模型:定义了“做什么”的实体动态模型:规定在何种状态下,接受什么事件的触发而“做什么”功能模型:指明了系统应该“做什么”7.1 面向对象建模第19页,共198页,2022年,5月20日,11点39分,星期一概括地说,面向对象方法具有下述4个要点:(1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。(2) 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。(
14、3) 按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。(4) 对象彼此之间仅能通过传递消息互相联系。 第20页,共198页,2022年,5月20日,11点39分,星期一1. 类(class) 人类习惯于把有相似特征的事物归为一类,分类是人类认识客观世界的基本方法。类(Class)是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。类代表一个抽象的数据类型,对象是在客观世界中实际存在的类的实例。类体现了人们认识事物的基本思维方法:分类面向对象基本概念第21页,共198页,2022年,5月20日
15、,11点39分,星期一对象 vs 类对象是一个存在于时间和空间中的具体实体,而类仅代表一个抽象,抽象出对象的“本质”。类是共享一个公用结构和一个公共行为对象集合 类是静态的,对象是动态的;类是一般化,对象是个性化;类是定义,对象是实例;类是抽象、对象是具体 第22页,共198页,2022年,5月20日,11点39分,星期一2. 实例(instance) 实例就是由某个特定的类所描述的一个具体的对象。 当使用“对象”这个术语时,既可以指一个具体的对象,也可以泛指一般的对象。 当使用“实例”这个术语时,必然是指一个具体的对象。类是静态的,类的存在、语义和关系在程序执行前就已经定义好了。对象是动态的
16、,对象在程序执行时可以被创建和删除。类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。第23页,共198页,2022年,5月20日,11点39分,星期一判断下列各项是类还是类的实例? 1我的小汽车 2人员 3王晓明 4交通工具 5教授 6计算机系 7中国工人 8清华大学学生 9日本国 10喷气式战机 1实例2类 3实例 4类5类6实例7类 8类9实例 10类第24页,共198页,2022年,5月20日,11点39分,星期一3. 消息(message) 消息(Message)是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等
17、。 一个对象向另一个对象发出消息请求某项服务,接收消息的对象响应该消息,激发所要求的服务操作,并将操作结果返回给请求服务的对象。4. 方法(method) 方法就是对象所能执行的操作,也就是类中所定义的服务。 方法描述了对象执行操作的算法,响应消息的方法。第25页,共198页,2022年,5月20日,11点39分,星期一5. 属性(attribute) 属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。 类的每个实例都有自己特有的属性值。6. 封装(encapsulation) 所谓封装是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。 可见性是指对象的属
18、性和服务允许对象外部存取和引用的程度。第26页,共198页,2022年,5月20日,11点39分,星期一对象具有封装性的条件如下:(1) 有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内。(2) 有确定的接口。这些接口就是对象可以接受的消息。(3) 受保护的内部实现。实现对象功能的细节不能在定义该对象的类的范围外访问。 封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。7. 继承(inheritance) 继承是子类自动地共享基类中定义的数据和方法的机制。 面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组成一个层次结构的系统(类等级)。第27页,共198页
19、,2022年,5月20日,11点39分,星期一实现继承机制的原理第28页,共198页,2022年,5月20日,11点39分,星期一继承的作用 简化了人们对现实世界的认识和描述; 对于软件复用是十分有益的。继承的类型 单继承:子类只从一个父类继承; 多继承:子类从多个父类继承。第29页,共198页,2022年,5月20日,11点39分,星期一多态性机制为软件的结构设计提供了灵活性,减少了信息冗余,明显提高了软件的可复用性和可扩充性。8. 多态性(polymorphism)多态性的意思是“有许多形态”。多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。在
20、类等级的不同层次中可以共享一个行为的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。第30页,共198页,2022年,5月20日,11点39分,星期一9. 重载(overloading) 有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。 运算符重载是指同一个运算符可以施加于不同类型的操作数上面。 当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。 重载进一步提高了面向对象系统的灵活性和可读性。第31页,共198页,2022年,
21、5月20日,11点39分,星期一面向对象分析也是要建立各种各样的基于对象的模型,这些模型用于理解领域问题面向对象的最大特点是面向用例(用例是指在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述),用例贯穿整个开发过程,再引入类模型和动态行为模型。在用例的描述中引入了外部角色的概念。面向对象分析(OOA,Object-Oriented Analysis)是一种半形式化的规格说明技术目前,最流行的技术是OMT和Booch开发技术面向对象分析(OOA)第32页,共198页,2022年,5月20日,11点39分,星期一几种面向对象方法 20世纪80年代以来,出现了
22、几十种面向对象软件开发方法。每一种都有自己的符号体系和开发过程,都支持以下基本活动: 标识类及对象 描述类及对象之间的关系 定义类的属性和操作 第33页,共198页,2022年,5月20日,11点39分,星期一 1、Booch方法 Booch是面向对象方法最早的提出者之一,提出了面向对象软件工程的概念。提出了“微开发过程”和“宏开发过程”的思想。该方法提出建立以下模型: 类图、对象图、状态转移图、时序图、模块图、进程图。第34页,共198页,2022年,5月20日,11点39分,星期一2、Coad/Yourdon方法 著名的OOA/OOD方法,也是最早的面向对象的分析与设计方法之一。简单、易学
23、。 OOA阶段的任务: 标识类及对象 定义结构(一般特殊结构、整体部分结构) 划分主题 定义属性及对象间的实例连接 定义服务及对象间的消息连接 上述任务迭代进行,产生5个层次的问题域模型(主题层、类及对象层、结构层、属性层、服务层) OOD阶段的活动: 问题域部分 人机交互部分 任务管理部分 数据管理部分第35页,共198页,2022年,5月20日,11点39分,星期一 3、OMT方法 Rumbaugh等人提出的对象建模技术(Object Model Technology, OMT),该方法强调了三种模型,并将软件开发过程划分为以下几个阶段: 建立对象模型 产品:对象模型对象图数据字典 建立动
24、态模型 产品:动态模型状态图事件跟踪图 建立功能模型 产品:功能模型数据流图约束第36页,共198页,2022年,5月20日,11点39分,星期一 4、Jacobson方法 也称OOSE方法。最大特点是强调使用实例(Use-Case),每一个用例就是一个使用系统的方式,用例的执行将引发执行一系列与行为相关的事务。 该方法将用例贯穿于整个开发阶段,并在用例描述中引入了角色或参与者(Actor)的概念。角色指使用系统的人以及与系统相互作用的软硬件环境。 该方法还将对象区分为实体对象(业务对象)、接口对象(界面对象)和控制对象。 需求分析阶段活动:定义潜在的角色、识别问题域中的对象和关系、基于需求规
25、格说明和角色的需要描述用例。 设计阶段的活动:从用例的描述中发现与设计有关的对象,并描述其属性、行为和关联。同时把所有用例的行为分派给每个对象。第37页,共198页,2022年,5月20日,11点39分,星期一面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式也就是使描述问题的问题域与实现解法的解空间(求解域)在结构上尽可能一致面向对象模型对象模型:定义了“做什么”的实体动态模型:规定在何种状态下,接受什么事件的触发而“做什么”功能模型:指明了系统应该“做什么”7.1 面向对象建模第38页,共198页,2022年,5月20日,11点39分,星期一 对象模型对象模型表示静态的、结构
26、化的 “数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。为了建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则。需要用适当的建模语言来表达模型,建模语言由记号和使用记号的规则组成。第39页,共198页,2022年,5月20日,11点39分,星期一动态模型动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。一旦建立起对象模型,就需要考察对象的动态行为。所有对象都具有自己的生命周期。对一个对象来说,生命周期由许多阶段组成,在每个特定阶段中,都有适合该对象的一组运行规律和行为规则,用以规范该对
27、象的行为。第40页,共198页,2022年,5月20日,11点39分,星期一 功能模型功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。通常,功能模型由一组数据流图组成。在面向对象方法学中,数据流图远不如在结构分析、设计方法中那样重要。第41页,共198页,2022年,5月20日,11点39分,星期一 回顾20世纪晚期-准确地说是1997年,OMG组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)。UML的目标之一就是为开发团队提供标准通用的设
28、计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划-就像建筑工人多年来所使用的建筑设计图一样。统一建模语言第42页,共198页,2022年,5月20日,11点39分,星期一产生的背景 UML的主要创始人是Jim Rumbaugh、Ivar Jacobson和Grady Booch,他们最初都有自己的建模方法(OMT、OOSE和Booch),彼此之间存在着竞争。最终,他们联合起来创造了一种开放的标准。(听起来是不是很熟悉?这个现象类似J2EE、SOAP和Linux的诞生。)UML成为标准建模语言的原因之
29、一在于,它与程序设计语言无关。(IBM Rational的UML建模工具被广泛应用于J2EE和.NET开发。)而且,UML符号集只是一种语言而不是一种方法学。这点很重要,因为语言与方法学不同,它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式。 第43页,共198页,2022年,5月20日,11点39分,星期一产生的背景 既然UML不是一种方法学,它就不需要任何正式的工作产品(即IBM Rational Unified Process?术语中所定义的工件)。而且它还提供了多种类型的模型描述图(diagram),当在某种给定的方法学中使用这些图时,它使得开发中的应用程序的更易理解。U
30、ML的内涵远不只是这些模型描述图,但是对于入门来说,这些图对这门语言及其用法背后的基本原理提供了很好的介绍。通过把标准的UML图放进您的工作产品中,精通UML的人员就更加容易加入您的项目并迅速进入角色。最常用的UML图包括:用例图、类图、序列图、状态图、活动图、组件图和部署图。第44页,共198页,2022年,5月20日,11点39分,星期一 统一建模语言UML(Unified Modeling Language)是软件界第一个统一的建模语言,该方法结合了Booch, OMT和OOSE方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。 它已成为国际软件界
31、广泛承认的标准。它是一种基于面向对象的可视化的通用(General)建模语言。 UML应用领域很广泛,可用于软件开发建模的各个阶段。 UML的标准化定义、可视化描述、可扩展性机制显示了其强大生命力。 统一建模语言第45页,共198页,2022年,5月20日,11点39分,星期一第46页,共198页,2022年,5月20日,11点39分,星期一 九十年代中,面向对象方法已经成为软件分析和设计方法的主流。 1994年10月Jim Rumbaugh和Grady Booch共同合作把他们的OMT和Booch方法统一起来,到1995年成为“统一方法”版本0.8。 随后,Ivar Jacobson加入,并
32、采用他的用例(User Case)思想,到1996年,成为“统一建模语言”版本0.9。 1997年1月,UML版本1.0被提交给OMG组织,作为软件建模语言标准的候选。 1997年11月7日被正式采纳作为业界标准。第47页,共198页,2022年,5月20日,11点39分,星期一第48页,共198页,2022年,5月20日,11点39分,星期一 UML的模型元素:一类模型元素用于表示模型中的某个概念,如类、对象、用例、结点、构件、包、接口等;另一类模型元素用于表示模型元素之间相互连接的关系,主要有关联、泛化(表示一般与特殊的关系)、依赖、聚集(表示整体与部分的关系)等。聚集依赖泛化关联状态对象
33、属性操作类属性操作角色用例结点构件包接口注解第49页,共198页,2022年,5月20日,11点39分,星期一UML模型结构四个抽象层次:元元模型:定义了描述元模型的语言元模型:定义了元类、元属性、元操作等一些概念模型:定义了描述信息领域的语言用户模型:模型的实例,用于表达一个模型的特定情况用户模型模型元模型元元模型事物n 相关 1.n链接对象n 相关 1.n关联类n实例1n实例1.n第50页,共198页,2022年,5月20日,11点39分,星期一UML模型视图UML主要是用来描述模型的。它可以从不同视角为系统建模,形成不同的视图(View)每个视图是系统完整描述中的一个抽象,代表该系统一个
34、特定的方面;每个视图又由一组图(Diagram)构成,图包含了强调系统某一方面的信息两类图:静态图:包括用例图、类图、对象图、构件图和部署图动态图:包括状态图、时序图、协作图和活动图第51页,共198页,2022年,5月20日,11点39分,星期一UML的五种视图:用例视图:从用户角度表达系统功能,使用用例图和活动图结构视图:主要使用类图和对象图描述系统静态结构,用状态图、顺序图、协作图和活动图描述对象间实现给定功能时的动态协作关系行为视图:展示系统动态行为及其并发性,用状态图、顺序图、协作图、活动图、组件图和部署图描述实现视图:展示系统实现的结构和行为特征,用组件图描述部署视图:展示系统的实
35、现环境和构件是如何在物理结构中部署的,用部署图描述第52页,共198页,2022年,5月20日,11点39分,星期一第53页,共198页,2022年,5月20日,11点39分,星期一对象模型对象模型可以看成是数据流和语义数据模型的结合对象模型表示静态的、结构化系统的“数据”性质它是对模拟客观世界实体的对象,以及对象彼此间的关系的映射,描述了系统的静态结构对象模型是一个类(包括其属性和行为)、对象(类的实例)、类和(或)对象之间关系的定义集类名是一类对象的抽象命名,其命名是否恰当对系统的可理解性影响相当大,常用名词短语对象模型还必须表示类/对象之间的结构关系。类/对象之间的关系一般可概括为关联、
36、归纳(泛化)、组合(聚集)三类。第54页,共198页,2022年,5月20日,11点39分,星期一 对象模型为建立动态模型和功能模型,提供了实质性的框架。 使用UML提供的类图来建立对象模型。 在UML中术语“类”的实际含义是,“一个类及属于该类的对象”。 类图用来描述系统中类和类之间的关系,是系统的静态结构。类图中还描述了类的属性、操作、以及对模型中各种成分的约束。类图包含有类、关联和关系等模型元素。第55页,共198页,2022年,5月20日,11点39分,星期一 类图描述类及类与类之间的静态关系。类图是一种静态模型,它是创建其他UML图的基础。 一个系统可以由多张类图来描述,一个类也可以
37、出现在几张类图中。类图的基本符号表示类的图1. 定义类 UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可省略),3个区域分别放类的名字、属性和服务。第56页,共198页,2022年,5月20日,11点39分,星期一类名是一类对象的名字。为类命名时应该遵守的几条准则:(1) 使用标准术语。应该使用在应用领域中人们习惯的标准术语作为类名,不要随意创造名字。例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。(2) 使用具有确切含义的名词。尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含义模糊的词作名字。例如,“库房”比“房屋
38、”或“存物场所”更确切。(3) 必要时用名词短语作名字。为使名字的含义更准确,必要时用形容词加名词或其他形式的名词短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等都是比较恰当的名字(4) 名字要准确而简要。第57页,共198页,2022年,5月20日,11点39分,星期一2. 定义属性 UML描述属性的语法格式如下:可见性 属性名: 类型名=初值性质串属性的可见性有3种:Public(+):公有的,对于一个给定的类,任何一个带有可见性的外部类都可以使用该特征;Protected(#):受保护的,类的任何子类都可以使用该特征;Private():私有的,只有类本身可以使用该特征。
39、如果未声明可见性,则该属性的可见性尚未定义。注意,没有默认的可见性。类型名表示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型第58页,共198页,2022年,5月20日,11点39分,星期一在创建类的实例时应给其属性赋值。类型名和初值之间用等号(=)隔开。用花括号括起来的性质串明确地列出该属性所有可能的取值。枚举类型的属性往往用性质串列出可以选用的枚举值,不同枚举值之间用逗号分隔。“发货单”类的属性“管理员”,在UML类图中像下面那样描述:-管理员: String=“未定”类的属性中还可以有一种能被该类所有对象共享的属性,称为类的作用域属性,也称为类变量。C+语言中的静态数据
40、成员就是这样的属性。类变量在类图中表示为带下划线的属性发货单类的类变量“货单数”,用来统计发货单的总数,在该类所有对象中这个属性的值都是一样的:-货单数: Integer第59页,共198页,2022年,5月20日,11点39分,星期一3. 定义服务 服务也就是操作,UML描述操作的语法格式如下:可见性 操作名(参数表): 返回值类型性质串操作可见性的定义方法与属性相同。参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:参数名: 类型名=默认值第60页,共198页,2022年,5月20日,11点39分,星期一第61页,共198页,2022年,5月20日,11点39分,星期一 请理解:
41、 (1)类的属性中还可以有一种能被该类所有对象共享的属性,称为类的作用域属性,也称为类变量。 (2)类变量在类图中表示为带下划线的属性。例如:发货单类的类变量“货单数”,用来统计发货单的总数,在该类所有对象中这个属性的值都是一样的:-货单数: Integer (3)与属性类似,在类中也可定义类作用域操作,在类图中表示为带下划线的操作。 (4)这种操作只能存取本类的类作用域属性。第62页,共198页,2022年,5月20日,11点39分,星期一抽象类( abstract )抽象类是不能直接产生实例的类在UML 中,将类名写成斜体字来表示抽象类,也可以使用构造型接口(Interface)接口描述了
42、一个类或构件的服务(操作)集。接口描述了一个元素的外部可见行为。第63页,共198页,2022年,5月20日,11点39分,星期一抽象类抽象类是指那些不具有任何对象的类,其作用是为其他的类描述它们的公共属性和行为。(例如Vehicle)通常,抽象类具有一组抽象操作。一个拥有至少一个抽象操作的类必定是一个抽象类。UML采用斜体表示抽象元素的名称;如果不用斜体字,也可使用abstract约束来表示。第64页,共198页,2022年,5月20日,11点39分,星期一第65页,共198页,2022年,5月20日,11点39分,星期一 类图由类及类与类之间的关系组成。 类与类之间通常有关联、聚集、泛化(
43、继承)、依赖和细化等4种关系。1. 关联 关联表示两个类的对象之间存在某种语义上的联系。 例如,作家使用计算机,作家和计算机之间存在某种语义连接,在类图中应该在作家类和计算机类之间建立关联关系。表示关系的符号第66页,共198页,2022年,5月20日,11点39分,星期一普通关联示例第67页,共198页,2022年,5月20日,11点39分,星期一(1)普通关联 普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。 普通关联的图示符号是连接两个类之间的直线。 通常,关联是双向的,可在一个方向上为关联起一个名字,在另一个方向上起另一个名字(也可不起名字)。 为避免混淆
44、,在名字前面(或后面)加一个表示关联方向的黑三角。第68页,共198页,2022年,5月20日,11点39分,星期一 在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。 重数的表示方法通常有:0.1 表示0到1个对象0.*或*表示0到多个对象1+或1.*表示1到多个对象1.15表示1到15个对象3表示3个对象 如果图中未明确标出关联的重数,则默认重数是1。第69页,共198页,2022年,5月20日,11点39分,星期一公司董事会办公室分配员工0.1*人员董事会成员0,3.8*董事会同时省略关联名和角色名,默认关联名是has(有),省略重
45、数默认1.1。每一个员工可能没有或者只有一个办公室每一个董事会没有或者有38个董事会成员(有角色名,可以省略关联名)第70页,共198页,2022年,5月20日,11点39分,星期一在一些情况下关联可能需要记录一些信息,但这些信息不能放在任何一个类中,可引入一个关联类记录这些信息。如下图:学生* 选修 *课程学生* *课程选修成绩学生* 选修 *成绩课程一个多对多关联。“成绩”属性不能放在任何一方(每个学生只有一个成绩或每门课程只有一个成绩) 创建一个关联类来保存成绩与带有关联类的多对多关联等价的两个一对多关联的图第71页,共198页,2022年,5月20日,11点39分,星期一例如:某公司有
46、许多部门,部门名惟一地确定一个部门,每个部门生产多种产品,每种产品仅由一个部门生产。公司的员工分为经理和工人两类,每个工人可参加多个工程项目,每个项目需要多名工人,每位经理可以主持多个项目,每个项目仅有一人主持,同时一个经理至少管理一个部门。画出表示上述信息结构的静态模型第72页,共198页,2022年,5月20日,11点39分,星期一(2)关联的角色 在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。 右图是一个递归关联(即一个类与它本身有关联关系)。一个人与另一个人结婚,必然一个人扮演丈夫的角色,另一个人扮演妻子的角色。第73页
47、,共198页,2022年,5月20日,11点39分,星期一(3)限定关联 限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。 在类图中把限定词放在关联关系末端的一个小方框内。 例如,某操作系统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。利用限定词“文件名”表示了目录与文件之间的关系。 用限定词把一对多关系简化成了一对一关系。第74页,共198页,2022年,5月20日,11点39分,星期一(4) 关联类 为了说明关联的性质可能需要一些附加信息,可以引入一个关联类来记录这些信息。 关联中的每个连接与
48、关联类的一个对象相联系。 关联类通过一条虚线与关联连接。第75页,共198页,2022年,5月20日,11点39分,星期一在一些情况下关联可能需要记录一些信息,但这些信息不能放在任何一个类中,可引入一个关联类记录这些信息。如下图:学生* 选修 *课程学生* *课程选修成绩学生* 选修 *成绩课程一个多对多关联。“成绩”属性不能放在任何一方(每个学生只有一个成绩或每门课程只有一个成绩) 创建一个关联类来保存成绩与带有关联类的多对多关联等价的两个一对多关联的图第76页,共198页,2022年,5月20日,11点39分,星期一连接有4个存储着控制器和按钮的请求服务信息 例如,右图是一个电梯系统的类模
49、型,队列就是电梯控制器类与电梯类的关联关系上的关联类。 从图中可以看出,一个电梯控制器控制着4台电梯,这样,控制器和电梯之间的实际连接就有4个,每个连接都对应一个队列(对象),每个队列(对象)存储着来自控制器和电梯内部按钮的请求服务信息。 电梯控制器通过读取队列信息,选择一个合适的电梯为乘客服务。关联类示例第77页,共198页,2022年,5月20日,11点39分,星期一2. 聚集 聚集也称为聚合,是关联的特例。 是表示“整体-部分”的特殊关联 聚集表示类之间的关系是整体与部分的关系。 在陈述需求时使用的“包含”、“组成”、“分为部分”等字句,往往意味着存在聚集关系。 整体类部分类项目人员1
50、*类的聚合第78页,共198页,2022年,5月20日,11点39分,星期一(1)共享聚集 如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。 例如,一个课题组包含许多成员,每个成员又可以是另一个课题组的成员,则课题组和成员之间是共享聚集关系。 一般聚集和共享聚集的图示符号,都是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。第79页,共198页,2022年,5月20日,11点39分,星期一(2)组合聚集组合(composition)是一种强类型的聚合,整体类和部分类共存亡,如果整体类被撤销,部分类也不存在。部分类的存在只是为整体类服务。 组成
51、关系用实心菱形表示。 例如,在屏幕上打开一个窗口,它就由文本框、列表框、按钮和菜单组成,一旦关闭了窗口,各个组成部分也同时消失,窗口和它的组成部分之间存在着组合聚集关系。第80页,共198页,2022年,5月20日,11点39分,星期一3. 泛化 由一个超类和几个直接子类构成的结构通常称为泛化 。类的这种关系也称为一般-特殊关系或继承关系,将现实世界实体的共同特性抽象为一般类,通过增加独有的特性而成为各种特殊类。如图所示: 一般类特殊类人员教师学生 UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。 在UML中,用一端为空心三角形的连线表示泛化关系,三角形的顶
52、角紧挨着通用元素。 泛化针对类型而不针对实例,一个类可以继承另一个类,但一个对象不能继承另一个对象。第81页,共198页,2022年,5月20日,11点39分,星期一(1)普通泛化 没有具体对象的类称为抽象类。 抽象类通常作为父类,用于描述其他类(子类)的公共属性和行为。 图示抽象类时,在类名下方附加一个标记值abstract 。第82页,共198页,2022年,5月20日,11点39分,星期一 右图下方的两个折角矩形是模型元素“笔记”的符号,其中的文字是注释,分别说明两个子类的操作drive的功能。第83页,共198页,2022年,5月20日,11点39分,星期一 抽象类通常都具有抽象操作。
53、抽象操作仅用来指定该类的所有子类应具有哪些行为。 抽象操作的图示方法与抽象类相似,在操作标记后面跟随一个性质串abstract。 与抽象类相反的类是具体类,具体类有自己的对象,并且该类的操作都有具体的实现方法。 下面给出一个比较复杂的类图示例,这个例子综合应用了前面讲过的许多概念和图示符号。第84页,共198页,2022年,5月20日,11点39分,星期一复杂类图示例第85页,共198页,2022年,5月20日,11点39分,星期一(2)受限泛化 可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。 预定义的约束有4种: 多重、不相交、完全和不完
54、全。这些约束都是语义约束。 请理解:a.多重继承,用多重约束;b.不相交继承,默认的继承;c.完全继承,用完全约束;d.不完全继承,默认关系。第86页,共198页,2022年,5月20日,11点39分,星期一4. 依赖和细化(1) 依赖关系依赖关系描述两个模型元素(类、用例等)之间的语义连接关系: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。在UML的类图中,用带箭头的虚线连接有依赖关系的两个类,箭头指向独立的类。在虚线上可以带一个版类标签,具体说明依赖的种类。 表示一个友元依赖关系,该关系使得B类的操作可以使
55、用A类中私有的或保护的成员。第87页,共198页,2022年,5月20日,11点39分,星期一 依赖的形式可能是多样的,针对不同的依赖的形式,依赖关系有不同的变体(varieties):抽象(abstraction):从一个对象中提取一些特性,并用类方法表示。绑定(binding):为模板参数指定值,以定义一个新的模板元素。组合(combination):对不同类或包进行性质相似融合。许可(permission):允许另一个对象对本对象的访问。使用(usage):声明使用一个模型元素需要用到已存在的另一个模型元素,这样才能正确实现使用者的功能(包括调用、实例化、参数、发送)。跟踪(trace)
56、:声明不同模型中元素的之间的存在一些连接。访问或连接(access):允许一个包访问另一个包的内容。调用(call):声明一个类调用其他类的操作的方法。 导出(derive):声明一个实例可从另一个实例导出。友元(friend):允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。引入(import):允许一个包访问另一个包的内容并被访问组成部分增加别名。 实例(instantiation):关于一个类的方法创建了另一个类的实例声明。参数(parameter):一个操作和它参数之间的关系。实现(realize):说明和其实之间的关系。精化(refine):声明具有两个不同语义层次上的元
57、素之间的映射。发送(send):信号发送者和信号接收者之间的关系。第88页,共198页,2022年,5月20日,11点39分,星期一(2)细化关系 当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。 假设两个模型元素A和B描述同一个事物,它们的区别是抽象层次不同,如果B是在A的基础上的更详细的描述,则称B细化了A,或称A细化成了B。 细化的图示符号为由元素B指向元素A的、一端为空心三角形的虚线。 细化用来协调不同阶段模型之间的关系,表示各个开发阶段不同抽象层次的模型之间的相关性,常常用于跟踪模型的演变。第89页,共198页,2022年,5月20日,11点39分,星期一第90页,共
58、198页,2022年,5月20日,11点39分,星期一 对象图的使用相当有限,主要用于表达数据结构的示例,以及了解系统在某个特定时刻的具体静态结构。补充内容第91页,共198页,2022年,5月20日,11点39分,星期一第92页,共198页,2022年,5月20日,11点39分,星期一第93页,共198页,2022年,5月20日,11点39分,星期一动态模型动态模型表示瞬间的、行为化的系统“控制”性质,它规定了对象模型中对象的合法变化序列。对象运行周期中的阶段就是对象的状态。对象状态是对对象属性的一种抽象。对象之间相互触发/作用的行为(称为事件),引起了一系列的状态变化。事件是某个特定时刻所
59、发生的一个系统行为,它是对引起对象从一种状态转换到另一个状态的现实世界事件的抽象。对象对事件的响应,取决于接受该触发的对象当时所处的状态,其响应包括改变自己的状态,或者是形成一个新的触发行为(事件)。动态模型描绘了对象的状态,触发状态转换的事件,以及对象行为(对事件的响应)。第94页,共198页,2022年,5月20日,11点39分,星期一请理解: (1)一个触发行为称作一个事件。(2)状态有持续性,它占用一段时间间隔。(3)状态与事件密不可分,一个事件分开两个状态,一个状态隔开两个事件。(4)事件表示时刻,状态代表时间间隔。第95页,共198页,2022年,5月20日,11点39分,星期一
60、通常,用UML提供的状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)。 每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。 也就是说,动态模型是基于事件共享而互相关联的一组状态图(Statechart Diagram)的集合。第96页,共198页,2022年,5月20日,11点39分,星期一状态图用于表现从一个状态到另一个状态的控制流。由表示状态的节点和表示状态之间转换的带箭头的直线组成。UML状态图的元素有:状态转移事件第97页,共198页,2022年,5月20日,11点39分,星期一状态是指在对象生命周期中满足某些条件、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025写字楼租赁合同范本图片
- 家庭健康咨询服务协议书范本
- 图书报刊赠与合同
- 私人土地流转合同
- 2025光伏发电采购安装合同范本
- 2025年上海房屋租赁合同的范本
- 2025电子产品购销合同(批发)
- 福州房屋合购协议书
- 2025年03月宁波市鄞州区事业单位公开招聘15人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月北京市经济和信息化局直属事业单位公开招聘工作人员5人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 数学-河南省湘豫名校联考2024-2025学年高三下学期春季学期第二次模拟考试(湘豫二模)试题和答案
- 中央2025年中国残联直属单位招聘26人笔试历年参考题库附带答案详解
- 2025年广西壮族自治区南宁市青秀区中考一模英语试题(含答案)
- GB/T 10810.2-2025眼镜镜片第2部分:渐变焦
- TSG-T7001-2023电梯监督检验和定期检验规则宣贯解读
- 中医培训课件:《中药热奄包技术》
- jgj t17-2008蒸压加气混凝土建筑应用技术
- 德育主题班会 《遵义会议》教学课件
- 高速铁路知识.ppt课件
- 吹灰器检修三措两案
- 产品推介会策划方案
评论
0/150
提交评论