定义对象间关系课件.ppt

上传人(卖家):三亚风情 文档编号:2923480 上传时间:2022-06-11 格式:PPT 页数:69 大小:1.12MB
下载 相关 举报
定义对象间关系课件.ppt_第1页
第1页 / 共69页
定义对象间关系课件.ppt_第2页
第2页 / 共69页
定义对象间关系课件.ppt_第3页
第3页 / 共69页
定义对象间关系课件.ppt_第4页
第4页 / 共69页
定义对象间关系课件.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

1、软件建模与分析软件建模与分析 2015.9-2015.10计算机科学与技术专业与软件工程专业计算机科学与技术专业与软件工程专业23对象之间的四种关系对象之间的四种关系1 1一般一般- -特殊关系特殊关系 又称又称继承继承关系,反映事物的分类。由关系,反映事物的分类。由这种关系可以形成这种关系可以形成一般一般- -特殊结构特殊结构。2 2整体整体- -部分关系部分关系即即聚合聚合关系。反映事物的构成。由这种关系。反映事物的构成。由这种关系可以形成关系可以形成整体整体- -部分结构部分结构。3 3关联关系关联关系对象实例集合(类)上的一个关系,其中的对象实例集合(类)上的一个关系,其中的元素提供了

2、被开发系统的应用领域中一组有意义的信息。元素提供了被开发系统的应用领域中一组有意义的信息。4 4消息关系消息关系 对象之间的动态联系,即一个对象在执行其对象之间的动态联系,即一个对象在执行其操作时,请求其他对象为它执行某个操作,或者向其他对象传操作时,请求其他对象为它执行某个操作,或者向其他对象传送某些信息。反映了事物之间的行为依赖关系。送某些信息。反映了事物之间的行为依赖关系。这些关系形成了类图的关系层这些关系形成了类图的关系层4概念概念同义词同义词 和和 近义词近义词继承(继承(inheritance)是描述一般类和特殊类之间关系的最传统、最经典的术是描述一般类和特殊类之间关系的最传统、最

3、经典的术语。有时作为动词或形容词出现。语。有时作为动词或形容词出现。一般一般-特殊(特殊(generalization-specialization)含义最准确,而且不容易产生误含义最准确,而且不容易产生误解,恰切地反映了一般类(概念)和特殊类(概念)之间的相对(二元)关系解,恰切地反映了一般类(概念)和特殊类(概念)之间的相对(二元)关系;也用于描述结构,即一般;也用于描述结构,即一般-特殊结构。缺点是书写和阅读比较累赘。特殊结构。缺点是书写和阅读比较累赘。泛化(泛化(generalization)取取“一般一般-特殊特殊” 的一半,是的一半,是UML的做法。比较简练的做法。比较简练,但是只

4、反映了问题的一方面。作为关系的名称尚可,说结构是一个,但是只反映了问题的一方面。作为关系的名称尚可,说结构是一个“泛化泛化”则很勉强。则很勉强。分类(分类(classification)接近人类日常的语言习惯,接近人类日常的语言习惯, 体现了类的层次划分,也体现了类的层次划分,也作为结构的名称。在许多的场合被作为一种原则。作为结构的名称。在许多的场合被作为一种原则。本书主要采用本书主要采用“一般一般-特殊特殊”这个术语这个术语8.1一般一般-特殊结构特殊结构相关概念:一般类、特殊类、继承、多继承、多态相关概念:一般类、特殊类、继承、多继承、多态语义:语义:“is a kind of ”5一般一

5、般-特殊关系(继承关系)是类之间的一种二元关系特殊关系(继承关系)是类之间的一种二元关系是一种是一种基本的模型元素基本的模型元素;由这种关系所形成的结构是一般由这种关系所形成的结构是一般-特殊结构特殊结构是一种是一种复合的模型成分复合的模型成分。人员人员股东股东职员职员顾客顾客股东职员股东职员例:例:这是这是1个一般个一般-特殊结构特殊结构 包含包含5个一般特殊关系个一般特殊关系6特殊类一般类的特征一般类特殊类的特征只要有这些特征必须有这些特征对象实例集合对象实例集合特征集合特征集合理解一般类与特殊类之间的关系定义定义1:如果类如果类A A具有类具有类B B的全部属性和全部操作,而且具的全部属

6、性和全部操作,而且具有自己特有的某些属性或操作,则有自己特有的某些属性或操作,则A A叫做叫做B B的特殊类,的特殊类,B B叫叫做做A A的一般类。一般类与特殊类又称父类与子类。的一般类。一般类与特殊类又称父类与子类。定义定义2 2:如果类如果类A A的全部对象都是类的全部对象都是类B B的对象,而且类的对象,而且类B B中存中存在不属于类在不属于类A A的对象,则的对象,则A A是是B B的特殊类,的特殊类,B B是是A A的一般类。的一般类。书中证明,以上两种定义是等价的书中证明,以上两种定义是等价的一般类和特殊类的两个定义一般类和特殊类的两个定义7表示法表示法 * 对继承的属性或操作重

7、新定义对继承的属性或操作重新定义 拒绝继承拒绝继承 多态性的表示符号多态性的表示符号一般类一般类特殊类特殊类特殊类特殊类集中式集中式一般类一般类特殊类特殊类特殊类特殊类分散式分散式人员人员股东股东职员职员顾客顾客股东职员股东职员例:例:8如何发现一般如何发现一般-特殊结构特殊结构(1)学习当前领域的分类学知识)学习当前领域的分类学知识(2)按常识考虑事物的分类)按常识考虑事物的分类(3)根据一般类和特殊类的两种定义)根据一般类和特殊类的两种定义(4)考察属性与操作的适应范围)考察属性与操作的适应范围?公司人员公司人员姓名姓名身份证号身份证号股份股份工资工资 ?公司人员公司人员姓名姓名身份证号身

8、份证号 股东股东股份股份 职员职员工资工资 股东股东姓名姓名身份证号身份证号股份股份 职员职员姓名姓名身份证号身份证号工资工资 股东股东股份股份职员职员工资工资 ?公司人员公司人员姓名姓名身份证号身份证号 9(5 5)考虑领域范围内的复用)考虑领域范围内的复用现钞收款机现钞收款机 A A B B C C D D E E F F X X Y Y Z Z收款机收款机A AB BC CX XY Y现钞收款机现钞收款机 D D E E F F Z Z领域构件10(1 1)问题域是否需要这样的分类?(例:书)问题域是否需要这样的分类?(例:书线装书)线装书)(2 2)系统责任是否需要这样的分类?(例:职

9、员)系统责任是否需要这样的分类?(例:职员本市职员)本市职员)(3 3)是否符合分类学的常识?(用)是否符合分类学的常识?(用“is a kind of ”is a kind of ”来衡量)来衡量)审查与调整审查与调整(4 4)是否真正地继承了一些属性或操作?)是否真正地继承了一些属性或操作?( (航标船航标船船船) ) 飞机飞行高度 自动导航 ? 汽车发动机载重量速度运输运输工具发动机载重量速度 飞机飞行高度 自动导航 汽车运输11一般一般- -特殊结构的简化特殊结构的简化(1 1)取消没有特殊性的特殊类)取消没有特殊性的特殊类运输工具发动机载重量速度 飞机飞行高度 自动导航 汽车运输运输

10、工具发动机载重量速度 飞机飞行高度 自动导航 运输提问:提问:这种简化带来的问这种简化带来的问题是什么?题是什么?12(2 2)增加属性简化一般特殊结构)增加属性简化一般特殊结构 人员人员男男 人人女女 人人中国人中国人美国人美国人日本人日本人人员人员性别性别国籍国籍13(3 3)取消用途单一的一般类,减少继承层次)取消用途单一的一般类,减少继承层次一般类存在的理由:一般类存在的理由:* * 有两个或两个上以上的特殊类有两个或两个上以上的特殊类* * 需要用它创建对象实例需要用它创建对象实例* * 有助于软件复用有助于软件复用设设 备备型号型号生产厂生产厂开启开启关闭关闭 雷雷 达达安装地点安

11、装地点 监控监控 雷达雷达型号型号生产厂生产厂安装地点安装地点 开启开启关闭关闭监控监控电子设备电子设备激光打印机激光打印机传真机传真机通讯设备设备电子设备计算机设备打印机民用通讯设备激光打印机传真机14多继承:多继承:允许一个允许一个特殊类具有一个以上一般类的继承模式特殊类具有一个以上一般类的继承模式多继承特殊类的内部情况在职研究生在职研究生姓名姓名学号学号班级班级专业专业职称职称专业专业在职单位在职单位来自来自“人员人员”类类来自来自“研究生研究生”类类来自来自“教职工教职工”类类本类中显式定义本类中显式定义人员人员姓名姓名教职工教职工职称职称专业专业研究生研究生学号学号班级班级专业专业在

12、职研究生在职研究生在职单位在职单位 例例:命名命名冲突冲突重复重复继承继承15多态多态:多态是指同一个命名可具有不同的语义。多态是指同一个命名可具有不同的语义。OO方法中,方法中,常指在一般类中定义的属性或操作被特殊类继承之后,常指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。可以具有不同的数据类型或表现出不同的行为。多边形边数顶点数据绘图XY矩形边数*顶点数据*绘图正多边形*顶点数据*绘图例:例:16语义:语义:“a part of”或或“has a”聚合关系描述了对象实例之间的构成情况,然而它的定义聚合关系描述了对象实例之间的构成情况,然而它的定义却

13、是在类的抽象层次给出的。却是在类的抽象层次给出的。从集合论的观点看聚合关系从集合论的观点看聚合关系整体整体-部分关系(聚合关系)部分关系(聚合关系)是两个类之间的二元关系,其是两个类之间的二元关系,其中一个类的某些对象是另一个类的某些对象的组成部分。中一个类的某些对象是另一个类的某些对象的组成部分。整体整体-部分结构部分结构是把若干具有聚合关系的类组织在一起所形是把若干具有聚合关系的类组织在一起所形成的结构。它是一个以类为结点,以聚合关系为边的连通成的结构。它是一个以类为结点,以聚合关系为边的连通有向图。有向图。8.2 整体整体-部分结构部分结构一种基本的一种基本的模型元素模型元素由若干聚合关

14、由若干聚合关系形成的复合系形成的复合模型成分模型成分概念:概念:聚合(聚合(aggregation),组合(),组合(composition)整体整体-部分(部分(whole-part )整体对象,部分对象整体对象,部分对象17组合(组合(composition)是聚合关系的一种特殊情况,它表是聚合关系的一种特殊情况,它表明整体对于部分的强拥有关系,即整体与部分之间具有明整体对于部分的强拥有关系,即整体与部分之间具有紧密、固定的组成关系。紧密、固定的组成关系。UML把聚合定义为关联的一种特殊情况把聚合定义为关联的一种特殊情况而组合关系是聚合关系的特殊情况而组合关系是聚合关系的特殊情况18数量数

15、量数量数量数量数量数量数量整体对象类整体对象类部分对象类部分对象类整体对象类整体对象类部分对象类部分对象类表示法表示法在连接符两端通过数字或者符号给出关系双方对象实例的数量约束,在连接符两端通过数字或者符号给出关系双方对象实例的数量约束,称为多重性(称为多重性(multiplicity) 确定的整数确定的整数 给出确定的数量给出确定的数量 例如:例如: 1,2 下界下界上界上界 给出一个范围给出一个范围 例如:例如: 01 ,14 * * 表示多个,数量不确定表示多个,数量不确定下界下界* * 表示多个,下界确定表示多个,下界确定 例如例如 0* * , 1* * 多重性有以下多重性有以下3种

16、情况:种情况:一对一,一对多,多对多一对一,一对多,多对多照相机照相机11* *01010101镜镜 头头机机 身身1 119如何发现整体如何发现整体- -部分结构部分结构基本策略基本策略考察问题域中各种具有构成关系的事物考察问题域中各种具有构成关系的事物(1 1)物理上的整体事物和它的组成部分)物理上的整体事物和它的组成部分例:机器、设备和它的零部件例:机器、设备和它的零部件(2 2)组织机构和它的下级组织及部门)组织机构和它的下级组织及部门例:公司与子公司、部门例:公司与子公司、部门(3 3)团体(组织)与成员)团体(组织)与成员例:公司与职员例:公司与职员(4 4)一种事物在空间上包容其

17、它事物)一种事物在空间上包容其它事物例:生产车间与机器例:生产车间与机器(5 5)抽象事物的整体与部分)抽象事物的整体与部分例:学科与分支学科、法律与法律条款例:学科与分支学科、法律与法律条款(6 6)具体事物和它的某个抽象方面)具体事物和它的某个抽象方面例:人员与身份、履历例:人员与身份、履历20审查与筛选审查与筛选(1 1)是否属于问题域?)是否属于问题域?例:公司职员与家庭例:公司职员与家庭(2 2)是不是系统责任的需要?)是不是系统责任的需要?例:员工与工会、救护车与急救设备例:员工与工会、救护车与急救设备(3 3)部分对象是否有一个以上的属性?)部分对象是否有一个以上的属性?例:汽车

18、与车轮(规格)例:汽车与车轮(规格)(4 4)是否有明显的整体)是否有明显的整体- -部分关系?部分关系?例:学生与课程例:学生与课程21整体整体-部分结构的高级应用技巧部分结构的高级应用技巧(1 1)简化对象的定义)简化对象的定义飞飞 机机有关发动机的属性与操作有关发动机的属性与操作有关驾驶室的属性与操作有关驾驶室的属性与操作11141飞飞 机机发动机发动机驾驶室驾驶室22(2 2)支持软件复用)支持软件复用起重机起重机送料车送料车机床机床钻床钻床刨床刨床车床车床电动机电动机011011011发动机发动机飞机飞机三种情况:三种情况: 第一种情况是系统中已经定义了某个类,再定义的其他类具有该类

19、第一种情况是系统中已经定义了某个类,再定义的其他类具有该类的一些特征。的一些特征。 第二种情况是系统中定义的几个类都有某些共同的特征。第二种情况是系统中定义的几个类都有某些共同的特征。 第三种情况是系统中只有一个类,但该类中的某些特征具有某种独第三种情况是系统中只有一个类,但该类中的某些特征具有某种独立性,具有领域内复用机会。立性,具有领域内复用机会。23(3 3)表示数量不定的组成部分)表示数量不定的组成部分订订 单单编号编号卖方卖方买方买方总金额总金额成交日期成交日期订单行订单行商品编号商品编号订购数量订购数量成交价成交价金额金额1 1* *1 1商品商品商品编号商品编号商品名称商品名称单

20、价单价厂商厂商1 1* *一个订单可以一个订单可以包含一项到多包含一项到多达几十项商品达几十项商品提问:提问:能否不要订单行,能否不要订单行,直接用商品作为订直接用商品作为订单的部分对象?单的部分对象?24(4)表示动态变化的对象特征)表示动态变化的对象特征人员营业员会计师经理问题:问题:对象的属性与操作定义在系统运行中动态变化,例如:不理想的解决办法:不理想的解决办法:删除、重建删除、重建Shlaer/ MellorShlaer/ Mellor的子类型迁移的子类型迁移“动态对象动态对象”不理想的原因:不理想的原因:一是各个类的对象有一些共同的、不需要变化的属性,随着旧对一是各个类的对象有一些

21、共同的、不需要变化的属性,随着旧对象的删除和新对象的建立,需要由系统用户把旧对象中有用的信象的删除和新对象的建立,需要由系统用户把旧对象中有用的信息重新录入到新对象中,增加了用户的负担。息重新录入到新对象中,增加了用户的负担。二是让对象反复地从一个类中删除而加入另一个类,将为数据管二是让对象反复地从一个类中删除而加入另一个类,将为数据管理带来困难。理带来困难。三是概念上不自然,一个对象仅仅因为一些特征发生了变化,就三是概念上不自然,一个对象仅仅因为一些特征发生了变化,就要让它经历一番死而复生的阴阳轮回,显得太小题大做。要让它经历一番死而复生的阴阳轮回,显得太小题大做。25(4)表示动态变化的对

22、象特征)表示动态变化的对象特征问题:问题:对象的属性与操作定义在系统运行中动态变化,例如:会计师身份经理身份营业员身份人员身份1m或或人员营业员身份01会计师身份0101111解:解:经理身份思考:思考:自动存取款机系统是否存在这样的问题?26“三友三友”对问题的描述及解决方法对问题的描述及解决方法“大多数面向对象的编程语言是静态类型化的,这大多数面向对象的编程语言是静态类型化的,这意味着在创建对象时就限定了对象的类型。但是随意味着在创建对象时就限定了对象的类型。但是随着时间的推移对象还可能扮演不同的角色。着时间的推移对象还可能扮演不同的角色。”例子:候选者,雇员,退休者例子:候选者,雇员,退

23、休者 persontypecandidatetypeemployeetyperetiree“对象在其生命对象在其生命期内动态地获得期内动态地获得或者丢弃类型或者丢弃类型”1999年第一版年第一版persondynamiccandidatedynamicemployeedynamicretiree2005年第二版年第二版总之都是围绕着继承想主意,没有运用聚合。总之都是围绕着继承想主意,没有运用聚合。27从上述例子得到的启示:从上述例子得到的启示:整体整体- -部分结构有很强的表达能力部分结构有很强的表达能力运用运用OO方法的基本概念可以自然而有效地解决许多方法的基本概念可以自然而有效地解决许多在

24、其他方法中用扩充概念解决的问题在其他方法中用扩充概念解决的问题加强对基本概念的运用,不要轻易创造新的扩充概念加强对基本概念的运用,不要轻易创造新的扩充概念person010101111用聚合概念解决:用聚合概念解决:CandidateRoleEmployeeRoleRetireeRole28用一般特殊结构用一般特殊结构两种结构的变通两种结构的变通汽 车制冷设备冷藏车解释:解释:继承和聚合都是使一类对象获得另一类对象的特征,只是观察问题的角度不同。两种结构同用两种结构同用汽 车冷藏车制冷设备冷藏车汽 车制冷设备用整体部分结构用整体部分结构29练习:练习:1 1、对于门这个类来说、对于门这个类来说

25、, ,有木门、铁门、玻璃门之分,也有电动门、转门、拉门有木门、铁门、玻璃门之分,也有电动门、转门、拉门之分,如何建模?之分,如何建模?2 2、在在线图书销售系统中,图书包括封面、目录和正文三个部分,封面上有、在在线图书销售系统中,图书包括封面、目录和正文三个部分,封面上有图书的名称、出版社和作者,目录中有章和节的标题,如何建模?图书的名称、出版社和作者,目录中有章和节的标题,如何建模?3 3、如果多个类中都存在一些相同的属性和操作,此时可以选择几种建模方案、如果多个类中都存在一些相同的属性和操作,此时可以选择几种建模方案?举例说明。?举例说明。4 4、基于前述建模结果,完成、基于前述建模结果,

26、完成OOAOOA阶段类之间关系的构建,用阶段类之间关系的构建,用UMLUML标准表示法进标准表示法进行描述。行描述。30概念:概念:关联关联(association)是两个或者多个类上的一个关系()是两个或者多个类上的一个关系(即这些类的对象实例集合的笛卡儿积的一个子集合),即这些类的对象实例集合的笛卡儿积的一个子集合),其中的元素提供了被开发系统的应用领域中一组有意义其中的元素提供了被开发系统的应用领域中一组有意义的信息。的信息。 二元关联二元关联(binary association)n元关联元关联(n-ary association) 关联的实例关联的实例有序对有序对 或或 n元组元组,

27、又称,又称链链(link)关联是这些有序对关联是这些有序对 或或 n元组的集合元组的集合关联位于类的抽象层次,链位于对象的抽象层次关联位于类的抽象层次,链位于对象的抽象层次8.3 关联关联提问:一个提问:一个n元关联中所涉及的类的数量是否可以小于元关联中所涉及的类的数量是否可以小于n?31二元关联的表示法二元关联的表示法城市城市* * *有航线有航线(d) (d) 城市之间有航线城市之间有航线教教 师师学学 生生1 1* *指导论文指导论文教师为学生指导论文教师为学生指导论文例子例子类类 A A名称名称类类 B B数量数量数量数量角色角色角色角色1 11 11 1* * * *多重性的表示多重

28、性的表示一对一:一对一:一对多:一对多:多对多:多对多:数量约束数量约束固定数值:例如固定数值:例如 1数值范围:例如数值范围:例如 01符号:符号: * * 表示多个表示多个0* * = * 1* * 表示表示 1到多个到多个32二元关联的实现(一对一和一对多)二元关联的实现(一对一和一对多)编程语言:编程语言:在程序中用两个类分别实现关联两端的类;以在程序中用两个类分别实现关联两端的类;以数量约束为数量约束为“1”的类的对象实例为目标,在关联另一端的类的类的对象实例为目标,在关联另一端的类中设置一个指向该目标的指针或者对象标识(源类的属性)中设置一个指向该目标的指针或者对象标识(源类的属性

29、)。教教 师师1 1授课授课课课 程程* *主讲教师主讲教师谁谁?关系数据库:关系数据库:用两个数据库表分别实现关联两端的类;以数用两个数据库表分别实现关联两端的类;以数量约束为量约束为“1”的类对应的表的元组为目标,在关联另一端的的类对应的表的元组为目标,在关联另一端的类对应的表中设置一个指向该目标的外键(目标的主键)。类对应的表中设置一个指向该目标的外键(目标的主键)。教师教师课程课程33二元关联的实现(多对多)二元关联的实现(多对多)问题:问题:任何一端的一个对象实例要和另一端多个对象实例任何一端的一个对象实例要和另一端多个对象实例发生关联,而且数量不确定。实现时不知道该设立多少个指发生

30、关联,而且数量不确定。实现时不知道该设立多少个指针(或者对象标识、外键)才能够用。针(或者对象标识、外键)才能够用。 课课 程程学学 生生*编程语言:编程语言:用两个类分别实现关联两端的类,同时用另外用两个类分别实现关联两端的类,同时用另外一个类来实现它们之间的关联。实现关联的类含有两个属性一个类来实现它们之间的关联。实现关联的类含有两个属性,分别是指向两端的类的对象实例的指针或者对象标识。,分别是指向两端的类的对象实例的指针或者对象标识。 增加一增加一个类个类关系数据库:关系数据库:用两个数据库表分别实现关联两端的类,同用两个数据库表分别实现关联两端的类,同时用另外一个数据库表来实现它们之间

31、的关联。实现关联时用另外一个数据库表来实现它们之间的关联。实现关联的数据库表含有两个属性,它们分别是指向两端的表的元的数据库表含有两个属性,它们分别是指向两端的表的元组的外键。组的外键。 课程课程课程课程-学生学生学生学生34运用简单的概念及表示法解决各种复杂的关联问题运用简单的概念及表示法解决各种复杂的关联问题教师教师学生学生1*指导论文指导论文(1)带有属性和操作的关联)带有属性和操作的关联有某些信息有某些信息需要描述需要描述OMT(及(及UML)的概念扩充)的概念扩充关联类关联类(association class) 类类1类类2属性属性操作操作例子例子教教 师师学学 生生1*指导论文指

32、导论文论文题目论文题目答辩时间答辩时间成绩成绩问题:增加了概念的复杂性,缺乏编程语言支持问题:增加了概念的复杂性,缺乏编程语言支持35换一种思路考虑问题:换一种思路考虑问题:两类对象之间的关联带有某些复杂的信息,说明它们两类对象之间的关联带有某些复杂的信息,说明它们之间存在着某种事物(尽管可能是抽象事物)。之间存在着某种事物(尽管可能是抽象事物)。用普通的对象概念来表示这种事物,简化关联,减少用普通的对象概念来表示这种事物,简化关联,减少概念,并加强与概念,并加强与OOPLOOPL的对应。的对应。教师教师学生学生1 1* *指导论文指导论文论文题目论文题目答辩时间答辩时间成绩成绩* *论文题目

33、论文题目答辩时间答辩时间成绩成绩 教师教师学生学生1 1指导指导毕业论文毕业论文1 11 1写作写作例136城市之间有航线城市之间有航线城城 市市有航线有航线距离距离每周班次每周班次* * *1 1公公 司司个个 人人工工 作作薪水薪水* *公司与个人公司与个人其他例子其他例子城市之间存在航线对象城市之间存在航线对象城城 市市航线航线距离距离每周班次每周班次*2公公 司司个个 人人工工 作作薪水薪水公司与个人之间存在工作对象公司与个人之间存在工作对象1 1* *1 11 137复杂关联表示法的转换复杂关联表示法的转换 mn类类 A A类类 B B关联类关联类属性属性操作操作类类 A A类类 B

34、 B类类 C C属性属性操作操作1 11 1mn38(2)n元关联元关联OMT的三元关联及其表示法的三元关联及其表示法问题:问题:编程语言不能直接支持编程语言不能直接支持可推广到可推广到n元关联,是否要创造更多的符号?元关联,是否要创造更多的符号?多重性表示的困难(详后)多重性表示的困难(详后)项目项目语言语言人员人员增设对象类表示多元关联增设对象类表示多元关联*项目名项目名承担者承担者语言语言 项目项目语言语言1任务任务1*人员人员*1*39在理论上,在理论上,n元关联是由若干元关联是由若干n元组形成的集合,本质上也元组形成的集合,本质上也是一个类是一个类是由每个是由每个n元组作为对象实例的

35、类元组作为对象实例的类从实现的角度看,从实现的角度看, 用类实现用类实现n元关联是最自然的选择元关联是最自然的选择例如:用一个数据库表存放例如:用一个数据库表存放n元关联的全部元关联的全部n元组元组外键外键1 外键外键2 外键外键3 外键外键n表表1表表2表表3表表nn个表:个表:类类2类类n类类1类类3n个类:个类:N元关联40在模型中,把在模型中,把n元关联定义为一个类元关联定义为一个类并定义它与原有的各个类之间的关系并定义它与原有的各个类之间的关系都是二元关联都是二元关联类2类n类1类3n元关联元关联类2类n类1类3新增类新增类41项项 目目语语 言言人人 员员*?*是是 1 还是还是

36、* ?1项项 目目语语 言言任任 务务人人 员员11*1*1项项 目目语语 言言任任 务务人人 员员11*n元关联多重性表示的困难和解决办法元关联多重性表示的困难和解决办法42例:课程实习中每两名学生在一台设备上合作完成一个题目例:课程实习中每两名学生在一台设备上合作完成一个题目1)若系统要求记录和查阅哪两名学生是合作者)若系统要求记录和查阅哪两名学生是合作者建立学生类到它自身的关联(如同城市之间有航线)建立学生类到它自身的关联(如同城市之间有航线)是一个二元关联,其中学生类在关联中出现了两次是一个二元关联,其中学生类在关联中出现了两次 2)如果还要记录每组学生的实习题目和使用的设备)如果还要

37、记录每组学生的实习题目和使用的设备建立学生、题目、设备三个类之间的建立学生、题目、设备三个类之间的4元关联元关联学生类在这个关联中出现了两次学生类在这个关联中出现了两次(3)一个类在一个关联中多次出现)一个类在一个关联中多次出现43111*1题题 目目设设 备备学学 生生学 生实实 习习11211*1题题 目目设设 备备学学 生生实实 习习假如该系统的多重性要求是:假如该系统的多重性要求是:每两名学生在一台设备上合作完成一个题目;每两名学生在一台设备上合作完成一个题目;一个题目可以供多组学生实习,可以在不同的设备上完成;一个题目可以供多组学生实习,可以在不同的设备上完成;一台设备可以供多组学生

38、使用,可以做不同的题目。一台设备可以供多组学生使用,可以做不同的题目。 题题 目目设设 备备学学 生生学学 生生??题题 目目设设 备备学学 生生*??44关联端点的复杂情况关联端点的复杂情况 关联端点:关联的连接线与类符号相衔接的点关联端点:关联的连接线与类符号相衔接的点修饰:在端点附近标注符号或者文字,或者画成不同的形状修饰:在端点附近标注符号或者文字,或者画成不同的形状多重性(多重性(multiplicity) 有序(有序(ordered) ordered 限定符(限定符(qualifier) 详后导航性(导航性(navigability) 聚合标志(聚合标志(aggregation i

39、ndicator) 角色名(角色名(rolename) 接口说明(接口说明(interface specifier) 角色名:接口说明 可变性(可变性(changeability) frozen ,addOnly 可见性(可见性(visibility)。)。 “+”、“#”或者“-” 45“限定符是关联的一种属性,它的值划定了跨过一个关联与限定符是关联的一种属性,它的值划定了跨过一个关联与一个对象相关的对象集合一个对象相关的对象集合。”用限定符修饰的关联称为受限关联(用限定符修饰的关联称为受限关联(qualified association)UML对限定符的解释对限定符的解释类类 A限定符限定

40、符类类 B* *01表示法表示法46BankaccountNoPerson*01Chessboardrank: Rankfile: FileSquare11Chessboard164Squarerank: intfile: intBankAccount Person*1*1订单订单产品订单行订单行Amount:Number01WorkDeskjobID: intReturnedItem* *01订单订单订单行订单行Amount:Number* *1产品产品* *1限定符的例子及其简单解决方案限定符的例子及其简单解决方案 WorkDeskjobReturnedItem* *1* *147关联端点

41、的修饰在关联端点的修饰在UML2的变化的变化 (1)取消了接口说明和可变性两种修饰)取消了接口说明和可变性两种修饰(2)新增两种图形方式的修饰)新增两种图形方式的修饰 :表示不可导航:表示不可导航:表示拥有权:表示拥有权(3)增加了花括号内的特性串()增加了花括号内的特性串(property string) subsets 子集合redefines 重定义union 合并ordered 有序nonunique 不唯一sequence,seq 序列48如何建立关联如何建立关联1根据问题域和系统责任发现所需要的关联根据问题域和系统责任发现所需要的关联 哪些类的对象实例之间存在着对用户业务有意义的关

42、系?哪些类的对象实例之间存在着对用户业务有意义的关系?问题域中实际事物之间有哪些值得注意的关系?问题域中实际事物之间有哪些值得注意的关系?这种信息是否需要通过有序对(或者这种信息是否需要通过有序对(或者n n元组)来体现?元组)来体现?这些信息是否需要在系统中进行保存、管理或维护?这些信息是否需要在系统中进行保存、管理或维护?系统是否需要查阅和使用由这种关系所体现的信息?系统是否需要查阅和使用由这种关系所体现的信息?492关联的复杂情况处理关联的复杂情况处理对关联属性和操作的处理对关联属性和操作的处理 对对n元关联的处理元关联的处理避免一个类在关联中多次出现避免一个类在关联中多次出现 多对多关

43、联的处理多对多关联的处理 供货商客户*多对多关联多对多关联的处理的处理供需合同卖方买方.*1 1 503为关联端点添加修饰为关联端点添加修饰 分析关联的多重性分析关联的多重性 给出关联名或角色名给出关联名或角色名识别聚合种类识别聚合种类其他修饰其他修饰导航性、特性串等导航性、特性串等根据实际情况决定是否采用根据实际情况决定是否采用限定符限定符用简单的类和关联的概念解决用简单的类和关联的概念解决4在类中设立实现关联的属性在类中设立实现关联的属性515关联定位关联定位系统管理员系统管理员1 1计算机计算机服务器服务器客户机客户机用用 户户* *操作操作使用使用1 1* *52练习:练习:1 1、一

44、对多的二元关联如何实现?举例说明。、一对多的二元关联如何实现?举例说明。2 2、多对多的二元关联如何实现?举例说明。、多对多的二元关联如何实现?举例说明。3 3、如何避免一个类在关联中多次出现?举例说明。、如何避免一个类在关联中多次出现?举例说明。4 4、基于前述建模结果,完成、基于前述建模结果,完成OOAOOA阶段类之间关系的构建,用阶段类之间关系的构建,用UMLUML标准表示法进标准表示法进行描述。行描述。538.4消息消息1、什么是消息、什么是消息 (message) 现实生活中现实生活中人或其他事物之间传递的信息,例如:人或其他事物之间传递的信息,例如:人与人之间的对话、通信、发通知、

45、留言人与人之间的对话、通信、发通知、留言交通信号灯对车辆和行人发出的信号交通信号灯对车辆和行人发出的信号人发给设备的遥控信号等人发给设备的遥控信号等软件系统中软件系统中进程或软件成分之间传送的信息进程或软件成分之间传送的信息控制信息控制信息 例如一次函数调用,或唤醒一个进程例如一次函数调用,或唤醒一个进程数据信息数据信息 例如传送一个数据文件例如传送一个数据文件面向对象的系统中面向对象的系统中(按严格封装的要求)消息是对象之间(按严格封装的要求)消息是对象之间在行为上的唯一联系方式在行为上的唯一联系方式 消息消息是向对象发出的服务请求是向对象发出的服务请求 (狭义)(狭义)消息消息是对象之间在

46、一次交互中所传送的信息(广义是对象之间在一次交互中所传送的信息(广义) 消息有发送者和接收者,遵守共同约定的语法和语义消息有发送者和接收者,遵守共同约定的语法和语义54每个消息都是向对象发出的服务请求每个消息都是向对象发出的服务请求最常见的是函数调用最常见的是函数调用消息都是同步的。消息都是同步的。接收者执行消息所请求的服务。接收者执行消息所请求的服务。发送者等待消息处理完毕再继续执行。发送者等待消息处理完毕再继续执行。每个消息只有唯一的接收者。每个消息只有唯一的接收者。顺序系统中的消息顺序系统中的消息55并发系统中的消息并发系统中的消息控制流内部的消息控制流内部的消息与顺序系统相同与顺序系统

47、相同控制流之间的消息控制流之间的消息情况复杂得多情况复杂得多消息有多种用途消息有多种用途服务请求,传送数据,发送通知,传递控制信号服务请求,传送数据,发送通知,传递控制信号消息有同步与异步之分消息有同步与异步之分同步消息(同步消息(synchronous messagesynchronous message)异步消息(异步消息(asynchronous messageasynchronous message) 接收者对消息有不同响应方式接收者对消息有不同响应方式创建控制流创建控制流 ,立即响应,延迟响应,不响应,立即响应,延迟响应,不响应发送者对消息处理结果有不同期待方式发送者对消息处理结果有

48、不同期待方式等待回应,事后查看结果,不等待不查看等待回应,事后查看结果,不等待不查看消息的接收者可能不唯一消息的接收者可能不唯一定向消息(定向消息(directed messagedirected message)广播消息(广播消息(broadcast messagebroadcast message) 56消息对面向对象建模的意义消息对面向对象建模的意义消息体现了对象之间的行为依赖关系,是实现对象之间的动态消息体现了对象之间的行为依赖关系,是实现对象之间的动态联系,使系统成为一个能运行的整体,并使各个部分能够协调联系,使系统成为一个能运行的整体,并使各个部分能够协调工作的关键因素。工作的关键

49、因素。 在顺序系统中在顺序系统中 消息体现了过程抽象的原则消息体现了过程抽象的原则一个对象的操作通过消息调用其他对象的操作一个对象的操作通过消息调用其他对象的操作在在OOOO模型中通过消息把对象操作贯穿在一起模型中通过消息把对象操作贯穿在一起系统实现后这些操作将在一个控制流中顺序地执行系统实现后这些操作将在一个控制流中顺序地执行在并发系统中在并发系统中 控制流内部的消息控制流内部的消息使系统中的每个控制流呈现出清晰的脉络使系统中的每个控制流呈现出清晰的脉络控制流之间的消息控制流之间的消息体现了控制流之间的通信关系体现了控制流之间的通信关系57OO模型需要表示消息的哪些信息模型需要表示消息的哪些

50、信息 ?(按重要性排序)(按重要性排序) (1 1)对象之间是否存在着某种消息?)对象之间是否存在着某种消息?(2 2)这种消息是控制流内部的还是控制流之间的?)这种消息是控制流内部的还是控制流之间的?(3 3)每一种消息是从发送者的哪个操作发出的?是由)每一种消息是从发送者的哪个操作发出的?是由接收者的哪个操作响应和处理的?接收者的哪个操作响应和处理的?(4 4)消息是同步的还是异步的?)消息是同步的还是异步的?(5 5)发送者是否等待消息的处理结果?)发送者是否等待消息的处理结果?58以往不同的以往不同的OOA&D方法有不同的处理方式方法有不同的处理方式 例如:例如:Coad/ Yourd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(定义对象间关系课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|