OO2分析3类图

上传人:沈*** 文档编号:196160399 上传时间:2023-03-27 格式:PPT 页数:88 大小:750KB
收藏 版权申诉 举报 下载
OO2分析3类图_第1页
第1页 / 共88页
OO2分析3类图_第2页
第2页 / 共88页
OO2分析3类图_第3页
第3页 / 共88页
资源描述:

《OO2分析3类图》由会员分享,可在线阅读,更多相关《OO2分析3类图(88页珍藏版)》请在装配图网上搜索。

1、2023-3-25 1 第四章第四章1 1 定义对象与类定义对象与类2 2 定义属性与操作定义属性与操作3 3 定义关系定义关系4 4 定义接口定义接口2023-3-25 2 第四章第四章1 1 定义对象与类定义对象与类概念与表示法概念与表示法 对象对象是具有明确语义边界并封装了状态和行为的实体,由一是具有明确语义边界并封装了状态和行为的实体,由一组属性和作用在这组属性上的一组操作构成,是构成系统的一组属性和作用在这组属性上的一组操作构成,是构成系统的一个基本单位,它用于描述客观事物。个基本单位,它用于描述客观事物。类类是对一组具有相同属性和操作的一组对象的抽象描述。是对一组具有相同属性和操作

2、的一组对象的抽象描述。一个类的所有对象具有相同的属性。一个类的所有对象具有相同的属性。各个对象的属性值则可以互不相同,并且随着程序的执行而各个对象的属性值则可以互不相同,并且随着程序的执行而变化。变化。操作操作,对于一个类的所有对象都是一样的。,对于一个类的所有对象都是一样的。由一个类生成的一个对象可以扮演不同的角色。由一个类生成的一个对象可以扮演不同的角色。一个类的一个一个类的一个角色角色是是在特定的语境下该类的对象所呈现的行在特定的语境下该类的对象所呈现的行为。为。普通普通类类表示法:表示法:在在模型模型中用类符号来表示一个类,中用类符号来表示一个类,它代表属于该类的全部对象实例。它代表属

3、于该类的全部对象实例。对象对象对象名:类名对象名:类名类类 名名属性属性操作操作在识别对象与类时,问题域和系统责任仍是在识别对象与类时,问题域和系统责任仍是工作的基础。因为二者从不同的角度告诉分工作的基础。因为二者从不同的角度告诉分析员应该设立哪些对象。析员应该设立哪些对象。识别对象与类识别对象与类 2023-3-25 6 u研究问题域研究问题域 侧重于侧重于客观存在的事物与系统中对象的映射客观存在的事物与系统中对象的映射。可以启发分析员发现对象的因素包括:人员、组可以启发分析员发现对象的因素包括:人员、组织机构、物品、设备、事件(如索赔、上访、交易)织机构、物品、设备、事件(如索赔、上访、交

4、易)、表格、日志、报告和结构等。、表格、日志、报告和结构等。其中的结构可能是多种多样的,例如,在概念类其中的结构可能是多种多样的,例如,在概念类别上,汽车之上有车辆,之下可细分为客车和轿车,别上,汽车之上有车辆,之下可细分为客车和轿车,左右有摩托车和拖拉机,之内有发动机。它还可作成左右有摩托车和拖拉机,之内有发动机。它还可作成车队的一个成分。车队的一个成分。u考虑系统边界考虑系统边界 1)把一些)把一些人员和设备人员和设备看作问题域范畴以内的事物看作问题域范畴以内的事物,侧重于以系统中的对象模拟现实中的人和设备。,侧重于以系统中的对象模拟现实中的人和设备。2)对系统边界之外与系统进行交互的)对

5、系统边界之外与系统进行交互的参与者参与者,系,系统中需要设立相应的对象处理系统与这些实际的人和统中需要设立相应的对象处理系统与这些实际的人和设备的交互,侧重于以系统中的对象处理现实中的人设备的交互,侧重于以系统中的对象处理现实中的人和设备与系统的交互。和设备与系统的交互。3)在系统中设立一个对象,)在系统中设立一个对象,处理与外系统的接口处理与外系统的接口。人员人员设备设备外系统外系统从不同的角从不同的角度考虑人员度考虑人员和设备和设备2023-3-25 8 u考虑系统责任考虑系统责任如果已经建立了用况模型,考虑执行下列的附加步骤:如果已经建立了用况模型,考虑执行下列的附加步骤:使用用例产生场

6、景。使用用例产生场景。使用场景寻找已错过的类。使用场景寻找已错过的类。从名词到对象或类从名词到对象或类通常通常有一对一的映射。运用名词、代词和名有一对一的映射。运用名词、代词和名词短语识别对象和类(寻找词短语识别对象和类(寻找“现实世界现实世界”的对象和类)。的对象和类)。用单个的专有名词或代词(用单个的专有名词或代词(Jim、他、她、雇员号、他、她、雇员号5、我的工作、我的工作站、我的家)以及直接引用的名词(第六个参赛者、第一百万次购站、我的家)以及直接引用的名词(第六个参赛者、第一百万次购买)识别对象。买)识别对象。用复数名词(人们、顾客们、开发商们、用户们)以及普通名用复数名词(人们、顾

7、客们、开发商们、用户们)以及普通名词(人、顾客、雇员、工作站)来识别类。词(人、顾客、雇员、工作站)来识别类。审查与筛选审查与筛选(1)舍弃无用的对象)舍弃无用的对象通过属性判断:通过属性判断:是否通过属性记录了某些有用的信息?是否通过属性记录了某些有用的信息?通过操作判断:通过操作判断:是否通过操作提供了某些有用的功能是否通过操作提供了某些有用的功能*?二者都不是二者都不是无用无用 但是,也存在这样的对象,没有属性仅提供操作,或有属但是,也存在这样的对象,没有属性仅提供操作,或有属性无操作的情况。性无操作的情况。2023-3-25 10(2)对象的精简)对象的精简只有一个属性的对象只有一个属

8、性的对象只有一个只有一个操作操作的对象的对象班级班级班主任班主任姓名姓名11班级班级班主任姓名班主任姓名输出设备输出设备格式转换器格式转换器文件格式转换文件格式转换输出设备输出设备文件格式转换文件格式转换2023-3-25 11 系统责任所要求的某些功能系统责任所要求的某些功能例如系统安装、配置、信息备例如系统安装、配置、信息备份、浏览份、浏览可能无法从问题域中找到相应的对象来提供这些功可能无法从问题域中找到相应的对象来提供这些功能,可在设计阶段考虑专门为它们增加一些对象,既把它们推迟能,可在设计阶段考虑专门为它们增加一些对象,既把它们推迟到设计阶段考虑。到设计阶段考虑。系统责任要求的某些功能

9、可能与实现环境有关,也推迟到设系统责任要求的某些功能可能与实现环境有关,也推迟到设计阶段考虑。计阶段考虑。例如:与图形用户界面(例如:与图形用户界面(GUIGUI)系统、数据管理系)系统、数据管理系统、硬件和操作系统有关的对象。统、硬件和操作系统有关的对象。2023-3-25 12 在问题域中名词不总是类或对象。筛选名词列表,识别超出在问题域中名词不总是类或对象。筛选名词列表,识别超出系统范围的事物。系统范围的事物。通常用几个不同的名词或名词短语描述同样的事(概念或思通常用几个不同的名词或名词短语描述同样的事(概念或思想)。必须选定一个词,而将可替代的词排除。例如,想)。必须选定一个词,而将可

10、替代的词排除。例如,“工作地工作地点点”和和“办公室办公室”可能是相同的概念。可能是相同的概念。问题域中的某些事物实际上是另一种事物的附属品和一定意问题域中的某些事物实际上是另一种事物的附属品和一定意义上的抽象。例如,工作证对职员、车辆执照对车辆、图书索引义上的抽象。例如,工作证对职员、车辆执照对车辆、图书索引卡片对图书都是这样的关系。卡片对图书都是这样的关系。有些时候,用相同的名词捕获两个不同的概念;这就必须产有些时候,用相同的名词捕获两个不同的概念;这就必须产生一个新词(补充对象),以确保每一个词捕获一个概念或生一个新词(补充对象),以确保每一个词捕获一个概念或“事事物物”。如果用不同的词

11、汇描述在不同的语义领域中的同一实际事物如果用不同的词汇描述在不同的语义领域中的同一实际事物(即捕获不同的概念),就需要把这样的概念作为不同的对象。(即捕获不同的概念),就需要把这样的概念作为不同的对象。抽象出类抽象出类u对象分类对象分类 先使用问题域知识从对象中识别出类。先使用问题域知识从对象中识别出类。u对类进行调整对类进行调整 (1)类的属性或操作不适合该类的全部对象类的属性或操作不适合该类的全部对象 例:例:“汽车汽车”类的类的“乘客限量乘客限量”属性,不适合于吊车、铲车属性,不适合于吊车、铲车问题:分类不够详细问题:分类不够详细进一步划分特殊类进一步划分特殊类 (2)属性及操作相同的类

12、)属性及操作相同的类考虑能否合并为一个类,如计算机与吸尘器考虑能否合并为一个类,如计算机与吸尘器 (3)属性及操作相似的类)属性及操作相似的类考虑能否提升出一个一般类,或形成整体部分结构。考虑能否提升出一个一般类,或形成整体部分结构。例例:轿车、货车,抽象出汽车;机床与鼓风机用电机做成分轿车、货车,抽象出汽车;机床与鼓风机用电机做成分.(4)同一事物的重复描述)同一事物的重复描述例:例:“职员职员”和和“工作证工作证”取消其中一个取消其中一个认识对象的主动行为并识别主动对象认识对象的主动行为并识别主动对象主动对象主动对象是具有主动行为的对象,在设计阶段是拥有线是具有主动行为的对象,在设计阶段是

13、拥有线程或进程并能够启动控制活动的对象。程或进程并能够启动控制活动的对象。主动类主动类是其实例是其实例为主动对象的类。为主动对象的类。识别主动对象的策略:识别主动对象的策略:(1)考虑问题域)考虑问题域 哪些对象需呈现主动行为哪些对象需呈现主动行为*?-按定义按定义(2)考虑系统责任)考虑系统责任 根据系统责任观察系统功能的构成层次,重点考虑完成最外层根据系统责任观察系统功能的构成层次,重点考虑完成最外层功能的对象是否应定义为主动对象。功能的对象是否应定义为主动对象。(3)考虑系统边界)考虑系统边界 哪些对象与参与者交互?哪些对象与参与者交互?如果一个交互是由参与者发起的,第一个处理该交互如果

14、一个交互是由参与者发起的,第一个处理该交互的对象是主动对象的对象是主动对象 (4)进行操作执行路线的逆向追踪。)进行操作执行路线的逆向追踪。在分析阶段不能完全确定主动对象在分析阶段不能完全确定主动对象2023-3-25 15 activeactive 类类 名名类类 名名主动类主动类对象名:类名主动对象类类 名名对象名:类名主动类的线框是粗黑的,或在主动类名之前要加一个主动性标记主动类的线框是粗黑的,或在主动类名之前要加一个主动性标记 active;在尚未确定是不是主动对象之前,暂时用普通对象的类符号表示。在尚未确定是不是主动对象之前,暂时用普通对象的类符号表示。类的命名类的命名q适合该类及其

15、特殊类的全部对象实例适合该类及其特殊类的全部对象实例*汽车加摩托车汽车加摩托车-机动车;还有马车机动车;还有马车-车辆车辆q反映个体而不是群体反映个体而不是群体*书书-书籍;船书籍;船-船舶船舶*q使用名词,或带有定语的名词使用名词,或带有定语的名词,避免无意义的符号,避免无意义的符号 如线装书如线装书q考虑使用适当种类的语言文字对类命名。考虑使用适当种类的语言文字对类命名。在中国:可用中、英文双重命名在中国:可用中、英文双重命名*建立类图的对象层建立类图的对象层 用类符号表示每个对象类用类符号表示每个对象类填写类描述模板填写类描述模板若发现新的属性与操作、关系,可以随时加到类符号中。若发现新

16、的属性与操作、关系,可以随时加到类符号中。2023-3-25 17 第四章第四章2 2 定义属性与操作定义属性与操作 属性属性是用来描述对象静态特征的一个数据项是用来描述对象静态特征的一个数据项。注意:属性是与问题高度相关的。注意:属性是与问题高度相关的。从技术观点上,属性是一些变量(数据项或状态信息),从技术观点上,属性是一些变量(数据项或状态信息),包含它的每一个对象(实例)都具有自己的值。包含它的每一个对象(实例)都具有自己的值。按照面向对象方法的封装原则,一个对象的属性和操作是按照面向对象方法的封装原则,一个对象的属性和操作是紧密结合的,对象的属性只能由这个对象的操作存取。紧密结合的,

17、对象的属性只能由这个对象的操作存取。可见性可见性 属性名属性名:类型类型=初始值初始值 可见性分为可见性分为、(包,只有在同一包中声明的类能够使用这一属性)。(包,只有在同一包中声明的类能够使用这一属性)。在对象在对象/类中,必须给每一个属性一个唯一的名字。类中,必须给每一个属性一个唯一的名字。属性的类型可以是常见的基本数据类型,也可以是自己定属性的类型可以是常见的基本数据类型,也可以是自己定义的类型。义的类型。通过在类范围属性名和类型表达式画下通过在类范围属性名和类型表达式画下划线的方式,表示类范围的属性,否则属性划线的方式,表示类范围的属性,否则属性是实例范围的。是实例范围的。类类 名名普

18、通类普通类 属性属性1 1属性属性n n操作操作1 1操作操作m m OO方法中有方法中有“实例属性实例属性”和和“类属性类属性”的概念之分。上的概念之分。上面谈到的只是实例属性。面谈到的只是实例属性。类属性类属性是描述类的所有对象共同特征的一个数据项,对于是描述类的所有对象共同特征的一个数据项,对于任何对象实例,它的属性值都是相同的。任何对象实例,它的属性值都是相同的。C+中冠以中冠以static的成员变量是类属性,这样的属性对一个的成员变量是类属性,这样的属性对一个类的全部对象实例只是一份共同的数据空间,所以对任何对象类的全部对象实例只是一份共同的数据空间,所以对任何对象而言,该属性的值总

19、是相同的。而言,该属性的值总是相同的。实例属性和类属性各有不同的用途实例属性和类属性各有不同的用途*。识别属性识别属性 按常识这个对象应该有哪些属性?按常识这个对象应该有哪些属性?在当前的问题域中,对象应该有哪些属性?在当前的问题域中,对象应该有哪些属性?根据系统责任,这个对象应具有哪些属性根据系统责任,这个对象应具有哪些属性*?如信用卡的使用如信用卡的使用建立这个对象是为了保存和管理哪些信息?建立这个对象是为了保存和管理哪些信息?对象为了完成其功能,需要增设哪些属性?对象为了完成其功能,需要增设哪些属性?对象是否需要通过专设的属性区别其状态对象是否需要通过专设的属性区别其状态*?如设备如设备

20、用什么属性表示聚合和关联?用什么属性表示聚合和关联?-不建议不建议可利用需求文档中的形容词。可利用需求文档中的形容词。若一个属性的结构较为复杂(即不仅仅是一些简单的数字或文本),若一个属性的结构较为复杂(即不仅仅是一些简单的数字或文本),可考虑把其作为对象。可考虑把其作为对象。筛选筛选q是否体现了以系统责任为目标的抽象;例:书的重量?是否体现了以系统责任为目标的抽象;例:书的重量?q是否描述对象本身的特征;例:课程是否描述对象本身的特征;例:课程电话号码?电话号码?q一个属性所对应的一个事物性质的粒度要适当。一个属性所对应的一个事物性质的粒度要适当。例如人的通信地址,包括国家、省、城市、街道、

21、门牌号码等内容,但这些内容在通信地例如人的通信地址,包括国家、省、城市、街道、门牌号码等内容,但这些内容在通信地址这个概念上是不可分的。在定义址这个概念上是不可分的。在定义“人员人员”对象的属性时,应该使用一个属性对象的属性时,应该使用一个属性“通信地址通信地址”,而,而不应把有关通信地址的各项内容拆散开用多个属性来描述。不应把有关通信地址的各项内容拆散开用多个属性来描述。q若一个对象与另一个对象有关系,其属性必须捕获该对象的性若一个对象与另一个对象有关系,其属性必须捕获该对象的性质,而不是关系或关系中的其他对象的性质;质,而不是关系或关系中的其他对象的性质;如属性必须是整个实体的特征,而不是

22、其成分的特征如属性必须是整个实体的特征,而不是其成分的特征*q是否可通过继承得到?是否可通过继承得到?q可以从其他属性直接导出的属性可以从其他属性直接导出的属性;q与实现有关的因素,推迟到与实现有关的因素,推迟到OOD考虑(规范化、对象标识、性考虑(规范化、对象标识、性能问题)能问题)命名:原则与类的命名相同命名:原则与类的命名相同定位:针对所描述的对象,适合全部对象实例。定位:针对所描述的对象,适合全部对象实例。把每个属性都填写到相应的类符号中去,并在相应的类把每个属性都填写到相应的类符号中去,并在相应的类描述模板中进行详细说明。描述模板中进行详细说明。2023-3-25 23 对象行为分类

23、对象行为分类(1)系统行为)系统行为例:创建、删除、复制、转存例:创建、删除、复制、转存(2)对象自身的行为)对象自身的行为算法简单的操作算法简单的操作例:读、写属性值例:读、写属性值(3)对象自身的行为)对象自身的行为算法复杂的操作算法复杂的操作计算或监控计算或监控 操作操作是类的对象被要求执行的服务。是类的对象被要求执行的服务。可见性可见性 操作名操作名(参数列表参数列表):返回类型返回类型 可见性:可见性:+(公有的公有的)、#(受保护的受保护的)、-(私有的私有的)或或(包)(包)。内部操作和外部操作内部操作和外部操作,特征标记特征标记 类范围操作(类范围操作(静静态操作)是用态操作)

24、是用来创来创造实例或造实例或者者操操纵静纵静态属性的态属性的操作。操作。例如例如C+中的前面冠以中的前面冠以static的成员函数,就是类范围操作的成员函数,就是类范围操作。类范围的操作用带下划线的名字和类型表达式串表示。实例类范围的操作用带下划线的名字和类型表达式串表示。实例范围操作是默认的,对其不用标记。范围操作是默认的,对其不用标记。概念与表示法概念与表示法 如果想要在如果想要在OOA阶段记录方法的详细文字描述或算法,则把阶段记录方法的详细文字描述或算法,则把它们放在类描述模板中,如有必要也可放在注释中。该项工作应它们放在类描述模板中,如有必要也可放在注释中。该项工作应该在该在OOD阶段

25、完成。阶段完成。诸如创建(创建并初始化一个新对象)、连接(将一个对象与诸如创建(创建并初始化一个新对象)、连接(将一个对象与另一个对象连接)、访问(得到或设置属性值)、断开连接(将另一个对象连接)、访问(得到或设置属性值)、断开连接(将一个对象与另一个对象的连接断开)和删除一个对象之类的操作一个对象与另一个对象的连接断开)和删除一个对象之类的操作都属于在算法上是简单的操作,在都属于在算法上是简单的操作,在OOA不予以考虑。不予以考虑。在在OOA中,只对识别那些必须由对象提供的、在算法上复杂中,只对识别那些必须由对象提供的、在算法上复杂的业务操作(如要进行某些计算或监控操作的业务操作(如要进行某

26、些计算或监控操作 )感兴趣。)感兴趣。(1)考虑系统责任)考虑系统责任有哪些功能要求在本对象提供*?(2)考虑问题域)考虑问题域对象在问题域对应的事物有哪些行为*?(3)分析对象状态)分析对象状态在每种状态下对象可能发生什么行为?对象状态的转换,是由哪些操作引起的?-状态图讲述(4)追踪操作的执行路线)追踪操作的执行路线模拟操作的执行,并在整个系统中跟踪*。(5)用动词识别操作用动词识别操作(6 6)查看每一个属性,因为要用对象的操作来对其进行操纵查看每一个属性,因为要用对象的操作来对其进行操纵 2023-3-25 27 审查对象的每个操作审查对象的每个操作是否真正有用是否真正有用是否直接提供

27、系统责任所要求的某项功能?或者响应其它操作的请求,间接地完成某种功能的某些局部操作?调整调整取消无用的操作是不是高内聚的是不是高内聚的一个操作应该只完成一项单一的、相对完整的单一的、相对完整的功能调整调整拆分 或 合并审查与调整审查与调整 命名:动词或动宾结构命名:动词或动宾结构定位:定位:与实际事物一致与实际事物一致例:售货员例:售货员售货售货*,商品,商品售出售出*在泛化中的位置在泛化中的位置适合类的全部对象实例适合类的全部对象实例 把每个对象的操作都填写到相应的类符号中。把每个对象的操作都填写到相应的类符号中。在类描述模板中,写出:在类描述模板中,写出:q说明操作的职责说明操作的职责q操

28、作原型(消息的格式)操作原型(消息的格式)q消息发送(指出在这个操作执行时,需要请求哪些别的消息发送(指出在这个操作执行时,需要请求哪些别的对象操作,即接收消息的对象类名以及执行这个消息的对象操作,即接收消息的对象类名以及执行这个消息的操作名)操作名)q约束条件:如果该操作的执行有前置条件、后置条件,约束条件:如果该操作的执行有前置条件、后置条件,以及执行时间的要求等其它需要说明的事项,则在这里以及执行时间的要求等其它需要说明的事项,则在这里加以说明。加以说明。q实现操作的方法(文字、活动图或流程图)。实现操作的方法(文字、活动图或流程图)。2023-3-25 30 2023-3-25 31

29、第四章第四章3 3 定义关系定义关系类类(及其对象及其对象)之间的四种关系之间的四种关系分类关系、继承分类关系、继承泛化(一般泛化(一般-特殊)特殊)generalizationgeneralization(generalization-specialization)generalization-specialization)构成关系构成关系聚合(整体聚合(整体-部分)部分)aggregation(whole-part)whole-part)静态联系静态联系关联关联(实例连接实例连接)association(instance connection)使用关系(行为依赖)使用关系(行为依赖)依赖依

30、赖Dependency这些关系形成了类图的关系层这些关系形成了类图的关系层u概念概念 一般类、特殊类、继承、多继承、多态、泛一般类、特殊类、继承、多继承、多态、泛化、化、“is a kind of”泛化是较特殊的类和较一般的类之间的直接关系(继承关泛化是较特殊的类和较一般的类之间的直接关系(继承关系),其中较一般的类具有较特殊的类的共同性质,较特殊的系),其中较一般的类具有较特殊的类的共同性质,较特殊的类继承较一般的类的性质,且还具有自己的性质,或额外的关类继承较一般的类的性质,且还具有自己的性质,或额外的关联,较特殊的类的对象是较一般的类的对象的子集。联,较特殊的类的对象是较一般的类的对象的

31、子集。泛化泛化 特殊类一般类的性质一般类特殊类的性质只要有这些性质必须有这些性质对象实例集合性质集合理解一般类与特殊类之间的关系2023-3-25 34 如果类如果类A A具有类具有类B B的全部属性和全部操作,而且具有自己的全部属性和全部操作,而且具有自己特有的某些属性或操作,则特有的某些属性或操作,则A A叫做叫做B B的的特殊类特殊类,B B叫做叫做A A的的一般类一般类。另一定义:另一定义:如果类如果类B B的全部对象都是类的全部对象都是类A A的对象,而且类的对象,而且类A A中存在不属于类中存在不属于类B B的对象,则的对象,则A A是是B B的的特殊类特殊类,B B是是A A的的

32、一般一般类类。可以证明,以上两种定义是等价的可以证明,以上两种定义是等价的性质:性质:后代将具有祖先后代将具有祖先的所有的关联。的所有的关联。2023-3-25 36 把在一个类中没有实现的操作(即没有提供方法),称为把在一个类中没有实现的操作(即没有提供方法),称为抽抽象操作象操作。抽象操作映射到C+,称作纯虚操作。含有抽象操作的类是不能直接实例化的,在UML中把这种类叫做抽象类。抽象类的作用是为了让其子类继承它的属性和操作等。继承进一步地可分为单继承和多继承。u表示法表示法人员人员股东股东职员职员顾客顾客股东职员股东职员例:例:*对继承的属性或操作重新定义对继承的属性或操作重新定义 拒绝继

33、承拒绝继承 多态性的表示符号多态性的表示符号一般类一般类特殊类特殊类特殊类特殊类泛化泛化抽象操作带有标记抽象操作带有标记“abstract”,或者把操作的特征标记写成斜体或者把操作的特征标记写成斜体来表示它是抽象的。来表示它是抽象的。2023-3-25 38 u识别继承(泛化)识别继承(泛化)(1 1)学习当前领域的分类学知识)学习当前领域的分类学知识(2 2)按常识考虑事物的分类)按常识考虑事物的分类(3 3)利用泛化的定义)利用泛化的定义(右图)(右图)(4 4)考察类的属性与操作)考察类的属性与操作(左图)(左图)(5 5)看两个类的对象之间是否有)看两个类的对象之间是否有“是一个是一个

34、”关系。关系。?公司人员公司人员姓名姓名身份证号身份证号股份股份工资工资?公司人员公司人员姓名姓名身份证号身份证号 股东股东股份股份 职员职员工资工资 股东股东姓名姓名身份证号身份证号股份股份 职员职员姓名姓名身份证号身份证号工资工资 公司人员公司人员姓名姓名身份证号身份证号 股东股东股份股份职员职员工资工资?2023-3-25 39(6)考虑领域范围内的复用)考虑领域范围内的复用 2023-3-25 40(1)问题域是否需要这样的分类?(例:书善本书*)(2)系统责任是否需要这样的分类?(例:职员本市职员)(3)是否符合分类学的常识?(用“is a kind of”去套)u审查与调整审查与调

35、整(4)是否构成了继承关系?(确实继承了一些属性或操作,如航标船与一般的船)。飞机飞行高度 自动导航 汽车发动机载重量速度运输运输工具发动机载重量速度 飞机飞行高度 自动导航 汽车运输工具发动机载重量速度 飞机飞行高度 自动导航 运输运输或或2023-3-25 41 一般一般-特殊结构的简化特殊结构的简化(1)取消没有特殊性的特殊类运输工具发动机载重量速度 飞机飞行高度 自动导航 汽车运输运输工具发动机载重量速度 飞机飞行高度 自动导航 运输一、从一般类划分出太多的特殊类,使系统中类的设置太多,增加了系统的复杂性;二、建立过深的继承层次,增加了系统的理解难度和处理开销。2023-3-25 42

36、(2)增加属性简化一般特殊结构 人员人员男男 人人女女 人人中国人中国人美国人美国人日本人日本人人员人员性别性别国籍国籍2023-3-25 43(3)取消用途单一的一般类,减少继承层次设设 备备型号型号生产厂生产厂开启开启关闭关闭 雷雷 达达安装地点安装地点 监控监控 雷达雷达型号型号生产厂生产厂安装地点安装地点 开启开启关闭关闭监控监控一般类存在的理由:一般类存在的理由:有两个或两个以上的特殊类需要用它创建对象实例有助于软件复用电子设备电子设备激光打印机激光打印机传真机传真机通讯设备设备电子设备计算机设备打印机民用通讯设备激光打印机传真机2023-3-25 44 定义泛化的活动,将使分析员对

37、系统中的对象类及其特征定义泛化的活动,将使分析员对系统中的对象类及其特征有更深入的认识。在很多情况下,随着泛化的建立,需要对类有更深入的认识。在很多情况下,随着泛化的建立,需要对类图的对象层和特征层作某些修改,包括增加、删除、合并或分图的对象层和特征层作某些修改,包括增加、删除、合并或分开某些类,以及增、删某些属性与操作或把它们移到其它类。开某些类,以及增、删某些属性与操作或把它们移到其它类。对象之间的对象之间的静态联系静态联系是指,最终可通过对象属性是指,最终可通过对象属性来表示的一个对象对另一个对象的联系来表示的一个对象对另一个对象的联系。对象之间的对象之间的动态联系动态联系是指,对象之间

38、在行为(操是指,对象之间在行为(操作)上的依赖关系。作)上的依赖关系。用用关联(关联(association)表示类之间的静态联系。表示类之间的静态联系。用用链链(linklink)表示类对象之间的静态联系。表示类对象之间的静态联系。关联关联 1)链)链链链是对象间的语义连接,是对象引用的元组(列表)。在最常是对象间的语义连接,是对象引用的元组(列表)。在最常见的情况下,它是一对对象引用。它是关联的一个实例。见的情况下,它是一对对象引用。它是关联的一个实例。这样的连接使得对象之间在这样的连接使得对象之间在某段时间内某段时间内保持联系。保持联系。把二元链表示为两个实例之间的路径。可以把一个实例与

39、把二元链表示为两个实例之间的路径。可以把一个实例与它自身之间的链表示为一个具有单一实例的环它自身之间的链表示为一个具有单一实例的环*。如果有关联名,就应该在它的下面画线表示链名。如果有关联名,就应该在它的下面画线表示链名。在链的各端可以表示角色名。在链的各端可以表示角色名。多重性不能显示在链上,因为链是实例多重性不能显示在链上,因为链是实例后面讲后面讲 在面向对象建模中,所有的链都被认为是双向的,当然也在面向对象建模中,所有的链都被认为是双向的,当然也可以是单向的。一旦在两个对象之间建立了链,每一个对象都可以是单向的。一旦在两个对象之间建立了链,每一个对象都可以请求另一个对象的操作。可以请求另

40、一个对象的操作。对象之间有多个链是合法的。对象之间有多个链是合法的。2 2)关联)关联 如果类的对象之间通过属性有连接关系,那么这些类之间如果类的对象之间通过属性有连接关系,那么这些类之间的语义关系就是的语义关系就是关联关联。两个类之间可以有多个关联两个类之间可以有多个关联 把二元关联表示成连接两个类符号的实线路径(两个端点把二元关联表示成连接两个类符号的实线路径(两个端点可以连接到相同的类,但是端点是不同的)。可以连接到相同的类,但是端点是不同的)。关联名可以在路径附近表示出来。关联名可以在路径附近表示出来。路径可以由一条或者多条连接线段组成。路径可以由一条或者多条连接线段组成。对精确地捕获

41、自关联来讲,角色名是必要的。对精确地捕获自关联来讲,角色名是必要的。教教 师师学学 生生0.0.*1 1指导论文指导论文教师为学生指导论文教师为学生指导论文城市城市0.*0.*有航线有航线城市之间有航线城市之间有航线例子例子张三:教师李四:学生 指导论文3)多重性)多重性(阶数阶数)多重性多重性是非负整数开集的一个子集。是非负整数开集的一个子集。另一端上的多重性是指,对于本端的一个对象,需要另一另一端上的多重性是指,对于本端的一个对象,需要另一端对象的个数。端对象的个数。把多重性规约表示成由用逗号分开的整数间隔序列组成的把多重性规约表示成由用逗号分开的整数间隔序列组成的字符串,间隔代表整数的范

42、围(可能无限),其格式为:字符串,间隔代表整数的范围(可能无限),其格式为:下限下限.上限上限其中的下限和上限都是文字整型值,说明从下限到上限的整其中的下限和上限都是文字整型值,说明从下限到上限的整数闭区间。此外星号(数闭区间。此外星号(*)可以用于上限,表明不限制上限。)可以用于上限,表明不限制上限。如果多重性规约由单个的(如果多重性规约由单个的(*)构成,那么它就表明了无穷的)构成,那么它就表明了无穷的非负正整数的范围,也即它等价于非负正整数的范围,也即它等价于0.*。例子例子0.1 10.*1.*1.61.3,7.10,15,19.*2023-3-25 51 表示法说明表示法说明类类 1

43、 1类类 2 2多重性多重性1 1 多重性多重性2 2连接名称连接名称一对一的连接:一对一的连接:111*一对多的连接:一对多的连接:多对多的连接:多对多的连接:多重性的表示示例多重性的表示示例AB有多少A的对象与B的一个对象相关有多少B 的对象与A的一个对象相关?给定类给定类A的一个对象的一个对象a:q a 可以恰好与类可以恰好与类B的一个对象关联的一个对象关联q a 可以最多与类可以最多与类B的一个对象关联的一个对象关联q a 可以与类可以与类B的一个或多个对象关联的一个或多个对象关联q a 可以与类可以与类B的零个或多个对象关联的零个或多个对象关联成绩单成绩单11学生学生有一个有一个系系

44、11.*教授教授工作工作系系0.11教授教授系主任系主任课程课程0.*0.*学生学生选修选修0.*0.*课程课程预修系0.11教授系主任nametitlessndeptnamedeptNochairmanName系0.11教授系主任nametitlessndeptnamedeptNo商品 序列号商品规格描述价格通用产品编号商品描述价格序列号通用产品编号1 描述 *减少数据冗余,减少存储空间4)关联角色)关联角色 在关联的每一个端点上有一个角色。每一个角色具有一个名在关联的每一个端点上有一个角色。每一个角色具有一个名字,用来描述其类被其他的类看作是什么:把它称为字,用来描述其类被其他的类看作是什

45、么:把它称为角色名角色名。当需要强调一个类在一个关联的确切含义时,使用关联角色当需要强调一个类在一个关联的确切含义时,使用关联角色名。名。替代的方法是,使用类的角色名,但要注意改变该类替代的方法是,使用类的角色名,但要注意改变该类不要不要对对其他类(如第其他类(如第3 3个类)产生影响。个类)产生影响。如果使用角色名,就可以省略关联名。如果使用角色名,就可以省略关联名。用户口令拥有者张三张三管理者管理者 1下属下属*雇员雇员侯六侯六李四李四王五王五管理者管理者 管理者管理者 管理者管理者 下属下属 下属下属 下属下属 具有关联和类的特征的建模元素。关联类既可以被看作具有关联和类的特征的建模元素

46、。关联类既可以被看作是具有类的性质的关联,也可以被看作为具有关联性质的类是具有类的性质的关联,也可以被看作为具有关联性质的类。如果在具有关联关系的类中,存在着一个属性放在哪个如果在具有关联关系的类中,存在着一个属性放在哪个类中都不合适的情况,就考虑使用关联类。类中都不合适的情况,就考虑使用关联类。例如,考虑一个人的薪水。通常将属性建模在例如,考虑一个人的薪水。通常将属性建模在Person类类中。然而,它实际上是类中。然而,它实际上是类Person和和C Company之间的雇佣关系之间的雇佣关系的一个属性。例如,一个人为两个不同雇主工作。的一个属性。例如,一个人为两个不同雇主工作。把关联类表示

47、成一个用虚线连接到关联路径的类符号。把关联类表示成一个用虚线连接到关联路径的类符号。关联路径和关联类符号表示同一基础模型元素。名字可关联路径和关联类符号表示同一基础模型元素。名字可以放置在路径上或类符号中。以放置在路径上或类符号中。2023-3-25 58 0.0.*1 1指导论文指导论文教师教师学生学生有某些信息需有某些信息需要描述要描述(题目、题目、时间、成绩时间、成绩)教师教师学生学生0.0.*1 1指导论文指导论文指导论文指导论文把带有属性和操作的关联表示为关联类电影明星安东尼霍普金斯在电影中扮演理查德M 尼克松。影星影星电影电影1.1.*1 1主角主角主角名美国总统美国总统*扮演0.

48、1N元关联元关联是三个或三个以上类之间的一个关联。是三个或三个以上类之间的一个关联。可以规约可以规约N元关联的多重性,但与二元关联的多重性相比,并元关联的多重性,但与二元关联的多重性相比,并不那样明显。不那样明显。在一个角色上的多重性,当该在一个角色上的多重性,当该N N元关联中的其它元关联中的其它N-1N-1个值被确定时,表示该关联潜在的实例元组的数目。个值被确定时,表示该关联潜在的实例元组的数目。通过一个大的菱形(指的是比在路径上的终端符大)表示一个通过一个大的菱形(指的是比在路径上的终端符大)表示一个N元关联,这个菱形有很多与各参与的类相连接路径。关联的元关联,这个菱形有很多与各参与的类

49、相连接路径。关联的名字(如果有的话)显示在菱形附近。同二元关联一样,角色名字(如果有的话)显示在菱形附近。同二元关联一样,角色修饰可以显示在每一个路径上。修饰可以显示在每一个路径上。可以用虚线把关联类符号与菱形连接起来,表示具有属性、操可以用虚线把关联类符号与菱形连接起来,表示具有属性、操作或关联的作或关联的N元关联。元关联。2023-3-25 62 项目项目语言语言人员人员2023-3-25 63 在使用关联时,一种常见的用法是查找。给定关联一端类中的一个对象,按照另一端类的对象的特点,查找其中的对象或对象集时,就需要使用限定关联。例如,通常产品订单由若干定单行和一些其它描述信息组成,使用限

50、定关联描述产品订单、订单行以及它们之间的关系。定单产品定单行amount:Number0.1定单定单行amount:Number*2023-3-25 64 导航只是陈述了一个类对另一个类的知识。不可导航的走向未必意味着从关联的一端永远不能得到另一端的对象,。例如,在下图中,通过其他的关联(涉及到其他类,此图未显示)仍然能够发现与对象Password 相关联的User。描述一个关联是可导航的,是说给定关联一端的对象就能够容易并直接地得到另一端的对象,通常这是因为源对象存储了对目标对象的一些引用信息。(1 1)认识对象之间的静态联系)认识对象之间的静态联系 考虑问题域和系统责任考虑问题域和系统责任

51、哪些类的对象之间的关系需哪些类的对象之间的关系需要在系统中表达要在系统中表达(P117)(P117)。(2 2)认识关联的属性与操作认识关联的属性与操作 对于考虑中的每一种关联,进一步分析它是否应该带有对于考虑中的每一种关联,进一步分析它是否应该带有某些属性和操作。就是说,是否含有一些仅凭一个简单的关某些属性和操作。就是说,是否含有一些仅凭一个简单的关联不能充分表达的信息联不能充分表达的信息(P117)(P117)。(3 3)分析并表示关联的多重性分析并表示关联的多重性 从连接线的每一端,看本端的一个对象可能与另一端的从连接线的每一端,看本端的一个对象可能与另一端的几个对象发生连接,把结果标注

52、到连接线的另一端。几个对象发生连接,把结果标注到连接线的另一端。(4 4)对多对多的关联的处理)对多对多的关联的处理?2023-3-25 66 供货商客户0.*1.*供需合同卖方买方.11处理:处理:供货商客户0.*1.*例题:例题:如何实现多对如何实现多对多的关联多的关联?2023-3-25 67 例题例题系统管理员系统管理员0.0.*计算机计算机服务器服务器客户机客户机用用 户户0.10.11.1.*1 1操作操作使用使用2023-3-25 68 人学生0.10.1婚姻人学生教授导师指导0.*0.*2023-3-25 69 人学生教授导师指导0.*人学生教授导师指导0.*0.*0.*0.*

53、0.*导师指导0.*0.*指导 在建立关联的过程中可能增加一些新的对象类,要把这些新在建立关联的过程中可能增加一些新的对象类,要把这些新增的类补充到类图的对象层中,并建立它们的类描述模板。增的类补充到类图的对象层中,并建立它们的类描述模板。一种说法:对于每一个关联,可在它某一端所连接的对象类一种说法:对于每一个关联,可在它某一端所连接的对象类中增加相应的属性;在这个类的描述模板中,给出这个属性的详中增加相应的属性;在这个类的描述模板中,给出这个属性的详细说明。细说明。不建议!不建议!习题习题1、用关联类为公司和雇员之间的薪水关系建模。、用关联类为公司和雇员之间的薪水关系建模。2、为人们之间的婚

54、姻关系建模。、为人们之间的婚姻关系建模。2023-3-25 72 公司公司雇员雇员1.*1.*雇主职工工作工作公司工龄公司工龄薪水薪水人人0.10.1婚姻性别聚合又称整体聚合又称整体-部分结构,用于描述系统中各类对象之间的组部分结构,用于描述系统中各类对象之间的组成关系,通过它可以看出某个类的对象,以另外一些类的对象成关系,通过它可以看出某个类的对象,以另外一些类的对象作为其组成部分。作为其组成部分。聚合聚合(aggregation)是关联的一种特殊形式,表示整体和部分)是关联的一种特殊形式,表示整体和部分之间的之间的“整体部分整体部分”关系。关系。聚集聚集(aggregate)是聚合关系中作

55、为是聚合关系中作为“整体整体”的类,而把作为的类,而把作为“部分部分”的类称为的类称为 成分或部分。成分或部分。类与类之间的聚合关系指的是,一个类的对象实例,以另一个类的对象实例类与类之间的聚合关系指的是,一个类的对象实例,以另一个类的对象实例作为其组成部分,作为其组成部分,是种是种“a part of”或或“has a”;也可理解为,一个类定义引用另;也可理解为,一个类定义引用另一个类定义。一个类定义。组合组合是聚合的一种形式,其部分和整体之间具有很强的是聚合的一种形式,其部分和整体之间具有很强的“属于属于”关系,整体类的对象管理部分类的对象,关系,整体类的对象管理部分类的对象,决定部分类的

56、对决定部分类的对象何时属于它,何时不属于它。象何时属于它,何时不属于它。部分可以先于整体消亡。部分可以先于整体消亡。这种聚集末端的多重性不能超过这种聚集末端的多重性不能超过1。组合对象是组合对象是组合类的实例。组合类的实例。聚合聚合 1)结构性质)结构性质 部分必须与它们所构建的整体有某些结构上或功能上的关部分必须与它们所构建的整体有某些结构上或功能上的关系。系。2)数学性质)数学性质a非对称性非对称性 如果对象如果对象A是对象是对象B的一部分,那么对象的一部分,那么对象B就不能是对象就不能是对象A的的一部分。一部分。b传递性传递性 如果对象如果对象A是对象是对象B的一部分,对象的一部分,对象

57、B是对象是对象C的一部分,的一部分,那么对象那么对象A是对象是对象C的一部分的一部分*。2023-3-25 75 整体对象类整体对象类部分对象类部分对象类1.*1.*连接符:连接符:表示法表示法(组合组合)汽汽 车车发动机发动机车车 轮轮14,60.10.1例子:例子:多重性:多重性:一对一一对多多对多多重性表示:多重性表示:固定的数目或范围例如:1 或 1.3不定的数目或范围例如:*或 0.*2023-3-25 76 学院大学大学学院构成聚合上一般不标名称。异同?11.*1.*1u识别聚合识别聚合 (1 1)物理上的整体事物和它的组成部分)物理上的整体事物和它的组成部分例:机器、设备和它的零

58、部件例:机器、设备和它的零部件(2 2)组织机构和它的下级组织及部门)组织机构和它的下级组织及部门例:公司与子公司、部门例:公司与子公司、部门(3 3)团体(组织)与成员)团体(组织)与成员例:公司与职员例:公司与职员(4 4)一种事物在空间上包容其他事物)一种事物在空间上包容其他事物例:生产车间与机器例:生产车间与机器(5 5)抽象事物的整体与部分)抽象事物的整体与部分例:学科与分支学科、法律与法律条款例:学科与分支学科、法律与法律条款(6 6)具体事物和它的某个抽象方面)具体事物和它的某个抽象方面例:人员与身份、履历例:人员与身份、履历(7 7)在材料上的组成关系)在材料上的组成关系 例如

59、,面包由面粉、糖和酵母组成,汽车是由钢、塑料例如,面包由面粉、糖和酵母组成,汽车是由钢、塑料和玻璃组成。和玻璃组成。(1 1)是否属于问题域?)是否属于问题域?例:公司职员与家庭*(2 2)是不是系统责任的需要?)是不是系统责任的需要?例:公司与工会*(3 3)部分对象是否有一个以上的属性?)部分对象是否有一个以上的属性?例:汽车与轮胎(规格)*(4 4)是否有明显的整体)是否有明显的整体-部分关系?部分关系?例:学生与课程,谁是整体?部分?定义整体定义整体-部分结构的活动可能发现一些新的对象类,或部分结构的活动可能发现一些新的对象类,或者从整体对象的类定义中分割出一些部分对象的类定义,应者从

60、整体对象的类定义中分割出一些部分对象的类定义,应把它们加入到对象层中,并给出它们的详细说明。把它们加入到对象层中,并给出它们的详细说明。一个一个依赖依赖规约了两个或多个模型元素(或两个模型元素集规约了两个或多个模型元素(或两个模型元素集合)之间的一种语义关系,对目标元素的改变可能需要改变该合)之间的一种语义关系,对目标元素的改变可能需要改变该依赖中的源元素。依赖中的源元素。下面种类的依赖是预定义的:下面种类的依赖是预定义的:access -访问访问;derive-派生;派生;import-移入;移入;refine-精化精化 trace-跟踪跟踪;use-使用使用 仅当被建模的关系不是结构关系时

61、,才使用依赖。关联主要用于类间有结构关系的地方。把依赖表示为两个模型元素之间的虚线箭头。在箭头尾部的模型元素(客户)依赖箭头头部的模型元素(提供者)。箭头可以用放在双尖括号内的字符串标识。2023-3-25 82 2023-3-25 83 第四章第四章4 4 定义接口定义接口在定义类时,可见性为公共的操作就构成了一组外部可在定义类时,可见性为公共的操作就构成了一组外部可访问的操作,为其他的类提供服务。把这组操作组织起来,作访问的操作,为其他的类提供服务。把这组操作组织起来,作为该类的一个或几个接口,说该类提供了对其接口的实现。为该类的一个或几个接口,说该类提供了对其接口的实现。在在UML中,把

62、一个中,把一个接口接口定义为一个类、构件或子系统的定义为一个类、构件或子系统的对外可见的一组操作的描述符。对外可见的一组操作的描述符。它定义了类、构件或子系统对它定义了类、构件或子系统对外提供的服务。外提供的服务。接口定义了一个契约,在接口两端的类接口定义了一个契约,在接口两端的类、构件或子系统、构件或子系统可以独立变更,但必须忠实地履行这个契约。可以独立变更,但必须忠实地履行这个契约。2023-3-25 85 接口名接口名供接口需接口也可以把继承中的抽象类作为一个公共接口,由其特殊类对公共接口中的抽象操作进行实现,如下图所示。抽象类可以作为接口,但严格地讲,二者是有区别的,是不相同的建模元素

63、。抽象类可以含有属性和一些具体操作,而接口没有属性,且不能在其中定义任何具体操作的方法。接口更像一个其所有的操作都是抽象的抽象类。4.1 对象与类对象与类 对象、类、主动对象、主动类、主动操作、特征标对象、类、主动对象、主动类、主动操作、特征标记、类的角色记、类的角色4.2 属性属性 属性、实例属性、类范围属性属性、实例属性、类范围属性4.3 操作操作 操作、抽象操作、操作、抽象操作、类范围操作类范围操作4.4 定义关系定义关系分类关系、继承分类关系、继承泛化(一般泛化(一般-特殊)特殊)泛化、一般类、特殊类泛化、一般类、特殊类构成关系构成关系聚合(整体聚合(整体-部分)部分)聚合、聚集、成分、组合聚合、聚集、成分、组合静态联系静态联系关联关联(实例连接实例连接)关联、链、多重性、角色、多元关联、关联类关联、链、多重性、角色、多元关联、关联类使用关系(行为依赖)使用关系(行为依赖)依赖依赖 依赖依赖概念与表示法概念与表示法识别识别筛选与审查筛选与审查2023-3-25 88 习题1、论述类与对象之间的关系以及关联与链之间的关系。这些概念之间还有什么关系吗?2、针对下述问题,建立一个类图:有两种顾客,一种是常客,享受公司的一些优惠待遇;另一种是散户。3、面包是由面包片组成的。讨论面包及其切片之间的关系。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!