98UML類圖

UML类图中的关系分为四种:泛化关系、依赖关系、关联关系、实现关系;关联关系又可以细化为聚合和组合

 +:public

 -:private

 #:protected

1. 泛化(Generalization)

泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。

类名称如果为斜体,说明这个类是抽象类

                             98UML類圖

2. 依赖(Dependencies)

依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一事物使用另一个事物时使用,两个元素之间的一种关系,其中一个元素(服务者)的变化将影响另一个元素(客户),或向它(客户) 提供所需信息。它是一种组成不同模型关系的简便方法。依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形,提供者的某些变化会要求或指示依赖关系中客户的变化。

根据这个定义,关联和泛化都是依赖关系,但是它们有更特别的语义,故它们有自己的名字和详细的语义。我们通常用依赖这个词来指其他的关系。依赖用一个从客户指向提供者的虚箭头表示,用一个构造型的关键字来区分它的种类,通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数 。

        98UML類圖

3. 关联(Association)

关联是一种结构化的关系,指一种对象和另一种对象有联系。给定有关联的两个类,可以从一个类的对象得到另一个类的对象。关联有两元关系和多元关系。两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。一般用实线连接有关联的同一个类或不同的两个类。当你想要表示结构化关系时使用关联,如果几个类元的实例之间有联系,那么这几个类元之间的语义关系即关联。关联描述了系统中对象或实例之间的离散连接。关联将一个含有两个或多个有序表的类元,在允许的情况下连接起来。最普通的关联是一对类元之间的二元关联。关联的实例之一是链。每个链由一组对象(一个有序列表)构成,每个对象来自于相应的类。二元链包含一对对象。关联带有系统中各个对象之间关系的信息。当系统执行时,对象之间的连接被建立和销毁。关联关系是整个系统中使用的“胶粘剂”,如果没有它,那么只剩下不能一起工作的孤立的类。在关联中如果同一个类出现不止一次,那么一个单独的对象就可以与自己关联。如果同一个类在一个关联中出现两次,那么两个实例就不必是同一个对象,通常的情况都如此。二元关联用一条连接两个类的连线表示。聚集表示部分与整体关系的关联,它用端点带有空菱形的线段表示,空菱形与聚集类相连接。组成是更强形式的关联,整体有管理部分的特有的职责,它用一个实菱形物附在组成端表示。每个表示部分的类与表示整体的类之间有单独的关联,但是为了方便起见,连线结合在一起,现在整组关联就像一棵树。

关联关系是通过类的成员变量 来实现的                         

    3.1 聚合(Aggregation)

聚合是一种特殊的关联。它描述了“has a”关系,表示整体对象拥有部分对象。("is a"的意思是A就是B,那么B就是基类。“has a”的意思是A是B的一部分,从属关系)

关联关系和聚合关系来语法上是没辦法区分的,从语义 上才能更好的区分两者的区别。聚合是较强的关联关系,强调的是整体与部分 之间的关系。

与关联关系一样,聚合关系也是通过类的成员变量 来实现的。      

                     98UML類圖

class Car{
    Wheel _wheel=new Wheel();
}

 

 

聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但是B对象不是A对象的一部分。 轮胎是车子的一部分,就算没有轮胎车子还具有其他的部分。

3.2 组合(Composition)

组合是聚合的一种形式,它具有更强的拥有关系,强调整体与部分的生命周期 是一致的。整体负责部分的生命周期的管理。如果整体被销毁,部分也必须跟着一起被销毁,如果所有者被,部分也必须一起被。

与关联关系一样,组合关系也是通过类的成员变量 来实现的。

 

     98UML類圖

class Company{
    public Company{
      Department _Department=new Department();
      //在初始化的时候,就要实例化Department,他们同时生成  
    }
}

 

 

 组合是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。公司是由各个部门组成的,如果没有了部门,公司也就不存在了。

4. 实现接口(Realization)

实现关系指定两个实体之间的一个合约。换言之,一个实体定义一个 合约 ,而另一个实体保证履行该 合约 接口的顶端有《interface》或者是“棒棒糖”的图形表示。

 

           98UML類圖

更多相关文章
  • 本文基于UML规范,介绍了类图中的接口与接口实现. ...请打开附件阅读全文. 本文出自 "至简李云" 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/181404
  • 看懂UML類圖和時序圖
    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图所表达的含义和最终的代码对应起来: 有了这些知识,看后面章节的设计模式结构图就没有什么问题了: 本章 ...
  • Astah 使用   流程圖、類圖、時序圖
    1 流程图           右键 _ create Diagrm _ add Flow
  • UIView UIActionSheet UIActivityIndicatorView UIAlertView UICollectionReusableView 子类 UICollectionViewCell UI
  • UMLUML系列——類圖Class
    相关文章       [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成         1.类图的概念             类图是描述类.接口已经他们之间关系的图,它显示了系统中各个类的静
  • UMLUML系列——類圖class的實現關系Realization
    系列文章       [UML]UML系列——用例图Use Case       [UML
  • 


    		    UML建模之類圖(Class Diagram,UML圖)
    一.简介 类是对象的集合,展示了对象的结构以及与系统的交互行为.类主要有属性(Attrib
  • 


    		    PowerDesigner 反轉Java代碼生成類圖
    首先当然是新建一个OOM. 单击Language->Reverse Engineer Ja
一周排行
  • 


    		    筆記本電腦的選購之一(2011年10月)
    每年到了11月份这个时候,很多新生都开始着手准备购买笔记本电脑了,但面对市场上琳琅满目的产 ...
  • Windows 7 上安裝Visual Studio 2015 失敗解決方案
    安装之前先要看看自己的系统支不支持,具体的可以看:https://www.visualst
  • 今天看到豆瓣面试官的一篇文章,讲到关于CSS中的一个知识点:Block formatting context  ,感觉这个确实挺有用,同时我也挺赞同作者的一些观点的,这里就不展开谈我的感受了, 此文只聊聊技术. 1.
  • struct模块提供对数据进行格式化和打包解包功能,这块对socket通信编程很有用,先熟悉下 #coding:utf-8 import struct import binascii #数据 a = (3389, ' ...
  • 


    		    Excel 2007 “Cannot shift object off sheet” 解決辦法
    昨天我在编辑一个Excel 2007的文件时,想新增一行,但每次都不行,Excel提示&q ...
  • [Android]打开eclipse报错:发现了以元素 ‘d:skin’ 开头的无效内容.此处不应含有子元素. [错误]打开eclipse报错:发现了以元素 ‘d:skin’ 开头的无效内容.此处不应含有子元素. [
  • 确认是否安装UDEV [[email protected] ~]# rpm -qa|grep udev udev-4.21.el5 1.进入/dev目录查看块设备 cd /dev ls -l sd* 2.执行脚本 for i ...
  • 我们常说的VLAN之间的访问控制,它的实现方式是将ACL直接应用到VLAN的虚端口上,与应用到物理端口的ACL实现方式是一样的.而VLAN访问控制(VACL),也称为VLAN访问映射表,它的实现方式与前者完全不同.它
  • 把2个具有相同列及数据类型的 结果 放到一起显示,并且不去重.select a,b,c from table1union allselect ca,cb,cc from table2而union会对返回的结果进行滤重
  • Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertic ...