欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    UML类图关系(泛化继承实现依赖关联聚合组合)7191.pdf

    • 资源ID:79442174       资源大小:959.32KB        全文页数:14页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    UML类图关系(泛化继承实现依赖关联聚合组合)7191.pdf

    .继承、实现、依赖、关联、聚合、组合的联系与区别 分别介绍这几种关系:继承 指的是一个类称为子类、子接口继承另外的一个类称为父类、父接口的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在 Java中此类关系通过关键字 e*tends 明确标识,在设计时一般没有争议性;实现 指的是一个 class 类实现 interface 接口可以是多个的功能;实现是类与接口之间最常见的关系;在 Java 中此类关系通过关键字 implements 明确标识,在设计时一般没有争议性;依赖 可以简单的理解,就是一个类 A 使用到了另一个类 B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是 B 类的变化会影响到 A;比方*人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类 B 作为参数被类 A 在*个 method 方法中使用;关联.他表达的是两个类、或者类与接口之间语义级别的一种强依赖关系,比方我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类 B以类属性的形式出现在关联类 A 中,也可能是关联类 A 引用了一个类型为被关联类 B 的全局变量;聚合 聚合是关联关系的一种特例,他表达的是整体与局部、拥有的关系,即 has-a 的关系,此时整体与局部之间是可别离的,他们可以具有各自的生命周期,局部可以属于多个整体对象,也可以为多个整体对象共享;比方计算机与 CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;组合 组合也是关联关系的一种特例,他表达的是一种 contains-a 的关系,这种关系比聚合更强,也称为强聚合;他同样表达整体与局部间的关系,但此时整体与局部是不可分的,整体的生命周期完毕也就意味着局部的生命周期完毕;比方你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;对于继承、实现这两种关系没多少疑问,他们表达的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则表达的是类与类、或者类与接口间的引用、横向关系,是比拟难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合聚合关联依赖;聚合跟组合其实都属于关联只不过它们是两种特殊的关联因为本是同根生所以它们之间难免会有相似之处下面让我们一起来看一下它们之间有何不同 聚合与组合的概念相信不用我在此赘述大家就已经了解了下面直接上例子.程教师的“大话“里举大那个大雁的例子很贴切在此我就借用一下大雁喜欢热闹害怕孤独所以它们一直过着群居的生活这样就有了雁群每一只大雁都有自己的雁群每个雁群都有好多大雁大雁与雁群的这种关系就可以称之为聚合另外每只大雁都有两只翅膀大雁与雁翅的关系就叫做组合有此可见聚合的关系明显没有组合严密大雁不会因为它们的群主将雁群解散而无法生存而雁翅就无法脱离大雁而单独生存组合关系的类具有一样的生命周期 聚合关系图:组合关系图:从从代码上看这两种关系的区别在于:构造函数不同 雁群类:csharpview plaincopy 1.publicclassGooseGroup 2.3.publicGoose goose;4.publicGooseGroup(Goose goose)5.6.this.goose=goose;7.8.csharpview plaincopy 1.public class GooseGroup 2.3.public Goose goose;4.public GooseGroup(Goose goose)5.6.this.goose=goose;7.8.大雁类:csharpview plaincopy 1.publicclassGoose 2.3.publicWings wings;4.publicGoose()5.6.wings=newWings();.7.8.csharpview plaincopy 1.public class Goose 2.3.public Wings wings;4.public Goose()5.6.wings=new Wings();7.8.聚合关系的类里含有另一个类作为参数雁群类GooseGroup的构造函数中要用到大雁Goose作为参数把值传进来大雁类Goose可以脱离雁群类而独立存在组合关系的类里含有另一个类的实例化大雁类Goose在实例化之前一定要先实例化翅膀类Wings两个类严密耦合在一起它们有一样的生命周期翅膀类Wings不可以脱离大雁类Goose而独立存在信息的封装性不同在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的而在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在大雁类中。-UML-泛化、关联、聚合、组合、依赖 一、泛化关系generalization 1.说明 表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。2.例图 3.表现 父类父类实例new 子类();4.举例 class Animal;class Tigger:public Animal;class Dog:public Animal;Animal*pAnimal=new Dog;二、关联关系association.1.说明 对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。表示类与类之间的联接,有双向关联和单向关联,双向关联有两个箭头或者没有箭头,单向关联有一个箭头,表示关联的方向。关联关系以实例变量的形式存在,在每一个关联的端点,还可以有一个基数(multiplicity),说明这一端点的类可以有几个实例。2.例图 3.表现 双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。关联关系是使用实例变量来实现。4.举例/eg.1/单向关联 class Person;class Friend Person*mpPerson;/eg.2/双向关联 class A;class B A*pA;class A B*pB;/eg.3./自身关联 class C C*pC;三、聚合关系aggregation 1.说明:关联关系的一种,是强的关联关系。聚合是整体和个体的关系。聚合关系也是通过实例变量实现的。例如汽车、发动机、轮胎,一个汽车对象由一个发动机对象,四个轮胎对象组成。当类之间有整体-局部关系的时候,我们就可以使用组合或者聚合。2.例图 3.表现 与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没方法区分的,从语义上才能更好的区分两者的区别。4.举例 class CPU;class Memory;class puter CPU*mpCPU;Memory*mpMemory;四、组合关系合成关系position 1.说明:合成关系也是关联关系的一种,是比聚合关系更强的关系。合成关系是不能共享的。例如人有四肢、头等。表示类之间整体和局部的关系,组合关系中局部和整体具有统一的生存期。一旦整体对象不存在,局部对象也将不存在。局部对象与整体对象之间具有共生死的关系。2.例图 3.表现 4.举例./同聚合关系,不过说语义不同 class Leg;class Arm;class Person Leg mLeg;Arm mArm;五、依赖关系Dependency 1.说明:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的效劳时,这两个对象之间主要表达为依赖关系。与关联关系不同的是,依赖关系是以参数变量的形式传入到依赖类中的,依赖是单向的,要防止双向依赖。一般来说,不应该存在双向依赖。依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候 可以说是“uses了那个类,就可以把这种关系看成是依赖。2.例图 3.表现 依赖关系表现在局部变量,方法的参数,以及对静态方法的调用 4.举例 class Car;class House;class Person void buy(Car&car)void buy(House*pHouse);六、关系之间的区别 1.聚合与组合 1聚合与组合都是一种结合关系,只是额外具有整体-局部的意涵。2部件的生命周期不同.聚合关系中,整件不会拥有部件的生命周期,所以整件删除时,部件不会被删除。再者,多个整件可以共享同一个部件。组合关系中,整件拥有部件的生命周期,所以整件删除时,部件一定会跟着删除。而且,多个整件不可以同时间共享同一个部件。3聚合关系是“has-a关系,组合关系是“contains-a关系。2.关联和聚合 1表现在代码层面,和关联关系是一致的,只能从语义级别来区分。2关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的。3关联是一种构造化的关系,指一种对象和另一种对象有联系。4关联和聚合是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。3.关联和依赖 1关联关系中,表达的是两个类、或者类与接口之间语义级别的一种强依赖关系,比方我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。2依赖关系中,可以简单的理解,就是一个类 A 使用到了另一个类 B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是 B 类的变化会影响到 A。4.综合比拟 这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合聚合关联依赖;-UML 线条箭头 关系 后面的例子将针对*个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效围包括更多的语义。依赖Dependency 实体之间一个“使用关系暗示一个实体的规发生变化后,可能影响依赖于它的其他实例图 D。更具体地说,它可转换为对不在实例作用域的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用如下例所示,或者对一个类的静态方法的引用同时不存在那个类的一个实例。也可利用“依赖来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。.图 D 关联Association 实体之间的一个构造化关系说明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在 Java 中,关联图 E转换为一个实例作用域的变量,就像图 E 的“Java区域所展示的代码那样。可为一个关联附加其他修饰符。多重性Multiplicity修饰符暗示着实例之间的关系。在示代码中,Employee 可以有 0个或更多的 TimeCard 对象。但是,每个 TimeCard 只附属于单独一个 Employee。图 E 聚合Aggregation 聚合图 F是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于一样的级别。聚合也转换成 Java 中的一个实例作用域变量。关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。图 F 合成position 合成图 G是聚合的一种特殊形式,暗示“局部在“整体部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承当生存期职责。Employee 和 TimeCard 的关系或许更适合表示成“合成,而不是表示成“关联。图 G 泛化Generalization 泛化图 H表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进展建模的 UML 元素。在 Java 中,用e*tends关键字来直接表示这种关系。图 H 实现Realization 实例图 I关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对 Java 应用程序进展建模时,实现关系可直接用implements关键字来表示。图 I-UML 类图关系主要有关联,依赖,泛化,实现等,则它们的表示方法你是否熟悉,本文就像大家介绍一下 UML 类图关系的表示方法。.AD:本节和大家一起学习一下 UML 类图关系的表示方法,主要包括关联,聚合,泛化,实现,依赖等容,希望通过本节的学习大家对 UML 类图关系的表示方法有一定的掌握。下面是具体介绍。UML 根底 1:UML 类间关系的种类 2:关联 UML 类图关系中关联描述了系统中对象或实例之间的离散连接,关联带有系统中各个对象之间关系的信息。2.1 关联表示法 2.2 聚集与组合 3:泛化,继承【Generalization】UML 类图关系中泛化关系是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的根底之上,并对其进展了扩展。4:实现【realization】UML 类图关系中实现关系将一种模型元素如类与另一种模型元素如接口连接起来,其中接口只是行为的说明而不是构造或者实现。5:依赖【Dependence】UML 类图关系中依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形,提供者的*些变化会要求或指示依赖关系中客户的变化。5.1 依赖的种类 访问:允许一个包访问另一个包【access】绑定:为模板参数赋值以生成一个新的模型元素【bind】调用:声明一个类调用其他类的方法【call】导出:声明一个实例可以从另一个实例中到处【derive】友元:允许一个元素访问另一个元素而不管被访问元素的可见性【friend】引入:允许一个包访问另一个包的容并未被访问包的组成局部添加别名【import】实例化:关于一个类的方法生成了另一个类的实例的生命【instantate】参数:一个操作和他参数之间的关系【parameter】实现:说明和其实之间的映射关系【realize】精化:声明具有两个不同层次上元素的映射关系【refine】.发送:信号发送者和信号承受者之间的关系【send】跟踪:声明不同模型中元素之间的连接,没有映射准确【trace】使用:声明使用一个模型元素需要已存在的另一个模型元素,这样才能正确实现使用者的功能调用,实例化,参数,发送【use】6:约束 UML 类图关系中约束可以用来表示各种非局部的关系,如关联路径上的限制。约束尤其可以用来表述存在特性存在*则 C 条件成立和通用特性对于 Y 中的所有 y,条件 D 必须成立。7:实例 实例是有身份标识的运行实体,即它可以与其他运行实体相区分。它在任何时刻都有一个值,随着对实例进展操作值也会被改变。-类与类之间存在以下关系:(1)泛化(Generalization)(2)关联(Association)(3)依赖(Dependency)(4)聚合(Aggregation)UML 图与应用代码例子:1.泛化(Generalization)泛化表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。具体表现父类父类实例new 子类()UML 图(图 1.1)图 1.1 Animal 类与 Tiger 类,Dog 类的泛化关系代码表现class Animalclass Tiger e*tends Animalpublic class Test public void test()Animal a=new Tiger();2.依赖(Dependency)依赖对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的效劳时,这两个对象之间主要表达为依赖关系。具体表现依赖关系表现在局部变量,方法的参数,以及对静态方法的调用现实例子比方说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作UML 表现(图 1.2)图 1.2 Person 类与 Screwdriver 类的依赖关系代码表现public class Person/*拧螺丝*/public void screw(Screwdriver screwdriver)screwdriver.screw();3.关联(Association)关联对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。具体表现关联关系是使用实例变量来实现现实例子比方客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司UML 图(图 1.3)图 1.3 公司和员工的关联关系代码表现public class pany private Employee employee;public Employee getEmployee()return employee;public void setEmployee(Employee employee)this.employee=employee;/公司运作 public void run()employee.startWorking();(4)聚合Aggregation聚合当对象 A 被参加到对象 B 中,成为对象 B 的组成局部时,对.象 B 和对象 A 之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与局部之间的关系。具体表现与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没方法区分的,从语义上才能更好的区分两者的区别。关联与聚合的区别(1)关联关系所涉及的两个对象是处在同一个层次上的。比方人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表局部。比方电脑和它的显示器、键盘、主板以及存就是聚集关系,因为主板是电脑的组成局部。(2)对于具有聚集关系尤其是强聚集关系的两个对象,整体对象会制约它的组成对象的生命周期。局部类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,局部也就随之消失。比方三的电脑被偷了,则电脑的所有组件也不存在了,除非三事先把一些电脑的组件比方硬盘和存 拆了下来。UML 图(图 1.4)图 1.3 电脑和组件的聚合关系代码表现public class puter private CPU cpu;public CPU getCPU()return cpu;public void setCPU(CPU cpu)this.cpu=cpu;/开启电脑 public void start()/cpu 运作 cpu.run();-类图及类图中的关系 1.类图和对象图 类图(Class Diagram)是显示出类、接口以及他们之间的静态构造与关系的图。其中最根本的单元是类或接口。类图不但可以表示类(或者接口)之间的关系,也可以表示对象之间的关系。下面是一个典型的类图:类图一般分为几个局部:类名、属性、方法。下面分别讲解。(1)类名 上面的 Car 就是类名,如果类名是正体字,则说明该类是一个具体的类,如果类名是斜体字,则说明类是一个抽象类 abstract。(2)属性列表 属性可以是 public、protected、private。public 前面的图标是菱形,protected 对应的是菱形加钥匙,private 对应的是菱形加锁。当然,这只是一种表现方式。我是用的是Rational Rose,如果用的是别的软件,还可能使用+、-、#表示:+代表 public、-代表 private、#代表 protected。(3)方法列表 方法可以是 public、protected、private。public 前面的图标是菱形,protected 对应的是菱形加钥匙,private 对应的是菱形加锁。当然,这只是一种表现方式。我是用的是Rational Rose,如果用的是别的软件,还可能使用+、-、#表示:+代表 public、-代表 private、#代表 protected。对于静态属性,属性名会加上一条下划线。如上图所示。.此外,类图既能表示类之间的关系,还能表示对象之间的关系。二者的区别是:对象图中对象名下面会加上一条下划线。2.类图中的关系 (1)Generalization:泛化、一般化 Generalization 表示的是类与类之间的继承关系、接口与接口之间的继承关系、类与接口之间的实现关系。如果表达到 Java 语言中,那就是反响 e*tends 和 implements 关键字。其典型类图如下所示:(2)Association:关联关系 关联关系描述的是类与类之间的连接,他表示一个类知道另一个类的属性和方法。关联关系可以是单向的或者双向的。在 Java 语言中,单向的关联关系是通过以实例变量的方式持有被关联对象的引用来实现的。一般来说是不建议使用双向的关联关系的。下面举例介绍单向的关联关系。上面的类图表现的是骑手和马之间的关系。Rider 中有一个实例变量类型是 Horse。每个连接都会有两个端点,上面的Rider和Horse就是端点,且每个端点都可以有(optional)一个基数(multiplicity),表示这个类可以有几个实例。这个类似于数据库中的 1:n、m:n 这些关系。我们可以给上面的例子加上基数:上面表示的是骑手与马之间的 1 对 n 关系。(3)Aggregation:聚合关系 聚合关系是关联关系的一局部,是非常强的关联关系。聚合关系表现的更多的是整体与局部的关系。例如汽车和车门、发动机之间的关系。如下图:与关联关系一样,聚合关系也是通过实例变量实现的。单纯从语法的角度根本上无法判断出关联关系和聚合关系。(4)position:组合关系 组合关系同样也是关联关系中的一种,这种关系是比聚合关系更加强的关系。我们前面提到,聚合关系表现的是整体与局部之间的关系,组合关系是在聚合关系的根底上,表示不可分割的整体与局部之间的关系。也就是说表示整体的对象需要负责表示局部的对象的生命周期。“代表整体的对象负责保持代表局部的对象的存活,在一些情况下负责将代表局部的对象湮灭掉。代表整体的对象*些时候可以将代表局部的对象传递给另外一个对象,并由它负责代表局部的对象的生命周期。换言之,代表局部的对象同一时刻只能与一个对象构成组合关系。并且由后者排他的负责其生命周期。“Java 与模式“我们以人和手臂的关系举例,组合关系的类图如下:(5)Dependency:依赖关系 依赖关系表示一个类依赖于另一个类的定义。依赖关系是单方向的。人吃苹果,则人依赖苹果。类图如下:.一般来说,被依赖的对象往往是以局部变量、方法参数的形式存在于来对象中,与关联关系不同,它不会以成员变量的形式存在于以来对象中。这一点值得注意。另外,每一个依赖都有一个名称。上面这个依赖关系的名称就是 eats。以上就是类图和常见的类图之间的关系。

    注意事项

    本文(UML类图关系(泛化继承实现依赖关联聚合组合)7191.pdf)为本站会员(得**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开