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
一周排行
  • EF 6 Code First 系列 (二):SQLite.CodeFirst自動生成數據庫
    在Code First模式下使用SQLite一直存在不能自动生成数据库的问题,使用SQL
  • http://b-l-east.iteye.com/blog/1246482 这篇文章比较详细的介绍了 nexus 本地仓库以及与maven的配合使用 http://blog.csdn.net/arvinzhuo/a
  • string类的查找函数: int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置 int find(const char *s, int pos = 0
  • GitHub 第一坑:换行符自动转换 如果你已经做出了错误的选择,也不需要重新安装,可以直接使用命令行来修改设置.很简单,直接打开这货自带的命令行工具 Git Bash,输入以下命令,再敲回车即可: git conf
  • 


    		    facebook股市跌破29美元
    facebook在万众瞩目下上市,中国互联网巨头还为它的上市进行了小型的酒会.然而出乎意料
  • /** * @Description: * * @Title: LdAPTest.java * @Package com.joyce.itext.main * @Copyright: Copyright (c) 20
  • 对“敏捷开发”(Agile Software Development)这个词,我是在这学期邹欣老师<现代程序设计>课上第一次听到的,刚听到时并不知道其具体指什么,只是从字面上直觉其意思应该是快速开发之类的 ...
  • 好高兴,又AC一道 ,不过是很类似的两道..还是好高兴呀思想跟2833是一样的,不过要重新设计输入和输出.老师上课又重新讲解了一下,因为嫌疑人已知是0,所以加入集中时应该默认让数值小的做树根,即最终让零做树根,这样子
  • 好奇于Unity使用的mscrolib.dll和.Net Framework提供的mscrolib是否一致. 多语言标准通用对象运行时库(Microsoft Standard Common Object Runtim
  • 一.搭建LAMP环境 1.yum install httpd php php-mysql mysql mysql-server php-snmp –y 2.检查/etc/httpd/conf/httpd.conf 是