`
uule
  • 浏览: 6358930 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

UML类图介绍及画法

 
阅读更多

箭头:

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

 

 

继实三(继承、实现是三角箭头)

继关实(继承、关联是实线)

依实虚(依赖、实线是虚线)

 

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

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

继承是实线,实现是虚线

关联是实线

依赖是虚线

 

        一般化关系/泛化/继承

        实现

 

        关联

        聚合

            组合/合成 

 

        依赖

 

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

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

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

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

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

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

 

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

 

1. 类(Class

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

 

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

 

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

 

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

 

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

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

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

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

1

 

public class TaxCalculator
{      
         private longtaxRate ;
         private intsalary;

         public TaxCalculator(long taxRate)
         {
                   this.taxRate = taxRate ;
         }

        public long countTax()
         {
                  return taxRate*salary;
         }

         public int getSalary()
         {
                   return salary;
         }

         public void setSalary(int salary)
         {
                   this.salary = salary;
         }

} 
 

TaxCalculator

-taxRate:long

+TaxCalculator(a:long)

+countTax():long

salary:long

 

      
2.
包(Package

 

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

 



 

3. 接口(Interface

 

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

 

例:

 

public interface TaxCalculator
{
         public long countTax();

         public int getSalary();

         public void setSalary(int salary);

} 
 

画法一:

 



 

 

      画法二 :    

 

Interface

TaxCalculator

+countTax():long

+getSalary():int

+setSalary()

 
 

4. 关系

 

常见的关系有:

一般化关系(继承)、

实现关系(接口实现)、

聚合关系、

合成关系、

依赖关系。

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

 

4.1一般化关系(Generalization

 

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

 

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

 

public abstract class Employee{

}

public class Programmer extends Employee{

} 
 继承:

 



 

 

4.2实现(Realization

 

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

 

public interface CollegePerson{

}

public class Professor implements CollegePerson{

}
 接口实现:

 

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



 

 

表示方法二: 



 

 

 

 

4.3关联(Association

 

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

 

基数

含义

0..1

零个或者一个实例

0..*或者*

没有限制,任意

1

有且只能一个实例

1..*

至少有一个实例

 

常见的基数

 

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

public class UserGroup{

private UserRole uRole ;

          ......

}

public class UserRole{

} 
 

 

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



 

 


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

 

4.4聚合(Aggregation

 

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

 

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

 

public class Car{

         private Tyres tyres;
}

public class Tyres{

} 
 聚合:

 



 

 

 

4.5合成、组合(Composition

 

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

 

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

 

public class Man{

         private Legs legs;

}

public class Legs{

} 
 合成:

 



 

 

 

4.6依赖(Dependency

 

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

 

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

 

public class Employee{

         public void calcSalary(Calculator cSalary)
         {

         }
} 
 依赖:




 

  • 大小: 6.7 KB
  • 大小: 10.7 KB
  • 大小: 8.1 KB
  • 大小: 10.7 KB
  • 大小: 9.5 KB
  • 大小: 9.5 KB
  • 大小: 10.2 KB
  • 大小: 7.7 KB
  • 大小: 10 KB
分享到:
评论

相关推荐

    UML类图画法全程解析

    在UML类图中,主要元素包括: 1. 类(Class):类是一个复杂的数据类型,包含数据(属性)和操作(方法)。在UML图中,类通常用三层矩形表示,第一层写类名,第二层列属性,第三层列方法。类的访问修饰符(public、...

    讲述UML类图的画法

    讲述UML类图的画法 UML类图是一种重要的模型化工具,用于描述软件系统中的类、对象和它们之间的关系。通过本篇文章,我们将学习如何画UML类图,并解释为什么要这么画。 类图的基本元素包括:类、接口、继承关系、...

    uml类图的画法.txt

    ### UML类图的画法详解 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的标准化建模语言,它帮助开发者更好地理解、设计和构建软件系统。UML类图作为UML中的一种重要图形表示形式,...

    个人总结UML类图介绍

    "个人总结UML类图介绍" UML(Unified Modeling Language)是OMG(Object Management Group)发表的图标式软件设计语言,主要功能有可视化、说明、建造、建文档。UML 包括多种图表,例如用例图、类图、序列图、合作...

    UML类图画法简介word文档

    【UML类图详解】 UML(Unified Modeling Language)是一种标准化的、通用的建模语言,由OMG(Object Management Group)制定,用于可视化软件系统的结构和行为。它通过图表形式,如用例图、类图、序列图、合作图等...

    UML2类图的画法

    ### UML2 类图的基本概念及绘制...通过以上介绍可以看出,UML2 类图是一种非常有用的工具,它可以帮助开发者更好地理解和设计软件系统的结构。在实际应用中,根据具体的需求灵活运用类图的不同元素和概念是非常重要的。

    UML类图关系大全

    详详细细描述了UML类图以及其他图的画法。

    UML经典教程。各种类图画法一目了然。

    UML经典教程。各种类图画法一目了然。手把手教你uml。浅显易懂。一学就会

    面向对象历年考试题.zip

    山东大学 软件学院 面向对象期末考试 历年考试题 包括本科面向对象复习重点、UML类图的简要画法 山东大学 软件学院 面向对象期末考试 历年考试题 包括本科面向对象复习重点、UML类图的简要画法

    UML中各种图的画法(全)

    - 在UML类图中,继承通常通过一条实线连接两个类,末端有一个闭合的箭头(或三角形)指向父类表示。 3. **接口的表示**: - 接口是一个特殊的类,它定义了一组操作的集合,但不提供这些操作的具体实现。 - 在UML...

    包含类图的定义及类图的画法及类图的相关 类 接口关系的画法

    **类图**(Class Diagram)作为统一建模语言(UML, Unified Modeling Language)的一部分,主要用于描述系统的静态结构,尤其是系统中存在的类、类的内部结构及其相互间的关系。类图能够清晰地展示出对象之间如何...

    类图实例,关于类图学习心得、类图怎么画、visio作图

    至于“visio作图”,Microsoft Visio是一款强大的绘图软件,广泛用于创建各种图表,包括UML类图。要使用Visio绘制类图,首先你需要安装Visio程序。安装完成后,打开Visio并选择UML模型图或类图模板。在模板中,你...

    UML 9种图 概述(22张PPT).ppt

    UML9种图概述

    软件工程——UML图详解例题

    本资料包详细涵盖了UML中的九种主要图表,帮助你深入理解和掌握这些图的画法及其应用场景。下面我们将逐一解析这些图表及其重要知识点。 1. **用例图**(1__单项练习之用例图.pdf):用例图描绘了系统外部用户...

    uml_uml_

    1. **类图(Class Diagram)**:类图是UML中最基础的图,用于描绘类、接口以及它们之间的关系,如继承、关联、聚合和组合。类图展示了类的属性、操作以及它们的访问权限。 2. **对象图(Object Diagram)**:对象图是...

    用EA(Enterprise Architect)画UML图

    UML包括多种图表,如用例图、类图、序列图、状态图、活动图、组件图和部署图等。这些图表分别用于描述不同的视角,例如用例图展示用户与系统交互,类图描绘对象之间的静态关系,序列图展示动态交互过程。 2. EA的...

    uml 神州 用例分析

    接下来,我们将深入探讨UML类图及其在神州六号飞船项目中的应用。 ### UML类图基础知识 #### 类的概念 在面向对象编程中,类是具有相同属性和行为的对象的抽象表示。一个类定义了一组相关的数据(属性)和操作这些...

    完整word版,UML各种图画法总结.docx

    类图是UML图画法中的一种,用于描述系统的静态结构和类之间的关系。类图由类和它们之间的关系组成。类图是构建面向对象模型的基础,是表示系统的静态模型。 类图的元素包括: * 类(Class):表示对象的抽象描述,...

    UML各种图画法总结.pdf

    本资源总结了UML各种图画法的知识点,涵盖了用例图、类图等基本概念和关系,通过对UML图画法的详细解释,帮助读者深入了解UML模型的构建和应用。 一、用例图 用例图是UML中的一种图形化方法,用于描述系统的功能...

    UML各种图画法总结

    【UML概述】 UML(Unified Modeling Language)是一种标准化的通用建模语言,用于软件开发过程中的可视...总之,UML通过用例图和类图等工具,为软件开发提供了强大的模型化支持,帮助团队更好地理解和设计复杂的系统。

Global site tag (gtag.js) - Google Analytics