FROM:http://uule.iteye.com/blog/2078935

箭头:

指向父类或接口。
指向依赖物。
指向子元素。

继承、实现是三角型箭头,其他都为箭头

组合、聚合都有一个菱形端,且都为实线,其他都无菱形端

继承是实线,实现是虚线

关联是实线

依赖是虚线

一般化关系/泛化/继承

实现

关联

聚合

组合/合成

依赖

传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系:

泛化:表示类与类之间的继承关系、接口与接口之间的继承关系;

实现:表示类对接口的实现;

依赖:当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种“相识关系”,只在某个特定地方(比如某个方法体内)才有关系。

关联:表示类与类或类与接口之间的依赖关系,表现为“拥有关系”;具体到代码可以用实例变量来表示;

聚合:属于是关联的特殊情况,体现部分-整体关系,是一种弱拥有关系;整体和部分可以有不一样的生命周期;是一种弱关联;

组合:属于是关联的特殊情况,也体现了体现部分-整体关系,是一种强“拥有关系”;整体与部分有相同的生命周期,是一种强关联;

1. 类(Class

一般包含3个组成部分。第一个是类名;第二个是属性(attributes);第三个是该类提供的方法(类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分)。类名部分是不能省略的,其他组成部分可以省略。

类名书写规范:正体字说明类是可被实例化的,斜体字说明类为抽象类。

属性和方法书写规范:修饰符 [描述信息] 属性、方法名称 [参数] [:返回类型|类型]

属性和方法之前可附加的可见性修饰符:

加号(+)表示public;减号(-)表示private;#号表示protected;省略这些修饰符表示具有package(包)级别的可见性。

如果属性或方法具有下划线,则说明它是静态的。

描述信息使用 << 开头和使用 >> 结尾。

类的性质是由一个属性、一个赋值方法和一个取值方法组成。书写方式和方法类似。

例1:

Java代码  
  1. public class TaxCalculator
  2. {
  3. private longtaxRate ;
  4. private intsalary;
  5. public TaxCalculator(long taxRate)
  6. {
  7. this.taxRate = taxRate ;
  8. }
  9. public long countTax()
  10. {
  11. return taxRate*salary;
  12. }
  13. public int getSalary()
  14. {
  15. return salary;
  16. }
  17. public void setSalary(int salary)
  18. {
  19. this.salary = salary;
  20. }
  21. }

TaxCalculator

-taxRate:long

+TaxCalculator(a:long)

+countTax():long

salary:long

2. 包(Package

包是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,通常使用逻辑性的包,用于对模型进行组织;使用物理性的包,用于转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。例:


3. 接口(Interface)

接口是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口的表示有大概两种方式。具体画法见下例:

例:

Java代码  
  1. public interface TaxCalculator
  2. {
  3. public long countTax();
  4. public int getSalary();
  5. public void setSalary(int salary);
  6. }

画法一:

画法二 :

Interface

TaxCalculator

+countTax():long

+getSalary():int

+setSalary()

4. 关系

常见的关系有:

一般化关系(继承)、

实现关系(接口实现)、

聚合关系、

合成关系、

依赖关系。

请注意不同关系在图中连线表示的不同。

4.1一般化关系(Generalization)

在有的书籍和资料中也叫做“泛化关系”。

一般化关系表示类与类、接口与接口之间的继承关系。关系中的箭头由子类指向父类。在Java中,用extends关键字来直接表示这种关系。

Java代码  
  1. public abstract class Employee{
  2. }
  3. public class Programmer extends Employee{
  4. }

 继承:

4.2实现(Realization)

实例关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。关系中的箭头由实现接口的类指向被实现的接口。在Java中,实现关系可直接用implements关键字来表示。

Java代码  
  1. public interface CollegePerson{
  2. }
  3. public class Professor implements CollegePerson{
  4. }

 接口实现:

表示方法一:(在Rose2003 下实现如下,连接线没有箭头,因为方向显而易见)

表示方法二:

4.3关联(Association)

表示类与类之间的连接。它使一个类的可见属性和方法被另一个类使用。关联可以是双向或者单向的。双向的关联箭头是可选的,单向的箭头指向遍历或者查询的方向。在Java中,关联使用实例变量来实现。在关联关系中可以使用附加的基数来说明类之间对应的个数。

基数

含义

0..1

零个或者一个实例

0..*或者*

没有限制,任意

1

有且只能一个实例

1..*

至少有一个实例

常见的基数

例:以权限中的用户组、用户角色为例,一个用户角色可以属于一个或者多个用户组,一个用户组则可以包含多个用户角色。如果用户组采用下面的方法来获得用户角色的权限…

Java代码  
  1. public class UserGroup{
  2. private UserRole uRole ;
  3. ......
  4. }
  5. public class UserRole{
  6. }

则表现在图中为:(注意箭头的画法)

注意:一个关联关系往往是聚合关系或者是合成关系。

4.4聚合(Aggregation)

聚合是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。在Java中,聚合也是使用实例变量来实现的。
关联和聚合的区别纯粹是概念上的,在Java语法上分辨不出来的。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。

例:汽车与轮胎的关系可以很好的说问题。

Java代码  
  1. public class Car{
  2. private Tyres tyres;
  3. }
  4. public class Tyres{
  5. }

 聚合:

4.5合成、组合(Composition

合成是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成关系是不能共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。

例:人和他的腿就是一个好的例子。

Java代码  
  1. public class Man{
  2. private Legs legs;
  3. }
  4. public class Legs{
  5. }

 合成:

4.6依赖(Dependency)

依赖也是类与类之间的连接,并且依赖总是单向的。实体之间一个“使用”关 系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例。更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个 局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。

例:给一个雇员计算薪水的时候,要使用计算器的例子

Java代码  
  1. public class Employee{
  2. public void calcSalary(Calculator cSalary)
  3. {
  4. }
  5. }

 依赖:

UML类图介绍及画法相关推荐

  1. Android UML类图介绍及画法

    转载于:http://uule.iteye.com/blog/2078935 继承.实现是三角型箭头,其他都为箭头 组合.聚合都有一个菱形端,且都为实线,其他都无菱形端 继承是实线,实现是虚线 关联是 ...

  2. android 继承类图,Android Studio中绘制UML类图介绍

    Android Studio中绘制UML类图介绍 Android Studio中绘制UML类图介绍 动机 最近开始阅读项目源码,从其中一个模块开始看,奈何大项目中的一个模块,对于萌新而言,也太过于复杂 ...

  3. UML类图介绍及简单用法

    原文链接 一.类的属性的表示方式 在UML类图中,类使用包含类名.属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和em ...

  4. [UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之一

    统一建模语言(Unified Modeling Language,UML) 可分类成: 功能模型:从用户的角度展示系统的功能,包括用例图. 对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基 ...

  5. UML类图关系的画法

    继承 ( 泛化 ) 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键 ...

  6. UML类图与类的关系

    内容概要 UML类图介绍 类之间的关系 泛化与实现 关联 依赖 类之间的关系 泛化与实现 关联 依赖 1111 1111-1 1111-2 222 UML类间关系有泛化(Generalization) ...

  7. 设计模式(0):UML类图(Class Diagram)

    文章目录 一. 基本概念 1. 泛化(Generalization) 2. 实现(Realization) 3. 关联(Association) 4. 聚合(Aggregation) 5. 组合(Co ...

  8. java uml类图举例_UML类图介绍

    UML类图非常简单,可以用下面的图表示一个类: 该图表示一个叫做Person的类,该类有name.age.sex三个private属性,每个属性的类型紧跟在冒号的后面.该类有walk和speak两个方 ...

  9. UML类图新手入门级介绍

    UML类图新手入门级介绍 看了大话设计模式,觉得很生动形象,比较适合于我这种初学者理解面向对象,所以就记录了一下. 举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法. 首先,看动 ...

最新文章

  1. 函数计算新功能-----支持C#函数
  2. Ubuntu 关机,重启,注销命令
  3. batchnorm2d参数 torch_Pytorch-nn.BatchNorm2d()
  4. 华容道游戏开发--android小组
  5. 利益相关者软件工程_如何向利益相关者解释用户体验的重要性
  6. P4345-[SHOI2015]超能粒子炮·改【Lucas定理,类欧】
  7. 面试官 | Java 对象不使用时为什么要赋值为 null?
  8. 使用springboot遇到的的异常
  9. 爬虫套路知多少?反爬策略是关键
  10. 利用 SQL Monitor 查看语句运行状态步骤
  11. c++实现压缩解压 zip文件
  12. 【实用工具】treer生成项目的目录结构,帮助大家书写好的项目readme
  13. springboot+vue医院预约挂号系统java
  14. 虚幻引擎 4 14 版发布
  15. 图片怎么变成html链接,HTML图片怎么超链接
  16. linux命令行界面鼠标,有趣的Linux命令:小猫咪追鼠标
  17. R语言 Rstudio 安装 包 报错installation of package ‘*’ had non-zero exit status
  18. 全文检索服务器-Elasticsearch
  19. 2012-11-1小光棍节【就在今天,我们进行了这学期的第一次考试】下面写下今天的考试心得~!
  20. centOS中自带的jdk卸载

热门文章

  1. H5页面使用微信网页授权实现登录认证
  2. vue实现移动端图片预览
  3. ggplot2箱线图的美化之路: 箱线图到直方图加散点图再加误差线的美化之路
  4. 图片转文字微信小程序
  5. 快手:直播很火,但没广告赚钱
  6. Python 使用sigthief 签发证书
  7. OSChina 周六乱弹 ——自从我知道了地震的含义以后……
  8. python微信抢红包神器_Python自动抢红包,超详细教程,再也不会错过微信红包了...
  9. 名词解释RPO和RTO
  10. 360浏览器服务器证书,360浏览器属性中的证书在哪找