UML类关系

一、依赖关系(Dependence)

依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。

  依赖关系(Dependency) 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

  在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

  

 1 public class Driver
 2 {
 3     public void drive(Car car)
 4     {
 5         car.move();
 6     }
 7     ……
 8 }
 9 public class Car
10 {
11     public void move()
12     {
13         ......
14     }
15     ……
16 } 

  依赖关系有如下三种情况:

  1、A类是B类中的(某中方法的)局部变量;

  2、A类是B类方法当中的一个参数;

  3、A类向B类发送消息,从而影响B类发生变化;

二、泛化关系(Generalization)

泛化关系(Generalization):A是B和C的父类,B,C具有公共类(父类)A,说明A是B,C的一般化(概括,也称泛化)

  泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示。

  在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用冒号“:”来实现。

  

 1 public class Person
 2 {
 3     protected String name;
 4     protected int age;
 5     public void move()
 6     {
 7         ……
 8     }
 9     public void say()
10    {
11         ……
12     }
13 }
14 public class Student extends Person
15 {
16     private String studentNo;
17     public void study()
18     {
19         ……
20     }
21 } 

  在UML当中,对泛化关系有三个要求:

  1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;

  2、子类中除了与父类一致的信息以外,还包括额外的信息;

  3、可以使用父类的实例的地方,也可以使用子类的实例;

三、关联关系(Association)

关联关系(Association):类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联(下图所示)。

  其中,关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“*”(表示所有,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)。

  关联关系(Association) 是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。

  在UML类图中,用实线连接有关联的对象所对应的类,在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性。

  在使用类图表示关联关系时可以在关联线上标注角色名。

  1)  双向关联: 默认情况下,关联是双向的。

  

 1 public class Customer
 2 {
 3     private Product[] products;
 4     ……
 5 }
 6 public class Product
 7 {
 8     private Customer customer;
 9     ……
10 } 

  2 ) 单向关联:类的关联关系也可以是单向的,单向关联用带箭头的实线表示.

  

 1 public class Customer
 2 {
 3     private Address address;
 4     ……
 5 }
 6
 7 public class Address
 8 {
 9     ……
10 }  

  3) 自关联: 在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。

  

1 public class Node
2 {
3     private Node subNode;
4     ……
5 }

  4) 重数性关联: 重数性关联关系又称为多重性关联关系(Multiplicity),表示一个类的对象与另一个类的对象连接的个数。在UML中多重性关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数。


表示方式


多重性说明


1..1


表示另一个类的一个对象只与一个该类对象有关系


0..*


表示另一个类的一个对象与零个或多个该类对象有关系


1..*


表示另一个类的一个对象与一个或多个该类对象有关系


0..1


表示另一个类的一个对象没有或只与一个该类对象有关系


m..n


表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n)

  

1 public class Form
2 {
3     private Button buttons[];
4     ……
5 }
6 public class Button
7 {
8     …
9 }

四、聚合关系(Aggregation)

聚合关系(Aggregation):表示的是整体和部分的关系,整体与部分 可以分开.

  聚合关系(Aggregation) 表示一个整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合关系。

  在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。

  

public class Car
{
    private Engine engine;
    public Car(Engine engine)
   {
        this.engine = engine;
    }  

    public void setEngine(Engine engine)
    {
        this.engine = engine;
    }
    ……
}
public class Engine
{
    ……
} 

  如:电脑包括键盘、显示器,一台电脑可以和多个键盘、多个显示器搭配,确定键盘和显示器是可以和主机分开的,主机可以选择其他的键盘、显示器组成电脑;

  

五、组合关系(Composition)

组合关系(Composition):也是整体与部分的关系,但是整体与部分不可以分开.

  组合关系(Composition)也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之间具有同生共死的关系。

  在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。在UML中,组合关系用带实心菱形的直线表示。

  

 1 public class Head
 2 {
 3     private Mouth mouth;
 4     public Head()
 5     {
 6     mouth = new Mouth();
 7     }
 8     ……
 9 }
10
11 public class Mouth
12 {
13     ……
14 }

  如:公司和部门,部门是部分,公司是整体,公司A的财务部不可能和公司B的财务部对换,就是说,公司A不能和自己的财务部分开; 人与人的心脏.

六、实现关系(Implementation)

实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

  接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。

  

 1 public interface Vehicle
 2 {
 3     public void move();
 4 }
 5 public class Ship implements Vehicle
 6 {
 7     public void move()
 8     {
 9     ……
10     }
11 }
12 public class Car implements Vehicle
13 {
14     public void move()
15     {
16     ……
17     }
18 }

文章转自:http://blog.csdn.net/fatherican/article/details/44966891,里面有更多的介绍。关于类关系这块可以参照《大话设计模式》的1.11章节

时间: 2024-12-29 15:28:49

UML类关系的相关文章

UML类关系:依赖,关联,聚合和组合

UML图示例:(可使用StartUML来画图,小巧^_^) http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html 聚合:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体.如电脑和鼠标,就可以用一下图形表示: 组合:表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在.组合关系的“部分”,是不能在整体之间进行共享的.如人和眼睛的关系:不过,如果你要说,眼睛可以移植,是

UML 类关系--聚合 组合 关联 依赖

经常用到的四种关系,容易搞混,记一下. 耦合度:逐渐增强 1. 依赖(Dependency)     语义:类A要完成某个功能引用了类 B,则类 A 依赖类 B.   类比:学生依赖电脑,用电脑完成工作    表现形式:类A的    某个成员函数的返回值.    形参.    局部变量    或静态方法的调用了类 B,则表示类 A 依赖类 B. 2. 关联(Association)    语义:类 A 的每个实例都需要类 B 的存在    类比:学生和老师,一个学生必须要有老师    表现形式:

使用maintainJ快速了解项目类关系

MaintainJ能够在很短的时间内进行debug(找出缺陷).能够方便的了解项目已有特性从而容易进行功能增强(enhance).能够展现调用耗时从而能够快速定位瓶颈调整系统提升系统性能.此外利用它还能快速的建立与实际调用一致的UML 类关系视图和调用时序视图,这也是形成文档的关键资料.而这些工作的快速完成均是由于MaintainJ是一款基于AOP实现的能够在操作具体用例(Use case)过程中时时形成调用关系.类关系以及传递的参数和响应时间等等的原因.MaintainJ能够对java web

UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html http://sundensky.blog.163.com/blog/static/7728873420109299167434/ 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系

UML类图几种关系的总结(转)

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向父类 2. 实现(Real

(转载)UML类图几种关系的总结

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向父类         2.

转 UML类图几种关系的总结

UML类图几种关系的总结 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向

UML类图关系表示方法

本文转载: http://blog.csdn.net/fengsh998/article/details/8105631 分类: UML2012-10-24 10:18 1175人阅读 评论(0) 收藏 举报 UML类图关系的表示方法,主要包括关联,聚合,泛化,实现,依赖等内容,希望通过本节的学习大家对UML类图关系的表示方法有一定的掌握.下面是具体介绍. UML基础 1:UML类间关系的种类 2:关联 UML类图关系中关联描述了系统中对象或实例之间的离散连接,关联带有系统中各个对象之间关系的信

UML类图符号 各种关系说明以及举例

UML类图符号 各种关系说明以及举例 UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等. 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A:类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述.uml中用带箭头的虚线表示D