| 编辑推荐: | 
                                 
                                
                                   本文主要介绍Java开源工具进行UML建模,希望对您的学习有所帮助。 
            本文来源于简书,由火龙果软件Alice编辑,推荐。 | 
                                 
                              | 
                           
                         
	                      类图 是用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。学习好类图的绘制,是一位合格的软件工程师应有的技能。 
	                       1.类的UML图示 
	                       在UML中,类使用包含类名,属性和方法且带有分隔线的长方形来表示 
	                      例如定义一个Person类,包含属性name,age,拥有eating方法,则UML类图如下图示: 
	                        
	                      Person类 
	                      对应的java代码为: 
	                                                
	                       
                            
                              | 
                                 public class Person {  
                                 private String name;  
                                 private int age;  
                                 public void eating() {  
                                 ......  
                                 }  
                                 } 
                                   | 
                             
                           
	                      在UML类图中,类一般由三部分组成: 
	                       (1) 第一部分是类名:每个类都必须有一个名字,类名是一个字符串。 
	                       (2) 第二部分是类的属性(Attributes):属性是指类的性质,即类的成员变量。一个类可以有任意多个属性,也可以没有属性。 
	                       UML规定属性的表示方式为: 
	                       可见性 名称:类型 [=缺省值] 
	                      其中: 
	                       “可见性”表示该属性对于类外的元素而言是否可见,包括公有(public)、私有(private),友好的(friendly,代表package)和受保护(protected)三种,在类图中分别用符号+、-,~和#表示。 
	                       “名称”表示属性名,用一个字符串表示。 
	                       “类型”表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型。 
	                       “缺省值”是一个可选项,即属性的初始值。 
	                       (3) 第三部分是类的操作(Operations):操作是类的任意一个实例对象都可以使用的行为,是类的成员方法。 
	                       UML规定操作的表示方式为: 
	                       可见性 名称(参数列表) [ : 返回类型] 
	                       其中: 
	                       “可见性”的定义与属性的可见性定义相同。 
	                       “名称”即方法名,用一个字符串表示。 
	                       “参数列表”表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。 
	                       “返回类型”是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。 
	                      2.类之间的关系 
	                       类不是孤立存在的,类与类之间存在各种关系包括:关联关系,聚合关系,组合关系,依赖关系,泛化关系。每种关系对应i不同的图示 
	                      (1)依赖关系 
	                       依赖关系是类与类之间最弱的关系,是指一个类(依赖类)使用或知道另外一个类(目标类)。它是一个典型的瞬时关系,依赖类和目标类进行简单的交互,但是依赖类并不维护目标类的对象,仅仅是零时使用而已。例如对于窗体类window,当它关闭时会发送一个类windowclosingevent对象,这里也就可以说窗体类window使用了类windowclosingevent,他们之间的依赖关系如下图示: 
	                        
	                       依赖关系用虚线箭头表示 
	                      (2)关联关系 
	                        
	                       关联关系是一种比依赖关系更强的关系,是指一个类“拥有”另一个类,表示类之间的一种持续一段时间的合作关系,包括有单向关联和双向关联关系。 
	                       单向关联:类A与类B是单向关联关系,是指类A包含类B对象的引用,但是类B并不包含类A对象的引用,例如银行用户类(client)包含账户类(Bankacount)的引用,但是反过来却不是。在类图中,通过从类A画一条带箭头的单向实线到类B来表示他们之间的单项关联关系,箭头方向指向B。如下图: 
	                      单向关联.PNG 
	                       在上图中,连接两个类的箭头线两头的数字即代表它们之间的数量关系,例如上图,代表一个client类包含了0到多个BankAcount类的引用,并且BankAcount类在client中的引用是私有变量:accounts. 
	                      表达数量的形式有: 
	                       表达方式 数量说明 
	                       1..1 表示另一个类的一个对象只与该类的一个对象有关系 
	                       0..* 表示另一个类的一个对象与该类的零个或多个对象有关系 
	                       1..* 表示另一个类的一个对象与该类的一个或多个对象有关系 
	                       0..1 表示另一个类的一个对象没有或只与该类的一个对象有关系 
	                       m..n 表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n 
	                      双向关联:类A与类B如果包含对方的引用,则称类A与类B是双向关联的关系。例如,在一个需求描述中,一个学生(student)可以拥有其选秀的六门课程的信息,一门课程(course)可以包含选修该门课程的任意多个学生的信息。如下图: 
	                        
	                      双向关联 
	                       双向关联用双向箭头连接两个类 
	                      (3)聚合关系 
	                       聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。例如:汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系,如下图所示: 
	                        
	                      聚合关系 
	                      在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中: 
	                                                
	                       
                            
                              | 
                                 public class Car {  
                                 private Engine engine;  
                                 //构造注入  
                                 public Car(Engine engine) {  
                                 this.engine = engine;  
                                 }  
                                 //设值注入  
                                 public void setEngine(Engine engine) {  
                                 this.engine = engine;  
                                 }  
                                 ……  
                                 }  
                                public class Engine {  
                                 ……  
                                 } 
                                   | 
                             
                           
	                      (4)组合关系 
	                       组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在UML中,组合关系用带实心菱形的直线表示。例如:人的头(Head)与嘴巴(Mouth),嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,因此头和嘴巴是组合关系,如下图所示: 
	                        
	                      组合关系 
	                       在代码实现组合关系时,通常在整体类的构造方法中直接实例化成员类 
	                                                
	                       
                            
                              | 
                                 public class Head {  
                                 private Mouth mouth;  
                                 public Head() {  
                                 mouth = new Mouth(); //实例化成员类  
                                 }  
                                 ……  
                                 }  
                                public class Mouth {  
                                 ……  
                                 } 
                                   | 
                             
                           
	                      (5)泛化关系 
	                       泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示,如下图: 
	                        
	                      泛化关系 
	                       *在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示 
	                        
	                       接口实现关系 
	                      以上便是UML类图的一些简单实用了,希望对你有帮助,另外,此文章参考了csdn版主刘伟老师的博客 
	                        
                         |