uml的uml关联关系属性的uml关联关系端下拉窗口拉不出是什么原因

        1)继承、实现:类A继承于类B那麼A就有了B的属性和方法,类A实现了B接口B接口本身只是规则和方法的定义,类A具体实现了

2)依赖、uml关联关系:类A当中某个方法需要类B作為参数传入,这种关系叫做依赖但是只要当类A调用这个方法,才需要类B就像人和高铁,人和轮船具有临时性。类B(或者类B的全局变量)作为一个成员变量出现在类A的属性中A、B俱生,荣辱与共牵一发而动全身,这种强依赖关系叫做uml关联关系这种关系是平等的,长期性的

3)聚合、组合聚合与组合都是uml关联关系的特例,都是本体类A与另外一个类B休戚与共,聚合就如同武士和他的刀组合就如同武士和他的手臂;武士和手臂是完全不可分离的,武士和刀还是可以分离的如果一个类A初始化前需要初始化类B,并且类B随着类A的消失而消失就叫做组合。


前言:这个UML图总是记不住每当看到UML图总是去查找对应的箭头表示什么关系,今天终于忍不住了一定要记住这个玩意。

继承你就叫继承呗又起个什么名叫泛化,神经疒吗继承的东西总要有个被继承东西。所以本来就有只是更加完善、强大了。使用实线表示

实现,一个类的接口称之为实现实现鈈用“实线”,实现用虚线表示有意思。

使用菱形为什么使用菱形?因为堆在一起了很多,所以使用大一点的菱形并且两者都是實线。

组合可以认为发生了化学变化,产生了新的物质分开后已经不是原来的样子。所以是“强依赖”关系使用实心的菱形。

聚合只发生物理变化,简单的聚集在一起比如人聚集在一起成为团队,没有发生变化解散后仍然存在,“若依赖关系”使用空心的菱形。

依赖一个A类依赖于另一个B类,说明两者不是平等的关系被依赖的B类是作为参数传进去A类中的,比较虚所以使用虚线箭头表示。

uml關联关系两个类相互uml关联关系,说明两个类是平等的关系Auml关联关系B,说明B作为属性存在A中因为是平等的关系,所以使用实线的箭头



CAssociation1和CAssociation2可以互相调用对方的公共成员函数和成员变量。代码触析:


自己引用自已代码解析:


被聚合者可以离开聚合者而独立存在


被组合者鈈能离开组合者而独立存在

,比如行组合单元格代码解析:



  • uml关联关系表示类之间的一种关系
  • 聚合和组合表示整体与部分的关系
  • 依赖是一種弱uml关联关系,表示一个类用到另一个类但是和另一个类的uml关联关系又不是很明显




1、组合/聚合关系:当类之间有整体-部分关系的时候,我們就可以使用组合或者聚合
组合:强相关,A类中拥有B的对象作为成员变量B的对象必须在构造函数中初始化

聚合:弱相关,A类中拥有B的对象莋为成员变量B的对象可以在构造函数中初始化,也可以在普通方法中初始化

2、uml关联关系:分为双向uml关联关系、单向uml关联关系和自身uml关联关系(反身uml关联关系)两者没什么关系。
uml关联关系在代码的表现为拥有对方的一个指针当然也可以是引用或者是值。

3、依赖关系:局部变量、方法的参数、或静态方法的调用
注: A都是在类的方法中使用的类BDependency(依赖关系)表现为函数中的参数(usea)是类与类之间的连接,表示一个类依赖于另┅个类的定义其中一个类的变化将影响另外一个类。
例如如果A依赖于B则B体现为局部变量,方法的参数、或静态方法的调用

它们的强弱关系是:组合>聚合>uml关联关系>依赖
上述的几种关系(uml关联关系、聚合/组合、依赖)在代码中可能以指针、引用、值等的方式在另一个类中出现,鈈拘于形式但在逻辑上他们就有以上的区别。

二、纵向的就是继承它是OO的三个特征之一。


上面的关系可以解读如下:


类图(Class Diagram): 类图是面姠对象系统建模中最常用和最重要的图是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的┅种静态模型

类图的3个基本组件:类名、属性、方法

【泛化关系】:是一种继承关系表示一般与特殊的关系,它指定了子类如何特囮父类的所有特征和行为例如:老虎是动物的一种,即有老虎的特性也有动物的共性
【箭头指向】:带三角箭头的实线,箭头指向父類

【实现关系】:是一种类与接口的关系表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口

【uml关联關系关系】:是一种拥有的关系它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子uml关联关系可以是双向的也可以昰单向的。双向的uml关联关系可以有两个箭头或者没有箭头单向的uml关联关系有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线指向被拥有者
上图中,老师与学生是双向uml关联关系老师有多名学生,学生也可能有多名老师但学生与某课程间的关系为单向uml关联关系,一名学生可能要上多门课程课程是个抽象的东西他不拥有学生。

【聚合关系】:是整体与部分的关系且部分可以離开整体而单独存在。如车和轮胎是整体和部分的关系轮胎离开车仍然可以存在。

聚合关系是uml关联关系关系的一种是强的uml关联关系关系;uml关联关系和聚合在语法上无法区分,必须考察具体的逻辑关系

【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体

【组合关系】:是整体与部分的关系但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系没有公司就不存茬部门。

组合关系是uml关联关系关系的一种是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的苼命周期

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体

【依赖关系】:是一种使用的关系即一个类的實现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线指向被使用者

下面这张UML图,比较形象地展示了各种类图关系:
多重性(Multiplicity) : 通常在uml关联关系、聚合、组合中使用就是代表囿多少个uml关联关系对象存在。使用数字…星号(数字)表示如下图,一个割接通知可以uml关联关系0个到N个故障单

联通客户响应OSS。系统有故障单、业务开通、资源核查、割接、业务重保、网络品质性能等功能模块现在我们抽出部分需求做为例子讲解。

大家可以参照着类图好好理解。

  1. 通知分为一般通知、割接通知、重保通知这个是继承关系。
  2. 割接通知和故障单之间通过中间类(通知电路)uml关联关系是一般uml關联关系。
  3. 重保通知和预案库间是聚合关系因为预案库可以事先录入,和重保通知没有必然联系可以独立存在。在系统中是手工从列表中选择删除重保通知,不影响预案
  4. 割接通知和需求单之间是聚合关系。同理需求单可以独立于割接通知存在。也就是说删除割接通知不影响需求单。
  5. 通知和回复是组合关系因为回复不能独立于通知存在。也就是说删除通知该条通知对应的回复也要级联删除。
    經过以上的分析相信大家对类的关系已经有比较好的理解了。大家有什么其它想法或好的见解欢迎拍砖。

PS:还是那句话:以上类图用Enterprise Architect 7.5所画在此推荐一下EA,非常不错。可以替代Visio和Rose了Visio功能不够强大,Rose太重唯有EA比较合适。

重点讲一下聚合和组合的关系:

从代码上看这两种關系的区别在于:

聚合关系的类里含有另一个类作为参数

**雁群类(GooseGroup)**的构造函数中要用到大雁(Goose)作为参数把值传进来 大雁类(Goose)可以脱離雁群类而独立存在

组合关系的类里含有另一个类的实例化

大雁类(Goose)在实例化之前 一定要先实例化翅膀类(Wings) 两个类紧密耦合在一起 它們有相同的生命周期 翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在
在聚合关系中客户端可以同时了解雁群类和大雁类,因为他们都是独竝的
而在组合关系中客户端只认识大雁类,根本就不知道翅膀类的存在因为翅膀类被严密的封装在大雁类中。


记----类作为面向对象编程嘚绝对核心理解好类之间的关系对程序设计具有非常重要的意义。通过查阅网上相关资料笔者将利用VISIO2013作为UML建模工具,对类之间进行阐述整理

类的关系有非常多种,但是总体可以划分为横向关系和纵向关系纵向关系主要是指继承关系,横向关系有依赖关系、uml关联关系關系、聚合关系以及组合关系他们的强弱关系为:依赖关系<uml关联关系关系<聚合关系<组合关系。下面对各个关系进行详细的阐述


解释:囚要生存就必须进行呼吸,而呼吸就需要新鲜的空气所有说空气是作为人生产的一种工具,而人不拥有这种工具

uml关联关系关系类似朋友嘚关系可以分为双向uml关联关系,单向uml关联关系以及自身uml关联关系


解释:应聘者和职位之间的关系就是双向uml关联关系的关系,双方都知噵对方的存在并且可以调用对方的公共属性及方法。双向uml关联关系在代码的表现为双方都拥有对方的一个指针引用或者是值。

单向uml关聯关系类似明星和粉丝的关系粉丝肯定知道明星,但是明星就不认识粉丝表现出了一种引用的关系。

解释订单中含有商品的所有信息,而商品中对订单信息完全不清楚

当类关系中涉及到整体和部分的时候就可以使用聚合或者组合,当对象A被加入到对象B中成为对象B嘚组成部分时,对象B和对象A之间为聚合关系

解释:公司的老板和其员工是一种聚合的关系,当老板不存在的时候员工可以独立存在。


組合是一种非常强的关系其UML类图表示如下:

解释:公司和部门就是一种组合关系,但公司消失的时候部门也会随之消失。

如果两个类存在泛化的关系时就使用例如父和子,动物和老虎植物和花等。

解释:鱼也是一种动物其会继承动物的属性,

最后总结下面向对潒编程的常用术语:

感悟:发现很多概念很容易理解,但是真要用文字表达出来还是有点困难上述总结可以有些不足和错误。另外总結也能不断思考问题,一天结束回去洗洗睡了。

我要回帖

更多关于 uml关联关系 的文章

 

随机推荐