1、,面向对象软件建模技术,软件建模精要,软件建模概论,1.1 软件模型 1.2 面向对象方法基础,第1章,软件建模概论,1.2.1 软件模型的概念 1.2.2 软件模型的内容,第1章,1.1 软件模型, 软件模型: 通过一定的形式和方法用来描述软件的模型。 软件建模:建立软件模型的过程被称为软件建模。,瀑布模型,软件的实现方案。 包括软件的实现结构,构件, 文件等。,一、对象1、对象的概念对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象既可以描述客观存在的事物,也可以表示由人主观构造的抽象观念。,1.2 面向对象的基本概念,2、对象在三个世界中的含义,软件中对象由一组属性
2、和操作组成。,3、软件中的对象及性质,例如:,3、软件中的对象及性质,Public class Employee private String name;private EmployeeDate birthDate;private EmployeeDate hireDate;public Employee(Sting name,int bYYYY, int bMM, int bDD, int hYYYY, int hMM,int hDD) this.name = name;birthDate = new EmployeeDate(bYYYY,bMM,bDD);hireDate = new Em
3、ployeeDate(hYYYY,hMM,hDD); public String to String() return name+” birthday:”+ birthDate.toString()+“hired:”+hireDate.toString(); ,雇员对象,Java编写的 “雇员对象”程序,二、类1、类的概念类用来描述具有相同性质的一组对象。,1.2,面向对象的基本概念,2、类的表示,三、封装1、封装的概念封装是把某些可以独立存在的内容封裹起来,构成一个整体,并把内部细节隐藏起来,仅向外部提供可以提供的外在描述。,1.2,面向对象的基本概念,2、对象的封装对象封装是把对象的属性和
4、操作结合成一个独立的系统单位,并隐藏对象的内部细节,向外部提供对象的接口。,封装,3、对象封装的作用 保护对象:防止用户直接存取对象的内部细节。 保护客户:对象内部细节变化,接口不变,并不影响用户对对象的使用和访问。,四、继承1、继承的概念继承描述一般事物与特殊事物之间的关系,特殊事物可以直接继承一般事物的属性。,1.2,面向对象的基本概念,花,四、继承2、面向对象中的继承继承:子类(特殊事物)无需定义,就可以直接继承父类(一般事物)的属性和操作。,1.2,面向对象的基本概念,3、继承的类型单继承:子类只能继承一个父类;多继承:子类可以继承多个父类。,1.2,面向对象的基本概念,五、多态1、多
5、态的概念多态描述子类在继承父类的属性和操作时,根据子类的特点,赋予子类的特殊性。,1.2,面向对象的基本概念,六、消息消息是一个对象向另外一个对象发出的服务请求。消息一般包括提供服务的对象标识,操作名,输入信息,输出信息等。,1.2,面向对象的基本概念,小结,第1章 软件建模概论,UML概述,2.1 关于UML 2.2 UML的构成,第2章,UML概述,2.1.1 UML的含义 2.1.2 UML的发展历史 2.1.3 UML和程序设计语言的关系,第2章,2.1 关于UML,2.1.1 UML的含义,UML: Unified Modeling Language 统一建模语言. 作用: 建立软件
6、模型 建模语言: 提供交流的词汇和规则 可视化: 通过标准图符构成图形来描述模型 建模语言而非编程语言 通用标准: 成为软件建模的标准语言,并且在其他领域也得到应用。,Whats UML,29,UML 1.3,UML 1.4,UML 2.0,工业化 标准 集成 多种方法,2.1.2 UML的发展历史,UML的创建人:,OMT方法 Booch方法 OOSE方法,UML,Rumbaugh Booch Jacobson(朗伯夫) (布奇) (雅各布森)UML之父 IBM Rational部门首席科学家 现代语言学家,UML概述,2.2.1 概述 2.2.2 UML的基本语言要素 2.2.3 UML的
7、语义规则 2.2.4 UML的公共机制,第2章,2.2 UML的构成,2.2.1 UML构成概述,作为建模语言,UML由以下几部分构成:基本语言组成 语言的构成成分,包括:要素,关系,图语义规则: 语言的语法和语义规则公共机制: 规范说明,语言扩展等,UML的构成,2.2.2 UML基本语言要素,2.2.2.1 UML语言中的要素,UML语言的基本构成要素,包括四类:结构: 语言的静态构成要素,有7种 行为: 语言的动态构成要素,表示事物的变化和状态分组: 对模型中事物分组组织的要素注释: 对模型中事物标注和解释,1 结构,结构: UML语言的静构成要素,包括7种:,类名,属性,操作,类: 描
8、述一组具有相同性质的对象。,接口: 描述一个类或一个构件的服务操作集。,主动类: 对象至少拥有一个进程或线程,能启动控制活动。,用例: 描述一组动作序列,参与者通过它能够完成一定的功能。,构件: 描述软件系统的构成件。,结点: 一个基本计算单元,可以是一个物理结点,客户机或服务器。,协作: 描述一组动作序列的实现。,1 结构,2 行为,行为: UML的动态构成要素,包括2种:,消息: 一组对象之间为完成某一项任务而进行的一系列消息交换的行为说明。,状态: 一个对象或一个交互在生命期内响应事件所经历的状态序列。,3 分组,分组: UML对模型的组织要素。,包: UML用包来对模型进行分组组织,一
9、个包中包括若干个相关的模型元素。,4 注释,注释: 解释模型元素的要素。,注释:对模型中的元素进行解释。,2.2.2.2 UML中的关系,关系: UML定义的模型元素之间的关系,包括四种: 关联 泛化 依赖 实现,1 关联,关联: 本指事物之间存在的固有的牵连关系,在UML中,是对具有共同结构特征、关系和语义的对象或实例之间的链接描述。 表示:一条实线,教师,学生,教学,2 泛化,泛化: 在UML中,描述事物之间的一般和特殊关系。特殊事物具有并继承一般事物的特性。 表示:一条带空心三角形箭头的实箭线,特殊,一般,例子:,3 依赖,依赖: 两个要素之间的因果关系,其中一个要素(独立要素)发生变化
10、会影响另外一个要素(依赖要素)的语义。 表示:一条虚箭线,独立要素 (因),依赖要素 (果),依赖于,4 实现,实现: 描述类元之间的语义关系,表示说明和实现间的关系。一种是接口与实现它的类和构件;另一种是用例和实现它们的协作。表示:一条带空心三角形箭头的虚箭线。,类,接口,用例,协作,实现,说明,2.2.2.3 UML中的图,UML共定义了9种图:用例图 状态图类图 活动图对象图 构件图顺序图 部署图协作图,1 用例图,用例:是外部可见的一个系统功能单元。作用:描述一组用例,参与者及其它们之间的关系,是外部用户所能观察到的系统功能的模型图。用于需求建模。,2 类图,作用:描述一组类之间的关系
11、。用于对应用领域中的概念以及与系统实现有关的内部概念建模。,3 对象图,作用:描述一组对象之间的关系。它是对象类图的一个实例,表示在某一时刻系统对象的状态、对象之间关系的状态以及对象行为静态方面的状态。,4 顺序图,作用:描述一个交互,表示了对象之间传送消息的时间顺序。,5 协作图,作用:描述一个交互,强调对象与对象之间的消息传递。,6 状态图,作用:描述一个对象所处的状态及其变化,是一个类对象所可能经历的所有历程的模型图。,7 活动图,作用:描述执行算法的工作流程中涉及的活动,是对人类组织的现实世界中的工作流程建模。,8 构件图,作用:描述一组构件及其关系,用于为系统的构件建模。,9 部署图
12、,作用:描述一组节点及其关系,允许评估分配结果和资源分配。节点是一组运行期间的系统资源,如计算机、数据库、设备或存储器。,2.2.3 UML的基本语义规则,UML有一套规则,这些规则描述了一个结构良好的模型看起来应该象什么。一个结构良好的模型应该在语义上是前后一致的,并且与所有的相关模型协调一致。 UML的基本语义规则有:命名范围可视性完整性执行,UML的构成,图,基本语言要素,语义 规则,事物,结构事物: (共7种) 行为事物: (交互, 状态机) 分组事物: (包) 注释事物: (注释),关系,依赖 关联 泛化 实现,类图, 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件
13、图, 部署图,命名 范围 可视性 完整性 执行,规范说明 修饰 通用划分 扩展机制(版型, 标记值,约束),通用机制,2.2.3 UML的基本语义规则,1)命名规定对要素、关系、图命名。例如:student 为一个类的名字 2)范围给一个名字特定含义的语境。例如:属性name:string 3)可视性规定外界对该名字识别和使用的范围。三种:public:公共 +protected:保护 # private:私用 -,2.2.3 UML的基本语义规则,4)完整性保证事物正确、一致地相互联系。例如:一个对象出现在不同的图中时,如何保证其一致性。 5)执行运行或模拟动态模型的含义是什么。,2.2.4
14、 UML的通用机制,通用机制:通过与具有公共特征的模式取得一致性,使模型更为简单和协调。UML的通用机制有:规格说明修饰对应划分扩展机制,UML的构成,图,基本语言要素,语义 规则,事物,结构事物: (共7种) 行为事物: (交互, 状态机) 分组事物: (包) 注释事物: (注释),关系,依赖 关联 泛化 实现,类图, 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件图, 部署图,命名 范围 可视性 完整性 执行,规格说明 修饰 对应划分 扩展机制(版型, 标记值,约束),通用机制,2.2.4 UML的通用机制,1)规格说明UML对每一个元素都有确定的图形表示符号,但对该图形
15、符号还有语法、语义的文字说明。例如:Actor:参与者,UML表示为:,2.2.4 UML的通用机制,2)修饰图形符号表示一个元素的主要特征,此外,可以加上修饰,表示该元素的特征。例如:矩形框表示一个类,有类名,属性,操作等。但也可增加“可视性” 等修饰。,可视性,2.2.4 UML的通用机制,3)对应划分(通用划分)指元素/元素实例、接口/实现这样的划分方法。 抽象-实例例如,类-对象,用例-具体用例 接口-实现接口表示约定,实现表示对约定的实施,2.2.4 UML的通用机制,4)扩展机制UML提供了一种绘制软件蓝图的标准语言,为了表示出各种领域的各种模型在不同时刻所有可能的细微差别,以受控
16、方法扩展该语言。 版型(构造型)用来扩展UML的词汇,增加语言元素; 或者划分某一种元素的不同类型。形式:扩展描述例1,把“包” 构造为“subsystem(子系统)”类型。,2.2.4 UML的通用机制,4)扩展机制例2,参与者是一个版型化的类,其版型为Actor。,2.2.4 UML的通用机制,4)扩展机制 标记-值标记-值用来规定模型元素的特性。通常把标记与值用等号相连,放在花括号中,放在模型元素后面。形式: 标记=值例如,院校=贵州大学指出类student是贵州大学的学生。,student 院校=云南大学,2.2.4 UML的通用机制,4)扩展机制 约束约束规定所约束的模型元素的某个条
17、件或命题必须为真,否则模型无效。约束也用 描述。形式: 约束条件例如,子集指出领导属于成员的子集。,【UML支持工具】,StarUML(免费英文UML建模工具),Rational Rose(商业版IBM开发UML建模工具),Visio(商业版微软开发通用建模工具),Visual Paradigm for UML(免费中文社群版),Archware (免费自主研发UML建模工具),小结,2.1 UML概述2.1.1 UML的含义2.1.2 UML的发展历史2.1.3 UML的特点 2.2 UML构成2.2.1 概述 2.2.2 UML的基本语言要素 2.2.3 UML的语义规则 2.2.4 UM
18、L的通用机制, 2.3 UML的视图和应用领域2.3.1 UML视图2.3.2 UML的应用领域,第2章 UML概述,用例及用例图,3.1 用例 3.2 参与者 3.3 用例之间的关系 3.4 用例图 3.5 发现用例,第3章,3.1 用例,1. 用例的概念用例(use case): 表示参与者与系统的一次交互过程。2.用例的表示 用例用椭圆表示,3. 用例的特点 用例用于描述系统的功能,这个功能是外部使用者看到的系统功能,不反映功能的实现方式。,3. 用例的特点 用例描述用户提出的一些可见需求,对应一个具体的用户目标。,数据上传,3. 用例的特点 用例反映系统与用户的一次交互过程,应该具有交
19、互的信息的传递。,帐户,密码,金额数,确认信息,帐户余额,3. 用例的特点 用例是对系统功能的描述,属于需求建模。,a 通过读卡机,储户插入ATM卡b ATM系统从卡上读取银行ID、帐号、并验证帐号。c 储户键入密码,系统检验密码。d 储户按确认键,输入取款金额。e ATM把帐号和取款金额传递给银行系统,取回帐户余额。f ATM输出现金,并显示帐户余额。d ATM记录事务到日志文件。,用例的动态事件流,用例的特点 用例用于描述系统的功能,这个功能是外部使用者看到的系统功能,不反映功能的实现方式。 用例描述用户提出的一些可见需求,对应一个具体的用户目标。 用例反映系统与用户的一次交互过程,应该具
20、有交互的信息的传递。 用例是对系统功能的描述,属于需求建模。,总结,3.2 参与者,1. 参与者的概念参与者(actor)是外部需要与系统交互的事物。也被称为活动者。2.参与者的三种类型 . 人:客户,读者,库管员. 设备:计算机,磁盘,读卡机等. 外部系统:上层系统等,3. 参与者的表示参与者可以表示为下面三种形式。,3.3 用例之间的关系,用例之间可以具有以下几种关系:. 关联关系. 泛化关系. 包含关系 . 扩展关系,1. 关联关系参与者与用例之间是关联关系,表示参与者与用例之间具有使用,交互信息的关联。,2. 泛化关系参与者与参与者之间,用例与用例之间存在一般与特殊的关系。,3. 包含
21、关系两个用例之间,一个用例(基本用例)的行为包含了另外一个用例(包含用例)的行为。包含关系用依赖关系的构造型来表示,箭头指向被包含的用例。,4. 扩展关系扩展关系表示基本用例在扩展点要增加新的行为或功能,以扩展到新用例。扩展关系用依赖关系的构造型来表示,箭头指向被扩展的用例。,extend,5.用例图中的关系及解释,3.4 用例图,1. 用例图的作用用例图用来描述软件需求模型中的系统功能,通过一组用例可以描述软件系统能够给用户提供的功能。用例图可以作为整个系统开发过程中的开发依据,指导和驱动其他模型。,2. 用例图的形式,自然语言 内容:用例的目标用例是怎么启动的参与者和用例之间的消息是如何传
22、送的用例中除了主路径外,其它路径是什么用例结束后的系统状态其它需要描述的内容,3.5 用例的描述,模板,用例:取款 参与者:储户 操作流: 通过读卡机,储户插入ATM卡 ATM系统从卡上读取银行ID、帐号、并验证帐号。 储户键入密码,系统检验密码。储户按确认键,输入取款金额。ATM把帐号和取款金额传递给银行系统,取回确认信息和帐户余额。 ATM输出现金,并显示帐户余额。ATM记录事务到日志文件。,取款用例描述实例,3.6 发现用例,发现用例的一般方法:, 找出系统外部参与者,确定系统边界和范围。 确定各参与者所期望的系统行为。 把这些系统行为命名为用例。 确定各用例之间的关系(泛化,包含,扩展
23、)。 绘制用例图。 编制用例说明。 对异常流程确定单独用例。 优化用例图,解决用例之间的冲突和重复。,某学校网上选课系统的用例分析,管理员通过系统管理界面进入系统,建立本学期要开设的各种课程,将课程信息保存到系统中,并可以对课程进行改动和删除。学生通过客户机浏览器进入系统,选择课程:可以查询课程,选择课程,支付课程费用。,案例:, 找出系统外部参与者,确定系统边界和范围。, 确定各参与者所期望的系统行为。,管理员: 增加课程修改课程删除课程 学生: 查询课程选择课程网上付费, 找出系统外部参与者,确定系统边界和范围。 确定各参与者所期望的系统行为。 把这些系统行为命名为用例。, 确定各用例之间
24、的关系(泛化,包含,扩展)。, 绘制用例图。, 用例:增加课程 参与者:管理员 操作流: 管理员选择进入管理界面,用例开始。 系统提示输入管理员密码。 管理员输入密码。 系统检验密码。A1:密码出错。 进入管理界面,系统显示当前所建立的全部课程信息。 管理员选择增加课程,管理员输入新课程信息。系统验证是否与已有课程冲突。:有冲突。系统添加新课程,并提示添加成功。系统回到管理主界面,显示所有课程,用例结束。, 编制用例说明。, 对异常流程确定单独用例。 优化用例图,解决用例之间的冲突和重复。,小结,3.1 用例3.1.1 用例的概念3.1.2 用例的表示3.1.3 用例的特点 3.2 参与者3.
25、2.1 参与者的概念 3.2.2 参与者的类型 3.2.3 参与者的表示 3.2.4 参与者之间的关系, 3.3 用例之间的关系3.3.1 关联关系3.3.2 泛化关系3.3.3 包含关系3.3.4 扩展关系 3.4 用例图3.4.1 用例图的作用3.4.2 用例图的形式 3.5 用例的描述 3.6 发现用例,第3章 用例和用例图,问题:,1、下面说法错误的是:A 泛化表示一般和特殊的关系B 用例之间存在泛化关系C 参与者之间存在泛化关系D 参与者和用例之间存在泛化关系,?,问题:,2、下面说法错误的是:A 参与者是与所建立系统交互的人或物B 参与者可以是人,也可以是其他系统C 参与者是系统的
26、一部分,是用例图的重要组成部分D 参与者之间存在泛化关系,?,类图及对象图,4.1 类的定义 4.2 类的关系 4.3 类图 4.4 对象图 4.5 几个特殊问题,第4章,类图及对象图,4.1.1 类的概念 4.1.2 类的属性 4.1.3 类的操作 4.1.4 类的类型,第4章,4.1 类的定义,4.1.1 类的概念,1. 类的定义类(class): 具有相似结构、行为和关系的一组对象。2.类的表示,类名,属性,操作,3.类的其他几种表示形式, 简化表示, 缩略表示,实体类,界面类,控制类,学生,4.类名, 名词或名词短语(动词或动词短语表示控制类), 尽可能用明确、简短,业务领域中事物的名
27、称,避免使用抽象、无意义的名词,例如:人,桌子,图形,汇总, 用英文,第1个字母大写,例如:Shape, Person, CheckingAccdount, 可分为简单类名,带路径类名,例如: CheckingAccdountBanking:CheckingAccdount,例如:帐户,订单,事物,问题:,1、指出下面命名有问题的的类。,?,4.1.2 类的属性,1. 属性的含义属性(attribute): 描述类所表示事物的静态性质。2.属性的格式,可见性属性名:类型 多重性次序=初始值特性,4.1.2 类的属性,1. 属性的含义属性(attribute): 描述类所表示事物的静态性质。2.
28、属性的格式,第1个英文单词首字母小写,其它单词首字母大写contactNamecredintLimitisPrepaid,可见性属性名:类型 多重性次序=初始值特性,4.1.2 类的属性,1. 属性的含义属性(attribute): 描述类所表示事物的静态性质。2.属性的格式,该属性对外部实体的显现程度.可见public : + 受限protected: #私有private : -,可见性属性名:类型 多重性次序=初始值特性,4.1.2 类的属性,1. 属性的含义属性(attribute): 描述类所表示事物的静态性质。2.属性的格式,属性的数据类型:字符串:String日期:Date布尔:
29、Boolean整型:int,可见性属性名:类型 多重性次序=初始值特性,4.1.2 类的属性,1. 属性的含义属性(attribute): 描述类所表示事物的静态性质。2.属性的格式,表示属性值的取值的多寡,以及有序性:例如: name:String01表示属性”name”可能无值,也可能仅有一个值.points:Point2* ordered表示有两个或多个值,有序,可见性属性名:类型 多重性次序=初始值特性,4.1.2 类的属性,1. 属性的含义属性(attribute): 描述类所表示事物的静态性质。2.属性的格式,表示属性初始所取的值:例如: #visibility:Boolean=f
30、alse表示属性”visibility”初始取”false”,可见性属性名:类型 多重性次序=初始值特性,4.1.2 类的属性,1. 属性的含义属性(attribute): 描述类所表示事物的静态性质。2.属性的格式,表示属性约束说明:例如: #visibility:Boolean=false读写表示属性”visibility”可读,写,可见性属性名:类型 多重性次序=初始值特性,问题:,1、指出下面属性名的含义。,?,+姓名:String=“黎明” #出生日期:Date=1999-10-21 -年薪:float=12.01R/W,4.1.3 类的操作,1. 操作的含义操作(operation
31、): 描述类所表示事物的动态性质。2.操作的格式,可见性操作名(参数列表):返回类型特性,4.1.3 类的操作,1. 操作的含义操作(operation): 描述类所表示事物的动态性质。2.操作的格式,可见性操作名(参数列表):返回类型特性,第1个英文单词首字母小写,其它单词首字母大写close()creditRecording(),4.1.3 类的操作,1. 操作的含义操作(operation): 描述类所表示事物的动态性质。2.操作的格式,该操作对外部实体的显现程度.可见public : + 受限protected: #私有private : -,可见性操作名(参数列表):返回类型特性,4
32、.1.3 类的操作,1. 操作的含义操作(operation): 描述类所表示事物的动态性质。2.操作的格式,该操作的输入参数,可以为空.例如: #create()+hide()-ttachXWindow(xwin:Xwindow),可见性操作名(参数列表):返回类型特性,4.1.3 类的操作,1. 操作的含义操作(operation): 描述类所表示事物的动态性质。2.操作的格式,该操作的返回值的类型.例如: +display():Location,可见性操作名(参数列表):返回类型特性,问题:,1、指出下面操作名的含义。,?,+设置姓名(String:name) +获取名字():Strin
33、g +创建一本书(),4.1.4 类的类型,边界类位于系统与外界的交界处,承担系统与外界的信息功能.,1.边界类(界面类),边界类处在用例图中,参与者与用例的关联处,可以根据用例图发现边界类。,实体类对应着现实中的客观实物,用来保存信息,一般对应着数据表、文件等。,2.实体类,实体类可以从现实中存在的客观事物,以及需要持久存放的信息两方面来发现。,控制类承担着事务处理,控制调控的控制作用。,3.控制类,一个用例中最少会有一个控制类,用来控制用例中的事件顺序,也可以在多个用例之间协调用例之间的联系。,例子:订货系统,类图及对象图,4.2.1 关联 4.2.2 聚集和组合 4.2.3 泛化 4.2
34、.4 依赖,第4章,4.2 类之间的关系,4.2.1 关联,1. 关联的定义关联的通俗含义表示事物之间的一种牵连式的固有联系。例如:,关联,4.2.1 关联,1. 关联的定义关联的本质含义关联(association): 模型元素之间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链接的描述。关联可以分为单向关联,双向关联。,单向关联,双向关联,2.关联的特性, 关联名,关联名,如果关联关系已经清楚,就无需关联名,2.关联的特性, 关联的角色,如果关联名与角色名相同,则不标出角色名,关联的角色,2.关联的特性, 关联的多重性,01 : 0或1 0n ,0* : 0或多 1 1n
35、 : 1到多 * : 0到多,关联的角色,关联的多重性,2.关联的特性, 关联类,通过关联类描述关联的属性,操作,及其它信息。,关联类,2.关联的特性, 关联的约束,通过约束加强关联的含义。 例如,“帐户”不能同时与“人”和“公司”有关联。,约束,2.关联的特性, 限定关联,通过限定符来规定关联的限定关系。 例如,“文件目录”通过“文件名”来与具体的文件对象进行关联。“银行”通过“帐户”与具体的“人”对象进行关联。,限定关联,3.关联的种类, 一元(自返)关联, 二元关联,3.关联的种类, 多元关联,三元关联,4.对关联须注意的一个问题,关联一定指的是类中对象与类中的对象之间的连接对应关系。,
36、类图,对象图,问题:,“班级”和“班长”两个类之间存在管理关系,一个班级仅可以有一个班长,一个班长只能是一个班级的班长,标出这两个类的关系。,?,问题:,“班主任”和“学生”两个类之间存在管理关系,一个班主任仅可以管理一个班的学生,一个班的学生,只能由一个班主任来管理,标出这两个类的关系。,?,答案1:,答案2:,答案3:,4.2.2 聚集和组合,1. 聚集聚集(aggregation): 表示类之间一种松散的整体与部分的组成关系,是一种特殊的关联。,表示,例子,4.2.2 聚集和组合,2. 组合组合(composition): 表示类之间一种紧密的整体与部分的组成关系,也是一种特殊的关联。,
37、表示,例子,4.2.2 聚集和组合,3. 聚集与组合的区别 聚集松散,组合紧密; 一个部分事物对象可以属于多个聚集对象,但一个部分事物对象仅能属于一个组合对象; 聚集的对象生命周期可以不同,但组合对象则是同存同亡。,问题:,1、计算机由CPU、内存、软盘、硬盘、显示器、键盘、鼠标组成,用类图表示这种关系。,?,2、举出一个具有聚集关系的类图的例子。,4.2.3 泛化,1. 泛化的含义泛化(generalization): 表示事物之间的一般与特殊的关系。也可以称为继承关系。泛化关系除了表示类与类之间的关系之外,还可以表示参与者、用例、包、构件、接口等建模元素之间的关系。,4.2.3 泛化,2.
38、 泛化的表示,例子,表示,例子:,4.2.4 依赖,1. 依赖的含义依赖(dependency): 表示两个元素X、Y,如果X的变化必然导致Y的变化,则称Y依赖X。依赖关系不仅限于类,用例、包、构件之间都可以存在依赖关系。,4.2.4 依赖,2. 依赖的表示,例子,表示,问题:,下面几个模型图中,( )能够正确地表示出“一个雇员最多有一个经理,经理可以管理多个雇员,也可以不管理一个雇员”这样的意思。,?,问题:,下面对类之间关系的描述,( )是正确的。A 聚集关系中的部分只属于一个整体;B 组合关系中的部分可能属于整体;C 关联是表示对象之间的关系;D 泛化是表示对象之间的关系。,?,类图及对
39、象图,4.3.1 类图的概念 4.3.2 类图的抽象层次 4.3.3 建立类图,第4章,4.3 类图,4.3.1 类图的概念,类图(Class Diagram): 是由类,相关建模元素,及其关系构成的图,用来描述类之间的静态关系。类图在系统中处在核心位置。也是UML中最为重要的一种图。,4.3.2 类图的抽象层次,在系统的不同开发阶段,类图可以具有不同的抽象程度。随着开发的深入,类图应该越来越详细、具体。可以分为:概念层,逻辑层,实现层。,概念层,逻辑层,实现层,建立类图的一般步骤:, 研究分析问题领域,确定系统需求; 确定类,明确类的含义和职责,确定类的属性和操作; 确定类之间的关系。关联,
40、泛化,聚集,组合,依赖; 调整和细化类及其关系,解决重复和冲突; 绘制类图,并增加相应说明。,4.3.3 建立类图,4.4 对象图,类图,对象图,类图及对象图,第4章,4.5 几个特殊问题, 对象类可以实例化为对象的类。我们前面所提的例子都属于对象类。 抽象类不能直接产生实例的类。抽象类的类名一般被写成为斜体。,4.5.1 对象类和抽象类,派生属性和派生关联的概念可以从其它属性或关联计算推演得到的属性和关联。在派生的名字前面加/,以示区别。派生容易产生不一致,应注意。,4.5.2 派生属性和派生关联,派生关联,派生属性,注意点:,1、类图是用来描述系统资源和要素相互之间的静态结构关系。注意类图
41、和用例图之间的区别!,注意点:,2、类可以优化,一个复杂类可以分解为多个简单类。,例如:,注意点:,3、描绘类图时,应根据所要表现的应用需要来提取要素,绘制类图。,例如:,描述企业与个人雇佣关系的类图。,方法1:,方法2:,方法3:,小结, 4.1 类的定义4.1.1 类的概念4.1.2 类的属性4.1.3 类的操作4.1.4 类的类型 4.2 类之间的关系4.2.1 关联4.2.2 聚集和组合4.2.3 泛化4.2.4 依赖,第4章 类图和对象图,问题 :,1、下面正确的说法是:A 对象表示客观中存在的实物B 类是对象的实例C 类是具有相同属性和操作的对象的集合D 对象也就是类,?,问题:,
42、2、下面说法正确的是:A 抽象类是对类的抽象B 抽象类是对对象的抽象C 对象类是指类的对象D 对象类是具有对象实例的类,?,问题:,3、下面说法正确的是:A 关联表示两个类之间的关系B 关联表示两个类中对象之间的链接关系C 组合表示事物之间的一般和特殊关系D 泛化表示事物之间的整体与部分关系,?,交互图,5.1 概述 5.2 顺序图 5.3 协作图 5.4 顺序图与协作图比较,第5章,交互图,1 交互图的概念 2 交互图的类型 3 交互图的作用,第5章,5.1 概述,1 交互图的概念交互图(interaction): 用来描述对象之间,以及对象与参与者之间的动态协作关系以及协作过程中行为次序的
43、图形文档。2.交互图的类型 顺序图,协作图3 交互图的作用分析为了实现一个用例的功能所参与的对象,以及这些对象相互之间的动态消息联系。,交互图,5.2.1 顺序图的概念 5.2.2 顺序图的样式和元素 5.2.3 消息 5.2.4 建立顺序图,第5章,5.2 顺序图,1. 顺序图的概念顺序图(sequence diagram): 用来描述为了完成确定事务,对象之间按照时间消息交互的顺序关系。2. 顺序图样式和元素,对象,消息,生命线,控制焦点,2. 顺序图样式和元素 对象及命名,2. 顺序图样式和元素 对象的命名, 生命线表示对象存在的时间,对象下面一条虚线表示。,对象生命线,2. 顺序图样式
44、和元素 对象的命名, 生命线表示对象存在的时间,对象下面一条虚线表示。 控制焦点小矩形,表示这个时间对象将执行操作。,控制焦点,2. 顺序图样式和元素 对象的命名, 生命线表示对象存在的时间,对象下面一条虚线表示。 控制焦点小矩形,表示这个时间对象将执行操作。 消息带箭头的连线,表示对象之间传输的信息。,消息,3. 消息消息:对象之间传输的信息。消息有以下类型: 调用消息调用消息(也称为同步消息)的发送者把控制传递给接收者,然后停止活动,等到消息接收者放弃或返回控制。,调用消息,3. 消息异步消息异步消息的发送者通过消息把信号传递给接收者,然后继续自己活动,不等待接收者返回消息或控制。,异步消
45、息,3. 消息返回消息返回消息表示从过程调用返回。如果是从过程调用返回,则返回消息是隐含的,可以不画出来。对于非过程调用,如果有返回消息,必须画出来。,返回消息,3. 消息阻止消息阻止消息指消息发送者发出消息给接收者,如果接收者无法立即接收这个消息,则发送者放弃这个消息。,阻止消息,3. 消息超时消息超时消息指消息发送者发出消息给接收者,并按指定时间等待,如果接收者无法在指定时间内接收这个消息,则发送者放弃这个消息。,超时消息,3. 消息类型 同步消息 异步消息 返回消息 阻止消息 超时消息,3. 消息消息的语法格式警戒条件消息序号返回值:=消息名(参数列表),例如:2:display(x,y
46、) 简单消息1.2.1:p:=find(specs) 嵌套消息,消息带返回值x04:invert(x,color) 条件消息3.1 *update() 循环消息,零售业务顺序图,4.建立顺序图 从用例中识别交互过程; 识别参与交互过程的对象; 为每一个对象设置生命线,并确定对象的存在期限; 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息; 如果需要,可以给消息增加时间约束,以及前置条件和后置条件。,实例:图书馆借书处理的顺序图, 用例:借书 参与者:管理员,借阅者 操作流: 管理员进入图书借阅界面,用例开始。 系统要求输入借阅者的借书证编码。系统检验借书证编码,如果正确,则显示借阅
47、者的信息。A1:借书证编码有错。A2: 如果该借阅者所借图书已经超期,则提示,本次拒借. 系统要求输入所借图书的条码。 系统显示所借图书的信息。 确认借书。系统回到上一界面,等待处理下一借书。,实例:图书馆借书处理的顺序图,实例:图书馆借书处理的顺序图, 识别交互过程。读者在借书时,先由管理员把借书证上的读者编号扫描给系统,系统检查这个读者的借书证合法信息,如果不合法,则系统给出提示,如果正确系统返回读者的身份信息,以及读者的借阅信息。如果读者借书数量没有超过借书的上限,则把要借书的图书编号输入系统,系统登记借书信息,并返回借书成功信息,借书过程完成。,实例:图书馆借书处理的顺序图, 识别参与交互过程的对象;,绘制借书处理类图,实例:图书馆借书处理的顺序图, 为每一个对象设置生命线,并确定对象的存在期限; 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息 绘制顺序图,交互图,5.3.1 协作图的概念 5.3.2 协作图的样式和元素 5.3.3 建立协作图,第5章,5.3 协作图,1. 协作图的概念协作图(collaboration diagram): 用来描述为了完成确定事务,各对象之间消息联系的结构关系。2. 协作图样式和元素,