`
coolbi
  • 浏览: 85374 次
  • 性别: Icon_minigender_1
  • 来自: 重庆&南京
社区版块
存档分类
最新评论

UML 类图简介(转)

阅读更多

一、UML简介

       UML(Unified Modeling Language)即统一建模语言,是OMG(Object Management Group)发表的图标式软件设计语言。
                                                                                    
UML的功能

可视化:
使用图表的形式来表现业务关系或者物理关系,可以促
            进对问题的理解和解决。
说明:  UML提供了一种通用的、精通的、没有歧义的通信机
            制进行。
建造:  UML通过自己的语法规则使得可以通过使用建模工具软
            件将设计模式映射到一种语言上。
建文档: 使用UML进行设计可以同时产生系统设计文档。

UML包括

              用例图(Use case diagrams

              类图(Class diagrams

              序列图(Sequence diagrams

              合作图(Collaboration diagrams

              状态图(Statechart diagrams

              活动图(Activity diagrams

              构件图(Component diagrams

              部署图(Deployment diagrams

(蓝色为较重要并且常用的图)

类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。

类图最基本的元素是类或者接口。

 

二、类图

 

1. 类(Class

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

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

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

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

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

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

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

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

1

       public class TaxCalculator

{   

      private long  taxRate ;

      private int  salary  ;

     

      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)

      {

      }

}

原文地址 http://www.inspiresky.com/Article/softengineering/200703/1929.html

分享到:
评论

相关推荐

    JDK UML 类图大全

    在JDK中,UML类图可以帮助我们理解和分析Java类库的结构,包括类、接口、继承关系、关联、聚合和组合等。 **类图的基本元素** 1. **类(Class)**: 类图的核心元素,表示具有共同属性、操作和关系的一组对象。在...

    uml 类图实例

    uml 类图实例 oom powerdesigner 绘制

    计算器 UML类图 c++

    在IT行业中,UML(统一建模语言)是一种标准的...学习这个案例,你可以了解如何将业务逻辑转化为UML类图,再将类图转换为实际的C++代码。这有助于提升你对面向对象编程的理解,同时也能掌握UML在软件工程中的实际应用。

    spring源码全部uml类图

    在"spring源码全部uml类图"中,我们可以深入探讨Spring框架的内部结构和设计模式。 首先,Spring框架的核心组件包括IoC(Inversion of Control,控制反转)容器和AOP(Aspect-Oriented Programming,面向切面编程)...

    eclipse画UML类图的jar包.zip

    "eclipse画UML类图的jar包.zip"是一个包含Eclipse插件的压缩文件,这些插件允许用户在Eclipse环境中绘制UML类图。UML类图是UML中的核心元素,它用于表示系统的静态结构,包括类、接口、继承关系、关联关系等。 这个...

    UML类图的各符号含义及表示

    下面我们将详细解释UML类图中各符号的含义。 1. 类(Class):在UML类图中,类通常用三层矩形表示。第一层写类的名称,如果类是抽象的,则名称以斜体显示。第二层列出类的属性(fields)和字段,第三层列出类的方法...

    六大UML类图以及关系

    ### UML类图关系详解 #### 一、引言 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的图形化语言,它帮助开发者理解和设计系统。其中,UML类图是最常用的一种图示方式,用于描述系统...

    从UML类图到关系数据库表的代码生成方法

    从UML类图到关系数据库表的代码生成方法研究 UML(统一建模语言)是一种用于软件系统建模的标准化建模语言,它的类图是其中最常用的一种图示,用于表示系统中类的静态结构。关系数据库是目前主流的数据库管理系统,...

    简单工厂模式uml类图

    java设计模式 简单工厂模式uml类图,一张图就让你秒懂简单工厂模式

    UML类图中的类 抽象类,具体类,主动类等

    综上所述,UML类图中的类是系统建模的关键元素,它们通过抽象类和具体类的区分来表达层次结构,通过主动类和非主动类来描述行为发起者和接收者。属性和操作则构成了类的核心特性,帮助我们理解和设计系统的结构和...

    图书管管理系统UML类图

    《图书管理系统的UML类图解析》 在软件开发领域,UML(统一建模语言)是一种标准化的建模工具,用于描绘系统的设计和结构。本篇将详细讲解基于UML类图的图书管理系统的构建过程,以帮助读者理解如何通过类图来描述...

    软考总结之UML类图专题试题

    适合软件测试过程师使用,软件评测师考试习题练习

    登录图UML类图.zip

    本文将深入探讨"登录图"在UML类图中的应用,以及如何通过类图来描绘和理解复杂的系统结构。 首先,UML类图是UML中的核心元素之一,它提供了一种图形化的方式来表示系统的静态结构。类图展示了类、接口、对象之间的...

    网上书店UML类图建模

    网上书店UML类图建模 基于提供的文件信息,我们可以总结出以下知识点: 1.UML类图建模: UML(Unified Modeling Language)是一种通用的建模语言,用于描述、设计和文档化软件系统。UML类图是一个静态结构图,...

    干货3分钟掌握:简单好用的UML类图绘画方法

    干货3分钟掌握:简单好用的UML类图绘画方法干货3分钟掌握:简单好用的UML类图绘画方法干货3分钟掌握:简单好用的UML类图绘画方法干货3分钟掌握:简单好用的UML类图绘画方法v干货3分钟掌握:简单好用的UML类图绘画...

    工厂方法模式uml类图

    java设计模式 工厂方法模式uml类图,一张图就让你秒懂工厂方法模式

    C# WinForm-UML类图程序,绘制UML程序-2023(绘制uml类图,保存,打开文件等等)

    在本文中,我们将深入探讨如何使用C# WinForm来创建一个UML类图程序,以及如何实现绘制、保存和打开UML类图的功能。UML(统一建模语言)是一种标准化的图形建模语言,用于软件工程和其他领域,用于描述系统的设计和...

    酒店管理信息系统UML类图

    酒店管理信息系统UML类图 酒店管理信息系统UML类图是酒店管理信息系统的设计蓝图,该系统旨在自动化酒店的日常管理行为。该系统包括三个操作角色:酒店管理员、前台服务员和经理,每个操作角色的权限不同。系统的...

    uml类图全套插件.zip

    《Eclipse集成UML类图插件:AmaterasUML与GEF详解》 在软件开发过程中,UML(Unified Modeling Language)类图是一种重要的建模工具,它可以帮助开发者清晰地描绘出系统的静态结构和关系。对于使用Eclipse作为IDE的...

    阿里巴巴Java代码规约插件UML类图

    UML类图是UML中最基础的图表之一,它用于描绘类的结构和类之间的关系,包括继承、关联、聚合、组合等。通过类图,开发者可以直观地理解系统的设计,便于代码的分析和重构。在Java开发过程中,UML类图可以帮助设计...

Global site tag (gtag.js) - Google Analytics